X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fogroups%2Fclass_divListOGroup.inc;h=32276f8969df7250911423ed45cde8cc7f08a3d3;hb=03ace41f27d274a8a82ad57defa833bf6cecd6d6;hp=69e6ce20738473cd3497846c822f3eb65cdc7ede;hpb=926339449603324f5626fecaf91ab26e8856d960;p=gosa.git diff --git a/plugins/admin/ogroups/class_divListOGroup.inc b/plugins/admin/ogroups/class_divListOGroup.inc index 69e6ce207..32276f896 100755 --- a/plugins/admin/ogroups/class_divListOGroup.inc +++ b/plugins/admin/ogroups/class_divListOGroup.inc @@ -48,12 +48,17 @@ class divListOGroup extends MultiSelectWindow $this->EnableSaveButton (false); /* Dynamic action col, depending on snapshot icons */ - $action_col_size = 70; + $action_col_size = 80; if($this->parent->snapshotEnabled()){ $action_col_size += 38; } + /* Toggle all selected / deselected */ + $chk = ""; + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); $this->AddHeader(array("string" => _("Name of object groups")." / "._("Departments"), "attach" => "style=''")); $this->AddHeader(array("string" => _("Properties"), "attach" => "style='width:136px;'")); @@ -87,65 +92,101 @@ class divListOGroup extends MultiSelectWindow $options= ""; /* Get all departments within this subtree */ + $ui= get_userinfo(); + $first = ""; + $found = FALSE; $base = $this->config->current['BASE']; - $deps= get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base, - array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH); + + /* Add base */ + $tmp = array(); + $tmp[] = array("dn"=>$this->config->current['BASE']); + $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base, + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); + + $deps = array(); + foreach($tmp as $tm){ + $deps[$tm['dn']] = $tm['dn']; + } /* Load possible departments */ $ui= get_userinfo(); $tdeps= $ui->get_module_departments("ogroups"); - $ids = $this->config->idepartments; + $first = ""; + $found = FALSE; + foreach($ids as $dep => $name){ + if(isset($deps[$dep]) && in_array_ics($dep, $tdeps)){ + + /* Keep first base dn in mind, we could need this + * info if no valid base was found + */ + if(empty($first)) { + $first = $dep['dn']; + } - foreach($deps as $dep){ - if(isset($ids[$dep['dn']]) && in_array_ics($dep['dn'], $tdeps)){ - - $value = $ids[$dep['dn']]; - if ($this->selectedBase == $dep['dn']){ - $options.= ""; + $value = $ids[$dep]; + if ($this->selectedBase == $dep){ + $found = TRUE; + $options.= ""; } else { - $options.= ""; + $options.= ""; } } } + /* The currently used base is not visible with your acl setup. + * Set base to first useable base. + */ + if(!$found){ + $this->selectedBase = $first; + } + + /* Add a seperator after displaying c&p and snapshot icons ? */ + $add_sep = false; + /* Get copy & paste icon */ - if(preg_match("/w/",$ui->get_permissions($this->selectedBase,"ogroups/ogroup")) && $this->parent->CopyPasteHandler){ + $acls = $ui->get_permissions($this->selectedBase,"ogroups/ogroup"); + $acl_all= $ui->has_complete_category_acls($this->selectedBase,"ogroups"); + $Copy_Paste =""; + if(preg_match("/(c.*w|w.*c)/",$acl_all) && $this->parent->CopyPasteHandler){ $Copy_Paste = $this->parent->CopyPasteHandler->generatePasteIcon(); - }else{ - $Copy_Paste =""; + $add_sep = true; } - // Managment - $listhead = "
". - "  ". - "  ". - "  ". - "  ". - "  "; + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); - $acls = $ui->get_permissions($this->selectedBase,"ogroups/ogroup"); - if(preg_match("/c/",$acls) && preg_match("/w/",$acls)){ + /* Add snapshot restore icons */ + if(preg_match("/(c.*w|w.*c)/",$acl_all)){ $listhead .= $this->get_snapshot_header($this->selectedBase); - }else{ - $listhead .= " "; + $add_sep = true; } + /* Create new ogroup icon */ if(preg_match("/c/",$acls)) { $listhead .=" "; + $add_sep = true; } - $listhead .= $Copy_Paste. - "  ". - _("Base")." ". + /* Add copy & paste icon */ + $listhead .= $Copy_Paste; + + /* Should we add a seperator here ? */ + if($add_sep){ + $listhead .="  "; + } + + /* Add department selector */ + $listhead .= _("Base")." ". "  ". - "
"; + title='"._("Submit department")."' name='submit_department' alt='"._("Submit")."'> "; + + /* Multiple options */ + $listhead .= "  "; + + $listhead .=""; $this->SetListHeader($listhead); } @@ -168,7 +209,7 @@ class divListOGroup extends MultiSelectWindow $empty = ""; /* Dynamic action col, depending on snapshot icons */ - $action_col_size = 70; + $action_col_size = 80; if($this->parent->snapshotEnabled()){ $action_col_size += 38; } @@ -180,18 +221,18 @@ class divListOGroup extends MultiSelectWindow /* Create action icons */ $actions= ""; - if($this->parent->CopyPasteHandler && preg_match("/w/",$ui->get_category_permissions($val['dn'],"ogroups"))){ + $acl_all= $ui->has_complete_category_acls($val['dn'],"ogroups"); + if(($this->parent->CopyPasteHandler) && preg_match("/(c.*w|w.*c)/",$acl_all)){ $actions.= " "; $actions.= " "; } - $actions.= ""; - if(preg_match("/w/",$ui->get_permissions($val['dn'],"groups/group"))){ + if(preg_match("/(c.*w|w.*c)/", $acl_all)){ $actions.= $this->GetSnapShotActions($val['dn']); } @@ -199,7 +240,7 @@ class divListOGroup extends MultiSelectWindow $actions.= ""; }else{ - $action.= " "; } @@ -215,12 +256,15 @@ class divListOGroup extends MultiSelectWindow }else{ $desc = " - [ ".$val['description'][0]." ]"; } + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); $field1 = array("string" => ""._("Object group")."", "attach" => "style='text-align:center;width: 20px;'"); $field2 = array("string" => sprintf($editlink,$key,($val['cn']['0'].$desc)), "attach" => "style='' ".$title); $field3 = array("string" => preg_replace("/%KEY/", $key, $this->parent->convert_list($val))." ".$mail, "attach" => "style='width:136px;'"); $field4 = array("string" => preg_replace("/%KEY%/", $key, $actions), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); - $this->AddElement(array($field1,$field2,$field3,$field4)); + $this->AddElement(array($field0,$field1,$field2,$field3,$field4)); } }