_navData = $navData; $this->_subtpl = $tpl; $this->_node = $node; $this->_prefix = renderFunctionsClass::getNavigationPrefix(); $node = renderFunctionsClass::getNavigationNode(0); if ($node !== false) { $this->_node->appendChild($node); } return $this->_node; } private function getNavigationPrefix() { foreach ($this->_navData[0] as $tmp_data) { foreach ($tmp_data as $key => $value) { if (strpos($key, '_') !== false) { return substr($key, 0, strpos($key, '_') + 1); } else { return ''; } } } } private function getNavigationNode($navStart) { if (!isset ($this->_navData[$navStart]) || count($this->_navData [$navStart]) == 0) { return false; } $newNode = $this->_subtpl->createElement('ul'); foreach ($this->_navData [$navStart] AS $key => $value) { $newLi = $this->_subtpl->createElement('li'); $input = $this->_subtpl->createElement('input'); $input->setAttributeNode(new DOMAttr ('type', 'checkbox')); $input->setAttributeNode(new DOMAttr ('name', str_replace('_outer', '', $this->_node->getAttribute('id') . '[ ]'))); $input->setAttributeNode(new DOMAttr ('value', $this->_prefix . $value[$this->_prefix . 'navId'])); $input->setAttributeNode(new DOMAttr ('id', $this->_prefix . $value[$this->_prefix . 'navId'])); if ($this->_prefix === 'portal_' && array_key_exists($value[$this->_prefix . 'navId'], $this->_website)) { $input->setAttributeNode(new DOMAttr ('data-referer', $this->_website[$value[$this->_prefix . 'navId']]['prefix'] . 'Rights')); } $label = $this->_subtpl->createElement('label'); $label->setAttributeNode(new DOMAttr ('for', $this->_prefix . $value[$this->_prefix . 'navId'])); $label->appendChild(new DOMText ($value[$this->_prefix . 'navName'])); $newLi->appendChild($input); $newLi->appendChild($label); $sub_node = renderFunctionsClass:: getNavigationNode($value [$this->_prefix . 'navId']); if ($sub_node !== false) { $newLi->setAttributeNode(new DOMAttr ('class', 'hasChild')); $newLi->appendChild($sub_node); } $newNode->appendChild($newLi); } unset ($this->_navData [$navStart]); return $newNode; } }