Code

Updated sieve filter styles.
[gosa.git] / include / class_tabs.inc
index fc1af5227fff3637bc355cc45634c6d7ab86c5bd..729a441d89e576a5cc511accdd7957eee3e1373d 100644 (file)
@@ -24,6 +24,7 @@ class tabs
   var $config;
   var $acl;
   var $is_template;
+  var $is_new= FALSE;
 
   var $last= "";
   var $current= "";
@@ -32,23 +33,32 @@ class tabs
   var $by_object= array();
   var $SubDialog = false;
 
-  function tabs($config, $data, $dn)
+  function tabs($config, $data, $dn, $acl_category= "")
   {
        /* Save dn */
        $this->dn= $dn;
        $this->config= $config;
+       
+       $baseobject= NULL;
 
        foreach ($data as $tab){
                $this->by_name[$tab['CLASS']]= $tab['NAME'];
-               $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn);
+
+               if ($baseobject == NULL){
+                       $baseobject= new $tab['CLASS']($this->config, $this->dn);
+                       $this->by_object[$tab['CLASS']]= $baseobject;
+               } else {
+                       $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject);
+               }
+
                $this->by_object[$tab['CLASS']]->parent= &$this;
+               $this->by_object[$tab['CLASS']]->set_acl_category($acl_category);
 
                /* Initialize current */
                if ($this->current == ""){
                        $this->current= $tab['CLASS'];
                }
        }
-
   }
 
   function execute()
@@ -80,7 +90,9 @@ class tabs
 
        $obj= $this->by_object[$this->current];
        $display.= $obj->execute();
-       $this->by_object[$this->current]= $obj;
+  if (is_php4()){
+    $this->by_object[$this->current]= $obj;
+  }
 
        /* Footer for tabbed dialog */
        $display.= "</td></tr></table>";
@@ -96,7 +108,9 @@ class tabs
 
                $obj= $this->by_object[$this->last];
                $obj->save_object ();
-               $this->by_object[$this->last]= $obj;
+    if (is_php4()){
+      $this->by_object[$this->last]= $obj;
+    }
        }
 
        /* Skip if curent and last are the same object */
@@ -112,9 +126,10 @@ class tabs
                        $this->current, "Saving (current)");
 
                $obj->save_object ();
-               $this->by_object[$this->current]= $obj;
+    if (is_php4()){
+      $this->by_object[$this->current]= $obj;
+    }
        }
-
   }
 
   function gen_tabs()
@@ -140,11 +155,14 @@ class tabs
                $display.= "<td style=\"vertical-align:bottom;width:1px;\">";
 
                /* Shorten string if its too long for the tab headers*/
-               $title= '<nobr>'._($name).'</nobr>';
+               $title= _($name);
                if (mb_strlen($title, 'UTF-8') > 28){
                        $title= mb_substr($title,0, 25, 'UTF-8')."...";
                }
-               
+                       
+               /* nobr causes w3c warnings so we use &nbsp; to keep the tab name in one line */
+               $title= preg_replace("/ /","&nbsp;",$title);
+
                if ($_SESSION['js']==FALSE){    
                        $display.= "<div class=\"$style[$index]\"><input type=\"submit\" name=\"$class\"".
                                   " class=\"$style[$index]\" value=\"$title\"";
@@ -162,15 +180,8 @@ class tabs
 
   function set_acl($acl)
   {
-       /* Set local acl */
-       $this->acl= $acl;
-
-       /* Setup for all plugins */
-       foreach ($this->by_object as $key => $obj){
-               $sacl= get_module_permission($acl, "$key", $this->dn);
-               $obj->acl= $sacl;
-               $this->by_object[$key]= $obj;
-       }
+       /* Look for attribute in ACL */
+         trigger_error("Don't use tabs::set_acl() its obsolete.");
   }
 
   function delete()
@@ -204,24 +215,27 @@ class tabs
 
   function check($ignore_account= FALSE)
   {
-       $this->save_object(TRUE);
-       $messages= array();
-
-       /* Check all plugins */
-       foreach ($this->by_object as $key => $obj){
-               if ($obj->is_account || $ignore_account || $obj->ignore_account){
-                       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,
-                               $key, "Checking");
-
-                       $messages= $obj->check();
-                       if (count($messages)){
-                               $this->current= $key;
-                               break;
-                       }
-               }
-       }
-
-       return ($messages);
+    $this->save_object(TRUE);
+    $messages= array();
+
+    /* Check all plugins */
+    foreach ($this->by_object as $key => $obj){
+      if ($obj->is_account || $ignore_account || $obj->ignore_account){
+        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,
+            $key, "Checking");
+
+        $messages= $obj->check();
+        if (is_php4()){
+          $this->by_object[$key]= $obj;
+        }
+        if (count($messages)){
+          $this->current= $key;
+          break;
+        }
+      }
+    }
+
+    return ($messages);
   }
 
   function save($ignore_account= FALSE)
@@ -251,7 +265,9 @@ class tabs
                                  $key, "Adapting");
                  $obj->parent= &$this;
                  $obj->adapt_from_template($dn);
-                 $this->by_object[$key]= $obj;
+      if (is_php4()){
+        $this->by_object[$key]= $obj;
+      }
          }
   }
 
@@ -272,20 +288,23 @@ class tabs
    */
   function getCopyDialog()
   {
-         $ret = "";
-         $this->SubDialog = false;
-         foreach ($this->by_object as $key => $obj){
-                 if($obj->is_account){
-                         $tmp = $this->by_object[$key]->getCopyDialog();
-                         if($tmp['status'] == "SubDialog"){
-                                 $this->SubDialog = true;
-                     return($tmp['string']);
-                 }else{
-                 $ret .= $tmp['string'];
-                         }
-                 }
-         }
-         return($ret);
+    $ret = "";
+    $this->SubDialog = false;
+    foreach ($this->by_object as $key => $obj){
+      if($obj->is_account){
+        $tmp = $this->by_object[$key]->getCopyDialog();
+        if($tmp['status'] == "SubDialog"){
+          $this->SubDialog = true;
+          return($tmp['string']);
+        }else{
+          if(!empty($tmp['string'])){
+            $ret .= $tmp['string'];
+            $ret .= "<p class='seperator'>&nbsp;</p>";
+          }
+        }
+      }
+    }
+    return($ret);
   }
 
 
@@ -300,6 +319,21 @@ class tabs
   }
 
 
-}
+  function set_acl_base($base= "")
+  {
+       /* Update reference, transfer variables */
+       $first= ($base == "");
+       foreach ($this->by_object as $name => $obj){
+               if ($first){
+                       $first= FALSE;
+                       $base= $obj->acl_base;
+               } else {
+                       $obj->set_acl_base($base);
+                       $this->by_object[$name]= $obj;
+               }
+       }
+  }
 
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>