Пример #1
0
<?php

namespace infrajs\layer\env;

use infrajs\path\Path;
use infrajs\event\Event;
use infrajs\controller\Layer;
use infrajs\config\Config;
Config::get('controller');
Event::handler('Infrajs.oninit', function () {
    Env::init();
    Layer::parsedAdd('envval');
});
Event::handler('layer.oncheck', function (&$layer) {
    Env::checkinit($layer);
}, 'env:config,external');
Event::handler('layer.oncheck', function (&$layer) {
    Env::envtochild($layer);
}, 'env:config,external');
Event::handler('layer.oncheck', function (&$layer) {
    Env::envframe($layer);
}, 'env:config,external');
Event::handler('layer.oncheck', function (&$layer) {
    Env::envframe2($layer);
}, 'env:config,external');
Event::handler('layer.oncheck', function (&$layer) {
    Env::envmytochild($layer);
}, 'env:config,external');
Event::handler('layer.isshow', function (&$layer) {
    return Env::check($layer);
}, 'env:counter,tpl,div,is');
Пример #2
0
        return;
    }
    $layer['div'] = Template::parse(array($layer['divtpl']), $layer);
}, 'div:env,config,external');
Event::handler('layer.isshow', function (&$layer) {
    if (empty($layer['div']) && !empty($layer['parent'])) {
        return false;
    }
    //Такой слой игнорируется, события onshow не будет, но обработка пройдёт дальше у других дивов
    $start = false;
    if (Run::exec(Controller::$layers, function (&$l) use(&$layer, &$start) {
        //Пробежка не по слоям на ветке, а по всем слоям обрабатываемых после.. .то есть и на других ветках тоже
        if (!$start) {
            if (Each::isEqual($layer, $l)) {
                $start = true;
            }
            return;
        }
        if (@$l['div'] !== @$layer['div']) {
            return;
        }
        //ищим совпадение дивов впереди
        if (Controller::fire('layer.isshow', $l)) {
            $layer['is_save_branch'] = Layer::isParent($l, $layer);
            return true;
            //Слой который дальше показывается в томже диве найден
        }
    })) {
        return false;
    }
}, 'div:is');
Пример #3
0
<?php

namespace infrajs\layer\css;

use infrajs\controller\Layer;
use infrajs\event\Event;
Event::handler('layer.onshow', function (&$layer) {
    if (Layer::pop($layer, 'onlyclient')) {
        return;
    }
    Css::check($layer);
}, 'css');
Пример #4
0
namespace infrajs\controller;

use infrajs\view\View;
use infrajs\ans\Ans;
use infrajs\path\Path;
use infrajs\config\Config;
use infrajs\event\Event;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array();
$ans['title'] = 'Проверка функции Controller::check';
View::html('<div id="oh"></div>', true);
Config::get('controller');
//Нужно инициализировать Crumb с Контроллером, crumb может работать самостоятельно.
Crumb::init();
$layer = array('tpl' => array('хой<div id="test"></div>'), 'div' => 'oh');
$html = Controller::check($layer);
if ($html != '<div id="oh">хой<div id="test"></div></div>') {
    return Ans::err($ans, 'Ошибка');
}
$layer = array('tpl' => array('опа'), 'div' => 'test');
$html = Controller::check($layer);
if ($html != '<div id="oh">хой<div id="test">опа</div></div>') {
    return Ans::err($ans, 'Ошибка ' . $html);
}
Layer::$start_id = 1;
Layer::$ids = array();
View::html('', true);
return Ans::ret($ans, 'Работает две генерации');
Пример #5
0
 public static function getHtml(&$layer)
 {
     //Вызывается как для основных так и для подслойв tpls frame. Расширяется в tpltpl.prop.js
     //if(@$layer['tplclient'])return '';
     $row = Layer::parsed($layer);
     //$row=$_SERVER['QUERY_STRING'],$layer['id'];
     //Нельзя кэшировать слои в которых показываются динамические данные, данные пользователя определяется заголовком у данных
     //Кэш создаётся от любого пользователя.
     //Чтобы узнать что кэш делать не нужно... это знают данные они либо js либо php
     //При загрузки данных те должны выкидывать заголовки не кэшировать, либо не выкидывать если это просто парсер Excel
     //Нас интересует зависит ли html слоя от пользователя, если зависит кэшировать нельзя
     //Зависит если используется $_SESSION, infra_session, infra_admin
     //примечательно что конект к базе не запрещает кэширование этого слоя
     //Узнавать о всём этом мы будем по заголовкам
     //Так чтобы следующий слой взялся уже нормально заголовки нужно заменять...
     //Тем более заменять заголовки нужно в любом случае если кэшируется чтобы и браузер кэшировал
     //Проблема при первом session_get конект к базе и вызов session_init в следующем подключении init не вызывается
     //но для следующего подключения нам нужно понять что есть динамика// По этому загловки отправляются в том числе и руками в скритпах  Cache-Control:no-cache
     $html = Access::cache('infrajs_getHtml', function () use(&$layer) {
         //Здесь мог быть установлен infrajs['com'] его тоже нужно вернуть/ А вот после loadTEXT мог быть кэш и ничего не установится
         $html = Tpl::_getHtml($layer);
         return $html;
     }, array($row));
     //Кэш обновляемый с последней авторизацией админа определяется строкой parsed слоя
     return $html;
 }
Пример #6
0
<?php

namespace infrajs\controller;

use infrajs\router\Router;
use infrajs\load\Load;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
    Router::init();
}
$data = Controller::$conf['index'];
Run::exec($data, function &(&$layer) {
    while (@$layer['external'] && !Layer::pop($layer, 'onlyclient')) {
        $ext =& $layer['external'];
        External::checkExt($layer, $ext);
    }
    $r = null;
    return $r;
});
$data = Load::json_encode($data);
?>
infrajs.checkAdd(<?php 
echo $data;
?>
);
Event.handler('Crumb.onchange', function () {
	infrajs.check();
}, 'infrajs');<?php 
Пример #7
0
 public static function check(&$layer)
 {
     if (!isset($layer['env'])) {
         return;
     }
     $r = null;
     //Слои myenv надо показывать тогдаже когда и показывается сам слой
     $myenv = null;
     $ll = null;
     Run::exec(Controller::$layers, function (&$l) use(&$layer, &$myenv, &$ll) {
         //Есть окружение и мы не нашли ни одного true для него
         if (!isset($l['myenv'])) {
             return;
         }
         if (!Event::fire('layer.ischeck', $l)) {
             return;
         }
         //В back режиме выйти нельзя.. смотрятся все слои
         if (Each::isEqual($l, $layer)) {
             return;
         }
         //Значение по умолчанию смотрится отдельно
         if (!isset($l['myenv'][$layer['env']])) {
             return;
         }
         if (is_null($l['myenv'][$layer['env']])) {
             return;
         }
         if (Event::fire('layer.isshow', $l)) {
             //Ищим последнюю установку на счёт env
             $myenv = $l['myenv'][$layer['env']];
             $ll =& $l;
         }
     });
     if (!is_null($myenv)) {
         //Если слой скрываем слоем окружения который у него в родителях числиться он после этого сам всё равно должен показаться
         if ($myenv) {
             //Значение по умолчанию смотрим только если myenv undefined
             $r = true;
         } else {
             $r = false;
             $layer['is_save_branch'] = !!Layer::isParent($ll, $layer);
             //infrajs_isSaveBranch($layer,false);
         }
     }
     if (is_null($r) && @$layer['myenv']) {
         //Значение по умолчанию
         $myenv = $layer['myenv'][$layer['env']];
         if (!is_null($myenv)) {
             //Оо есть значение по умолчанию для самого себя
             if ($myenv) {
                 $r = true;
             } else {
                 //Если слой по умолчанию скрыт его детей не показываем
                 $r = false;
                 $layer['is_save_branch'] = false;
             }
         }
     }
     $layer['envval'] = $myenv;
     if ($r) {
         return !!$myenv;
     }
     return false;
 }