X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fogroups%2Fclass_divListOGroup.inc;h=32276f8969df7250911423ed45cde8cc7f08a3d3;hb=03ace41f27d274a8a82ad57defa833bf6cecd6d6;hp=e1656f2d1c5d45c734e1ad6d3aaee160ba6752b1;hpb=f60d5e0db7db85f8cf29afd43215c6b72d7e13a4;p=gosa.git diff --git a/plugins/admin/ogroups/class_divListOGroup.inc b/plugins/admin/ogroups/class_divListOGroup.inc index e1656f2d1..32276f896 100755 --- a/plugins/admin/ogroups/class_divListOGroup.inc +++ b/plugins/admin/ogroups/class_divListOGroup.inc @@ -29,7 +29,7 @@ class divListOGroup extends MultiSelectWindow function divListOGroup ($config,$parent) { - MultiSelectWindow::MultiSelectWindow($config,"OGroups"); + MultiSelectWindow::MultiSelectWindow($config, "OGroups", "ogroups"); $this->parent = $parent; $this->ui = get_userinfo(); @@ -41,29 +41,39 @@ class divListOGroup extends MultiSelectWindow /* Result page will look like a headpage */ $this->SetHeadpageMode(); - $this->SetInformation(_("This menu allows you to add, edit or remove selected groups. ". - "You may want to use the range selector on top of the group listbox, when working with a large number of groups.")); + $this->SetInformation(_("This menu allows you to add, edit or remove selected groups. You may want to use the range selector on top of the group listbox, when working with a large number of groups.")); /* Disable buttonsm */ $this->EnableCloseButton(false); $this->EnableSaveButton (false); + /* Dynamic action col, depending on snapshot icons */ + $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;'")); - $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:107px;border-right:0px;text-align:right;'")); + $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'")); /* Text ,Value ,Name ,Is selected */ - $this->AddCheckBox("UserGroups" , _("") , _("Show groups containing users"), true); - $this->AddCheckBox("GroupGroups" , _("") , _("Show groups containing groups"), true); - $this->AddCheckBox("ApplicationGroups", _("") , _("Show groups containing applications"), true); - $this->AddCheckBox("DepartmentGroups" , _("") , _("Show groups containing departments"), true); - $this->AddCheckBox("ServerGroups" , _("") , _("Show groups containing servers"), true); - $this->AddCheckBox("WorkstationGroups", _("") , _("Show groups containing workstations"), true); - $this->AddCheckBox("TerminalGroups" , _("") , _("Show groups containing terminals"), true); - $this->AddCheckBox("PrinterGroups" , _("") , _("Show groups containing printer"), true); - $this->AddCheckBox("PhoneGroups" , _("") , _("Show groups containing phones"), true); + $this->AddCheckBox("UserGroups" , _("Select to see groups containing users") , _("Show groups containing users"), true); + $this->AddCheckBox("GroupGroups" , _("Select to see groups containing groups") , _("Show groups containing groups"), true); + $this->AddCheckBox("ApplicationGroups", _("Select to see groups containing applications"), _("Show groups containing applications"), true); + $this->AddCheckBox("DepartmentGroups" , _("Select to see groups containing departments") , _("Show groups containing departments"), true); + $this->AddCheckBox("ServerGroups" , _("Select to see groups containing servers") , _("Show groups containing servers"), true); + $this->AddCheckBox("WorkstationGroups", _("Select to see groups containing workstations"), _("Show groups containing workstations"), true); + $this->AddCheckBox("TerminalGroups" , _("Select to see groups containing terminals") , _("Show groups containing terminals"), true); + $this->AddCheckBox("PrinterGroups" , _("Select to see groups containing printer") , _("Show groups containing printer"), true); + $this->AddCheckBox("PhoneGroups" , _("Select to see groups containing phones") , _("Show groups containing phones"), true); /* Add SubSearch checkbox */ $this->AddCheckBox(SEPERATOR); @@ -80,40 +90,104 @@ class divListOGroup extends MultiSelectWindow which are shown in the listbox on top of the listbox */ $options= ""; - foreach ($this->config->idepartments as $key => $value){ - if ($this->selectedBase == $key){ - $options.= ""; - } else { - $options.= ""; + + /* Get all departments within this subtree */ + $ui= get_userinfo(); + $first = ""; + $found = FALSE; + $base = $this->config->current['BASE']; + + /* 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']; + } + + $value = $ids[$dep]; + if ($this->selectedBase == $dep){ + $found = TRUE; + $options.= ""; + } else { + $options.= ""; + } } } - if($this->parent->CopyPasteHandler){ + /* 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 */ + $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 = "