Code

Updated sudo
[gosa.git] / gosa-plugins / sudo / admin / sudo / class_sudoGeneric.inc
index ffccd2576e83f8bb7c777795d3b4b87fdabeeafb..0544cf64d8223392a86a218b44192937efdb96df 100644 (file)
@@ -193,9 +193,13 @@ class sudo extends plugin
     if(isset($_POST['SaveMultiSelectWindow']) && $this->dialog instanceof target_list_users){
       if($this->acl_is_writeable("sudoUser")){
         foreach($this->dialog->save() as $entry){
-          $cn = trim($entry['uid'][0]);
-          if(!in_array($cn,$this->sudoUser) && !in_array("!".$cn,$this->sudoUser)){
-            $this->sudoUser[] = $cn;
+          if(in_array("posixGroup",$entry['objectClass'])){
+            $name = trim("%".$entry['cn'][0]);
+          }else{
+            $name = trim($entry['uid'][0]);
+          }
+          if(!in_array($name,$this->sudoUser) && !in_array("!".$name,$this->sudoUser)){
+            $this->sudoUser[] = $name;
           }
         }   
       }
@@ -368,13 +372,47 @@ class sudo extends plugin
     $neg_img= "<img src='images/negate.png' alt='!' class='center'>"; 
     $option = "<input type='image' src='images/negate.png'     name='neg_%ATTR%_%KEY%' class='center'>"; 
     $option.= "<input type='image' src='images/edittrash.png'  name='del_%ATTR%_%KEY%' class='center'>"; 
-    foreach(array("sudoUser","sudoCommand","sudoHost","sudoRunAs") as $attr){
+    foreach(array("sudoCommand","sudoHost","sudoRunAs") as $attr){
+      if($this->acl_is_readable($attr)){
+        foreach($this->$attr as $key => $entry){
+          $neg = "";
+          if(preg_match("/^!/",$entry)){
+            $neg = $neg_img;
+          }
+          $entry = preg_replace("/^!/","",$entry);
+          $list_name = "divlist_".$attr;
+          $$list_name->AddEntry(
+              array(
+                array("string" => $neg,"attach" => "style='width:18px;'"),
+                array("string" => $entry),
+                array("string" => preg_replace(array("/%KEY%/","/%ATTR%/"),array($key,$attr),$option),
+                  "attach" => "style='width:40px; border-right: 0px;'")));
+        }
+      }
+    }
+
+    foreach(array("sudoUser") as $attr){
+      $img1 = "<img src='images/select_user.png'   alt='"._("User")."' class='center'>";
+      $img2 = "<img src='images/select_groups.png' alt='"._("Group")."' class='center'>";
       if($this->acl_is_readable($attr)){
         foreach($this->$attr as $key => $entry){
-          $entry = preg_replace("/^!/",$neg_img,$entry);
+          $neg = "";
+          if(preg_match("/^!/",$entry)){
+            $neg = $neg_img;
+          }
+          $entry = preg_replace("/^!/","",$entry);
+
+          $img = $img1;
+          if(preg_match("/^%/",$entry)){
+            $img = $img2;
+          }
+          $entry = preg_replace("/^%/","",$entry);
+  
           $list_name = "divlist_".$attr;
           $$list_name->AddEntry(
               array(
+                array("string" => $neg,"attach" => "style='width:18px;'"),
+                array("string" => $img,"attach" => "style='width:18px;'"),
                 array("string" => $entry),
                 array("string" => preg_replace(array("/%KEY%/","/%ATTR%/"),array($key,$attr),$option),
                   "attach" => "style='width:40px; border-right: 0px;'")));
@@ -382,6 +420,9 @@ class sudo extends plugin
       }
     }
 
+
+
+
     /* Tell smarty about our divlists 
      */
     $smarty->assign("divlist_sudoUser",   $divlist_sudoUser->DrawList());
@@ -478,6 +519,7 @@ class sudo extends plugin
     $this->attrs['sudoRunAs']   = array_values($this->attrs['sudoRunAs']);
     $this->attrs['sudoUser']    = array_values($this->attrs['sudoUser']);
     $this->attrs['sudoCommand'] = array_values($this->attrs['sudoCommand']);
+
     $this->cleanup();
 
     $ldap = $this->config->get_ldap_link();