public static function check(&$layers) { static::$layers =& $layers; //Пробежка по слоям Event::tik('Infrajs'); Event::tik('layer'); Event::fire('Infrajs.oninit'); //сборка событий Run::exec(static::$layers, function &(&$layer, &$parent) { //Запускается у всех слоёв в работе $r = null; if ($parent) { $layer['parent'] =& $parent; } Event::fire('layer.oninit', $layer); if (!Event::fire('layer.ischeck', $layer)) { return $r; } Event::fire('layer.oncheck', $layer); return $r; }); //разрыв нужен для того чтобы можно было наперёд определить показывается слой или нет. oncheck у всех. а потом по порядку. Event::fire('oncheck'); //момент когда доступны слои по getUnickLayer Run::exec(static::$layers, function &(&$layer) { //С чего вдруг oncheck у всех слоёв.. надо только у активных $r = null; if (Event::fire('layer.isshow', $layer)) { //Событие в котором вставляется html Event::fire('layer.onshow', $layer); //при клике делается отметка в конфиге слоя и слой парсится... в oncheck будут подстановки tpl и isRest вернёт false //onchange показанный слой не реагирует на изменение адресной строки, нельзя привязывать динамику интерфейса к адресной строке, только черещ перепарсивание } return $r; }); //у родительского слоя showed будет реальное а не старое Event::fire('Infrajs.onshow'); //loader, setA, seo добавить в html, можно зациклить check $html = View::html(); //View::html('',true); return $html; }
public static function tik($name = null, $clear = null) { /** * Режим повторения, сбросить что есть и начать заного. * Передаётся класс или имя * clear true - удалить и всех подписчиков **/ $lists =& Event::$list; if (!$name) { foreach ($lists as $name => $v) { Event::tik($name, $clear); } return; } if (!empty($lists[$name])) { $list =& $lists[$name]; for ($i = 0, $l = sizeof($list['list']); $i < $l; $i++) { $list['list'][$i]['executed'] = array(); } $list['data'] = array(); $list['result'] = array(); //Выполнено событие или нет $list['readyobj'] = array(); //Массив с временными отметками по объектам что выполнено. При равенстве количество с keys. Ключ попадает в массив ready $list['readykeys'] = array(); //Выполненные ключи if ($clear) { $list['keys'] = array(); $list['list'] = array(); } } else { foreach ($lists as $i => $v) { if ($lists[$i]["class"] != $name) { continue; } Event::tik($i, $clear); } } }