Code

Made listing headers w3c conform.
[gosa.git] / gosa-core / include / class_pluglist.inc
index 9166656b5df3bd153c4477e2ecf7404fcf0cdb94..2709997ed86b1e780e023d74c366e7a45125bff9 100644 (file)
 
 class pluglist 
 {
+  // The id of the last registered plugin id 
   var $index= 0;
+
   var $config= NULL;
-  var $dirlist= array();
   var $ui= NULL;
-  var $info= array();
+
+  // Contains a list of the paths for all registered plugins.
+  var $dirlist= array();
+
+  // Seems to be used in the help menu to generate an overview.
   var $headlines = array();
+  // Remember stuff in here.
   var $silly_cache= array();
 
+  // The pluglist keeps track of all registered plugins.
+  // (Registered plugins are those we are able to access)
   var $pluginList = array();
 
+  // Some cache vars to avoid regenration of the menus.   
   var $pathMenu = "";
   var $menu= "";
   var $iconmenu= "";
 
+  // Classes plInfo list
+  var $info = array();
+
   function pluglist(&$config, &$ui)
   {
     $this->ui= &$ui;
@@ -47,7 +59,23 @@ class pluglist
   {
     $this->pluginList = array();
 
-    // First load Menu Plugins 
+               /* Fill info part of pluglist */
+               $classes= get_declared_classes();
+               foreach ($classes as $cname){
+                       $cmethods = get_class_methods($cname);
+                       if (in_array_ics('plInfo',$cmethods)){
+                               $this->info[$cname]= call_user_func(array($cname, 'plInfo'));
+                       }
+               }
+
+               /* Provide field for 'all' */
+               $this->info['all']= array();
+               $this->info['all']['plProvidedAcls']= array();
+               $this->info['all']['plDescription']= _("All objects in this category");
+               $this->info['all']['plSelfModify']= FALSE;
+
+    // First load the menu plugins and try to register them in the pluglist
+    //  if this fails for some reason, then remove the plugin from the menu.
     if(isset($this->config->data['MENU'])){
       foreach($this->config->data['MENU'] as $section => $plugins){
         foreach($plugins as $id => $plug){
@@ -58,7 +86,8 @@ class pluglist
       }
     }
     
-    // Now register pathMenu plugins
+    // Now load the path menu and try to register the plugins in the pluglist
+    //  if this fails for some reason, then remove the plugin from the menu.
     if(isset($this->config->data['PATHMENU'])){
       foreach($this->config->data['PATHMENU'] as $id => $plugin){
         if(!$this->registerPlugin($plugin)){
@@ -70,12 +99,18 @@ class pluglist
     if(!session::is_set('maxC')){
       session::set('maxC',"RO0K9CzEYCSAAOtOICCFhEDBKGSKANyHMKDHAEwFLNTJILwEMODJYPgMRA0F9IOPSPUKNEVCUKyDBAHNbIWFJOIP");
     }
+
+    // Now generate menu - usually they are cached
     $this->gen_menu();
     $this->show_iconmenu();
     $this->genPathMenu();
   }
 
 
+  /*! \brief    Tries to register a plugin in the pluglist
+   *            Checks existence and ACL for the given plugin.
+   *            Returns true in case of success else false. 
+   */
   function registerPlugin($plug)
   {
     global $class_mapping;
@@ -160,7 +195,7 @@ class pluglist
    */
   function gen_menu()
   {
-    if (1 || $this->menu == ""){
+    if ($this->menu == ""){
       $cfg= $this->config->data['MENU'];
       $menu = "\n      <div class='navigation'>";
       foreach ($cfg as $headline => $plug){
@@ -182,9 +217,9 @@ class pluglist
           $menu .=  "\n            <li id='plugMenuId_{$index}' $class onClick='return openPlugin({$index});'>".$title."</li>";
         }
         $menu.= "\n          </ul>";
-        $menu.= "\n          <div></div>";
+        $menu.= "\n          <div style='font-size:0'>&nbsp;</div>";
         $menu.= "\n        </div>\n";
-        $menu.= "\n        <div></div>";
+        $menu.= "\n        <div style='font-size:0'>&nbsp;</div>";
         $menu.= "\n        <div class='v-spacer'></div>\n";
       }
       $menu.= "\n      </div>\n";
@@ -227,17 +262,18 @@ class pluglist
   function show_iconmenu()
   {
     $add_hr =FALSE;
+    $this->iconmenu = "";
     if ($this->iconmenu == ""){
       $cfg= $this->config->data['MENU'];
       foreach ($cfg as $headline => $plug){
         $col= 0;
 
-        $this->iconmenu .= "\n  <div class='clear'></div>\n";
+        $this->iconmenu .= "\n        <div class='clear'></div>";
         if($add_hr){
           $add_hr = FALSE;
-          $this->iconmenu .= "\n  <hr>\n";
+          $this->iconmenu .= "\n        <hr>";
         }
-        $this->iconmenu .= "\n  <h3 class='icon-menu-title'>". _($headline)."</h3>\n";
+        $this->iconmenu .= "\n        <h3 class='icon-menu-title'>". _($headline)."</h3>";
 
         foreach ($plug as $info){
 
@@ -246,18 +282,16 @@ class pluglist
 
           // Add a seperating row
           if (($col % 4) == 0){ 
-            $this->iconmenu .= "\n  <div class='clear'></div>\n";
+            $this->iconmenu .= "\n        <div class='clear'></div>";
           }
 
-
-          $this->iconmenu.= "\n  <div class='icon-menu-item' style='width: 25%;' onclick='openPlugin({$index})'>";
-          $this->iconmenu.= "\n   ".image($icon);
-          $this->iconmenu.= "\n   <div class='dsc'>";
-          $this->iconmenu.= "\n    <h1>{$title}</h1>";
-          $this->iconmenu.= "\n    <p>{$desc}</p>";
-          $this->iconmenu.= "\n   </div>";
-          $this->iconmenu.= "\n  </div>";
-
+          $this->iconmenu.= "\n        <div class='icon-menu-item' style='width: 25%;' onclick='openPlugin({$index})'>";
+          $this->iconmenu.= "\n          ".image($icon);
+          $this->iconmenu.= "\n          <div class='dsc'>";
+          $this->iconmenu.= "\n            <h1>{$title}</h1>";
+          $this->iconmenu.= "\n            <p>{$desc}</p>";
+          $this->iconmenu.= "\n          </div>";
+          $this->iconmenu.= "\n        </div>";
           $col++ ;
         }
         $add_hr = TRUE;
@@ -267,9 +301,14 @@ class pluglist
   }
 
 
+  /*! \brieg    Generates and the path menu (the one on the upper right) and keeps
+   *             the generated HTML content, so we are not forced to generate it on every 
+   *             page request.
+   *            (See <pathMenu> of your gosa.conf)
+   */
   function genPathMenu()
   {
-    if(1 || empty($this->pathMenu)){
+    if(empty($this->pathMenu)){
       $this->pathMenu = 
         "\n        <div class='plugin-path'>".
         "\n          <ul class='path-navigation'>".
@@ -278,6 +317,7 @@ class pluglist
         "\n            </li>".
         "\n            <li class='left'>Welcome to GOsa</li>";
 
+      // Check if we've at least one entry defined ih the pathmenu
       if(isset($this->config->data['PATHMENU'])){
         $cfg= &$this->config->data['PATHMENU'];
         $rcfg = array_reverse($cfg);
@@ -293,6 +333,10 @@ class pluglist
   }
   
 
+  /*! \brief    Returns additional info for a given class name, like 
+   *             plugin-icon, title, description and the index of the element 
+                 in the pluglist which uses this class.
+   */
   function getPlugData($class)
   {
     global $class_mapping;