X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Ftemplate%2Fmenu%2Fclass_MenuTemplateEngine.php;h=b67f7207d6bf6da2270ad2a86f41d1b8044b9e76;hp=597b0149ef0a2b7cadb84ecd140f2690799fcf76;hb=57504c3b82b58010c555494d0e3acea1b654b0ef;hpb=c3106ae537f1d46274988826a070632a439e2c49 diff --git a/inc/classes/main/template/menu/class_MenuTemplateEngine.php b/inc/classes/main/template/menu/class_MenuTemplateEngine.php index 597b0149..b67f7207 100644 --- a/inc/classes/main/template/menu/class_MenuTemplateEngine.php +++ b/inc/classes/main/template/menu/class_MenuTemplateEngine.php @@ -4,7 +4,7 @@ * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * @@ -85,9 +85,9 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla /** * Creates an instance of the class TemplateEngine and prepares it for usage * - * @param $appInstance A manageable application - * @param $menuInstance A RenderableMenu instance - * @return $tplInstance An instance of TemplateEngine + * @param $applicationInstance A manageable application + * @param $menuInstance A RenderableMenu instance + * @return $templateInstance An instance of TemplateEngine * @throws BasePathIsEmptyException If the provided $templateBasePath is empty * @throws InvalidBasePathStringException If $templateBasePath is no string * @throws BasePathIsNoDirectoryException If $templateBasePath is no @@ -95,60 +95,49 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla * @throws BasePathReadProtectedException If $templateBasePath is * read-protected */ - public final static function createMenuTemplateEngine (ManageableApplication $appInstance, RenderableMenu $menuInstance) { + public static final function createMenuTemplateEngine (ManageableApplication $applicationInstance, RenderableMenu $menuInstance) { // Get a new instance - $tplInstance = new MenuTemplateEngine(); - - // Get language and file I/O instances from application - $langInstance = $appInstance->getLanguageInstance(); - $ioInstance = $appInstance->getFileIoInstance(); + $templateInstance = new MenuTemplateEngine(); // Determine base path - $templateBasePath = $tplInstance->getConfigInstance()->getConfigEntry('application_base_path') . $appInstance->getRequestInstance()->getRequestElement('app') . '/'; + $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; // Is the base path valid? if (empty($templateBasePath)) { // Base path is empty - throw new BasePathIsEmptyException($tplInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); } elseif (!is_string($templateBasePath)) { // Is not a string - throw new InvalidBasePathStringException(array($tplInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); + throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); } elseif (!is_dir($templateBasePath)) { // Is not a path - throw new BasePathIsNoDirectoryException(array($tplInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); + throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); } elseif (!is_readable($templateBasePath)) { // Is not readable - throw new BasePathReadProtectedException(array($tplInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); + throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); } - // Get configuration instance - $configInstance = FrameworkConfiguration::getInstance(); - // Set the base path - $tplInstance->setTemplateBasePath($templateBasePath); - - // Set the language and IO instances - $tplInstance->setLanguageInstance($langInstance); - $tplInstance->setFileIoInstance($ioInstance); + $templateInstance->setTemplateBasePath($templateBasePath); // Set template extensions - $tplInstance->setRawTemplateExtension($configInstance->getConfigEntry('raw_template_extension')); - $tplInstance->setCodeTemplateExtension($configInstance->getConfigEntry('menu_template_extension')); + $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension')); + $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('menu_template_extension')); // Absolute output path for compiled templates - $tplInstance->setCompileOutputPath($configInstance->getConfigEntry('base_path') . $configInstance->getConfigEntry('compile_output_path')); + $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')); // Set the menu instance - $tplInstance->setMenuInstance($menuInstance); + $templateInstance->setMenuInstance($menuInstance); // Init a variable stacker $stackerInstance = ObjectFactory::createObjectByConfiguredName('menu_stacker_class'); // Set it - $tplInstance->setStackerInstance($stackerInstance); + $templateInstance->setStackerInstance($stackerInstance); // Return the prepared instance - return $tplInstance; + return $templateInstance; } /** @@ -293,8 +282,8 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla /** * Handles the template dependency for given node * - * @param $node The node we should load a dependency template - * @param $templateDependency A template to load to satisfy dependencies + * @param $node The node we should load a dependency template + * @param $templateDependency A template to load to satisfy dependencies * @return void */ private function handleTemplateDependency ($node, $templateDependency) { @@ -306,10 +295,10 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla // Then load it $templateInstance->loadMenuTemplate($templateDependency); - // Get an XmlParser instance + // Parse the XML content $templateInstance->renderXmlContent(); - // Parse the template's content contents + // Save the parsed raw content in our dependency array $this->dependencyContent[$node] = $templateInstance->getRawTemplateData(); } // END - if } @@ -317,7 +306,7 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla /** * Intializes the menu * - * @param $templateDependency A template to load to satisfy dependencies + * @param $templateDependency A template to load to satisfy dependencies * @return void * @todo Add cache creation here */ @@ -328,66 +317,19 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla // Handle the dependency template $this->handleTemplateDependency('menu', $templateDependency); - // Load the header template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_global_start'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('menu_start', $this->getTemplateInstance()->getRawTemplateData()); - } - - /** - * Finishes the menu - * - * @return void - */ - private function finishMenu () { - // Load the header template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_global_end'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('menu_end', $this->getTemplateInstance()->getRawTemplateData()); - } - - /** - * Starts the menu entries by loading a (maybe) provided template dependency - * - * @param $templateDependency A template to load to satisfy dependencies - * @return void - */ - private function startEntryList ($templateDependency = '') { - // Handle the dependency template - $this->handleTemplateDependency('entries', $templateDependency); - - // Load the header template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_entries_start'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('entries_start', $this->getTemplateInstance()->getRawTemplateData()); + // Push the node name on the stacker + $this->getStackerInstance()->pushNamed('current_node', 'menu'); } /** - * Finishes the menu entries + * Starts the menu entries * + * @param $templateDependency A template to load to satisfy dependencies * @return void */ - private function finishEntryList () { - // Load the header template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_entries_end'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('entries_end', $this->getTemplateInstance()->getRawTemplateData()); + private function startEntryList () { + // Push the node name on the stacker + $this->getStackerInstance()->pushNamed('current_node', 'entry-list'); } /** @@ -396,39 +338,8 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla * @return void */ private function startBlockHeader () { - // Do we have a template instance? - if (is_null($this->getTemplateInstance())) { - // Init template instance for underlaying web templates - $templateInstance = ObjectFactory::createObjectByConfiguredName('web_template_class'); - - // Set it in this template engine - $this->setTemplateInstance($templateInstance); - } // END - if - - // Load the header template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_header_start'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('header', $this->getTemplateInstance()->getRawTemplateData()); - } - - /** - * Finishes the menu block header - * - * @return void - */ - private function finishBlockHeader () { - // Load the header template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_header_end'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('header_end', $this->getTemplateInstance()->getRawTemplateData()); + // Push the node name on the stacker + $this->getStackerInstance()->pushNamed('current_node', 'block-header'); } /** @@ -437,39 +348,8 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla * @return void */ private function startBlockFooter () { - // Do we have a template instance? - if (is_null($this->getTemplateInstance())) { - // Init template instance for underlaying web templates - $templateInstance = ObjectFactory::createObjectByConfiguredName('web_template_class'); - - // Set it in this template engine - $this->setTemplateInstance($templateInstance); - } // END - if - - // Load the footer template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_footer_start'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('footer', $this->getTemplateInstance()->getRawTemplateData()); - } - - /** - * Finishes the menu block footer - * - * @return void - */ - private function finishBlockFooter () { - // Load the footer template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_footer_end'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('footer_end', $this->getTemplateInstance()->getRawTemplateData()); + // Push the node name on the stacker + $this->getStackerInstance()->pushNamed('current_node', 'block-footer'); } /** @@ -793,44 +673,43 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla } /** - * Starts the menu text + * Finishes the menu entries * * @return void */ - private function startText () { - // Do we have a template instance? - if (is_null($this->getTemplateInstance())) { - // Init template instance for underlaying web templates - $templateInstance = ObjectFactory::createObjectByConfiguredName('web_template_class'); - - // Set it in this template engine - $this->setTemplateInstance($templateInstance); - } // END - if - - // Load the text template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_text_start'); - - // Set the variable group to page - $this->setVariableGroup('menu'); - - // Set its content in this template instance - $this->assignVariable('text', $this->getTemplateInstance()->getRawTemplateData()); + private function finishEntryList () { + // Pop the last entry + $this->getStackerInstance()->popNamed('current_node'); } /** - * Finishes the menu text + * Finishes the menu block header * * @return void */ - private function finishText () { - // Load the text template for this page - $this->getTemplateInstance()->loadCodeTemplate('menu_text_end'); + private function finishBlockHeader () { + // Pop the last entry + $this->getStackerInstance()->popNamed('current_node'); + } - // Set the variable group to page - $this->setVariableGroup('menu'); + /** + * Finishes the menu block footer + * + * @return void + */ + private function finishBlockFooter () { + // Pop the last entry + $this->getStackerInstance()->popNamed('current_node'); + } - // Set its content in this template instance - $this->assignVariable('text_end', $this->getTemplateInstance()->getRawTemplateData()); + /** + * Finishes the menu + * + * @return void + */ + private function finishMenu () { + // Pop the last entry + $this->getStackerInstance()->popNamed('current_node'); } /**