diff --git a/gosa-plugins/sudo/admin/sudo/class_sudoGeneric.inc b/gosa-plugins/sudo/admin/sudo/class_sudoGeneric.inc
index ffccd2576e83f8bb7c777795d3b4b87fdabeeafb..0544cf64d8223392a86a218b44192937efdb96df 100644 (file)
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;
}
}
}
$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;'")));
}
}
+
+
+
/* Tell smarty about our divlists
*/
$smarty->assign("divlist_sudoUser", $divlist_sudoUser->DrawList());
$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();