Exemple #1
0
 public static function &find($name, $value)
 {
     $right = Sequence::right($name);
     return Controller::run(static::$layers, function &(&$layer) use($right, $value) {
         if (Sequence::get($layer, $right) == $value) {
             return $layer;
         }
         $r = null;
         return $r;
     });
 }
Exemple #2
0
 public static function init()
 {
     $query = urldecode($_SERVER['REQUEST_URI']);
     header('Infrajs-Cache: true');
     $html = Access::cache(__FILE__ . ':init', function ($query) {
         header('Infrajs-Cache: false');
         Config::get();
         $conf = Config::get('controller');
         return Controller::check($conf['index']);
     }, array($query));
     echo $html;
     exit;
 }
Exemple #3
0
 public static function apply()
 {
     //Поиск совпадения адреса с файлом
     //Редирект также кэшируется в modified, когда обращение к статике, по правилам Nostore
     Path::init();
     //Контроллер... должен быть файл в корне index.json
     //Если сайт не использует контроллер то до этого места доходим только, когда 404 и лишний запуск не существенен
     //Либо следующая строчка обеспечивает формирование всего html если контроллер используется.
     $query = substr(urldecode($_SERVER['REQUEST_URI']), 1);
     $ch = substr($query, 0, 1);
     if (!in_array($ch, ['~', '!', '-'])) {
         Controller::init();
     }
     $conf = Config::get('router');
     Path::req($conf['404']);
 }
Exemple #4
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');
Exemple #5
0
<?php

namespace infrajs\controller;

use infrajs\ans\Ans;
use infrajs\path\Path;
use infrajs\view\View;
use infrajs\load\Load;
use infrajs\router\Router;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
    Router::init();
}
$query = Crumb::$href;
$ans = array('title' => 'Проверки контроллера');
$composer = Load::loadJSON('-infrajs/composer.json');
$require = $composer['require'];
foreach ($require as $path => $ver) {
    $p = explode('/', $path);
    $r = Path::reqif('-' . $p[1] . '/infra.php');
}
$layer = array('data' => 1, 'tpl' => array('qewr{data}'));
Crumb::change('');
$html = Controller::check($layer);
if ($html != 'qewr1') {
    return Ans::err($ans, 'Результат неожиданный ' . $html);
}
Crumb::change($query);
View::html('', true);
return Ans::ret($ans);
namespace infrajs\controller;

use infrajs\config\Config;
use infrajs\path\Path;
use infrajs\view\View;
use infrajs\load\Load;
use infrajs\ans\Ans;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array();
$ans['title'] = 'check4';
$query = Crumb::$query;
Config::get('controller');
View::html('<div id="main1"></div><div id="main2"></div>', true);
$layers = Load::loadJSON('-test-akiyatkin/resources/check4.json');
Crumb::change('test');
Controller::check($layers);
$html = View::html();
preg_match_all('/x/', $html, $matches);
$count = sizeof($matches[0]);
$countneed = 2;
Crumb::change($query);
Layer::$start_id = 1;
Layer::$ids = array();
View::html('', true);
if ($count != $countneed) {
    return Ans::err($ans);
}
return Ans::ret($ans);