X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Fplugins%2Fadmin%2Fdepartments%2Fclass_departmentManagement.inc;h=79ec8eb4fbe3a89167fe106d6700f61c8f83b53d;hb=f4a6588f33b5886afaa20db8b01517b8eafbafed;hp=a5a044d0d2d6bbc0b0e5c93e89a1199ec7bbab6c;hpb=bb61d9387b9e09a79df8aefa586a90b57f344a66;p=gosa.git diff --git a/gosa-core/plugins/admin/departments/class_departmentManagement.inc b/gosa-core/plugins/admin/departments/class_departmentManagement.inc index a5a044d0d..79ec8eb4f 100644 --- a/gosa-core/plugins/admin/departments/class_departmentManagement.inc +++ b/gosa-core/plugins/admin/departments/class_departmentManagement.inc @@ -22,14 +22,14 @@ class departmentManagement extends management { - var $plHeadline = "Departments"; - var $plDescription = "Manage department"; + var $plHeadline = "Directory structure"; + var $plDescription = "Manage organizations, organizational units, localities, countries and more"; var $plIcon = "plugins/departments/images/plugin.png"; // Tab definition protected $tabClass = "deptabs"; protected $tabType = "DEPTABS"; - protected $aclCategory = "departement"; + protected $aclCategory = "department"; protected $aclPlugin = "generic"; protected $objectName = "department"; @@ -38,110 +38,142 @@ class departmentManagement extends management $this->config = $config; $this->ui = $ui; - $this->storagePoints = array(""); - // 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("dep-filter.xml", true)); - $filter->setObjectStorage($this->storagePoints); } - $this->setFilter($filter); + $filter->setObjectStorage(array('')); // Build headpage $headpage = new listing(get_template_path("dep-list.xml", true)); $headpage->registerElementFilter("depLabel", "departmentManagement::filterDepLabel"); $headpage->setFilter($filter); + $this->setFilter($filter); // Add copy&paste and snapshot handler. - if ($this->config->boolValueIsTrue("main", "copyPaste")){ + if ($this->config->boolValueIsTrue("core", "copyPaste")){ $this->cpHandler = new CopyPasteHandler($this->config); } - if($this->config->get_cfg_value("enableSnapshots") == "true"){ + if($this->config->get_cfg_value("core","enableSnapshots") == "true"){ $this->snapHandler = new SnapshotHandler($this->config); } parent::__construct($config, $ui, "departments", $headpage); $this->registerAction("open","openEntry"); - $this->registerAction("new_domain","newEntry"); $this->registerAction("new_country","newEntry"); $this->registerAction("new_locality","newEntry"); $this->registerAction("new_dcObject","newEntry"); $this->registerAction("new_organization","newEntry"); - $this->registerAction("new_department","newEntry"); - + $this->registerAction("new_organizationalUnit","newEntry"); $this->registerAction("performRecMove","performRecMove"); $this->registerAction("tagDepartment","tagDepartment"); } - + // Inject additional actions here. function detectPostActions() { $actions = management::detectPostActions(); - if(isset($_GET['PerformRecMove'])) $action['action'] = "performRecMove"; - if(isset($_GET['TagDepartment'])) $action['action'] = "tagDepartment"; + if(isset($_GET['PerformRecMove'])) $actions['action'] = "performRecMove"; + if(isset($_GET['TagDepartment'])) $actions['action'] = "tagDepartment"; return($actions); } - function performRecMove() - { - if(isset($_GET['PerformRecMove'])){ - $this->deptabs->move_me(); - $this->DivListDepartment->selectedBase = $this->deptabs->by_object['department']->dn; - exit(); - } - } - + // Action handler which allows department tagging - Creates the iframe contents. function tagDepartment() { - if(isset($_GET['TagDepartment'])){ - $base_name = $this->deptabs->base_name; - $this->deptabs->by_object[$base_name]->tag_objects(); - exit(); - } + $plugname = $this->last_tabObject->base_name; + $this->last_tabObject->by_object[$plugname]->tag_objects(); + exit(); } - + // Overridden new handler - We've different types of departments to create! function newEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { - echo "Remember to add recursive move and department tagging again!"; $types= $this->get_support_departments(); $type = preg_replace("/^new_/","",$action); return(management::newEntry($action,$target,$all,$this->tabClass,$types[$type]['TAB'],$this->aclCategory)); } + // Overridden edit handler - We've different types of departments to edit! function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { $types= $this->get_support_departments(); - $type = $this->headpage->getType($target[0]); + $headpage = $this->getHeadpage(); + $type = $headpage->getType($target[0]); return(management::editEntry($action,$target,$all,$this->tabClass,$types[$type]['TAB'],$this->aclCategory)); } + + // Overriden save handler - We've to take care about the department tagging here. + protected function saveChanges() + { + $str = management::saveChanges(); + if(!empty($str)) return($str); + + $plugname = (isset($this->last_tabObject->base_name))? $this->last_tabObject->base_name : ''; + + $this->refreshDeps(); + if(isset($this->last_tabObject->by_object[$plugname]) && + is_object($this->last_tabObject->by_object[$plugname]) && + $this->last_tabObject->by_object[$plugname]->must_be_tagged()){ + $smarty = get_smarty(); + $smarty->assign("src","?plug=".$_GET['plug']."&TagDepartment&no_output_compression"); + $smarty->assign("message",_("As soon as the tag operation has finished, you can scroll down to end of the page and press the 'Continue' button to continue with the department management dialog.")); + return($smarty->fetch(get_template_path("dep_iframe.tpl",TRUE))); + } + } + + function refreshDeps() + { + global $config; + $config->get_departments(); + $config->make_idepartments(); + $this->config = $config; + $headpage = $this->getHeadpage(); + $headpage->refreshBasesList(); + } + + + // An action handler which enables to switch into deparmtment by clicking the names. function openEntry($action,$entry) { - $this->headpage->setBase(array_pop($entry)); + $headpage = $this->getHeadpage(); + $headpage->setBase(array_pop($entry)); } + + // Overridden remove request method - Avoid removal of the ldap base. protected function removeEntryRequested($action="",$target=array(),$all=array()) { $target = array_remove_entries(array($this->config->current['BASE']),$target); return(management::removeEntryRequested($action,$target,$all)); } + + // A filter which allows to open a department by clicking on the departments name. static function filterDepLabel($row,$dn,$params,$ou,$pid,$base) { $ou = $ou[0]; - if($dn == $base){ + if(LDAP::convert($dn) == $base){ $ou ="."; } $dn= LDAP::fix(func_get_arg(1)); return("$ou"); } + + // Finally remove departments and update departmnet browsers + function removeEntryConfirmed($action="",$target=array(),$all=array(),$altTabClass="", + $altTabType="",$altAclCategory="", $aclPlugin="") + { + management::removeEntryConfirmed($action,$target,$all, $altTabClass,$altTabType,$altAclCategory); + $this->refreshDeps(); + } /*! \brief Returns information about all container types that GOsa con handle. @return Array Informations about departments supported by GOsa.