X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fgofon%2Fconference%2Fclass_phoneConferenceManagment.inc;h=5bf53a119714f539f099a556426b76511e51a3ec;hb=9ba37d0ddd9297f3eded1e12d899e939d9f15555;hp=f2e0bb69ee3a1ed2f5a7eea2733d4e6a1d6cf9a3;hpb=978b2d789c11c34d6842d76c4e4082c7dae5ff5e;p=gosa.git diff --git a/plugins/gofon/conference/class_phoneConferenceManagment.inc b/plugins/gofon/conference/class_phoneConferenceManagment.inc index f2e0bb69e..5bf53a119 100644 --- a/plugins/gofon/conference/class_phoneConferenceManagment.inc +++ b/plugins/gofon/conference/class_phoneConferenceManagment.inc @@ -21,142 +21,302 @@ require "tabs_conference.inc"; class phoneConferenceManagment extends plugin { - /* Definitions */ - var $plHeadline = "Phone Conference Rooms"; - var $plDescription = "Managment "; + /* Definitions */ + var $plHeadline = "Phone conferences"; + var $plDescription = "Management"; - /* CLI vars */ - var $cli_summary = "Handling of LDAP subtrees"; - var $cli_description = "Some longer text\nfor help"; - var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); + /* CLI vars */ + var $cli_summary = "Handling of LDAP subtrees"; + var $cli_description = "Some longer text\nfor help"; + var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); - /* Headpage attributes */ - var $conferences = array(); + /* attribute list for save action */ + var $attributes = array(); + var $objectclasses = array(); - /* attribute list for save action */ - var $attributes = array(); - var $objectclasses = array(); + var $conferences = array(); var $conftab = false; - /* Initialise Class */ - function phoneConferenceManagment ($config, $ui) - { - $this->ui = $ui; - $this->dn = ""; - $this->config = $config; - } - - /* Execute class and display something */ - function execute() - { - /* Reload departments */ - $this->config->departments = get_departments(); - $smarty = get_smarty(); - $display = ""; - $s_action = ""; // Will contain an action, like del or edit - $s_entry = ""; // The entry name for edit delete -... - - foreach($_POST as $post => $key){ - if(preg_match("/.*new.*/i",$post)){ + var $DivListConference = NULL; + + /* Initialise Class */ + function phoneConferenceManagment ($config, $ui) + { + $this->ui = $ui; + $this->dn = ""; + $this->config = $config; + + $acl= get_permissions ($ui->dn, $ui->subtreeACL); + $this->acl= get_module_permission($acl, "conference", $ui->dn); + + $this->DivListConference = new divListConference($this->config,$this); + } + + + /* Execute class and display something */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /*************** + Variable initialisation + ***************/ + + /* Reload departments */ + $smarty = get_smarty(); + $display = ""; + $s_action = ""; // Will contain an action, like del or edit + $s_entry = ""; // The entry name for edit delete -... + + + /*************** + Check posts + ***************/ + + foreach($_POST as $key => $post){ + if(preg_match("/.*new.*/i",$key)){ $s_action = "new"; + // Post for delete + }elseif(preg_match("/conf_del.*/",$key)){ + $s_action = "del"; + $s_entry = preg_replace("/conf_".$s_action."_/i","",$key); + $s_entry = preg_replace("/_.*$/","",$s_entry); + // Post for edit + }elseif(preg_match("/conf_edit_.*/",$key)){ + $s_action="edit"; + $s_entry = preg_replace("/conf_".$s_action."_/i","",$key); + $s_entry = preg_replace("/_.*$/","",$s_entry); + } + } + + /* Edit Entry */ + if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ + $s_action = "edit"; + $s_entry = $_GET['id']; + } + + + /*************** + Cancel dialogs + ***************/ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + if (isset($this->conftab)){ + del_lock ($this->conftab->dn); + unset ($this->conftab); } + $this->conftab= NULL; + $this->lognames= array();; + $this->cn= ""; + unset ($_SESSION['objectinfo']); } - + + + /*************** + Delete + ***************/ + + /* Delete Entry if Posted action (s_action) == del + * The entry which will be deleted is defined in $s_entry + */ + if ($s_action =="del"){ + $this->dn= $this->conferences[$s_entry]['dn']; + + /* Check locking */ + if (($conf= get_lock($this->dn)) != ""){ + $_SESSION['dn']= $this->dn; + return(gen_locked_message($conf, $this->dn)); + } else { + add_lock ($this->dn, $this->ui->dn); + $smarty->assign("info", sprintf(_("You're about to delete the whole LDAP subtree placed under '%s'."), $this->dn)); + $display.= $smarty->fetch (get_template_path('remove.tpl', TRUE)); + return ($display); + } + } + + + /*************** + Delete confirmed + ***************/ + + /* If department deletion is accepted ... + * Finally delete department + */ + if (isset($_POST['delete_department_confirm'])){ + if (chkacl($this->acl, "delete") == ""){ + $this->remove_from_parent(); + gosa_log ("Department object'".$this->dn."' has been removed"); + } else { + print_red (_("You have no permission to remove this department.")); + } + } + + + /*************** + Edit + ***************/ + + /* Edit Entry if Posted action (s_action) == edit + * The entry which will be edited is defined in $s_entry + */ + if (($s_action=="edit") && (!isset($this->conftab->config))){ + + $this->dn= $this->conferences[$s_entry]['dn']; + + if (($conf= get_lock($this->dn)) != ""){ + return(gen_locked_message ($conf, $this->dn)); + } + + /* Lock the current entry, so everyone will get the above dialog */ + add_lock ($this->dn, $this->ui->dn); + + /* Register conftab to trigger edit dialog */ + $this->conftab= new conferencetabs($this->config,$this->config->data['TABS']['CONFERENCETABS'], $this->dn); + $_SESSION['objectinfo']= $this->dn; + } + + + /*************** + Create new + ***************/ + + /* Insert new entry*/ if($s_action == "new"){ + + /* Set up the users ACL's for this 'dn' */ $this->dn= "new"; $this->conftab= new conferencetabs($this->config,$this->config->data['TABS']['CONFERENCETABS'], $this->dn); - $this->conftab->set_acl(array(':all')); + unset($_SESSION['objectinfo']); + } + + + /*************** + Save entry + ***************/ + + /* Edit finished, check and save changes */ + if ((isset($_POST['edit_finish'])) && (isset($this->conftab->config))){ + /* Check tabs, will feed message array */ + $this->conftab->last= $this->conftab->current; + $this->conftab->save_object(); + $message= $this->conftab->check(); + + if (count($message) == 0){ + if($this->conftab->save() == 1){ + gosa_log ("goFonConference object '".$this->dn."' saving failed."); + return; + } + gosa_log ("goFonConference object '".$this->dn."' has been saved"); + + if ($this->dn != "new"){ + del_lock ($this->dn); + } + + $this->conftab->save (); + del_lock ($this->conftab->dn);; + unset ($this->conftab); + $this->conftab= NULL; + unset ($_SESSION['objectinfo']); + } else { + show_errors($message); + } } - + + + /*************** + Display dialogs + ***************/ + /* if edit or new, show dialog */ - if($this->conftab){ + if(($this->conftab) && (isset($this->conftab->config))){ $display= $this->conftab->execute(); /* Don't show buttons if tab dialog requests this */ if (!$this->conftab->by_object[$this->conftab->current]->dialog){ $display.= "
\n"; - $display.= "\n"; + $display.= "\n"; $display.= " \n"; - $display.= "\n"; + $display.= "\n"; $display.= "
"; } return ($display); } + + /*************** + display divlist + ***************/ + + /* Return rendered main page */ + /* Display dialog with system list */ + $this->DivListConference->parent = $this; + $this->DivListConference->execute(); + + /* Add departments if subsearch is disabled */ + if(!$this->DivListConference->SubSearch){ + $this->DivListConference->AddDepartments($this->DivListConference->selectedBase,5); + } $this->reload(); - $listhead = "