X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=inline;f=gosa-plugins%2Fgoto%2Fadmin%2Fapplications%2Fclass_applicationManagement.inc;h=2c5e02c60ec37772627167edee9afc3f88ad2ed4;hb=ca8601950357b61c37905a3350d9286d8b21fa88;hp=6283ec927635f94b8cf4afe666296244be24c864;hpb=049d82cc1f343b829bcfdcb751a0b2222d3d7f15;p=gosa.git diff --git a/gosa-plugins/goto/admin/applications/class_applicationManagement.inc b/gosa-plugins/goto/admin/applications/class_applicationManagement.inc index 6283ec927..2c5e02c60 100644 --- a/gosa-plugins/goto/admin/applications/class_applicationManagement.inc +++ b/gosa-plugins/goto/admin/applications/class_applicationManagement.inc @@ -1,753 +1,179 @@ config->search("faiManagement", "CLASS",array('menu','tabs')); - if(!empty($tmp)){ - return(true); - } - return(false); - } + // Tab definition + protected $tabClass = "apptabs"; + protected $tabType = "APPSTABS"; + protected $aclCategory = "application"; + protected $aclPlugin = "application"; + protected $objectName = "application"; + var $releaseSelector = NULL; - function applicationManagement (&$config, &$ui) + function __construct($config,$ui) { - /* Save configuration for internal use */ - $this->config = &$config; - $this->ui = &$ui; - - /* Check if copy & paste is activated */ - if($this->config->boolValueIsTrue("MAIN","COPYPASTE")){ - $this->CopyPasteHandler = new CopyPasteHandler($this->config); - } - - /* Creat dialog object */ - $this->DivListApplication = new divListApplication($this->config,$this); + $this->config = $config; + $this->ui = $ui; + $this->app_base = get_ou('applicationRDN').$this->config->current['BASE']; + $this->app_release = get_ou('applicationRDN').$this->config->current['BASE']; if($this->IsReleaseManagementActivated()){ - /* Check if we should enable the release selection */ - $this->enableReleaseManagement = true; - - /* Hide SubSearch checkbox */ - $this->DivListApplication->DisableCheckBox("SubSearch"); - } - - /* Set default release */ - if(!$this->IsReleaseManagementActivated()){ - $this->app_base = get_ou("applicationRDN").$this->config->current['BASE']; - if(!session::is_set("app_filter")){ - session::set("app_filter",array("app_base" => $this->app_base)); - } - $app_filter = session::get("app_filter"); + $filter_xml = "application-filter-release.xml"; + $list_xml = "application-list-release.xml"; + $this->storagePoints= array(""); + $releases = faiManagement::getReleaseStates($this->config,$this->app_base); + $this->releaseSelector = new releaseSelector($releases, $this->app_release, $this->app_release); }else{ - - /* Set intial release */ - $this->app_base = get_ou("applicationRDN").$this->config->current['BASE']; - $rel = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu")); - $rels = array_flip($this->getReleases()); - if(isset($rels[$rel])){ - $rel = $rels[$rel]; - }else{ - $rel = $this->app_base; - } - - if(!session::is_set("app_filter")){ - session::set("app_filter",array("app_base" => $this->app_base,"app_release" => $rel)); - } - $app_filter = session::get("app_filter"); - $this->app_base = $app_filter['app_base']; - $this->app_release = $app_filter['app_release']; + $filter_xml = "application-filter.xml"; + $list_xml = "application-list.xml"; + $this->storagePoints= array(get_ou("applicationRDN")); } - } - - - function getReleases() - { - $ldap = $this->config->get_ldap_link(); - $ret = array(); - $base = $this->app_base; - - $ret[$this->app_base] = "/"; - $ldap->cd($base); - $ldap->search("(&(objectClass=organizationalUnit)(objectClass=FAIbranch))",array("ou")); - while($attrs = $ldap->fetch()){ - $str = str_replace($base,"",$attrs['dn']); - $tmp = array_reverse( split("ou=",$str)); - $str = ""; - foreach($tmp as $val){ - $val = trim(preg_replace("/,/","",$val)); - if(empty($val)) break; - $str .= "/".$val; - } - if(!empty($str)){ - $ret[$attrs['dn']]= preg_replace("/^\//","",$str); - } - } - asort($ret); - return($ret); - } - - function execute() - { - /* Call parent execute */ - plugin::execute(); - - - /**************** - Variable init - ****************/ - - /* These vars will be stored if you try to open a locked app, - to be able to perform your last requests after showing a warning message */ - session::set('LOCK_VARS_TO_USE',array("/^act$/","/^id$/","/^appl_edit_/","/^appl_del_/","/^item_selected/","/^remove_multiple_applications/","/^menu_action/")); - $smarty = get_smarty(); // Smarty instance - $s_action = ""; // Contains the action to proceed - $s_entry = ""; // The value for s_action - $base_back = ""; // The Link for Backbutton - - /* Test Posts */ - foreach($_POST as $key => $val){ - // Post for delete - if(preg_match("/appl_del.*/",$key)){ - $s_action = "del"; - $s_entry = preg_replace("/appl_".$s_action."_/i","",$key); - // Post for edit - }elseif(preg_match("/appl_edit_.*/",$key)){ - $s_action="edit"; - $s_entry = preg_replace("/appl_".$s_action."_/i","",$key); - // Post for new - }elseif(preg_match("/^copy_.*/",$key)){ - $s_action="copy"; - $s_entry = preg_replace("/^copy_/i","",$key); - }elseif(preg_match("/^cut_.*/",$key)){ - $s_action="cut"; - $s_entry = preg_replace("/^cut_/i","",$key); - // Post for new - }elseif(preg_match("/^appl_new.*/",$key)){ - $s_action="new"; - }elseif(preg_match("/^remove_multiple_applications/",$key)){ - $s_action="del_multiple"; - }elseif(preg_match("/^editPaste.*/i",$key)){ - $s_action="editPaste"; - }elseif(preg_match("/^multiple_copy_groups/",$key)){ - $s_action = "copy_multiple"; - }elseif(preg_match("/^multiple_cut_groups/",$key)){ - $s_action = "cut_multiple"; - } - } - - if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ - $s_action ="edit"; - $s_entry = $_GET['id']; + // Build filter + if (session::global_is_set(get_class($this)."_filter")){ + $filter= session::global_get(get_class($this)."_filter"); + } else { + $filter = new filter(get_template_path($filter_xml, true)); + $filter->setObjectStorage($this->storagePoints); } + $this->setFilter($filter); - $s_entry = preg_replace("/_.$/","",$s_entry); - + // Build headpage + $headpage = new listing(get_template_path($list_xml, true)); + $headpage->setFilter($filter); - /* handle C&P from layers menu */ - if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ - $s_action = "copy_multiple"; + // Add copy&paste and snapshot handler. + if ($this->config->boolValueIsTrue("core", "copyPaste")){ + $this->cpHandler = new CopyPasteHandler($this->config); } - if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ - $s_action = "cut_multiple"; - } - if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ - $s_action = "editPaste"; - } - - /* Create options */ - if(isset($_POST['menu_action']) && $_POST['menu_action'] == "appl_new"){ - $s_action = "new"; + if($this->config->get_cfg_value("core","enableSnapshots") == "true"){ + $this->snapHandler = new SnapshotHandler($this->config); } + parent::__construct($config, $ui, "applications", $headpage); - /* handle remove from layers menu */ - if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ - $s_action = "del_multiple"; - } - - /**************** - Copy & Paste handling - ****************/ - - /* Display the copy & paste dialog, if it is currently open */ - $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); - if($ret){ - return($ret); - } - - /**************** - Create a new app - ****************/ - - /* New application? */ - if ($s_action=="new"){ - - /* By default we set 'dn' to 'new', all relevant plugins will - react on this. */ - $this->dn= "new"; - - /* Create new usertab object */ - $this->apptabs= new apptabs($this->config,$this->config->data['TABS']['APPSTABS'], $this->dn,"application"); - $this->apptabs->parent = &$this; - $this->apptabs->set_acl_base($this->app_base); - } - - - /**************** - Edit entry canceled - ****************/ - - /* Cancel dialogs */ - if (isset($_POST['edit_cancel']) || isset($_POST['password_cancel'])){ - $this->remove_lock(); - $this->apptabs= NULL; - session::un_set('objectinfo'); - } - - - /**************** - Edit entry finished - ****************/ - - /* Finish apps edit is triggered by the tabulator dialog, so - the user wants to save edited data. Check and save at this - point. */ - if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply']) ) && (isset($this->apptabs->config))){ - - /* Check tabs, will feed message array */ - $this->apptabs->last= $this->apptabs->current; - $this->apptabs->save_object(); - $message= $this->apptabs->check(); - - /* Save, or display error message? */ - if (count($message) == 0){ - - /* Save data data to ldap */ - $this->apptabs->save(); - - if (!isset($_POST['edit_apply'])){ - /* Application has been saved successfully, remove lock from - LDAP. */ - if ($this->dn != "new"){ - $this->remove_lock(); - } - $this->apptabs= NULL; - session::un_set('objectinfo'); - }else{ - - /* Reinitialize tab */ - if($this->apptabs instanceof tabs){ - $this->apptabs->re_init(); - } - } - } else { - /* Ok. There seem to be errors regarding to the tab data, - show message and continue as usual. */ - msg_dialog::displayChecks($message); - } - } - - - /**************** - Edit entry - ****************/ - - /* User wants to edit data? */ - if (($s_action=="edit") && (!isset($this->apptabs->config))){ - - /* Get 'dn' from posted 'applist', must be unique */ - $this->dn= $this->applications[$s_entry]['dn']; - - /* Check locking, save current plugin in 'back_plugin', so - the dialog knows where to return. */ - if (($user= get_lock($this->dn)) != ""){ - return(gen_locked_message ($user, $this->dn)); - } - - /* Lock the current entry, so everyone will get the - above dialog */ - add_lock ($this->dn, $this->ui->dn); - - /* Register apptabs to trigger edit dialog */ - $this->apptabs= new apptabs($this->config,$this->config->data['TABS']['APPSTABS'], $this->dn,"application"); - if($this->IsReleaseManagementActivated()){ - $this->apptabs->set_FAIstate($this->applications[$s_entry]['FAIstate'][0]); - } - $this->apptabs->parent = &$this; - $this->apptabs->set_acl_base($this->dn); - session::set('objectinfo',$this->dn); - } - - - - /******************** - Delete MULTIPLE entries requested, display confirm dialog - ********************/ - - if ($s_action=="del_multiple"){ - $ids = $this->list_get_selected_items(); - - if(count($ids)){ - $this->dns = array(); - - $disallowed = array(); - foreach($ids as $id){ - $dn = $this->applications[$id]['dn']; - $acl = $this->ui->get_permissions($dn, "application/application"); - if(preg_match("/d/",$acl)){ - $this->dns[$id] = $dn; - }else{ - $disallowed[] = $dn; - } - } - - if(count($disallowed)){ - msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); - } - - if(count($this->dns)){ - - if ($user= get_multiple_locks($this->dns)){ - return(gen_locked_message($user,$this->dns)); - } - - $dns_names = array(); - foreach($this->dns as $dn){ - add_lock ($dn, $this->ui->dn); - $dns_names[] =LDAP::fix($dn); - } - - /* Lock the current entry, so nobody will edit it during deletion */ - $smarty->assign("intro", msgPool::deleteInfo($dns_names,_("application"))); - $smarty->assign("multiple", true); - return($smarty->fetch(get_template_path('remove.tpl', TRUE))); - } - } - } - - - /******************** - Delete MULTIPLE entries confirmed - ********************/ - - /* Confirmation for deletion has been passed. Users should be deleted. */ - if (isset($_POST['delete_multiple_application_confirm'])){ - - /* Remove user by user and check acls before removeing them */ - foreach($this->dns as $key => $dn){ - - $ui = get_userinfo(); - $acl = $ui->get_permissions($dn ,"application/application"); - if (preg_match('/d/', $acl)){ - - /* Delete request is permitted, perform LDAP action */ - $this->apptabs= new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $dn,"application"); - $this->apptabs->parent = &$this; - $this->apptabs->set_acl_base($dn); - $this->apptabs->delete (); - unset ($this->apptabs); - $this->apptabs= NULL; - - } else { - /* Normally this shouldn't be reached, send some extra - logs to notify the administrator */ - msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); - new log("security","application/".get_class($this),$dn,array(),"Tried to trick deletion."); - } - } - - /* Remove lock file after successfull deletion */ - $this->remove_lock(); - $this->dns = array(); - } - - - /******************** - Delete MULTIPLE entries Canceled - ********************/ - - /* Remove lock */ - if(isset($_POST['delete_multiple_application_cancel'])){ - - /* Remove lock file after successfull deletion */ - $this->remove_lock(); - $this->dns = array(); - } - - /**************** - Delete app - ****************/ - - /* Remove user was requested */ - if ($s_action == "del"){ - - /* Get 'dn' from posted 'uid' */ - $this->dn= $this->applications[$s_entry]['dn']; - - /* Load permissions for selected 'dn' and check if - we're allowed to remove this 'dn' */ - $ui = get_userinfo(); - $acl = $ui->get_permissions($this->dn ,"application/application"); - - if(preg_match("/d/",$acl)){ - /* Check locking, save current plugin in 'back_plugin', so - the dialog knows where to return. */ - if (($user= get_lock($this->dn)) != ""){ - return (gen_locked_message ($user, $this->dn)); - } - - /* Lock the current entry, so nobody will edit it during deletion */ - add_lock ($this->dn, $this->ui->dn); - $smarty= get_smarty(); - $smarty->assign("intro",msgPool::deleteInfo(LDAP::fix($this->dn),_("application"))); - $smarty->assign("multiple", false); - return($smarty->fetch (get_template_path('remove.tpl', TRUE))); - } else { - - /* Obviously the user isn't allowed to delete. Show message and - clean session. */ - msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); - } - } - - - /**************** - Delete app confirmed - ****************/ - - /* Confirmation for deletion has been passed. Group should be deleted. */ - if (isset($_POST['delete_app_confirm'])){ - - /* Some nice guy may send this as POST, so we've to check - for the permissions again. */ - $ui = get_userinfo(); - $acl = $ui->get_permissions($this->dn ,"application/application"); - - if(preg_match("/d/",$acl)){ - - /* Delete request is permitted, perform LDAP action */ - $this->apptabs= new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $this->dn,"application"); - $this->apptabs->parent = &$this; - $this->apptabs->set_acl_base($this->dn); - $this->apptabs->delete (); - unset ($this->apptabs); - $this->apptabs= NULL; - - } else { - - /* Normally this shouldn't be reached, send some extra - logs to notify the administrator */ - msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); - new log("security","application/".get_class($this),$dn,array(),"Tried to trick deletion."); - } - - /* Remove lock file after successfull deletion */ - $this->remove_lock(); - } - - - /**************** - Delete app canceled - ****************/ - - /* Delete application canceled? */ - if (isset($_POST['delete_cancel'])){ - $this->remove_lock(); - session::un_set('objectinfo'); - } - - /* Show tab dialog if object is present */ - if (($this->apptabs) && (isset($this->apptabs->config))){ - $display= $this->apptabs->execute(); - - /* Don't show buttons if tab dialog requests this */ - if (!$this->apptabs->by_object[$this->apptabs->current]->dialog){ - $display.= "

\n"; - - if(isset($this->apptabs->FAIstate) && !preg_match("/freeze/i",$this->apptabs->FAIstate)){ - $display.= "\n"; - $display.= " \n"; - if ($this->dn != "new"){ - $display.= "\n"; - $display.= " \n"; - } - } - $display.= "\n"; - $display.= "

"; - } - return ($display); - } - - - /**************** - Dialog display - ****************/ - - /* Check if there is a snapshot dialog open */ - if($this->IsReleaseManagementActivated()){ - $base = $this->app_release; - }else{ - $base = $this->app_base; - } - if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ - return($str); - } - - /* Display dialog with system list */ - $this->DivListApplication->parent = $this; - $this->DivListApplication->execute(); - if(!$this->IsReleaseManagementActivated()){ - $this->DivListApplication->AddDepartments($this->DivListApplication->selectedBase,3,1); - } - $this->reload(); - $this->DivListApplication->setEntries($this->applications); - return($this->DivListApplication->Draw()); - } - - - /* Return departments, that will be included within snapshot detection */ - function get_used_snapshot_bases() - { - if($this->IsReleaseManagementActivated()){ - return(array($this->app_release)); - }else{ - return(array($this->app_base)); - } - } - - - function reload() - { - $this->applications= array(); - - /* Set base for all searches */ - $Regex = $this->DivListApplication->Regex; - $SubSearch = $this->DivListApplication->SubSearch; - $Flags = GL_NONE | GL_SIZELIMIT; - $Filter = "(&(cn=".$Regex.")(objectClass=gosaApplication))"; - $tmp = array(); - - if(!$this->IsReleaseManagementActivated()){ - $use_base = $this->app_base; - if($SubSearch){ - $use_base = preg_replace("/^".preg_quote(get_ou("applicationRDN"), '/')."/","",$use_base); - } - }else{ - $use_base = $this->app_release; - $SubSearch= FALSE; - } - - /* Add FAIstate to the search attributes */ - $search_attrs = array("cn","description","dn","objectClass"); - if($this->IsReleaseManagementActivated()) { - $search_attrs[] = "FAIstate"; - } - - if($SubSearch){ - $res= get_sub_list($Filter, "application",get_ou("applicationRDN"), $use_base, $search_attrs, $Flags); - }else{ - $res= get_list($Filter, "application",$use_base, $search_attrs, $Flags); - } - $tmp2 = array(); - foreach ($res as $val){ - if(!isset($val['FAIstate'])){ - $val['FAIstate'][0] = ""; - } - $tmp[strtolower($val['cn'][0]).$val['cn'][0].$val['dn']]=$val; - $tmp2[strtolower($val['cn'][0]).$val['cn'][0].$val['dn']] = strtolower($val['cn'][0]).$val['cn'][0].$val['dn']; - } - - natcasesort($tmp2); - $this->applications=array(); - foreach($tmp2 as $val){ - $this->applications[]=$tmp[$val]; - } - reset ($this->applications); - } - - function remove_from_parent() - { - /* Optionally execute a command after we're done */ - $this->postremove(); + $this->registerAction("edit_application","editEntry"); + $this->registerAction("edit_environment","editEntry"); + $this->registerAction("edit_appapplication","editEntry"); + $this->registerAction("edit_mailapplication","editEntry"); } - function copyPasteHandling_from_queue($s_action,$s_entry) + /*! \brief Someone wants to remove some object(s) + * ask for a confirmation now. + */ + function removeEntryRequested($action="",$target=array(),$all=array(), + $altTabClass ="", $altTabType = "", $altAclCategory="") { - /* Check if Copy & Paste is disabled */ - if(!is_object($this->CopyPasteHandler)){ - return(""); - } - - $ui = get_userinfo(); - - /* Add a single entry to queue */ - if($s_action == "cut" || $s_action == "copy"){ - - /* Cleanup object queue */ - $this->CopyPasteHandler->cleanup_queue(); - $dn = $this->applications[$s_entry]['dn']; - if($s_action == "copy" && $ui->is_copyable($dn,"application","application")){ - $this->CopyPasteHandler->add_to_queue($dn,$s_action,"apptabs","APPSTABS","application"); - } - if($s_action == "cut" && $ui->is_cutable($dn,"application","application")){ - $this->CopyPasteHandler->add_to_queue($dn,$s_action,"apptabs","APPSTABS","application"); - } - } - - - /* Add entries to queue */ - if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ - - /* Cleanup object queue */ - $this->CopyPasteHandler->cleanup_queue(); - - /* Add new entries to CP queue */ - foreach($this->list_get_selected_items() as $id){ - $dn = $this->applications[$id]['dn']; - - if($s_action == "copy_multiple" && $ui->is_copyable($dn,"application","application")){ - $this->CopyPasteHandler->add_to_queue($dn,"copy","apptabs","APPSTABS","application"); - } - if($s_action == "cut_multiple" && $ui->is_cutable($dn,"application","application")){ - $this->CopyPasteHandler->add_to_queue($dn,"cut","apptabs","APPSTABS","application"); - } + // Close dialogs and remove locks for currently handled dns + $this->cancelEdit(); + + // Do not allow to remove objects with state freeezed + $errors = $disallowed = array(); + $headpage = $this->getHeadpage(); + foreach($target as $dn){ + + $obj = $headpage->getEntry($dn); + $acl = $this->ui->get_permissions($obj['dn'],"application/application"); + if(!preg_match("/d/",$acl)){ + $disallowed[] = $obj['dn']; + }elseif(isset($obj['FAIstate']) && preg_match('/freeze/i', $obj['FAIstate'][0])){ + $errors[] = $obj['dn']; + }else{ + $this->dns[] = $obj['dn']; } } - - /* Start pasting entries */ - if($s_action == "editPaste"){ - $this->start_pasting_copied_objects = TRUE; + if(count($errors)){ + msg_dialog::display(_("Branch locked"), + sprintf(_("The following entries are locked, you can't remove them %s."), + msgPool::buildList($errors)),INFO_DIALOG); } - - - /* Return C&P dialog */ - if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ - - - /* Get dialog */ - $this->CopyPasteHandler->SetVar("base",$this->app_base); - $this->CopyPasteHandler->SetVar("parent",$this); - $data = $this->CopyPasteHandler->execute(); - - /* Return dialog data */ - if(!empty($data)){ - return($data); - } - } - - /* Automatically disable status for pasting */ - if(!$this->CopyPasteHandler->entries_queued()){ - $this->start_pasting_copied_objects = FALSE; + if(count($disallowed)){ + msg_dialog::display(_("Permission error"), msgPool::permDelete($disallowed), ERROR_DIALOG); } - return(""); + return(management::removeEntryRequested($action, $this->dns)); } - function list_get_selected_items() + /*! \brief This method opens an existing object or a list of existing objects to be edited. + * + * + * @param String 'action' The name of the action which was the used as trigger. + * @param Array 'target' A list of object dns, which should be affected by this method. + * @param Array 'all' A combination of both 'action' and 'target'. + */ + function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { - $ids = array(); - foreach($_POST as $name => $value){ - if(preg_match("/^item_selected_[0-9]*$/",$name)){ - $id = preg_replace("/^item_selected_/","",$name); - $ids[$id] = $id; + management::editEntry($action,$target,$all,$altTabClass,$altTabType,$altAclCategory); + if($this->tabObject){ + if(isset($this->tabObject->by_object['application']->attrs['FAIstate'][0])){ + $state = $this->tabObject->by_object['application']->attrs['FAIstate'][0]; + $this->tabObject->setReadOnly(preg_match("/freeze/i", $state)); } } - return($ids); } - /* Save to LDAP */ - function save() + /*! \brief Overridden render method of class mangement. + * this allows us to add a release selection box. + */ + function renderList() { - /* Optionally execute a command after we're done */ - $this->postcreate(); - } - + $smarty = get_smarty(); + $filter = $this->getFilter(); + $headpage = $this->getHeadpage(); - function remove_lock() - { - if (isset($this->apptabs->dn)){ - del_lock ($this->apptabs->dn); - } - if(isset($this->dn) && !empty($this->dn) && $this->dn != "new"){ - del_lock($this->dn); - } - if(isset($this->dns) && is_array($this->dns) && count($this->dns)){ - del_lock($this->dns); + // Display release selector + if($this->IsReleaseManagementActivated()){ + $this->releaseSelector->update(); + $this->app_release = $this->releaseSelector->getBase(); + $headpage->setBase($this->app_release); + $smarty->assign("RELEASE", $this->releaseSelector->render()); } + + $headpage->update(); + $display = $headpage->render(); + return($this->getHeader().$display); } - function save_object() + function IsReleaseManagementActivated() { - $this->DivListApplication->save_object(); - if(is_object($this->CopyPasteHandler)){ - $this->CopyPasteHandler->save_object(); - } - - if($this->IsReleaseManagementActivated() && isset($_POST['app_release'])){ - $sel_rel = get_post('app_release'); - $releases = array_flip($this->getReleases()); - if(isset($releases[$sel_rel])){ - $this->app_release = $releases[$sel_rel]; - } - $app_filter = session::get("app_filter"); - $app_filter['app_release'] = $this->app_release; - session::set("app_filter",$app_filter); - }elseif(!$this->IsReleaseManagementActivated()){ - $this->app_base = get_ou("applicationRDN").$this->DivListApplication->selectedBase; - $app_filter = session::get("app_filter"); - $app_filter['app_base'] = $this->app_base; - session::set("app_filter",$app_filter); + /* Check if we should enable the release selection */ + $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + return(true); } + return(false); } - function check() {} - function adapt_from_template($dn, $skip= array()) {} - function password_change_needed() {} -} +} // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>