summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 8f4bae5)
raw | patch | inline | side by side (parent: 8f4bae5)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 17 Jul 2008 06:31:44 +0000 (06:31 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 17 Jul 2008 06:31:44 +0000 (06:31 +0000) |
-Fixed department selection.
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@11688 594d385d-05f5-0310-b6e9-bd551577e9d8
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@11688 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-core/include/class_MultiSelectWindow.inc | patch | blob | history | |
gosa-core/include/class_baseSelectDialog.inc | patch | blob | history |
diff --git a/gosa-core/include/class_MultiSelectWindow.inc b/gosa-core/include/class_MultiSelectWindow.inc
index 325b7e04749477573da7372b852259279f3e4e16..0b15a765d450ee35df1695ff350cc74ed62d6b7e 100644 (file)
/* Create an array with all visible (in the list) departments */
$types = departmentManagement::get_support_departments();
- $departments = array();
- foreach($deps as $value){
- $name = $value['ou'][0]." -".$value['dn'];
- foreach($types as $type){
- if(in_array($type['OC'],$value['objectClass'])){
- $value['type'] = $type;
- break;
- }
- }
- $this->departments[$name]= $value;
- }
+
+ /* Create search filter
+ */
+ $this->departments = array();
+ foreach($types as $name => $data){
+ $filter = "(&(objectClass=gosaDepartment)(objectClass=".$data['OC'].")
+ (".$data['ATTR']."=".$this->base_selection_regex."))";
+ $tmp = get_list($filter,"department/".$data['ACL'],$this->selectedBase,array($data['ATTR'],"description"),GL_NONE);
+ foreach($tmp as $attrs){
+ $attrs['NAME'] = $attrs[$data['ATTR']][0];
+ $attrs['TYPE'] = $data;
+ $name = $attrs['NAME']." -".$attrs['dn'];
+ $this->departments[$name] = $attrs;
+ }
+ }
+
uksort($this->departments, 'strnatcasecmp');
$ui = get_userinfo();
/* Check if this department contains sub-departments
Display different image in this case
*/
- $img = $val['type']['IMG'];
+ $img = $val['TYPE']['IMG'];
foreach($this->config->departments as $keyd){
if(preg_match("/,".normalizePreg($val['dn'])."$/",$keyd)){
- $img = $val['type']['IMG_FULL'];
+ $img = $val['TYPE']['IMG_FULL'];
}
}
/* Create entry name
*/
- $name = $val['ou'][0];
+ $name = $val['NAME'];
if(isset($val['description'])){
$name .= " - [".$val["description"][0]."]";
}
diff --git a/gosa-core/include/class_baseSelectDialog.inc b/gosa-core/include/class_baseSelectDialog.inc
index 4944092707d3360b669d66cb998242137b799faf..d43da2ee64ab7daee81b27d2932d052ff47c0a22 100644 (file)
function baseSelectDialog (&$config,$parent,$onlyAllowThisBases = array())
{
- $module= "all";
+ $module= "department";
MultiSelectWindow::MultiSelectWindow($config, "BASEselectWindow", $module);
$this->parent = $parent;
$this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'"));
$this->AddHeader(array("string"=>_("Base")));
- $this->AddHeader(array("string"=>_("Action"),"attach"=>"style='width:50px;border-right:0px;'"));
-
- /* Text ,Value ,Name ,Is selected */
-// $this->AddCheckBox("Doesnothing","servers","Doesnothing",true);
/* Name ,Text ,Default , Connect with alphabet */
$this->AddRegex ("base_selection_regex",_("Filter entries with this syntax"),"*" , true);
function execute()
{
- $this->setEntries();
+ $this->ClearElementsList();
+ $this->AddDepartments($this->selectedBase,2);
return($this->Draw());
}
function setEntries()
{
- $this->ClearElementsList();
- $ldap = $this->config->get_ldap_link();
- $ldap->cd($this->selectedBase);
- $ldap->ls("(&(objectClass=gosaDepartment)
- (|(ou=".$this->base_selection_regex.")
- (cn=".$this->base_selection_regex.")
- (description=".$this->base_selection_regex.")))",
- $this->selectedBase,array("ou","description","cn"));
-
- $link = "<a href='?plug=".$_GET['plug']."&open_dep=%s'>%s</a>";
-
- $base_back = preg_replace("/^[^,]+,/","",$this->selectedBase);
- $base_back = convert_department_dn($base_back);
-
- /* Add departments, to be able to switch into them
- */
- while($attrs = $ldap->fetch()){
-
- $key = $attrs['dn'] ;
- $val = $attrs['ou'][0];
-
- if(count($this->allowedBases) != 0){
- if(!isset($this->allowedBases[$key])){
- continue;
- break;
- }
- }
-
- /* Append description */
- if(isset($attrs['description'][0])){
- $val.=" [".$attrs['description'][0]."]";
- }
-
- /* Add missing entries ... */
- if(!isset($this->config->departments[trim($key)])){
- $this->config->departments[trim($key)]="";
- }
-
- /* check if this department contains sub-departments
- Display different image in this case
- */
- $non_empty="";
- $keys= str_replace("/","\/",$key);
- foreach($this->config->departments as $keyd ){
- if(preg_match("/,".$keys."/",$keyd)){
- $non_empty="-full";
- }
- }
-
- /* Add to divlist */
- $field1 = array("string" => "<img src='images/lists/folder$non_empty.png' alt='department'>",
- "attach" => "style='text-align:center;width:20px;'");
- $field2 = array("string" => sprintf($link,base64_encode($key),$val), "attach" => "style=''");
- $field3 = array("string" => sprintf(" <input title='"._("Select this base")."' type='image' img src='images/save.png' name='usebase_%s'>",base64_encode($key)),
- "attach" => "style='width:50px;border-right:0px;text-align:right;'");
- $this->AddElement(array($field1,$field2,$field3));
- }
+ // Do nothing here
}
function Save()
{
$this->selectedBase = $base;
}
-
- function save_object()
- {
- /* Save current base */
- $old_base = $this->selectedBase;
-
- /* Save automatic created POSTs like regex, checkboxes */
- MultiSelectWindow::save_object();
-
- if(isset($_GET['open_dep'])){
- $this->selectedBase = base64_decode($_GET['open_dep']);
- }
-
- $s_action ="";
- foreach($_POST as $key => $value){
- if(preg_match("/^dep_back.*/i",$key)){
- $s_action="back";
- }elseif(preg_match("/^dep_root.*/",$key)){
- $s_action="root";
- }elseif(preg_match("/^dep_home.*/i",$key)){
- $s_action="home";
- }elseif(preg_match("/^usebase_/",$key)){
- $tmp = preg_replace("/^usebase_/","",$key);
- $tmp = preg_replace("/_.*$/","",$tmp);
- $tmp = base64_decode($tmp);
- $this->BaseToUse = $tmp;
- }
- }
-
- $ui= get_userinfo();
- /* Homebutton is posted */
- if($s_action=="home"){
- $this->selectedBase=(preg_replace("/^[^,]+,/","",$ui->dn));
- $this->selectedBase=(preg_replace("/^[^,]+,/","",$this->selectedBase));
- }
-
- /* back to the roots ^^ */
- if($s_action=="root"){
- $this->selectedBase=($this->config->current['BASE']);
- }
-
- /* If Backbutton is Posted */
- if($s_action=="back"){
- $base_back = preg_replace("/^[^,]+,/","",$this->selectedBase);
- $base_back = convert_department_dn($base_back);
-
- if(isset($this->config->departments[trim($base_back)])){
- $this->selectedBase= $this->config->departments[trim($base_back)];
- }else{
- $this->selectedBase= $this->config->departments["/"];
- }
- }
-
- /* Restore old base, if selected base is not allowed */
- if(count($this->allowedBases) && !isset($this->allowedBases[$this->selectedBase])){
- $this->selectedBase = $old_base;
- }
- }
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>