X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fmimetypes%2Fclass_divListMimeTypes.inc;h=87b7bbaa4524b4e7c499c026164720767303b1b7;hb=6ae7a3503964fb97587cf21b9c1b4276b9db23fc;hp=da7850468fe0c8e31c25cb70be7881352c9d9e4e;hpb=91d4f93869290e5f671e744859e82f4bc42615a2;p=gosa.git diff --git a/plugins/admin/mimetypes/class_divListMimeTypes.inc b/plugins/admin/mimetypes/class_divListMimeTypes.inc index da7850468..87b7bbaa4 100755 --- a/plugins/admin/mimetypes/class_divListMimeTypes.inc +++ b/plugins/admin/mimetypes/class_divListMimeTypes.inc @@ -45,12 +45,17 @@ class divListMimeTypes extends MultiSelectWindow $this->EnableSaveButton (false); /* set Page header */ - $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" => _("Mime type name")." / "._("Department"), "attach" => "style=''")); $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'")); @@ -85,51 +90,115 @@ class divListMimeTypes 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($this->module); + $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.= ""; + } } } + /* The currently used base is not visible with your acl setup. + * Set base to first useable base. + */ + if(!$found){ + $this->selectedBase = $first; + } + + /* Get acls */ + $ui = get_userinfo(); + $acl = $ui->get_permissions("cn=dummy,ou=mimetypes,".$this->selectedBase,"mimetypes/mimetype"); + $acl_all = $ui->has_complete_category_acls($this->selectedBase,"mimetypes") ; + + + /* If this is true we add an additional seperator. Just look a few lines below */ + $add_sep = false; + /* Get copy & paste icon */ - if($this->parent->CopyPasteHandler){ + $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; } - /* Create listhead, it will be shown on top of the divlist. - * It provides general navigation and object creation - */ - $ui = get_userinfo(); - $acl = $ui->get_permissions("cn=dummy,ou=mimetypes,".$this->selectedBase,"mimetypes/mimetype"); - - $listhead = "
". - "  ". - "  ". - "  ". - "  ". - "  "; - $listhead .= $this->get_snapshot_header($this->selectedBase); + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); + + /* Create snapshot icons */ + if(preg_match("/(c.*w|w.*c)/",$acl_all)){ + $listhead .= $this->get_snapshot_header($this->selectedBase); + $add_sep = true; + } + /* Add create icon */ if(preg_match("/c/",$acl)){ $listhead .= "  "; + $add_sep = true; } - $listhead .= - $Copy_Paste. - "  ". - _("Base")." ". + /* Add copy & paste icons */ + $listhead .= $Copy_Paste; + + /* Add a seperator ? */ + if($add_sep) { + $listhead .= "  "; + } + + /* And at least add a department selection box */ + $listhead .= _("Base")." ". "  ". - "
"; + title='"._("Submit department")."' name='submit_department' alt='"._("Submit")."'> "; + + /* Multiple options */ + $listhead .= "  "; + + /* Add multiple copy & cut icons */ + if(is_object($this->parent->CopyPasteHandler)){ + $listhead .= "  "; + $listhead .= "  "; + } + + $listhead .="";; $this->SetListHeader($listhead); } @@ -157,7 +226,7 @@ class divListMimeTypes extends MultiSelectWindow $empty = ""; /* set Page header */ - $action_col_size = 70; + $action_col_size = 80; if($this->parent->snapshotEnabled()){ $action_col_size += 38; } @@ -166,33 +235,26 @@ class divListMimeTypes extends MultiSelectWindow Attach objects ********************/ - $ui = get_userinfo(); - $acl = $ui->get_permissions("cn=dummy,ou=mimetypes,".$this->selectedBase,"mimetypes/mimetype"); - - print_a($list); foreach($list as $key => $val){ - /* Create action icons */ - $actions = $this->GetSnapShotActions($val['dn']); + $ui = get_userinfo(); + $acl = $ui->get_permissions($val['dn'],"mimetypes/mimetype"); + $acl_all = $ui->has_complete_category_acls($val['dn'],"mimetypes") ; + /* Create action icons */ + $actions = ""; + if(preg_match("/(c.*w|w.*c)/",$acl_all)){ + $actions .= $this->GetSnapShotActions($val['dn']); + } /* Get copy Paste icons */ - if($this->parent->CopyPasteHandler){ - - /* Only add cut icon, if we are allowed to move this user */ - if(preg_match("/m/",$acl)){ - $actions.= " "; - }else{ - $actions.= " "; - } - - /* Copy is allowed everytime */ + if(($this->parent->CopyPasteHandler) && preg_match("/(c.*w|w.*c)/",$acl_all)){ + $actions.= " "; $actions.= " "; } - /* Add edit button */ $actions.= ""; @@ -201,7 +263,7 @@ class divListMimeTypes extends MultiSelectWindow $actions.= ""; }else{ - $actions.= " "; + $actions.= " "; } $title = "title='".preg_replace('/ /', ' ', @LDAP::fix($val['dn']))."'"; @@ -211,10 +273,14 @@ class divListMimeTypes extends MultiSelectWindow }else{ $desc = " - [ ".$val['description'][0]." ]"; } + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); $field1 = array("string" => sprintf($mimeimg,$val['dn']), "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, $actions), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); - $this->AddElement(array($field1,$field2,$field3)); + $this->AddElement(array($field0,$field1,$field2,$field3)); } }