Code

Some pliglist iconmenu updates
[gosa.git] / gosa-core / include / class_pluglist.inc
index 0cf5f9fdcbb05b118358b253e55969c68b35ff6d..a0e13d4fd6557bf76eee48863b53d0cbee0ff95a 100644 (file)
@@ -133,28 +133,6 @@ class pluglist {
   }
 
 
-  /*! \brief    Generates an array containing plugin names (headlines) and theirs ids.
-   *            This is just used in the helpviewer.php  
-   */
-  function gen_headlines()
-  {
-    $ret = array();
-    if(count($this->headlines) == 0){
-      foreach($this->config->data['MENU'] as $headline => $plugins){
-        foreach( $plugins as $id => $plug){
-          if (plugin_available($plug['CLASS'])){
-            $attrs = (get_class_vars($plug['CLASS']));
-            $ret[$id]['HEADLINE'] = $headline;
-            $ret[$id]['NAME']    = $attrs['plHeadline'];
-          }
-        }
-      }
-      $this->headlines = $ret;
-    }
-    return($this->headlines);
-  }
-
-
   /*! \brief    Check the accessibility of the configured plugins.
    *            We may simply have now permissions to access some plugins 
    *             but some may be broken or missing!.
@@ -198,7 +176,6 @@ class pluglist {
   function gen_menu()
   {
     if ($this->menu == ""){
-      $cfg= $this->config->data['MENU'];
       $this->checkMenu();
       $cfg= $this->config->data['MENU'];
       $menu = "\n<div class='navigation'>";
@@ -224,9 +201,7 @@ class pluglist {
           $this->allowed_plugins[$index] = $index;
           $class= "";
           if($id == count($plug)) $class=" class='menu-last' \n   ";
-          $menu .=  "\n  <li $class onClick='return question(\"".
-            _("You are currently editing a database entry. Do you want to dismiss the changes?")."\", 
-            \"$href\");'>".$plHeadline."</li>";
+          $menu .=  "\n  <li $class onClick='return openPlugin({$index});'>".$plHeadline."</li>";
         }
         $menu.= "\n </ul>";
         $menu.= "\n <div></div>\n";
@@ -236,6 +211,17 @@ class pluglist {
       }
       $menu.= "\n</div>";
       $this->menu = $menu;
+
+      // Add javascript method to print out warning messages while leaving an unsaved form.
+      // We do it in here to get the string translated.
+      $this->menu .= "
+        <script language='javascript' type='text/javascript'>
+        function openPlugin(id){
+          return question(\""._("You are currently editing a database entry. Do you want to dismiss the changes?")."\",
+              \"main.php?plug=\" + id + \"&amp;reset=1\");
+        }
+      </script>
+        "; 
     }
 
     // Return the generated/cached gosa menu.
@@ -253,109 +239,60 @@ class pluglist {
   function show_iconmenu()
   {
     global $class_mapping;
+
+    $this->iconmenu = "";
     if ($this->iconmenu == ""){
       $cfg= $this->config->data['MENU'];
-
-      if (isset($this->config->current['ICONSIZE'])){
-        list($x, $y)= explode("x", $this->config->get_cfg_value("iconsize"));
-        $isize= "width=\"$x\" height=\"$y\"";
-      } else {
-        $isize= "";
-      }
-
-      /* Parse headlines */
       foreach ($cfg as $headline => $plug){
-        $col= 1;
-        $menu= "<h1 class=\"menuheader\">".
-          _($headline)."</h1>\n<table summary=\"\" style=\"width:100%;".
-          "font-size: 14px;\" cellpadding=7 border=0>\n<tr>\n";
-        $entries= "";
+        $col= 0;
 
-        foreach ($plug as $info){
+        $this->iconmenu .= "\n  <div class='clear'></div>\n";
+        $this->iconmenu .= "\n  <h3>". _($headline)."</h3>\n";
 
-          if (!plugin_available($info['CLASS'])){
-            continue;
-          }
+        foreach ($plug as $info){
 
-          /* Read information from class variable */
+          // Get Plugin info
           $vars= get_class_vars($info['CLASS']);
           $plHeadline= $vars['plHeadline'];
           $plDescription= $vars['plDescription'];
-          if (isset($vars['plIcon'])){
-            $plIcon= $vars['plIcon'];
-          } else {
-            $plIcon= "plugin.png";
-          }
-
+          $plIcon = (isset($vars['plIcon'])) ? $vars['plIcon']: "plugin.png";
           $index= $this->get_index($info['CLASS']);
 
-          $href = "main.php?plug=".$index."&amp;reset=1";
-
           /* Check if class is available. If the class doesn't exists display error symbol 
-             to avoid that a user clicks on a non existing plugin  */
+           *  to avoid that a user clicks on a non existing plugin  
+           */
           if(!$vars){
             $plHeadline = $plDescription = _("Unknown");
             $info['ICON'] = "error.png";
-            $href="main.php?reset=1";
+            $index = '';
           }
 
-
-          if ($this->check_access($info['ACL'])){
-
-            /* Load icon */
-            if (isset($info['ICON'])){
-              $image= get_template_path('images/'.$info['ICON']);
-            } else {
-              if(!preg_match("/\//",$plIcon)){
-                $image= get_template_path("plugins/".preg_replace('%^.*/([^/]+)/[^/]+$%', '\1', $class_mapping[$info['CLASS']])."/images/$plIcon");
-              }else{
-                $image = $plIcon; 
-              }
-            }
-            if ($col > 5){
-              $entries= $entries."</tr><tr>";
-              $col = 1;
-            }
-            $entries= $entries."<td class=\"iconmenu\" style=\"width:20%;\" onClick='location.href=\"".$href."\"'".
-              ">";
-            if(session::global_get('js')){
-              $entries.= "<img $isize border=0 align=middle src=\"$image".
-                "\" alt=\"*\">&nbsp;".
-                _($plHeadline);
-            } else {
-              $entries.= "<a class=\"iconmenu\" href=\"".$href."\">".
-                "<img $isize border=0 align=middle src=\"$image".
-                "\" alt=\"*\">&nbsp;".
-                _($plHeadline)."</a>";
-            }
-            $entries.= "</td>\n";
-            $col++ ;
-
+          // Detect the correct position of the plugin icon
+          if(!preg_match("/\//",$plIcon)){
+            $image= get_template_path("plugins/".preg_replace('%^.*/([^/]+)/[^/]+$%', '\1', 
+                  $class_mapping[$info['CLASS']])."/images/$plIcon");
+          }else{
+            $image = $plIcon; 
           }
-        }
 
-        /* Append to menu */
-        if ($entries != ""){
-          $this->iconmenu.= $menu.$entries;
-
-          /* Fill up remaining columns */
-          if ($col != 1){
-            $col--;
-            while ($col % 5){
-              $this->iconmenu= $this->iconmenu.
-                "<td style=\"width:20%\">&nbsp;</td>\n";
-              $col++;
-            }
+          // Add a seperating row
+          if (($col % 4) == 0){ 
+            $this->iconmenu .= "\n  <div class='clear'></div>\n";
           }
 
-          /* close table */
-          $this->iconmenu= $this->iconmenu."</tr>\n</table>\n";
+          $this->iconmenu.= 
+"
+  <div class='container-element' style='width: 25%;' onclick=\"openPlugin({$index})\"> 
+   <div class='icon-menu-item' style='background-image: url(".$image.");'>
+    <h1>".$plHeadline."</h1>
+    <p>".$plDescription."</p>
+   </div>
+  </div>
+";
+          $col++ ;
         }
       }
-
     }
-
-    /* Write menu output */
     return ($this->iconmenu);
   }
 
@@ -368,7 +305,6 @@ class pluglist {
     if(!isset($this->dirlist[$index])){
       return ("");
     }
-    echo "../".$this->dirlist[$index];
     return ("../".$this->dirlist[$index]);
   }
 
@@ -409,6 +345,27 @@ class pluglist {
     $this->iconmenu ="";
   }
 
+
+  /*! \brief    Generates an array containing plugin names (headlines) and theirs ids.
+   *            This is just used in the helpviewer.php  
+   */
+  function gen_headlines()
+  {
+    $ret = array();
+    if(count($this->headlines) == 0){
+      foreach($this->config->data['MENU'] as $headline => $plugins){
+        foreach( $plugins as $id => $plug){
+          if (plugin_available($plug['CLASS'])){
+            $attrs = (get_class_vars($plug['CLASS']));
+            $ret[$id]['HEADLINE'] = $headline;
+            $ret[$id]['NAME']    = $attrs['plHeadline'];
+          }
+        }
+      }
+      $this->headlines = $ret;
+    }
+    return($this->headlines);
+  }
 }
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>