public static function init() { External::add('configtpl', function &(&$now, &$ext, &$layer, &$external, $i) { //if(!isset($layer['configtpl']))return $now; //if(isset($layer['config']))return $now; if (!$now) { return $ext; } return $now; }); }
public static function init() { global $infra, $infrajs; Event::handler('Infrajs.oninit', function () { //Обработка envs, envtochild, myenvtochild, envframe External::add('myenv', 'config'); //Обрабатывается также как config //external::add('env', '');//Никак не обрабатывается.. будет установлено только если нечего небыло External::add('envs', 'childs'); //Объединяется так же как childs Run::runAddKeys('envs'); //Теперь бегаем и по envs свойству }); }
use infrajs\template\Template; /** * div, divs, divtpl * **/ Path::req('*controller/infra.php'); Event::handler('oninit', function () { Run::runAddKeys('divs'); External::add('divs', function (&$now, $ext) { //Если уже есть пропускаем if (!$now) { $now = array(); } foreach ($ext as $i => $v) { if (isset($now[$i])) { continue; } $now[$i] = array(); Each::fora($ext[$i], function (&$l) use(&$now, $i) { array_push($now[$i], array('external' => $l)); }); } return $now; }); }, 'div:layer'); Event::handler('layer.oncheck', function (&$layer) { //В onchange слоя может не быть див// Это нужно чтобы в external мог быть определён div перед тем как наследовать div от родителя if (@(!$layer['div']) && @$layer['parent']) { $layer['div'] = $layer['parent']['div']; } }, 'div'); Event::handler('layer.oncheck', function (&$layer) {
Event::handler('Layer.oninit', function () { $root = Crumb::getInstance(); if (!$root->is) { throw new \Exception('Crumb нужно инициализировать до запуска контроллера'); } Sequence::set(Template::$scope, Sequence::right('infra.Crumb.query'), $root->query); Sequence::set(Template::$scope, Sequence::right('infra.Crumb.params'), Crumb::$params); Sequence::set(Template::$scope, Sequence::right('infra.Crumb.get'), Crumb::$get); $cl = function ($mix = null) { return ext\Crumb::getInstance($mix); }; Sequence::set(Template::$scope, Sequence::right('infra.Crumb.getInstance'), $cl); External::add('child', 'layers'); External::add('crumb', function (&$now, &$ext, &$layer, &$external, $i) { //проверка external в onchange Crumb::set($layer, 'crumb', $ext); return $layer[$i]; }); }, 'crumb'); Event::handler('Layer.oninit', function (&$layer) { //это из-за child// всё что после child начинает плыть. по этому надо crumb каждый раз определять, брать от родителя. if (!isset($layer['dyn'])) { //Делается только один раз Crumb::set($layer, 'crumb', $layer['crumb']); } if (empty($layer['parent'])) { return; } Crumb::set($layer, 'crumb', $layer['dyn']['crumb']); //Возможно у родителей обновился crumb из-за child у детей тоже должен обновиться хотя они не в child }, 'crumb');