diff --git a/plugins/admin/systems/class_systemManagement.inc b/plugins/admin/systems/class_systemManagement.inc
index e34d4802bf07d8f15cc59d0c79cd7d8bc22e73b6..7471c95d70ddd2d437154ac01cbf249ec43d9e91 100644 (file)
/* Get global filter config */
if (!is_global("terminalfilter")){
- $ui= get_userinfo();
- $base= get_base_from_people($ui->dn);
+ $ui = get_userinfo();
+ $base = get_base_from_people($ui->dn);
$terminalfilter= array("workstations" => "checked",
"thins" => "checked",
"winstations" => "checked",
function execute()
{
- /* Save data */
+ /* Call parent execute */
+ plugin::execute();
+
+ /********************
+ Filter handling, check posted filter options and store them in our Session obejct
+ ********************/
+
+ /* Save posted filter data */
$terminalfilter= get_global("terminalfilter");
foreach( array("depselect", "user", "regex") as $type){
if (isset($_POST[$type])){
$terminalfilter[$type]= $_POST[$type];
}
}
+
+ /* Check if filter checkboxes are selected */
if (isset($_POST['depselect'])){
foreach( array("workstations", "thins", "winstations", "printers", "phones", "servers", "netdev") as $type){
-
if (isset($_POST[$type])) {
$terminalfilter[$type]= "checked";
} else {
}
}
}
+
+ /* Check for search post */
if (isset($_GET['search'])){
$s= mb_substr($_GET['search'], 0, 1, "UTF8")."*";
if ($s == "**"){
$terminalfilter['regex']= $s;
}
- $terminalfilter = get_global("terminalfilter"); // contains Filter Settings
+
+ /********************
+ Check for functional posts, edit|delete|add|... system devices
+ ********************/
$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 */
+ /* check if base was changed */
if(isset($_GET['act'])&&($_GET['act']=="dep_open")){
$s_action="open";
$s_entry = base64_decode($_GET['dep_id']);
$s_entry = preg_replace("/user_setpwd_/i","",$key);
}elseif(preg_match("/dep_root.*/i",$key)){
$s_action="root";
+ }elseif(preg_match("/newsystem_.*/i",$key)){
+ $s_action="newsystem";
+ $s_entry = preg_replace("/newsystem_/i","",$key);
}
}
- if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){
- $s_action ="edit";
- $s_entry = $_GET['id'];
+ /* 09.02.2006 : New incoming handling ; hickert
+ * If someone made a systemtype and ogroup selection
+ * Display the new requested entry type ... servtab in case of server and so on.
+ */
+ if(isset($_POST['SystemTypeChoosen'])){
+ $s_action = "SelectedSystemType";
+ $s_entry = $_POST['SystemType'];
+ $this->systab = NULL;
}
+ /* remove image tags from posted entry (posts looks like this 'name_x')*/
$s_entry = preg_replace("/_.$/","",$s_entry);
+ /* Edit was requested by pressing the name(link) of an item */
+ if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){
+ $s_action ="edit";
+ $s_entry = $_GET['id'];
+ }
+
/* Department changed? */
if(isset($_POST['depselect']) && $_POST['depselect']){
$terminalfilter['depselect']= $_POST['depselect'];
$terminalfilter['depselect']=(preg_replace("/^[^,]+,/","",$terminalfilter['depselect']));
}
+ /* back to the roots ^^ */
if($s_action=="root"){
$terminalfilter['depselect']=($this->config->current['BASE']);
}
-
/* If Backbutton is Posted */
if($s_action=="back"){
$base_back = preg_replace("/^[^,]+,/","",$terminalfilter['depselect']);
}
}
+ /* Save Termfilter .... */
register_global("terminalfilter", $terminalfilter);
$this->reload();
-
+
/* Check for exeeded sizelimit */
if (($message= check_sizelimit()) != ""){
return($message);
return ($smarty->fetch(get_template_path('chooser.tpl', TRUE)));
}
- /* Create new default terminal */
- if (isset($_POST['create_system'])) {
+ /********************
+ Create new system ...
+ ********************/
+ /* Create new default terminal
+ *
+ * 09.02.2006 ; New incoming handling ; hickert
+ * Or create specified object of selected system type, from given incoming object
+ */
+ if (isset($_POST['create_system'])||$s_action=="newsystem"||$s_action == "SelectedSystemType") {
+
+ /* If the current entry is an incoming object
+ * $sw = System type as posted in new incoming handling dialog
+ */
+ if($s_action == "SelectedSystemType") {
+ $sw = $s_entry;
+ $dn_backup = $this->dn;
+ }else{
+ if(isset($_POST['system'])){
+ $sw = $_POST['system'];
+ }else{
+ $sw = $s_entry;
+ }
+ }
+
$this->dn= "new";
$this->acl= array(":all");
- switch ($_POST['system']){
+ switch ($sw){
case 'terminal':
$this->systab= new termtabs($this->config,
$this->config->data['TABS']['TERMTABS'], $this->dn);
$this->systab->set_acl ($this->acl);
$this->systab->by_object['termgeneric']->cn= "default";
$this->systab->by_object['termservice']->cn= "default";
+ $this->systab->by_object['termgeneric']->base = $_SESSION['terminalfilter']['depselect'];
break;
case 'workstation':
$this->config->data['TABS']['WORKTABS'], $this->dn);
$this->systab->set_acl ($this->acl);
$this->systab->by_object['workgeneric']->cn= "wdefault";
- $this->systab->by_object['termservice']->cn= "default";
+ $this->systab->by_object['workservice']->cn= "default";
+ $this->systab->by_object['workgeneric']->base = $_SESSION['terminalfilter']['depselect'];
break;
case 'server':
$this->systab= new servtabs($this->config,
$this->config->data['TABS']['SERVTABS'], $this->dn);
$this->systab->set_acl ($this->acl);
+ $this->systab->by_object['servgeneric']->base = $_SESSION['terminalfilter']['depselect'];
break;
case 'printer':
$this->systab= new printtabs($this->config,
$this->config->data['TABS']['PRINTTABS'], $this->dn);
$this->systab->set_acl ($this->acl);
+ $this->systab->by_object['printgeneric']->base = $_SESSION['terminalfilter']['depselect'];
break;
case 'phone':
$this->systab= new phonetabs($this->config,
$this->config->data['TABS']['PHONETABS'], $this->dn);
$this->systab->set_acl ($this->acl);
+ $this->systab->by_object['phonegeneric']->base = $_SESSION['terminalfilter']['depselect'];
break;
case 'component':
$this->systab= new componenttabs($this->config,
$this->config->data['TABS']['COMPONENTTABS'], $this->dn);
$this->systab->set_acl ($this->acl);
+ $this->systab->by_object['componentgeneric']->base = $_SESSION['terminalfilter']['depselect'];
break;
}
+
+ /* 09.02.2006 ; New incoming handling ; hickert.
+ * We must create a NEW object of given system type (Posted from SelectDeviceType).
+ * But we have to use the same attributes as used in incoming object, thats
+ * what we do here.
+ */
+ if($s_action == "SelectedSystemType"){
+
+ /* Store some informations, to be able to add this object to
+ * To specified objectgroup and delete incoming object
+ */
+ $_SESSION['SelectedSystemType']['dn'] = $this->dn;
+ $_SESSION['SelectedSystemType']['server'] = $s_entry;
+ $_SESSION['SelectedSystemType']['ogroup'] = $_POST['ObjectGroup'];
+
+ /* restore dn */
+ $this->dn = $dn_backup;
+
+ /* Get properties from incoming object */
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd($this->dn);
+ $ldap->cat($this->dn);
+ $res = $ldap->fetch();
+
+ /* Unset not needed attributes */
+ unset($res['dn']);
+ unset($res['objectClass']);
+
+ /* Walk through all tabs and set attributes if available */
+ foreach($this->systab->by_object as $name => $value){
+ foreach($this->systab->by_object[$name]->attributes as $atr){
+ if((isset($value))&&(isset($res[$atr]))){
+ $this->systab->by_object[$name]->$atr = $res[$atr][0];
+ }
+ }
+ }
+ }
+
+ /* set base ... of current divlist position */
+ $this->systab->base = $_SESSION['terminalfilter']['depselect'];
}
+
+ /********************
+ Edit system ...
+ ********************/
+
/* User wants to edit data? */
if ($s_action == "edit"){
- /* Get 'dn' from posted 'cn', must be unique */
$this->dn= $this->terminals[$s_entry]['dn'];
/* Check locking, save current plugin in 'back_plugin', so
/* Lock the current entry, so everyone will get the
above dialog */
- add_lock ($this->dn, $this->ui->dn);
switch ($type){
+ case "NewDevice" :
+ $this->systab = new SelectDeviceType($this->config,$this->dn) ;
+ break;
case "terminal":
/* Register systab to trigger edit dialog */
$this->systab= new termtabs($this->config,
$this->config->data['TABS']['TERMTABS'], $this->dn);
- $this->systab->set_acl($acl);
- $_SESSION['objectinfo']= $this->dn;
- break;
+ $this->systab->set_acl($acl);
+ $_SESSION['objectinfo']= $this->dn;
+ add_lock ($this->dn, $this->ui->dn);
+ break;
case "server":
+
/* Register systab to trigger edit dialog */
- $this->systab= new servtabs($this->config,
- $this->config->data['TABS']['SERVTABS'], $this->dn);
- $this->systab->set_acl($acl);
- $_SESSION['objectinfo']= $this->dn;
- break;
+ $this->systab= new servtabs($this->config,$this->config->data['TABS']['SERVTABS'], $this->dn);
+ $this->systab->set_acl($acl);
+ $_SESSION['objectinfo']= $this->dn;
+ add_lock ($this->dn, $this->ui->dn);
+ break;
case "workstation":
/* Register systab to trigger edit dialog */
$this->systab= new worktabs($this->config,
$this->config->data['TABS']['WORKTABS'], $this->dn);
- $this->systab->set_acl($acl);
- $_SESSION['objectinfo']= $this->dn;
- break;
+ $this->systab->set_acl($acl);
+ $_SESSION['objectinfo']= $this->dn;
+ add_lock ($this->dn, $this->ui->dn);
+ break;
case "printer":
/* Register systab to trigger edit dialog */
$this->systab= new printtabs($this->config,
$this->config->data['TABS']['PRINTTABS'], $this->dn);
- $this->systab->set_acl($acl);
- $_SESSION['objectinfo']= $this->dn;
- break;
+ $this->systab->set_acl($acl);
+ $_SESSION['objectinfo']= $this->dn;
+ add_lock ($this->dn, $this->ui->dn);
+ break;
case "phone":
/* Register systab to trigger edit dialog */
$this->systab= new phonetabs($this->config,
$this->config->data['TABS']['PHONETABS'], $this->dn);
- $this->systab->set_acl($acl);
- $_SESSION['objectinfo']= $this->dn;
- break;
+ $this->systab->set_acl($acl);
+ $_SESSION['objectinfo']= $this->dn;
+ add_lock ($this->dn, $this->ui->dn);
+ break;
case "component":
/* Register systab to trigger edit dialog */
$this->systab= new componenttabs($this->config,
$this->config->data['TABS']['COMPONENTTABS'], $this->dn);
- $this->systab->set_acl($acl);
- $_SESSION['objectinfo']= $this->dn;
- break;
-
+ $this->systab->set_acl($acl);
+ $_SESSION['objectinfo']= $this->dn;
+ add_lock ($this->dn, $this->ui->dn);
+ break;
+
case "winstation":
/* Register systab to trigger edit dialog */
$this->systab= new wintabs($this->config,
$this->config->data['TABS']['WINTABS'], $this->dn);
- $this->systab->set_acl($acl);
- $_SESSION['objectinfo']= $this->dn;
- break;
+ $this->systab->set_acl($acl);
+ $_SESSION['objectinfo']= $this->dn;
+ add_lock ($this->dn, $this->ui->dn);
+ break;
default:
- print_red (_("You can't edit this object type yet!"));
- del_lock($this->dn);
- break;
+ print_red (_("You can't edit this object type yet!"));
+ del_lock($this->dn);
+ break;
}
}
+
+
+ /********************
+ Change password ...
+ ********************/
/* Set terminals root password */
if ($s_action=="change_pw"){
return ($smarty->fetch(get_template_path('password.tpl', TRUE)));
}
+
+ /********************
+ Password cahnge finish, but check if entered data is ok
+ ********************/
+
/* Correctly specified? */
if (isset($_POST['password_finish'])){
if ($_POST['new_password'] != $_POST['repeated_password']){
}
}
+ /********************
+ Password change finish
+ ********************/
+
/* Change terminal password */
if (isset($_POST['password_finish']) &&
$_POST['new_password'] == $_POST['repeated_password']){
unset($_SESSION['objectinfo']);
}
+
+ /********************
+ Delete system cancel
+ ********************/
+
/* Delete terminal canceled? */
if (isset($_POST['delete_cancel']) || isset($_POST['password_cancel'])){
del_lock ($this->dn);
unset($_SESSION['objectinfo']);
}
+
+ /********************
+ Delete system, confirm dialog
+ ********************/
+
/* Remove terminal was requested */
if ($s_action=="del"){
/* 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 component at '%s'."), LDAP::fix($this->dn)));
return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
} else {
}
}
+
+ /********************
+ Delete system, confirmed
+ ********************/
/* Confirmation for deletion has been passed. Terminal should be deleted. */
if (isset($_POST['delete_terminal_confirm'])){
switch ($type){
case "terminal":
- $tabtype= "termtabs";
+ $tabtype = "termtabs";
+ $tabobj = "TERMTABS";
break;
case "workstation":
- $tabtype= "worktabs";
+ $tabtype = "worktabs";
+ $tabobj = "WORKTABS";
+ break;
+
+ case "phone":
+ $tabtype = "phonetabs";
+ $tabobj = "PHONETABS";
break;
case "server":
- $tabtype= "servtabs";
+ $tabtype = "servtabs";
+ $tabobj = "SERVTABS";
break;
default:
-#print_red (_("You can't remove this object type yet!"));
-#del_lock($this->dn);
-#return;
- $tabtype= "termtabs";
+ $tabtype = "termtabs";
+ $tabobj = "TERMTABS";
break;
}
/* Delete request is permitted, perform LDAP action */
- $this->systab= new $tabtype($this->config,
- $this->config->data['TABS']['TERMTABS'], $this->dn);
- $this->systab->set_acl(array($this->acl));
- $this->systab->by_object['termgeneric']->remove_from_parent ();
+ if($tabtype=="phonetabs"){
+ $this->systab= new $tabtype($this->config,
+ $this->config->data['TABS'][$tabobj], $this->dn);
+ $this->systab->set_acl(array($this->acl));
+ $this->systab->by_object['phonegeneric']->remove_from_parent ();
+ }else{
+ $this->systab= new $tabtype($this->config,
+ $this->config->data['TABS'][$tabobj], $this->dn);
+ $this->systab->set_acl(array($this->acl));
+ $this->systab->delete();
+ #$this->systab->by_object['termgeneric']->remove_from_parent ();
+ }
unset ($this->systab);
gosa_log ("System object'".$this->dn."' has been removed");
$this->systab= NULL;
del_lock ($this->dn);
}
+
+ /********************
+ Edit system type finished, check if everything went ok
+ ********************/
/* Finish user edit is triggered by the tabulator dialog, so
the user wants to save edited data. Check and save at this
point. */
/* Terminal has been saved successfully, remove lock from
LDAP. */
+
+ /* 09.02.2006 Hickert
+ * New System incoming behavior; you can select a system type and an ogroup membership.
+ * If this object is an Incoming object, $_SESSION['SelectedSystemType'] isset.
+ * Check if we must add the new object to an object group.
+ * !! Don't forget to unset the $_SESSION['SelectedSystemType']... else all edited objects
+ * !! will be added to the object group.
+ *
+ * If this is done, delete the old incoming entry... it is still there, because this is a new
+ * entry and not an edited one.
+ */
+ if(isset($_SESSION['SelectedSystemType'])){
+ $SelectedSystemType= $_SESSION['SelectedSystemType'];
+ unset($_SESSION['SelectedSystemType']);
+ if($SelectedSystemType['ogroup'] != "none"){
+ $og = new ogroup($this->config,$SelectedSystemType['ogroup']);
+ if($og){
+ $og->AddDelMembership($this->systab->dn);
+ }
+ $og->save();
+ }
+ if(!isset($ldap)){
+ $ldap = $this->config->get_ldap_link();
+ }
+ $ldap->cd ($this->dn);
+ $ldap->cat($this->dn);
+ if(count($ldap->fetch())){
+ $ldap->cd($this->dn);
+ $ldap->rmDir($this->dn);
+ }
+ $ldap->cd($this->config->current['BASE']);
+ }
+
if ($this->dn != "new"){
del_lock ($this->dn);
}
}
+
+ /********************
+ Edit system was canceled
+ ********************/
/* Cancel dialogs */
- if (isset($_POST['edit_cancel']) || isset($_POST['password_cancel'])){
+ if (isset($_POST['edit_cancel']) || isset($_POST['password_cancel']) || isset($_POST['SystemTypeAborted'])){
if (isset($this->systab)){
del_lock ($this->systab->dn);
unset ($this->systab);
}
$this->systab= NULL;
unset($_SESSION['objectinfo']);
+
+ /* 09.02.2006 ; New incoming handling ; hickert
+ * remove session object which stores our ogroup selection
+ * for the new incoming handling
+ */
+ if(isset($_SESSION['SelectedSystemType'])){
+ unset($_SESSION['SelectedSystemType']);
+ }
}
+
+ /********************
+ Display edit dialog, or some other
+ ********************/
+
/* Show tab dialog if object is present */
if ($this->systab){
$display= $this->systab->execute();
+
/* Don't show buttons if tab dialog requests this */
- if (!$this->systab->by_object[$this->systab->current]->dialog){
+ if ((isset($this->systab->by_object))&&(!$this->systab->by_object[$this->systab->current]->dialog)){
$display.= "<p style=\"text-align:right\">\n";
- $display.= "<input type=submit name=\"edit_finish\" value=\""._("Finish")."\">\n";
+ $display.= "<input type=\"submit\" name=\"edit_finish\" value=\""._("Finish")."\">\n";
$display.= " \n";
- $display.= "<input type=submit name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
+ $display.= "<input type=\"submit\" name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
$display.= "</p>";
}
return ($display);
}
-
-
-
-
- /* Prepare departments */
+ /********************
+ Entry handling finished (edit delete ... )
+ Now the list generation is the next part of this script.
+ ********************/
+
+ /* Prepare departments,
+ which are shown in the listbox on top of the listbox
+ */
$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>";
- }
+ if ($terminalfilter['depselect'] == $key){
+ $options.= "<option selected='selected' value='$key'>$value</option>";
+ } else {
+ $options.= "<option value='$key'>$value</option>";
+ }
}
- /* NEW LIST MANAGMENT */
+ /* NEW LIST MANAGMENT */
+
+ /* Create list header
+ */
$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")."'> ".
+ " <input class='center' type='image' align='middle' src='images/list_back.png'
+ title='"._("Go up one department")."' alt='"._("Up")."' name='dep_back'> ".
+ " <input class='center' type='image' src='images/list_root.png' align='middle'
+ title='"._("Go to root department")."' name='dep_root' alt='"._("Root")."'> ".
+ " <input class='center' type='image' align='middle' src='images/list_home.png'
+ title='"._("Go to users department")."' alt='"._("Home")."' name='dep_home'> ".
+ " <img class='center' src='images/list_seperator.png' align='middle' alt='' height='16' width='1'> ".
+ " <input class='center' type='image' align='middle' src='images/select_new_terminal.png'
+ name='newsystem_terminal' alt='"._("New Terminal template")."' title='"._("New Terminal")."'>".
+ " <input class='center' type='image' align='middle' src='images/select_new_workstation.png'
+ name='newsystem_workstation' alt='"._("New Workstation template")."' title='"._("New Workstation")."'>".
+ " <input class='center' type='image' align='middle' src='images/select_new_server.png' name='newsystem_server' alt='"._("New Server")."'
+ title='"._("New Server")."'>".
+ " <input class='center' type='image' align='middle' src='images/select_new_printer.png' name='newsystem_printer' alt='"._("New Printer")."'
+ title='"._("New Printer")."'>".
+ " <input class='center' type='image' align='middle' src='images/select_new_phone.png' name='newsystem_phone' alt='"._("New Phone")."'
+ title='"._("New Phone")."'>".
+ " <input class='center' type='image' align='middle' src='images/select_new_component.png' name='newsystem_component' alt='"._("New Component")."'
+ title='"._("New Component")."'>".
+ " <img class='center' src='images/list_seperator.png' align='middle' alt='' height='16' width='1'> "._("Base")." ".
+ " <select name='depselect' onChange='mainform.submit()' class='center'>$options</select>".
+ " <input class='center' type='image' src='images/list_submit.png' align='middle'
+ title='"._("Submit department")."' name='submit_department' alt='". _("Submit")."'> ".
"</div>";
+ /* Edit delete link for system types
+ */
+ $action= "<input class='center' type='image' src='images/edit.png' alt='"._("edit")."' name='user_edit_%KEY%' title='"._("Edit system")."'>";
+ $action.= "<input class='center' type='image' src='images/edittrash.png' alt='"._("delete")."' name='user_del_%KEY%' title='"._("Delete system")."'>";
+ $linkopen = "<a href='?plug=".$_GET['plug']."&act=dep_open&dep_id=%s'>%s</a>";
- $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();
+ /* Create new divlist, and add the header elements
+ */
+ $divlist = new divlist("systemstab");
+ $divlist->SetSummary(_("This table displays all systems, in the selected tree."));
+ $divlist->SetEntriesPerPage(0);
$divlist->SetHeader(array(
- array("string" => " "),
- array("string" => _("System")." / "._("Department")),
- array("string" => _("Actions"), "attach" => "style='border:none'" )));
+ array("string" => " ", "attach" => "style='text-align:center;width:20px;'"),
+ array("string" => _("System")." / "._("Department"), "attach" => "style=''"),
+ array("string" => _("Actions"), "attach" => "style='width:60px;border-right:0px;text-align:right;'" )));
- $divlist->SetSummary(_("This table displays all systems, in the selected tree."));
- $divlist->SetEntriesPerPage(20);
+ /* Add departments, to be able to switch into them
+ */
+ foreach($this->departments as $key=> $val){
+
+ /* Add missing entries ... */
+ if(!isset($this->config->departments[trim($key)])){
+ $this->config->departments[trim($key)]="";
+ }
- // Defining Links
- $linkopen = "<a href='?plug=".$_GET['plug']."&act=dep_open&dep_id=%s'>%s</a>";
+ /* 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=>$vald ){
+ if(preg_match("/".$keys."\/.*/",$keyd)){
+ $non_empty="full";
+ }
+ }
- 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'");
+ /* Add to divlist */
+ $field1 = array("string" => "<img src='images/".$non_empty."folder.png' alt='department'>", "attach" => "style='text-align:center;width:20px;'");
+ $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val), "attach" => "style=''");
+ $field3 = array("string" => " ", "attach" => "style='width:60px;border-right:0px;text-align:right;'");
$divlist->AddEntry(array($field1,$field2,$field3));
}
- // Space
+ // Iamge spacer
$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") ."'>";
+ $img1 = "<img class='center' src='images/printer.png' alt='C' title='"._("Cups Server") ."'>";
+ $img2 = "<img class='center' src='images/scanner.png' alt='L' title='"._("Log Db") ."'>";
+ $img3 = "<img class='center' src='images/select_terminal.png' alt='L' title='"._("Syslog Server") ."'>";
+ $img4 = "<img class='center' src='images/mailto.png' alt='M' title='"._("Mail Server") ."'>";
+ $img5 = "<img class='center' src='images/select_phone.png' alt='I' title='"._("Imap Server") ."'>";
+ $img6 = "<img class='center' src='images/fax_small.png' alt='F' title='"._("Nfs Server") ."'>";
+ $img7 = "<img class='center' src='images/select_winstation.png' alt='K' title='"._("Kerberos Server") ."'>";
+ $img8 = "<img class='center' src='images/select_phone.png' alt='A' title='"._("Asterisk Server") ."'>";
+ $img9 = "<img class='center' src='images/fax_small.png' alt='F' title='"._("Fax Server") ."'>";
+ $img10 = "<img class='center' 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("goLdapServer" ,$val['objectClass'])){
+
+ }
+
+ /* Generate picture list, which is currently disabled */
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("goShareServer" ,$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 = "";
+
+ $val['cn'][0]= preg_replace('/\$$/', '', $val['cn'][0]);
+
// Generate Array to Add
if((isset($val['is_new']))&&(!empty($val['is_new']))){
$display= "".$val["cn"][0]." ".$val['is_new'];
$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")."'>";
+ if((in_array("gotoTerminal",$val['objectClass']))||(in_array("gotoWorkstation",$val['objectClass']))){
+ $action2 = "<input class='center' 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'");
+ $field1 = array("string" => sprintf($img['img'],$val['dn']), "attach" => "style='text-align:center;width:20px;'");
+ $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' title='".$val['dn']."'");
+ $field3 = array("string" => preg_replace("/%KEY%/", "$key", $action2.$action), "attach" => "style='width:60px;border-right:0px;text-align:right;'");
$divlist->AddEntry( array($field1,$field2,$field3));
}
-
-
-
-
/* Show main page */
$smarty->assign("terminalshead", $listhead);
$smarty->assign("terminals", $divlist->DrawList());
$smarty->assign("search_image", get_template_path('images/search.png'));
+ $smarty->assign("searchu_image", get_template_path('images/search_user.png'));
$smarty->assign("tree_image", get_template_path('images/tree.png'));
$smarty->assign("infoimage", get_template_path('images/info.png'));
$smarty->assign("launchimage", get_template_path('images/launch.png'));
{
$temp= "";
$conv= array(
+ "NQ" => array("select_newsystem.png",_("New System from incoming")),
"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")));
}
foreach ($conv as $key => $value){
if($input['type']==$key){
- $tmp['img'] ="<img src='images/".$value[0]."' alt='".$key."' title='".$value['1']."'>";
+ $tmp['img'] ="<img class='center' src='images/".$value[0]."' alt='".$key."' title='".$value['1']."'>";
$tmp['class']=$key;
return $tmp;
}
/* Get list of terminals to be shown */
if ($terminalfilter['thins'] == "checked"){
- $termfilter= "(&(objectClass=gotoTerminal)(cn=$regex))";
+ $termfilter= "(&(objectClass=goHard)(cn=$regex))";
} else {
$termfilter= "";
}
/* Get all gotoTerminal's */
$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);
+ $res= get_list($this->ui->subtreeACL, "(|$termfilter)", FALSE, "ou=terminals,ou=systems,".$base,
+ array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE);
-
- /* NEW LIST MANAGMENT
+ $res= array_merge($res,get_list($this->ui->subtreeACL, "(|$termfilter)", FALSE, "ou=incoming,".$base,
+ array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+ $res= array_merge($res,
+ get_list($this->ui->subtreeACL, "(|$serverfilter)", FALSE, "ou=servers,ou=systems,".$base,
+ array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+ $res= array_merge($res,
+ get_list($this->ui->subtreeACL, "(|$phonefilter)", FALSE, "ou=phones,ou=systems,".$base,
+ array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+ $res= array_merge($res,
+ get_list($this->ui->subtreeACL, "(|$netfilter)", FALSE, "ou=netdevices,ou=systems,".$base,
+ array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+ $res= array_merge($res,
+ get_list($this->ui->subtreeACL, "(|$printfilter)", FALSE, "ou=printers,ou=systems,".$base,
+ array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+ $res= array_merge($res,
+ get_list($this->ui->subtreeACL, "(|$workfilter)", FALSE, "ou=workstations,ou=systems,".$base,
+ array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+ $res= array_merge($res,
+ get_list($this->ui->subtreeACL, "(|$winfilter)", FALSE, "ou=winstations,ou=systems,".$base,
+ array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), FALSE));
+
+/* 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);
+
+ $peopleOU = get_people_ou();
+
+ if(empty($peopleOU)){
+ $base2 = $base;
+ }else{
+ $base2 = preg_replace("/".$peopleOU."/i","",$base);
+ }
+
$res3 = get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))",
TRUE, $base2, array("ou", "description"), TRUE);
}
ksort($tmp);
foreach($tmp as $value){
- if($value["description"][0]!=".."){
+ if(isset($value["description"][0])){
$this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]";
}else{
- $this->departments[$value['dn']]=$value["description"][0];
+ $this->departments[$value['dn']]=convert_department_dn2($value['dn']);//$value["description"][0];
}
}
$tmp= $value["dn"];
}
if (preg_match ("/,ou=incoming,/i", $tmp)){
- if (in_array('gotoTerminal', $value['objectClass'])){
- $add= "+ "._("New terminal");
- }
- if (in_array('gotoWorkstation', $value['objectClass'])){
- $add= "+ "._("New workstation");
+ if (in_array('GOhard', $value['objectClass'])){
+ $add= "- "._("New Device");
}
} else {
$add= "";
if (isset($value["macAddress"][0]) && $value["macAddress"][0] != "-"){
$terminal = $value;
$terminal['type'] = "L";
+ $terminal['is_new'] = $add;
} else {
$terminal = $value;
$terminal['type'] = "D";
$terminal['location'] = array_search($tmp, $this->config->departments);
$terminal['message'] = _("Workstation template for");
}
+ }elseif (in_array("GOhard",$value['objectClass'])){
+ $terminal = $value;
+ $terminal['type'] = "Q";
+ $terminal['is_new'] = $add;
} elseif (in_array('gotoPrinter', $value["objectClass"])){
$terminal = $value;
$terminal['type'] = "P";
} else {
$domain= "";
}
- $terminal=$value;
- $terminal['type'] ="W";
- $terminal['domain'] = $name.$domain;
+ $terminal=$value;
+ $terminal['type'] ="W";
+ $terminal['domain'] = $name.$domain;
}
- $this->terminals[]=$terminal;
+ $this->terminals[]=$terminal;
}
}
$tmp=array();
foreach($this->terminals as $tkey => $val ){
- $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
+ $tmp[strtolower($val['cn'][0]).$val['dn']]=$val;
}
ksort($tmp);
$this->terminals=array();
if (in_array('ieee802Device', $classes)){
$type= "component";
- }
+ }else
if (in_array('gotoTerminal', $classes)){
$type= "terminal";
- }
+ }else
if (in_array('gotoWorkstation', $classes)){
$type= "workstation";
- }
+ }else
if (in_array('gotoPrinter', $classes)){
$type= "printer";
- }
+ }else
if (in_array('goFonHardware', $classes)){
$type= "phone";
- }
+ }else
if (in_array('goServer', $classes)){
$type= "server";
- }
+ }else
+ if (in_array('GOhard', $classes)){
+ $type= "NewDevice";
+ }else
if (in_array('sambaAccount', $classes) ||
in_array('sambaSamAccount', $classes)){
$type= "winstation";