Files
website/.classes/generic/renderFunctionsClass.php

87 lines
2.4 KiB
PHP

<?php
class renderFunctionsClass extends renderClass_abstract
{
private $_navData = array();
private $_subtpl = null;
private $_node = null;
private $_websiteIds = array();
private $_prefix = '';
public function createNavigationRights($navData, $tpl, $node)
{
$this->_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;
}
}