/**
  * recursive fill the menu.
  *
  * @param string $lbl
  * @param array $page
  * @param string $class
  * @access private
  * @return	DomElement 
  */
 private function fillMenu($lbl, $page, $class = null)
 {
     if ($class === null) {
         $rq = new RequestHandler(DEFAULTPAGE, $this->basepath);
     }
     if (is_array($page)) {
         if (isset($page['default'])) {
             $li = $this->document->createElement('li');
             $a = $this->document->createElement('a', $lbl);
             $a->setAttribute('href', $this->basepath . '/' . $page['default']);
             if ($class === null && $rq->getPage() == $page['default']) {
                 $li->setAttribute('class', 'selected');
             }
             $li->appendChild($a);
             unset($page['default']);
         } else {
             $li = $this->document->createElement('li', $lbl);
         }
         if (count($page) > 0) {
             $subList = $this->document->createElement('ul');
             if (!empty($class)) {
                 $subList->setAttribute('class', 'sub');
             } else {
                 $subList->setAttribute('class', 'sub first');
             }
             foreach ($page as $slbl => $spage) {
                 $subList->appendChild($this->fillMenu($slbl, $spage, 'sub'));
             }
             $li->appendChild($subList);
         }
         return $li;
     } else {
         $li = $this->document->createElement('li');
         $a = $this->document->createElement('a', $lbl);
         $a->setAttribute('href', $this->basepath . '/' . $page);
         if ($class === null && $rq->getPage() == $page) {
             $li->setAttribute('class', 'selected');
         }
         $li->appendChild($a);
         return $li;
     }
 }
 /**
  * build menu before content
  *
  * @access public
  * @return void
  */
 public function beforeContent()
 {
     $menu = $this->document->getElementById($this->id);
     if ($menu) {
         $this->document->addCss('public/css/simplemenu.css');
         $menu->removeAttribute('style');
         $menuList = $this->document->createElement('ul');
         $rq = new RequestHandler(DEFAULTPAGE, $this->basepath);
         foreach ($this->menuItems as $lbl => $page) {
             $li = $this->document->createElement('li');
             $a = $this->document->createElement('a', $lbl);
             $a->setAttribute('href', $this->basepath . '/' . $page);
             if ($rq->getPage() == $page) {
                 $li->setAttribute('class', 'selected');
             }
             $li->appendChild($a);
             $menuList->appendChild($li);
         }
         $menu->appendChild($menuList);
     }
 }
 /**
  * default page run.
  * all is controlled by thisone (well thisone is called from __toString)
  *
  * @access private
  * @return void
  */
 private function run()
 {
     /* onentry modules */
     $this->runModules('onEntry');
     $rq = new RequestHandler($this->defaultPage, $this->basepath);
     /* beforeContent modules */
     $this->runModules('beforeContent');
     $page = null;
     $classname = "Pages_" . ucfirst($rq->getPage());
     if (class_exists($classname) && Acl::acl()->isAllowed($rq->getPage())) {
         $page = new $classname($this->document, $this->toArray());
         if (!$page instanceof IPages) {
             throw new Exception('the page doesnt implement the page interface');
         }
         if ($rq->getParameters() != null) {
             $page->setParameters($rq->getParameters());
         }
         if ($rq->getAction() != null && method_exists($page, $rq->getAction())) {
             $action = $rq->getAction();
             $page->{$action}();
         } else {
             $page->index();
         }
     } else {
         $page = new Pages_404($this->document, $this->toArray());
         $page->index();
     }
     /* afterContent modules */
     $this->runModules('afterContent');
     /* onExit modules */
     $this->runModules('onExit');
 }