X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Ffai%2Fclass_faiManagement.inc;h=55e8499b1ef067f51692e48c21cb6685af0ca6ba;hb=8e89e901eb67f63011a49553de75353330a3871e;hp=7d0c56636fcf7ac7f38790348704b10af0bcbd14;hpb=c91b5940dc36b6a559cb86300950e0c38e601070;p=gosa.git diff --git a/plugins/admin/fai/class_faiManagement.inc b/plugins/admin/fai/class_faiManagement.inc index 7d0c56636..55e8499b1 100644 --- a/plugins/admin/fai/class_faiManagement.inc +++ b/plugins/admin/fai/class_faiManagement.inc @@ -68,7 +68,7 @@ class faiManagement extends plugin /* Get global filter config */ if (!is_global("faifilter")){ $base = get_base_from_people($ui->dn); - $faifilter= array("base" => "ou=fai,ou=configs,ou=systems,".$base, + $faifilter= array("base" => $base, "regex" => "*"); $faifilter['ShowProfiles'] = true; $faifilter['ShowTemplates'] = true; @@ -83,6 +83,10 @@ class faiManagement extends plugin function execute() { + + /* Call parent execute */ + plugin::execute(); + $display = ""; $smarty = get_smarty(); $s_action = ""; @@ -125,9 +129,7 @@ class faiManagement extends plugin $s_action = "new_package"; }elseif(preg_match("/create_profile/i",$key)){ $s_action = "new_profile"; - }elseif(preg_match("/UseNewClass/",$key)){ - $s_action = "select_class_name_finished"; - }elseif(preg_match("/UseSelectedClass/",$key)){ + }elseif(preg_match("/edit_continue/",$key)){ $s_action = "select_class_name_finished"; }elseif(preg_match("/^entry_edit_.*/",$key)){ $s_entry = preg_replace("/^entry_edit_/","",$key); @@ -137,10 +139,47 @@ class faiManagement extends plugin $s_entry = preg_replace("/^entry_delete_/","",$key); $s_entry = preg_replace("/_.*$/","",$s_entry); $s_action = "delete"; + }elseif(preg_match("/dep_back.*/i",$key)){ + $s_action="back"; + }elseif(preg_match("/dep_home.*/i",$key)){ + $s_action="home"; + }elseif(preg_match("/dep_root.*/i",$key)){ + $s_action="root"; } } + if($s_action=="root"){ + $faifilter['base']=($this->config->current['BASE']); + } + + if($s_action=="home"){ + $faifilter['base']=(preg_replace("/^[^,]+,/","",$this->ui->dn)); + $faifilter['base']=(preg_replace("/^[^,]+,/","",$faifilter['base'])); + } + + if($s_action=="back"){ + $base_back = preg_replace("/^[^,]+,/","",$faifilter['base']); + $base_back = convert_department_dn($base_back); + + if(isset($this->config->departments[trim($base_back)])){ + $faifilter['base']= $this->config->departments[trim($base_back)]; + }else{ + $faifilter['base']= $this->config->departments["/"]; + } + } + + if(isset($_GET['act'])&&($_GET['act']=="dep_open")){ + $s_action="open"; + $s_entry = base64_decode($_GET['dep_id']); + $faifilter['base']= $this->config->departments[trim($s_entry)]; + } + + if(isset($_GET['edit_entry'])){ + $s_entry = $_GET['edit_entry']; + $s_action = "edit"; + } + /* Confirm dialog * Delte object */ @@ -162,7 +201,7 @@ class faiManagement extends plugin /* Lock the current entry, so nobody will edit it during deletion */ add_lock ($this->dn, $this->ui->dn); - $smarty->assign("warning", sprintf(_("You're about to delete all information about the component at '%s'."), $this->dn)); + $smarty->assign("warning", sprintf(_("You're about to delete all information about the FAI class at '%s'."), $this->dn)); return($smarty->fetch(get_template_path('remove.tpl', TRUE))); } else { @@ -172,6 +211,12 @@ class faiManagement extends plugin } } + /* Delete canceled? */ + if (isset($_POST['delete_cancel'])){ + del_lock ($this->dn); + } + + /* Deltetion was confirmed, so delete this entry */ if (isset($_POST['delete_terminal_confirm'])){ @@ -217,10 +262,12 @@ class faiManagement extends plugin $a_setup = ($this->get_type($entry)); $this->dn = $entry['dn']; + add_lock ($this->dn, $this->ui->dn); $this->dialog= new $a_setup[0]($this->config, $this->config->data['TABS'][$a_setup[2]],$this->dn); $this->is_dialog = true; + $_SESSION['objectinfo'] = $this->dn; } @@ -277,7 +324,7 @@ class faiManagement extends plugin $name = $this->dialog->save(); $this->dialog = new $a_setup[0]($this->config, - $this->config->data['TABS'][$a_setup[2]],$this->dn); + $this->config->data['TABS'][$a_setup[2]],$this->dn,$name); $this->dialog->by_object[$a_setup[1]]->cn = $name; $this->is_dialog = true; } @@ -289,6 +336,11 @@ class faiManagement extends plugin $faifilter['regex']=$_GET['search']."*"; } + /* Department select */ + if((isset($_POST['base']))&&($s_action=="")){ + $faifilter['base']=$_POST['base']; + } + /* remove double asterisks and save new filter */ $faifilter['regex'] = preg_replace("/\*\*/","*",$faifilter['regex']); $_SESSION['faifilter']= $faifilter; @@ -300,9 +352,10 @@ class faiManagement extends plugin unset($this->dialog); $this->dialog=NULL; $this->is_dialog = false; + unset($_SESSION['objectinfo']); + del_lock ($this->dn); } - /* This check if the given tab could be saved * If it was possible to save it, remove dialog object. * If it wasn't possible, show errors and keep dialog. @@ -314,14 +367,15 @@ class faiManagement extends plugin print_red($msg); } }else{ + del_lock ($this->dn); $this->dialog->save(); unset($this->dialog); $this->dialog=NULL; $this->is_dialog=false; + unset($_SESSION['objectinfo']); } } - /* If dialog is set, but $this->is_dialog==false, then * only the "abort" button is shown, this are dialogs that must not be saved. * If is_dialog == true, we are currently editing tab objects. @@ -335,13 +389,14 @@ class faiManagement extends plugin }elseif(((isset($this->dialog->current))&&(!$this->dialog->by_object[$this->dialog->current]->is_dialog))){ $display.= "

\n"; - $display.= "\n"; + $display.= "\n"; $display.= " \n"; - $display.= "\n"; + $display.= "\n"; $display.= "

"; }elseif(!isset($this->dialog->current)){ $display.= "

\n"; - $display.= "\n"; + $display.= " "; + $display.= "\n"; $display.= "

"; } return($display); @@ -353,34 +408,60 @@ class faiManagement extends plugin * Assign all reguired vars to template engine */ + /* Prepare departments */ + $options= ""; + foreach ($this->config->idepartments as $key => $value){ + if ($faifilter['base'] == $key){ + $options.= ""; + } else { + $options.= ""; + } + } + /* Create listhead, it will be shown on top of the divlist. * It provides general navigation and object creation */ $faihead = "
 ". - "  ". + + " ". + + " ". + + "\"\" ". + + "  ". - "\"\" ". + "\"\" ". - "  ". - "  ". - "  ". - "  ". - "  ". - "  ". + + "  ". + + _("Current base")." ". + "  ". "
"; @@ -388,18 +469,46 @@ class faiManagement extends plugin /* Create list with objects */ $divlist = new divlist("faiManagement"); - $divlist->SetEntriesPerPage(20); + $divlist->SetEntriesPerPage(0); $divlist->SetSummary(_("This table displays all systems, in the selected tree.")); $divlist->SetHeader(array( - array("string" => " "), - array("string" => _("Name of FAI class")), - array("string" => _("Class type")), - array("string" => _("Actions"), "attach"=>"style='border:none;width:40px;'"))); + array("string" => " ", "attach" => "style='text-align:center;width:20px;'"), + array("string" => _("Name of FAI class"), "attach" => "style=''"), + array("string" => _("Class type"), "attach" => "style='width:200px;'"), + array("string" => _("Actions"), "attach" => "style='width:60px;border-right:0px;text-align:right;'"))); + + + $action = ""; + $action .= ""; + + $editlink ="%NAME%"; + $linkopen = "%s"; + + foreach($this->departments as $key => $val) { + if(!isset($this->config->departments[trim($key)])){ + $this->config->departments[trim($key)]=""; + } + + $non_empty=""; + $keys= str_replace("/","\/",$key); + foreach($this->config->departments as $keyd=>$vald ){ + if(preg_match("/".$keys."\/.*/",$keyd)){ + $non_empty="full"; + } + } + + + $title = $this->config->departments[$key]; + $field0 = array("string" => "department", "attach" => "style='text-align:center;width:20px;'"); + $field1 = array("string" => sprintf($linkopen,base64_encode($key),$val), "attach" => "style='' title='".$title."'"); + $field2 = array("string" => " ", "attach" => "style='width:200px;'"); + $field3 = array("string" => " ", "attach" => "style='width:60px;border-right:0px;text-align:right;'"); + + $divlist->AddEntry( array($field0,$field1,$field2,$field3)); + } - $action = ""; - $action .= ""; /* Attach objects */ foreach($this->objects as $key => $value){ @@ -413,53 +522,53 @@ class faiManagement extends plugin if(!$faifilter['ShowPartitions']){ $abort = true; } - $img="PT"; + $img="PT"; $info = _("Partition table"); break; case "FAIpackageList" : if(!$faifilter['ShowPackages']){ $abort = true; } - $img="PL"; + $img="PL"; $info = _("Package list"); break; case "FAIscript" : if(!$faifilter['ShowScripts']){ $abort = true; } - $img="S"; + $img="S"; $info = _("Scripts"); break; case "FAIvariable" : if(!$faifilter['ShowVariables']){ $abort = true; } - $img="V"; + $img="V"; $info = _("Variables"); break; case "FAIhook" : if(!$faifilter['ShowHooks']){ $abort = true; } - $img="H"; + $img="H"; $info = _("Hooks"); break; case "FAIprofile" : if(!$faifilter['ShowProfiles']){ $abort = true; } - $img="P"; + $img="P"; $info = _("Profile"); break; case "FAItemplate" : if(!$faifilter['ShowTemplates']){ $abort = true; } - $img="T"; + $img="T"; $info = _("Templates"); break; default : - $img="";$info = "";break; + $img="";$info = "";break; } @@ -470,10 +579,10 @@ class faiManagement extends plugin $desc= ""; } - $field1 = array("string" => $img , "attach" => "style='height:26px;width=20px;'"); - $field2 = array("string" => $value['cn'].$desc , "attach" => ""); - $field3 = array("string" => $info, "attach" => ""); - $field4 = array("string" => preg_replace("/%KEY%/",$key,$action) , "attach"=>"style='text-align:right;border:none'"); + $field1 = array("string" => $img , "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => preg_replace(array("/%KEY%/","/%NAME%/"),array($key,$value['cn'].$desc),$editlink) , "attach" => "style=''"); + $field3 = array("string" => $info, "attach" => "style='width:200px;'"); + $field4 = array("string" => preg_replace("/%KEY%/",$key,$action) , "attach" => "style='width:60px;border-right:0px;text-align:right;'"); $divlist->AddEntry(array($field1,$field2,$field3,$field4)); } @@ -496,6 +605,7 @@ class faiManagement extends plugin $smarty->assign("alphabet" , generate_alphabet()); $smarty->assign("apply" , apply_filter()); $smarty->assign("search_image" , get_template_path('images/search.png')); + $smarty->assign("hint", print_sizelimit_warning()); $display = $smarty->fetch(get_template_path('headpage.tpl', TRUE, dirname(__FILE__))); return ($display); @@ -512,7 +622,7 @@ class faiManagement extends plugin // Added for dirlist function... /* Set base for all searches */ - $base= $faifilter['base']; + $base= "ou=fai,ou=configs,ou=systems,".$faifilter['base']; $regex = $faifilter['regex']; /* Array to save objects */ @@ -520,6 +630,33 @@ class faiManagement extends plugin $this->objects=array(); + /* NEW LIST MANAGMENT + * We also need to search for the departments + * So we are able to navigate like in konquerer + */ + $base2 = $faifilter['base']; + + $res3 = get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))", + TRUE, $base2, array("ou", "description"), TRUE); + + $this->departments= array(); + $tmp = array(); + foreach ($res3 as $value){ + $tmp[strtolower($value['dn']).$value['dn']]=$value; + } + ksort($tmp); + foreach($tmp as $value){ + if(isset($value["description"][0])){ + $this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]"; + }else{ + $this->departments[$value['dn']]=convert_department_dn2($value['dn']);//$value["description"][0]; + } + } + + /* END NEW LIST MANAGMENT + */ + + $res= get_list($this->ui->subtreeACL, "(objectClass=organizationalUnit)", FALSE, $base, array("cn","description","objectClass"),TRUE); @@ -562,6 +699,15 @@ class faiManagement extends plugin } ksort($this->objects); reset ($this->objects); + + /* use numeric index, thats a bit more secure */ + $tmp0 = array(); + foreach($this->objects as $obj){ + $tmp0[]= $obj; + } + $this->objects = array(); + $this->objects = $tmp0; + } function remove_lock()