public static function check(&$layer) { if (!isset($layer['css'])) { return; } if (static::$ready[$css]) { return; } Each::fora($layer['css'], function ($css) use(&$layer) { Css::$ready[$css] = true; $code = Load::loadTEXT($css); View::html('<style>' . $code . '</style>', $layer['div']); $r = null; return $r; }); }
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); } } $r = null; return $r; }); }
//Возможно у родителей обновился crumb из-за child у детей тоже должен обновиться хотя они не в child }, 'crumb'); Event::handler('Layer.oninit', function (&$layer) { if (empty($layer['child'])) { return; } //Это услвие после Crumb::set $crumb =& $layer['crumb']->child; if ($crumb) { $name = $crumb->name; } else { $name = '###child###'; } Each::fora($layer['child'], function &(&$l) use(&$name) { $r = null; Crumb::set($l, 'crumb', $name); return $r; }); }, 'crumb'); Event::handler('Layer.oninit', function (&$layer) { if (empty($layer['childs'])) { return; } foreach ($layer['childs'] as $key => &$v) { Each::exec($v, function &(&$l) use($key) { $r = null; if (!empty($l['crumb'])) { return $r; } Crumb::set($l, 'crumb', $key); return $r;
$ans['news'] = $news; Each::fora($ans['news'], function &(&$n) use($list, &$ans) { $n['value'] = Load::json_decode($n['value'], true); $n['name'] = Sequence::right($n['name']); $r = Each::exec($list, function &($item) use(&$n, &$ans) { //Устанавливаемое значение ищим в новости $r = null; //найдено совпадение новости с устанавливаемым значением.. новость удаляем $a = Sequence::contain($item['name'], $n['name']); if ($a || $a == array()) { $r = true; return $r; //news Длиннее... и часть новости изменена в устанавливаемом значение } $ans['a'] = $a; //Новость ищим в устанавливаемом значение $right = Sequence::contain($n['name'], $item['name']); if ($right) { $n['value'] = Sequence::set($n['value'], $right, $item['value']); //Новость осталась но она включает устанавливаемые данные } return $r; }); if ($r) { $del = new Fix('del'); return $del; } $r = null; return $r; }); }
public static function _getHtml(&$layer) { //Вызывается как для основных так и для подслойв tpls frame. Расширяется в tpltpl.prop.js if (@$layer['data'] || @$layer['json'] || @$layer['tpls'] || @$layer['tplroot']) { $tpls = Template::make($layer['tpl']); //С кэшем перепарсивания Template::includes($tpls); $repls = array(); //- подшаблоны для замены, Важно, что оригинальный распаршеный шаблон не изменяется Each::fora($layer['tplsm'], function &($tm) use(&$repls) { //mix tpl $t = Template::make($tm); //С кэшем перепарсивания array_push($repls, $t); //for(var i in t)repls[i]=t[i];//Нельзя подменять в оригинальном шаблоне, который в других местах может использоваться без подмен //^ из-за этого обработчики указанные в tplsm срабатывают постоянно, так как нельзя поставить отметку о том что обработчик сохранён $r = null; return $r; }); $layer['data'] =& self::getData($layer); //подменили строку data на объект data $alltpls = array(&$repls, &$tpls); $html = Template::exec($alltpls, $layer, @$layer['tplroot'], @$layer['dataroot']); } else { $tpl = self::getTpl($layer); $html = $tpl; } if (!$html) { $html = ''; } return $html; }