diff --git a/trunk/gosa-core/include/utils/layer-menu/lib/plainmenu.inc.php b/trunk/gosa-core/include/utils/layer-menu/lib/plainmenu.inc.php
--- /dev/null
@@ -0,0 +1,281 @@
+<?php
+// PHP Layers Menu 3.2.0-rc (C) 2001-2004 Marco Pratesi - http://www.marcopratesi.it/
+
+/**
+* This file contains the code of the PlainMenu class.
+* @package PHPLayersMenu
+*/
+
+/**
+* This is the PlainMenu class of the PHP Layers Menu library.
+*
+* This class depends on the LayersMenuCommon class and on the PEAR conforming version of the PHPLib Template class, i.e. on HTML_Template_PHPLIB. It provides plain menus, that to do not require JavaScript to work.
+*
+* @version 3.2.0-rc
+* @package PHPLayersMenu
+*/
+class PlainMenu extends LayersMenuCommon
+{
+
+/**
+* The template to be used for the Plain Menu
+*/
+var $plainMenuTpl;
+/**
+* An array where we store the Plain Menu code for each menu
+* @access private
+* @var array
+*/
+var $_plainMenu;
+
+/**
+* The template to be used for the Horizontal Plain Menu
+*/
+var $horizontalPlainMenuTpl;
+/**
+* An array where we store the Horizontal Plain Menu code for each menu
+* @access private
+* @var array
+*/
+var $_horizontalPlainMenu;
+
+/**
+* The constructor method; it initializates some variables
+* @return void
+*/
+function PlainMenu()
+{
+ $this->LayersMenuCommon();
+
+ $this->plainMenuTpl = $this->tpldir . 'layersmenu-plain_menu.ihtml';
+ $this->_plainMenu = array();
+
+ $this->horizontalPlainMenuTpl = $this->tpldir . 'layersmenu-horizontal_plain_menu.ihtml';
+ $this->_horizontalPlainMenu = array();
+}
+
+/**
+* The method to set the dirroot directory
+* @access public
+* @return boolean
+*/
+function setDirroot($dirroot)
+{
+ $oldtpldir = $this->tpldir;
+ if ($foobar = $this->setDirrootCommon($dirroot)) {
+ $this->updateTpldir($oldtpldir);
+ }
+ return $foobar;
+}
+
+/**
+* The method to set the tpldir directory
+* @access public
+* @return boolean
+*/
+function setTpldir($tpldir)
+{
+ $oldtpldir = $this->tpldir;
+ if ($foobar = $this->setTpldirCommon($tpldir)) {
+ $this->updateTpldir($oldtpldir);
+ }
+ return $foobar;
+}
+
+/**
+* The method to update the templates directory path to the new tpldir
+* @access private
+* @return void
+*/
+function updateTpldir($oldtpldir)
+{
+ $oldlength = strlen($oldtpldir);
+ $foobar = strpos($this->plainMenuTpl, $oldtpldir);
+ if (!($foobar === false || $foobar != 0)) {
+ $this->plainMenuTpl = $this->tpldir . substr($this->plainMenuTpl, $oldlength);
+ }
+ $foobar = strpos($this->horizontalPlainMenuTpl, $oldtpldir);
+ if (!($foobar === false || $foobar != 0)) {
+ $this->horizontalPlainMenuTpl = $this->tpldir . substr($this->horizontalPlainMenuTpl, $oldlength);
+ }
+}
+
+/**
+* The method to set plainMenuTpl
+* @access public
+* @return boolean
+*/
+function setPlainMenuTpl($plainMenuTpl)
+{
+ if (str_replace('/', '', $plainMenuTpl) == $plainMenuTpl) {
+ $plainMenuTpl = $this->tpldir . $plainMenuTpl;
+ }
+ if (!file_exists($plainMenuTpl)) {
+ $this->error("setPlainMenuTpl: file $plainMenuTpl does not exist.");
+ return false;
+ }
+ $this->plainMenuTpl = $plainMenuTpl;
+ return true;
+}
+
+/**
+* Method to prepare a new Plain Menu.
+*
+* This method processes items of a menu to prepare and return
+* the corresponding Plain Menu code.
+*
+* @access public
+* @param string $menu_name the name of the menu whose items have to be processed
+* @return string
+*/
+function newPlainMenu(
+ $menu_name = '' // non consistent default...
+ )
+{
+ $plain_menu_blck = '';
+ $t = new Template_PHPLIB();
+ $t->setFile('tplfile', $this->plainMenuTpl);
+ $t->setBlock('tplfile', 'template', 'template_blck');
+ $t->setBlock('template', 'plain_menu_cell', 'plain_menu_cell_blck');
+ $t->setVar('plain_menu_cell_blck', '');
+ for ($cnt=$this->_firstItem[$menu_name]; $cnt<=$this->_lastItem[$menu_name]; $cnt++) {
+ if ($this->tree[$cnt]['text'] == '---') {
+ continue; // separators are significant only for layers-based menus
+ }
+ $nbsp = '';
+ for ($i=1; $i<$this->tree[$cnt]['level']; $i++) {
+ $nbsp .= ' ';
+ }
+ $t->setVar(array(
+ 'nbsp' => $nbsp,
+ 'href' => $this->tree[$cnt]['parsed_href'],
+ 'title' => $this->tree[$cnt]['parsed_title'],
+ 'target' => $this->tree[$cnt]['parsed_target'],
+ 'text' => $this->tree[$cnt]['parsed_text']
+ ));
+ $plain_menu_blck .= $t->parse('plain_menu_cell_blck', 'plain_menu_cell', false);
+ }
+ $t->setVar('plain_menu_cell_blck', $plain_menu_blck);
+ $this->_plainMenu[$menu_name] = $t->parse('template_blck', 'template');
+
+ return $this->_plainMenu[$menu_name];
+}
+
+/**
+* Method that returns the code of the requested Plain Menu
+* @access public
+* @param string $menu_name the name of the menu whose Plain Menu code
+* has to be returned
+* @return string
+*/
+function getPlainMenu($menu_name)
+{
+ return $this->_plainMenu[$menu_name];
+}
+
+/**
+* Method that prints the code of the requested Plain Menu
+* @access public
+* @param string $menu_name the name of the menu whose Plain Menu code
+* has to be printed
+* @return void
+*/
+function printPlainMenu($menu_name)
+{
+ print $this->_plainMenu[$menu_name];
+}
+
+/**
+* The method to set horizontalPlainMenuTpl
+* @access public
+* @return boolean
+*/
+function setHorizontalPlainMenuTpl($horizontalPlainMenuTpl)
+{
+ if (str_replace('/', '', $horizontalPlainMenuTpl) == $horizontalPlainMenuTpl) {
+ $horizontalPlainMenuTpl = $this->tpldir . $horizontalPlainMenuTpl;
+ }
+ if (!file_exists($horizontalPlainMenuTpl)) {
+ $this->error("setHorizontalPlainMenuTpl: file $horizontalPlainMenuTpl does not exist.");
+ return false;
+ }
+ $this->horizontalPlainMenuTpl = $horizontalPlainMenuTpl;
+ return true;
+}
+
+/**
+* Method to prepare a new Horizontal Plain Menu.
+*
+* This method processes items of a menu to prepare and return
+* the corresponding Horizontal Plain Menu code.
+*
+* @access public
+* @param string $menu_name the name of the menu whose items have to be processed
+* @return string
+*/
+function newHorizontalPlainMenu(
+ $menu_name = '' // non consistent default...
+ )
+{
+ $horizontal_plain_menu_blck = '';
+ $t = new Template_PHPLIB();
+ $t->setFile('tplfile', $this->horizontalPlainMenuTpl);
+ $t->setBlock('tplfile', 'template', 'template_blck');
+ $t->setBlock('template', 'horizontal_plain_menu_cell', 'horizontal_plain_menu_cell_blck');
+ $t->setVar('horizontal_plain_menu_cell_blck', '');
+ $t->setBlock('horizontal_plain_menu_cell', 'plain_menu_cell', 'plain_menu_cell_blck');
+ $t->setVar('plain_menu_cell_blck', '');
+ for ($cnt=$this->_firstItem[$menu_name]; $cnt<=$this->_lastItem[$menu_name]; $cnt++) {
+ if ($this->tree[$cnt]['text'] == '---') {
+ continue; // separators are significant only for layers-based menus
+ }
+ if ($this->tree[$cnt]['level'] == 1 && $cnt > $this->_firstItem[$menu_name]) {
+ $t->parse('horizontal_plain_menu_cell_blck', 'horizontal_plain_menu_cell', true);
+ $t->setVar('plain_menu_cell_blck', '');
+ }
+ $nbsp = '';
+ for ($i=1; $i<$this->tree[$cnt]['level']; $i++) {
+ $nbsp .= ' ';
+ }
+ $t->setVar(array(
+ 'nbsp' => $nbsp,
+ 'href' => $this->tree[$cnt]['parsed_href'],
+ 'title' => $this->tree[$cnt]['parsed_title'],
+ 'target' => $this->tree[$cnt]['parsed_target'],
+ 'text' => $this->tree[$cnt]['parsed_text']
+ ));
+ $t->parse('plain_menu_cell_blck', 'plain_menu_cell', true);
+ }
+ $t->parse('horizontal_plain_menu_cell_blck', 'horizontal_plain_menu_cell', true);
+ $this->_horizontalPlainMenu[$menu_name] = $t->parse('template_blck', 'template');
+
+ return $this->_horizontalPlainMenu[$menu_name];
+}
+
+/**
+* Method that returns the code of the requested Horizontal Plain Menu
+* @access public
+* @param string $menu_name the name of the menu whose Horizontal Plain Menu code
+* has to be returned
+* @return string
+*/
+function getHorizontalPlainMenu($menu_name)
+{
+ return $this->_horizontalPlainMenu[$menu_name];
+}
+
+/**
+* Method that prints the code of the requested Horizontal Plain Menu
+* @access public
+* @param string $menu_name the name of the menu whose Horizontal Plain Menu code
+* has to be printed
+* @return void
+*/
+function printHorizontalPlainMenu($menu_name)
+{
+ print $this->_horizontalPlainMenu[$menu_name];
+}
+
+} /* END OF CLASS */
+
+?>