%PDF- %PDF-
Direktori : /home1/lightco1/www/elstead.com.au/libraries/nextend2/nextend/library/libraries/mvc/ |
Current File : //home1/lightco1/www/elstead.com.au/libraries/nextend2/nextend/library/libraries/mvc/layout.php |
<?php N2Loader::import("libraries.mvc.view"); class N2Layout extends N2View { public $controller = null; private $layoutFragments = array(); private $viewObject = null; public function addView($fileName, $position, $viewParameters = array(), $path = null) { if (is_null($path)) { $controller = strtolower($this->appType->controllerName); $path = $this->appType->path . NDS . "views" . NDS . $controller . NDS; } if (!file_exists($path . $fileName . ".phtml")) { throw new N2ViewException("View file ({$fileName}.phtml) not found in " . $path . $fileName); } $this->layoutFragments["nextend_" . $position][] = array( 'params' => $viewParameters, 'file' => $path . $fileName . ".phtml" ); } /** * Render page layout * * @param string $fileName * @param null|string $path * @param array $params * * @throws N2ViewException */ protected function renderLayout($fileName, $params = array(), $path = null) { if (is_null($path)) { $path = $this->appType->path . NDS . "layouts" . NDS; } else { if (strpos(".", $path) !== false) { $path = N2Filesystem::dirFormat($path); } } if (!N2Filesystem::existsFile($path . $fileName . ".phtml")) { throw new N2ViewException("Layout file ({$fileName}.phtml) not found in '{$path}'"); } extract($params); /** @noinspection PhpIncludeInspection */ include $path . $fileName . ".phtml"; } public function render($params = array(), $layoutName = false) { $controller = strtolower($this->appType->controllerName); $path = $this->appType->path . NDS . "views" . NDS . $controller . NDS; $call = false; if (N2Filesystem::existsFile($path . NDS . "_view.php")) { require_once $path . NDS . "_view.php"; $call = array( "class" => "N2{$this->appType->app->name}{$this->appType->type}{$controller}View", "method" => $this->appType->actionName ); $this->viewObject = $this->preCall($call, $this->appType); } if ($layoutName) { $this->renderLayout($layoutName, $params); } } public function renderFragmentBlock($block, $fallback = false) { if (isset($this->layoutFragments[$block])) { foreach ($this->layoutFragments[$block] as $key => $view) { $view["params"]["_class"] = $this->viewObject; $this->renderInline($view["file"], $view["params"], null, true); } } else if ($fallback) { $this->renderInline($fallback, array()); } } public function getFragmentValue($key, $default = null) { if (isset($this->layoutFragments[$key])) { return $this->layoutFragments[$key]; } return $default; } } class N2LayoutAjax extends N2Layout { protected function renderLayout($fileName, $params = array(), $path = null) { $this->renderFragmentBlock('nextend_content'); } }