public static function checkExt(&$layer, &$external) { if (!$external) { return; } unset($layer['external']); Each::fora($external, function (&$exter) use(&$layer) { if (is_string($exter)) { $external =& Load::loadJSON($exter); } else { $external = $exter; } if ($external) { foreach ($external as $i => &$v) { external::merge($layer, $external, $i); } } }); }
**/ 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) { //Без этого не показывается окно cо стилями.. только его заголовок.. Each::forx($layer['divs'], function (&$l, $div) { if (@(!$l['div'])) {
public static function &forx(&$obj, $callback, $back = false) { //Бежим сначало по объекту а потом по его свойствам как по массивам return Each::foro($obj, function &(&$v, $key) use(&$obj, $callback, $back) { return Each::fora($v, function &(&$el, $i, &$group) use($callback, $key) { $r =& $callback($el, $key, $group, $i); return $r; }, $back); }, $back); }