Code

Fixed Problem with TABS post creation
[gosa.git] / include / class_plugin.inc
index e7c01c3aa12c827ffdf99a20c1e44280a7f813f6..00751345df2b5bded55ff1813d3d026893ca14f1 100644 (file)
@@ -233,7 +233,6 @@ class plugin
     /* Save values to object */
     foreach ($this->attributes as $val){
       if (chkacl ($this->acl, "$val") == "" && isset ($_POST["$val"])){
-
         /* Check for modifications */
         if (get_magic_quotes_gpc()) {
           $data= stripcslashes($_POST["$val"]);
@@ -243,6 +242,17 @@ class plugin
         if ($this->$val != $data){
           $this->is_modified= TRUE;
         }
+    
+        /* Okay, how can I explain this fix ... 
+         * In firefox, disabled option fields aren't selectable ... but in IE you can select these fileds. 
+         * So IE posts these 'unselectable' option, with value = chr(194) 
+         * chr(194) seems to be the &nbsp; in between the ...option>&nbsp;</option.. because there is no value=".." specified in these option fields  
+         * This &nbsp; was added for W3c compliance, but now causes these ... ldap errors ... 
+         * So we set these Fields to ""; a normal empty string, and we can check these values in plugin::check() again ...
+         */
+        if(isset($data[0]) && $data[0] == chr(194)) {
+          $data = "";  
+        }
         $this->$val= $data;
       }
     }
@@ -355,7 +365,7 @@ class plugin
     } else {
       $state= "";
     }
-    $display= "<table width=\"100%\"><tr>\n<td colspan=2><p><b>$text</b></p>\n";
+    $display= "<table summary=\"\" width=\"100%\"><tr>\n<td colspan=2><p><b>$text</b></p>\n";
     $display.= "<input type=submit value=\"$button_text\" name=\"modify_state\" ".
       chkacl($this->acl, "all")." ".$state.
       "><p class=\"seperator\">&nbsp;</p></td></tr></table>";
@@ -367,14 +377,16 @@ class plugin
   {
     /* Find postcreate entries for this class */
     $command= search_config($this->config->data['MENU'], get_class($this), "POSTCREATE");
-    if ($command == ""){
-      $command= search_config($this->config->data['SERVICE'], get_class($this), "POSTCREATE");
+    if ($command == "" && isset($this->config->data['TABS'])){
+      $command= search_config($this->config->data['TABS'], get_class($this), "POSTCREATE");
     }
 
     if ($command != ""){
       /* Walk through attribute list */
       foreach ($this->attributes as $attr){
-        $command= preg_replace("/%$attr/", $this->$attr, $command);
+        if (!is_array($this->$attr)){
+          $command= preg_replace("/%$attr/", $this->$attr, $command);
+        }
       }
       $command= preg_replace("/%dn/", $this->dn, $command);
       if (check_command($command)){
@@ -393,14 +405,16 @@ class plugin
   {
     /* Find postcreate entries for this class */
     $command= search_config($this->config->data['MENU'], get_class($this), "POSTMODIFY");
-    if ($command == ""){
-      $command= search_config($this->config->data['SERVICE'], get_class($this), "POSTMODIFY");
+    if ($command == "" && isset($this->config->data['TABS'])){
+      $command= search_config($this->config->data['TABS'], get_class($this), "POSTMODIFY");
     }
 
     if ($command != ""){
       /* Walk through attribute list */
       foreach ($this->attributes as $attr){
-        $command= preg_replace("/%$attr/", $this->$attr, $command);
+        if (!is_array($this->$attr)){
+          $command= preg_replace("/%$attr/", $this->$attr, $command);
+        }
       }
       $command= preg_replace("/%dn/", $this->dn, $command);
       if (check_command($command)){
@@ -419,14 +433,16 @@ class plugin
   {
     /* Find postremove entries for this class */
     $command= search_config($this->config->data['MENU'], get_class($this), "POSTREMOVE");
-    if ($command == ""){
-      $command= search_config($this->config->data['SERVICE'], get_class($this), "POSTREMOVE");
+    if ($command == "" && isset($this->config->data['TABS'])){
+      $command= search_config($this->config->data['TABS'], get_class($this), "POSTREMOVE");
     }
 
     if ($command != ""){
       /* Walk through attribute list */
       foreach ($this->attributes as $attr){
-        $command= preg_replace("/%$attr/", $this->$attr, $command);
+        if (!is_array($this->$attr)){
+          $command= preg_replace("/%$attr/", $this->$attr, $command);
+        }
       }
       $command= preg_replace("/%dn/", $this->dn, $command);
       if (check_command($command)){
@@ -480,7 +496,7 @@ class plugin
       $this->reconnect= true;
       return (0);
     } else {
-      $this->error = "Could not bind to " . $binddn;
+      $this->error = "Could not bind to " . $credentials['ADMIN'];
       return NULL;
     }
   }