Регистр файлов
This commit is contained in:
parent
4fd0187ea6
commit
c8958cbee0
83 changed files with 25 additions and 53 deletions
70
src/Controller/State.php
Normal file
70
src/Controller/State.php
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
|
||||
class Controller_State
|
||||
{
|
||||
public $action = '';
|
||||
public $states = array();
|
||||
public $titles = array();
|
||||
|
||||
public function __construct($action)
|
||||
{
|
||||
$this->action = $action;
|
||||
}
|
||||
|
||||
static function make($action)
|
||||
{
|
||||
return new Controller_State($action);
|
||||
}
|
||||
|
||||
public function addTitle($name, $url = array())
|
||||
{
|
||||
$this->titles [] = array($name, $url);
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function addState(Controller_State $state)
|
||||
{
|
||||
$this->states [$state->getAction()] = $state;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getAction()
|
||||
{
|
||||
return $this->action;
|
||||
}
|
||||
|
||||
function checkAction($action, &$list)
|
||||
{
|
||||
if ($this->action == $action) {
|
||||
array_push($list, $this);
|
||||
return true;
|
||||
} else {
|
||||
foreach ($this->states as $state) {
|
||||
if ($state->checkAction($action, $list)) {
|
||||
array_push($list, $this);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function makeTitle(Controller_Action $module)
|
||||
{
|
||||
foreach ($this->titles as $item) {
|
||||
$module->path->addMenuItem($module->nUrl($this->action, $item[1]), $item[0]);
|
||||
}
|
||||
}
|
||||
|
||||
function getPath($module, $action)
|
||||
{
|
||||
$list = array();
|
||||
if ($this->checkAction($action, $list)) {
|
||||
foreach (array_reverse($list) as $item) {
|
||||
$item->makeTitle($module);
|
||||
}
|
||||
} else {
|
||||
$this->makeTitle($module);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue