// Get the 'page' from request instance
$page = $this->getApplicationInstance()->getRequestInstance()->getRequestElement('page');
+ // If page is empty, choose default
+ if (empty($page)) {
+ // Use default page as none has been specified
+ $page = $this->getConfigInstance()->getConfigEntry('default_' . $this->getApplicationInstance()->getAppShortName() . '_' . self::getResponseTypeFromSystem() . '_command');
+ } // END - if
+
// Load the menu template for this page
try {
$templateInstance->loadMenuTemplate($page . '_menu_entries');
} catch (FileIoException $e) {
- // @TODO Should we log it here? We should, because it will be silently ignored.
+ // Log exception @TODO Maybe to intrusive?
+ self::createDebugInstance(__CLASS__)->debugOutput('[' . __METHOD__ . ':' . __LINE__ . ']: Exception caught: ' . $e->__toString() . ', with message: ' . $e->getMessage());
}
- // Get the prepared content
- $menuContent = $templateInstance->getRawTemplateData();
-
- // Render it here
- $templateInstance->renderXmlContent($menuContent);
+ // Render template data here
+ $templateInstance->renderXmlContent();
//exit(__METHOD__ . ':!OK');
}
/**
- * Transfers the rendered menu to a given templatex engine by assigning
+ * Transfers the rendered menu to a given template engine by assigning
* the rendered content with a template variable.
*
* @param $templateInstance An instance of a CompileableTemplate class
* @return void
*/
public function transferContentToTemplateEngine (CompileableTemplate $templateInstance) {
+ $this->debugInstance();
$this->partialStub('templateInstance=' . $templateInstance->__toString());
}
}
'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 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.
+ *
+ * @todo 'anchor_href' may needs expanding with full URL
+ * @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);
+
+ // ... 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 cache file (FQFN)
*