*
* @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team
* @license GNU GPL 3.0 or any newer version
* @link http://www.shipsimu.org
*
'anchor-href',
);
+ /**
+ * Variables for a menu entry
+ */
+ private $menuEntryVariables = array(
+ // List entry
+ 'entry_id',
+ // Anchor
+ 'anchor-id',
+ 'anchor-text',
+ 'anchor-title',
+ 'anchor-href',
+ );
+
+ /**
+ * Variables for a menu block
+ */
+ private $menuBlockVariables = array(
+ // Title
+ 'title_id',
+ 'title_class',
+ 'title_text',
+ // Content is taken from menuEntries
+ // Footer
+ 'footer_id',
+ 'footer_class',
+ 'footer_text',
+ );
+
+ /**
+ * Rendered menu entries
+ */
+ private $menuEntries = array();
+
+ /**
+ * Rendered menu blocks
+ */
+ private $menuBlocks = array();
+
/**
* Menu instance
*/
*/
private function initMenu ($templateDependency = '') {
// Get web template engine
- $this->setTemplateInstance(ObjectFactory::createObjectByConfiguredName('web_template_class', array($this->getApplicationInstance())));
+ $this->setTemplateInstance(ObjectFactory::createObjectByConfiguredName('html_template_class', array($this->getApplicationInstance())));
// Handle the dependency template
$this->handleTemplateDependency('menu', $templateDependency);
private function finishEntry () {
// Pop the last entry
$this->getStackInstance()->popNamed('current_node');
+
+ // Render this menu entry
+ $this->renderMenuEntry();
}
/**
private function finishBlock () {
// Pop the last entry
$this->getStackInstance()->popNamed('current_node');
+
+ // Render this menu block
+ $this->renderMenuBlock();
}
/**
$this->getStackInstance()->popNamed('current_node');
}
+ /**
+ * Renders this menu entry, as every block all variables got overwritten
+ * with data from next entry.
+ *
+ * @return void
+ */
+ private function renderMenuEntry () {
+ // Prepare template engine
+ $templateInstance = $this->prepareTemplateInstance();
+
+ // Load menu entry template
+ $templateInstance->loadCodeTemplate('menu_entry');
+
+ // Copy all variables over to it
+ foreach ($this->menuEntryVariables as $variableName) {
+ // Copy variable
+ $variableValue = $this->readVariable($variableName);
+
+ // Is the key 'anchor-href'?
+ if ($variableName == 'anchor-href') {
+ // Expand variable with URL then
+ $variableValue = '{?base_url?}/' . $variableValue;
+ } // END - if
+
+ // ... into the instance
+ $templateInstance->assignVariable($variableName, $variableValue);
+ } // END - foreach
+
+ // Compile template + variables
+ $templateInstance->compileTemplate();
+ $templateInstance->compileVariables();
+
+ // Remember it here
+ $this->menuEntries[$this->readVariable('entry_id')] = $templateInstance->getRawTemplateData();
+ }
+
+ /**
+ * Renders this menu block, as next block all data is overwritten with
+ * next block.
+ *
+ * @return void
+ */
+ private function renderMenuBlock () {
+ // Init block content
+ $blockContent = implode('', $this->menuEntries);
+
+ // Prepare template engine
+ $templateInstance = $this->prepareTemplateInstance();
+
+ // Load menu entry template
+ $templateInstance->loadCodeTemplate('menu_block');
+
+ // Copy all variables over to it
+ foreach ($this->menuBlockVariables as $variableName) {
+ // Copy variable
+ $variableValue = $this->readVariable($variableName);
+
+ // ... into the instance
+ $templateInstance->assignVariable($variableName, $variableValue);
+ } // END - foreach
+
+ // Assign block content
+ $templateInstance->assignVariable('block_content', $blockContent);
+
+ // Compile template + variables
+ $templateInstance->compileTemplate();
+ $templateInstance->compileVariables();
+
+ // Remember it here
+ array_push($this->menuBlocks, $templateInstance->getRawTemplateData());
+
+ // Reset rendered menu entries array
+ $this->menuEntries = array();
+ }
+
+ /**
+ * "Getter" for menu content
+ *
+ * @return $menuContent Returned menu content
+ */
+ public function getMenuContent () {
+ // Implode menuBlocks
+ $menuContent = implode('', $this->menuBlocks);
+
+ // Clean variable
+ $this->menuBlocks = array();
+
+ // And return it
+ return $menuContent;
+ }
+
/**
* Getter for menu cache file (FQFN)
*