diff --git a/plugins/admin/systems/class_systemManagement.inc b/plugins/admin/systems/class_systemManagement.inc
index 7962a9db167d6dd981e5541d93bea55255252f65..e34d4802bf07d8f15cc59d0c79cd7d8bc22e73b6 100644 (file)
/* Definitions */
var $plHeadline= "Systems";
var $plDescription= "This does something";
+ var $departments=array();
/* Dialog attributes */
var $systab= NULL;
}
$terminalfilter['regex']= $s;
}
- register_global("terminalfilter", $terminalfilter);
- /* Check sorting variable */
- if (!isset($this->systab) &&
- !isset($_POST['new_terminal']) &&
- !isset($_POST['delete_terminal']) &&
- !isset($_POST['set_password']) &&
- !isset($_POST['select_terminal'])){
- $this->reload();
+ $terminalfilter = get_global("terminalfilter"); // contains Filter Settings
+ $s_action = ""; // Contains the action to proceed
+ $s_entry = ""; // The value for s_action
+ $base_back = ""; // The Link for Backbutton
+ $smarty = get_smarty();
+
+ /* Start for New List Managment */
+ if(isset($_GET['act'])&&($_GET['act']=="dep_open")){
+ $s_action="open";
+ $s_entry = base64_decode($_GET['dep_id']);
+ $terminalfilter['depselect']= "".$this->config->departments[trim($s_entry)];
+ $this->reload();
+ }
+
+ /* Test Posts */
+ foreach($_POST as $key => $val){
+ // Post for delete
+ if(preg_match("/user_del.*/",$key)){
+ $s_action = "del";
+ $s_entry = preg_replace("/user_".$s_action."_/i","",$key);
+ // Post for edit
+ }elseif(preg_match("/user_edit_.*/",$key)){
+ $s_action="edit";
+ $s_entry = preg_replace("/user_".$s_action."_/i","",$key);
+ // Post for new
+ }elseif(preg_match("/dep_back.*/i",$key)){
+ $s_action="back";
+ }elseif(preg_match("/user_new.*/",$key)){
+ $s_action="new";
+ }elseif(preg_match("/dep_home.*/i",$key)){
+ $s_action="home";
+ }elseif(preg_match("/user_tplnew.*/i",$key)){
+ $s_action="new_tpl";
+ }elseif(preg_match("/user_setpwd_.*/i",$key)){
+ $s_action="change_pw";
+ $s_entry = preg_replace("/user_setpwd_/i","",$key);
+ }elseif(preg_match("/dep_root.*/i",$key)){
+ $s_action="root";
+ }
+ }
+
+ if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){
+ $s_action ="edit";
+ $s_entry = $_GET['id'];
+ }
+
+ $s_entry = preg_replace("/_.$/","",$s_entry);
+
+ /* Department changed? */
+ if(isset($_POST['depselect']) && $_POST['depselect']){
+ $terminalfilter['depselect']= $_POST['depselect'];
+ }
+
+ /* Homebutton is posted */
+ if($s_action=="home"){
+ $terminalfilter['depselect']=(preg_replace("/^[^,]+,/","",$this->ui->dn));
+ $terminalfilter['depselect']=(preg_replace("/^[^,]+,/","",$terminalfilter['depselect']));
+ }
+
+ if($s_action=="root"){
+ $terminalfilter['depselect']=($this->config->current['BASE']);
}
- $smarty= get_smarty();
+
+
+ /* If Backbutton is Posted */
+ if($s_action=="back"){
+ $base_back = preg_replace("/^[^,]+,/","",$terminalfilter['depselect']);
+ $base_back = convert_department_dn($base_back);
+
+ if(isset($this->config->departments[trim($base_back)])){
+ $terminalfilter['depselect']= $this->config->departments[trim($base_back)];
+ }else{
+ $terminalfilter['depselect']= $this->config->departments["/"];
+ }
+ }
+
+ register_global("terminalfilter", $terminalfilter);
+ $this->reload();
/* Check for exeeded sizelimit */
if (($message= check_sizelimit()) != ""){
}
/* Try to get informations about what kind of system to create */
- if (isset($_POST['new_terminal'])) {
+ if ($s_action=="new") {
return ($smarty->fetch(get_template_path('chooser.tpl', TRUE)));
}
}
/* User wants to edit data? */
- if ((isset($_POST['select_terminal']) || (isset($_POST['edit_helper']) && $_POST['edit_helper'] == "1")) && isset($_POST['termlist']) &&
- $_POST['termlist'] != ""){
+ if ($s_action == "edit"){
/* Get 'dn' from posted 'cn', must be unique */
- $this->dn= trim($_POST['termlist']);
+ $this->dn= $this->terminals[$s_entry]['dn'];
/* Check locking, save current plugin in 'back_plugin', so
the dialog knows where to return. */
}
/* Set terminals root password */
- if (isset($_POST['set_password']) && isset($_POST['termlist'])){
- $this->dn= trim($_POST['termlist']);
+ if ($s_action=="change_pw"){
+ $this->dn= $this->terminals[$s_entry]['dn'];
$_SESSION['objectinfo']= $this->dn;
return ($smarty->fetch(get_template_path('password.tpl', TRUE)));
}
}
/* Remove terminal was requested */
- if (isset($_POST['delete_terminal']) && isset($_POST['termlist'])){
+ if ($s_action=="del"){
/* Get 'dn' from posted termlinst */
- $this->dn= $_POST['termlist'];
+ $this->dn= $this->terminals[$s_entry]['dn'];
/* Load permissions for selected 'dn' and check if
we're allowed to remove this 'dn' */
/* Cancel dialogs */
if (isset($_POST['edit_cancel']) || isset($_POST['password_cancel'])){
- del_lock ($this->systab->dn);
- unset ($this->systab);
+ if (isset($this->systab)){
+ del_lock ($this->systab->dn);
+ unset ($this->systab);
+ }
$this->systab= NULL;
unset($_SESSION['objectinfo']);
}
return ($display);
}
+
+
+
+
+
+ /* Prepare departments */
+ $options= "";
+ foreach ($this->config->idepartments as $key => $value){
+ if ($terminalfilter['depselect'] == $key){
+ $options.= "<option selected value='$key'>$value</option>";
+ } else {
+ $options.= "<option value='$key'>$value</option>";
+ }
+ }
+
+
+ /* NEW LIST MANAGMENT */
+ $listhead = "<div style='background:#F0F0F9;padding:5px;'>".
+ " <input type='image' align='middle' src='images/list_back.png' title='"._("Go up one department")."' alt='"._("Up")."' name='dep_back'> ".
+ " <input type='image' src='images/list_root.png' align='middle' title='"._("Go to root department")."' name='dep_root' alt='"._("Root")."'> ".
+ " <input type='image' align='middle' src='images/list_home.png' title='"._("Go to users department")."' alt='"._("Home")."' name='dep_home'> ".
+ " <img src='images/list_seperator.png' align='middle' alt='' height='16' width='1'> ".
+ " <input type='image' align='middle' src='images/list_new_user.png' title='"._("Create new system")."' alt='"._("New user")."' name='user_new'> ".
+ " <img src='images/list_seperator.png' align='middle' alt='' height='16' width='1'> ".
+ _("Current base")." <select name='depselect' onChange='mainform.submit()'>$options</select>".
+ " <input type='image' src='images/list_submit.png' align='middle' title='"._("Submit department")."' name='submit_department' alt='". _("Submit")."'> ".
+ "</div>";
+
+
+
+ $action= "<input type='image' src='images/edit.png' alt='"._("edit")."' name='user_edit_%KEY%' title='"._("Edit system")."'>";
+ $action.= "<input type='image' src='images/editdelete.png' alt='"._("delete")."' name='user_del_%KEY%' title='"._("Delete system")."'>";
+
+
+ $divlist = new divlist();
+ $divlist->SetHeader(array(
+ array("string" => " "),
+ array("string" => _("System")." / "._("Department")),
+ array("string" => _("Actions"), "attach" => "style='border:none'" )));
+
+
+ $divlist->SetSummary(_("This table displays all systems, in the selected tree."));
+ $divlist->SetEntriesPerPage(20);
+
+ // Defining Links
+ $linkopen = "<a href='?plug=".$_GET['plug']."&act=dep_open&dep_id=%s'>%s</a>";
+
+ foreach($this->departments as $key=> $val){
+ $field1 = array("string" => "<img src='images/folder.png' alt='department'>");
+ $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val));
+ $field3 = array("string" => " ", "attach" => "style='border:none'");
+ $divlist->AddEntry(array($field1,$field2,$field3));
+ }
+
+ // Space
+ $empty =" ";
+
+ // User and Template Images
+ $editlink = "<a href='?plug=".$_GET['plug']."&id=%s&act=edit_entry'>%s</a>";
+
+ // Pictures for Extensions
+ $img1 = "<img src='images/printer.png' alt='C' title='"._("Cups Server") ."'>";
+ $img2 = "<img src='images/scanner.png' alt='L' title='"._("Log Db") ."'>";
+ $img3 = "<img src='images/select_terminal.png' alt='L' title='"._("Syslog Server") ."'>";
+ $img4 = "<img src='images/mailto.png' alt='M' title='"._("Mail Server") ."'>";
+ $img5 = "<img src='images/select_phone.png' alt='I' title='"._("Imap Server") ."'>";
+ $img6 = "<img src='images/fax_small.png' alt='F' title='"._("Nfs Server") ."'>";
+ $img7 = "<img src='images/select_winstation.png' alt='K' title='"._("Kerberos Server") ."'>";
+ $img8 = "<img src='images/select_phone.png' alt='A' title='"._("Asterisk Server") ."'>";
+ $img9 = "<img src='images/fax_small.png' alt='F' title='"._("Fax Server") ."'>";
+ $img10 = "<img src='images/save.png' alt='L' title='"._("Ldap Server") ."'>";
+
+ // Test Every Entry and generate divlist Array
+ foreach($this->terminals as $key => $val){
+ // Specify Pics for Extensions
+ if(in_array("goCupsServer" ,$val['objectClass'])) $cups = $img1; else $cups =$empty;
+ if(in_array("goLogDBServer" ,$val['objectClass'])) $logdb = $img2; else $logdb =$empty;
+ if(in_array("goSyslogServer" ,$val['objectClass'])) $syslog = $img3; else $syslog=$empty;
+ if(in_array("goImapServer" ,$val['objectClass'])) $imap = $img4; else $imap =$empty;
+ if(in_array("sambaSamAccount" ,$val['objectClass'])) $samba = $img5; else $samba =$empty;
+ if(in_array("goNfsServer" ,$val['objectClass'])) $nfs = $img6; else $nfs =$empty;
+ if(in_array("goKrbServer" ,$val['objectClass'])) $krb = $img7; else $krb =$empty;
+ if(in_array("goFonServer" ,$val['objectClass'])) $fon = $img8; else $fon =$empty;
+ if(in_array("goFaxServer" ,$val['objectClass'])) $fax = $img9; else $fax =$empty;
+ if(in_array("goLdapServer" ,$val['objectClass'])) $ldap = $img10; else $ldap =$empty;
+
+ $pics = $cups.$logdb.$syslog.$imap.$samba.$nfs.$krb.$fon.$fax.$ldap;
+ $pics = "";
+ // Generate Array to Add
+ if((isset($val['is_new']))&&(!empty($val['is_new']))){
+ $display= "".$val["cn"][0]." ".$val['is_new'];
+ }else{
+ $display= "".$val["cn"][0]."";
+ }
+
+ if(in_array("gotoTerminal",$val['objectClass'])){
+ $action2 = "<input type='image' src='images/certs.png' alt='"._("Password")."' name='user_setpwd_%KEY%' title='"._("Set root password")."'>";
+ }else{
+ $action2 = "";
+ }
+
+
+ if(isset($val['message'])){
+ $display.= " (".$val['message']." '".$this->config->idepartments[$terminalfilter['depselect']]."' )";
+ }
+
+ $img=$this->convert_list($val);
+
+ $field1 = array("string" => sprintf($img['img'],$val['dn']),"attach"=>"style='width:20px;align:middle;'");
+ $field2 = array("string" => sprintf($editlink,$key,$display),"attach"=>"title='".$val['dn']."'");
+ $field3 = array("string" => preg_replace("/%KEY%/", "$key", $action2.$action),"attach" => "style='border:none; text-align:right;width:48px'");
+ $divlist->AddEntry( array($field1,$field2,$field3));
+ }
+
+
+
+
+
/* Show main page */
- $smarty->assign("terminals", $this->convert_list($this->terminals));
+ $smarty->assign("terminalshead", $listhead);
+ $smarty->assign("terminals", $divlist->DrawList());
$smarty->assign("search_image", get_template_path('images/search.png'));
$smarty->assign("tree_image", get_template_path('images/tree.png'));
$smarty->assign("infoimage", get_template_path('images/info.png'));
function convert_list($input)
{
$temp= "";
- $conv= array( "D" => "select_default.png",
- "T" => "select_terminal.png",
- "L" => "select_workstation.png",
- "F" => "select_phone.png",
- "S" => "select_server.png",
- "NT" => "select_new_terminal.png",
- "NL" => "select_new_workstation.png",
- "W" => "select_winstation.png",
- "C" => "select_component.png",
- "P" => "select_printer.png");
-
- foreach ($input as $key => $value){
- $mode= preg_replace('/^.*(.)$/', '\\1', $value);
- if ($mode == "D"){
- $temp= "<option value=\"$key\" class=\"select\" style=\"background-image:url('".get_template_path('images/select_default.png')."');\">".preg_replace('/.$/', '', $value)."</option>\n".$temp;
- } else {
- if (preg_match('/^\+/', $value)){
- $value= preg_replace('/^\+ /', '', $value);
- $new= "N";
- } else {
- $new= "";
- }
- $temp.= "<option value=\"$key\" class=\"select\" style=\"background-image:url('".get_template_path('images/'.$conv["$new$mode"])."');\">".preg_replace('/.$/', '', $value)."</option>\n";
+ $conv= array(
+ "D" => array("select_default.png",_("Template")),
+ "T" => array("select_terminal.png",_("Terminal")),
+ "L" => array("select_workstation.png",_("Workstation")),
+ "F" => array("select_phone.png",_("Phone")),
+ "S" => array("select_server.png",_("Server")),
+ "NT"=> array("select_new_terminal.png",_("New Terminal")),
+ "NL"=> array("select_new_workstation.png",_("New Workstation")),
+ "W" => array("select_winstation.png",_("Winstation")),
+ "C" => array("select_component.png",_("Network Device")),
+ "P" => array("select_printer.png",_("Printer")));
+
+ if((isset($input['is_new']))&&(!empty($input['is_new']))){
+ $input['type']="N".$input['type'];
+ }
+ foreach ($conv as $key => $value){
+ if($input['type']==$key){
+ $tmp['img'] ="<img src='images/".$value[0]."' alt='".$key."' title='".$value['1']."'>";
+ $tmp['class']=$key;
+ return $tmp;
}
}
-
- return ($temp);
}
function remove_from_parent()
$this->terminals= array();
$res= get_list($this->ui->subtreeACL, "(|$termfilter$workfilter$winfilter$printfilter$phonefilter$serverfilter$netfilter)", TRUE, $base, array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), TRUE);
+
+
+ /* NEW LIST MANAGMENT
+ * We also need to search for the departments
+ * So we are able to navigate like in konquerer
+ */
+ $base2 = preg_replace("/ou=people,/i","",$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($value["description"][0]!=".."){
+ $this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]";
+ }else{
+ $this->departments[$value['dn']]=$value["description"][0];
+ }
+ }
+
+ /* END NEW LIST MANAGMENT
+ */
+
+
foreach ($res as $value){
/* Look for new terminals and mark them with '+' */
$add= "";
}
+ $terminal = array();
+
if (in_array ($tmp, $responsible) || $add != ""){
if (in_array('gotoTerminal', $value["objectClass"])){
- if (isset($value["macAddress"][0]) &&
- $value["macAddress"][0] != "-"){
-
- $this->terminals[$value["dn"]]= $add." ".
- $value["cn"][0].
- " [".$value["macAddress"][0]."]T";
+ if (isset($value["macAddress"][0]) && $value["macAddress"][0] != "-"){
+ $terminal = $value;
+ $terminal['type'] = "T";
+ $terminal['is_new'] = $add;
} else {
- $location= array_search($tmp, $this->config->departments);
- $this->terminals[$value["dn"]]= _("Thin client template for").
- " $location"."D";
+ $terminal = $value;
+ $terminal['type'] = "D";
+ $terminal['message'] = _("Terminal template for");
+ $terminal['location'] = array_search($tmp, $this->config->departments);
}
} elseif (in_array('gotoWorkstation', $value["objectClass"])){
- if (isset($value["macAddress"][0]) &&
- $value["macAddress"][0] != "-"){
-
- $this->terminals[$value["dn"]]= $add." ".
- $value["cn"][0].
- " [".$value["macAddress"][0]."]L";
+ if (isset($value["macAddress"][0]) && $value["macAddress"][0] != "-"){
+ $terminal = $value;
+ $terminal['type'] = "L";
} else {
- $location= array_search($tmp, $this->config->departments);
- $this->terminals[$value["dn"]]= _("Workstation template for").
- " $location"."D";
+ $terminal = $value;
+ $terminal['type'] = "D";
+ $terminal['location'] = array_search($tmp, $this->config->departments);
+ $terminal['message'] = _("Workstation template for");
}
} elseif (in_array('gotoPrinter', $value["objectClass"])){
- if (isset($value['description'][0])){
- $this->terminals[$value['dn']]= $value['cn'][0]." [".$value['description'][0]."]P";
- } else {
- $this->terminals[$value['dn']]= $value['cn'][0]."P";
- }
+ $terminal = $value;
+ $terminal['type'] = "P";
} elseif (in_array('goServer', $value["objectClass"])){
- if (isset($value['description'][0])){
- $this->terminals[$value['dn']]= $value['cn'][0]." [".$value['description'][0]."]S";
- } else {
- $this->terminals[$value['dn']]= $value['cn'][0]."S";
- }
+ $terminal = $value;
+ $terminal['type'] = "S";
} elseif (in_array('goFonHardware', $value["objectClass"])){
-
- if (isset($value['description'][0])){
- $this->terminals[$value['dn']]= $value['cn'][0]." [".$value['description'][0]."]F";
- } else {
- $this->terminals[$value['dn']]= $value['cn'][0]."F";
- }
+ $terminal = $value;
+ $terminal['type'] = "F";
} elseif (in_array('ieee802Device', $value["objectClass"])){
-
- if (isset($value['description'][0])){
- $this->terminals[$value['dn']]= $value['cn'][0]." [".$value['description'][0]."]C";
- } else {
- $this->terminals[$value['dn']]= $value['cn'][0]."C";
- }
+ $terminal = $value;
+ $terminal['type'] = "C";
} else{
$name= preg_replace('/\$$/', '', $value['cn'][0]);
if (isset($value['sambaDomainName'])){
} else {
$domain= "";
}
- $this->terminals[$value['dn']]= $name.$domain."W";
+ $terminal=$value;
+ $terminal['type'] ="W";
+ $terminal['domain'] = $name.$domain;
}
+ $this->terminals[]=$terminal;
}
}
- natcasesort ($this->terminals);
+
+ $tmp=array();
+ foreach($this->terminals as $tkey => $val ){
+ $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
+ }
+ ksort($tmp);
+ $this->terminals=array();
+ foreach($tmp as $val){
+ $this->terminals[]=$val;
+ }
reset ($this->terminals);
}