From: hickert Date: Mon, 9 Nov 2009 10:55:37 +0000 (+0000) Subject: Prepared mimtypes to be ported to the new mangement list. X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=02894de831d9f33f3c2ba30c4e4ef90e4a4c970f;p=gosa.git Prepared mimtypes to be ported to the new mangement list. -Not finished. git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@14800 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/gosa-plugins/goto/admin/mimetypes/class_divListMimeTypes.inc b/gosa-plugins/goto/admin/mimetypes/class_divListMimeTypes.inc deleted file mode 100644 index 6cc6e6df8..000000000 --- a/gosa-plugins/goto/admin/mimetypes/class_divListMimeTypes.inc +++ /dev/null @@ -1,267 +0,0 @@ -parent = &$parent; - $this->ui = get_userinfo(); - - /* Set list strings */ - $this->SetTitle (_("List of defined mime types")); - $this->SetSummary (_("List of defined mime types")); - - /* Result page will look like a headpage */ - $this->SetHeadpageMode(); - $this->EnableAplhabet(true); - - /* Disable buttonsm */ - $this->EnableCloseButton(false); - $this->EnableSaveButton (false); - - /* set Page header */ - $action_col_size = 80; - if($this->parent->snapshotEnabled()){ - $action_col_size += 38; - } - - /* Toggle all selected / deselected */ - $chk = ""; - - /* set Page header */ - $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); - $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); - $this->AddHeader(array("string" => _("Mime type")." / "._("Department"), "attach" => "style=''")); - $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'")); - - /* Add SubSearch checkbox */ - $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); - - /* Name ,Text ,Default , Connect with alphabet */ - $this->AddRegex ("Regex", _("Display mime types matching"),"*" , true); - } - - - function AddUserBoxToFilter($position) - { - $str = ""; - if(($position == 2) && ($this->parent->IsReleaseManagementActivated($this->config))){ - $smarty = get_smarty(); - $releases = $this->parent->getReleases(); - $smarty->assign("mime_release" , $releases[$this->parent->mime_release]); - $smarty->assign("mime_base" , $releases[$this->parent->mime_base]); - $smarty->assign("branchimage","plugins/goto/images/branch.png"); - $smarty->assign("mime_releases", $releases); - $str = $smarty->fetch(get_template_path('release_select.tpl', TRUE)); - } - return($str); - } - - - /* Create list header, with create / copy & paste etc*/ - function GenHeader() - { - /* Add default header */ - $listhead = MultiSelectWindow::get_default_header(false); - if(!$this->parent->IsReleaseManagementActivated()){ - - /* Get all departments within this subtree */ - $ui= get_userinfo(); - $first = ""; - $found = FALSE; - $base = $this->config->current['BASE']; - $options = $this->create_department_list($this->module); - - /* And at least add a department selection box */ - $listhead .= _("Base")." ". - "  "; - - } - - /* Get acls */ - $ui = get_userinfo(); - $acl = $ui->get_permissions($this->parent->acl_base,"mimetypes/mimetype"); - $acl_all = $ui->has_complete_category_acls($this->parent->acl_base,"mimetypes") ; - - - /* If this is true we add an additional seperator. Just look a few lines below */ - $add_sep = false; - - /* Create Layers menu */ - $s = ".|"._("Actions")."|\n"; - - /* Append create options */ - if(preg_match("/c/",$acl)) { - $s .= "..|". - " "._("Create")."|\n"; - $s.= "...|". - " "._("Mime type")."|mime_new|\n"; - $s.= "..|---|\n"; - } - - /* Multiple options */ - $s.= "..|". - " "._("Remove")."|"."remove_multiple|\n"; - - /* Add Copy & Paste header */ - $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); - - /* Add snapshot icons */ - $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); - - $this->SetDropDownHeaderMenu($s); - $this->SetListHeader($listhead); - } - - - /* Some basic settings */ - function execute() - { - $this->ClearElementsList(); - $this->GenHeader(); - } - - - function setEntries($list) - { - /******************** - Variable init - ********************/ - - /* Create links */ - $editlink = "%s"; - $userimg = "User"; - $mimeimg = "A"; - $empty = ""; - - /* set Page header */ - $action_col_size = 80; - if($this->parent->snapshotEnabled()){ - $action_col_size += 38; - } - - /******************** - Attach objects - ********************/ - - foreach($list as $key => $val){ - - /* Check FAI state - */ - $FAIstate = $val['FAIstate'][0]; - - $ui = get_userinfo(); - $acl = $ui->get_permissions($val['dn'],"mimetypes/mimetype"); - $acl_all = $ui->has_complete_category_acls($val['dn'],"mimetypes") ; - - $action = ""; - - /* Add copy & cut functionality */ - if(!preg_match("/freeze/i",$FAIstate)){ - $action.= $this->parent->get_copypaste_action($val['dn'],"mimetypes","mimetype"); - }else{ - $action.= " "; - $action.= " "; - } - - $action.= ""; - - /* Add snapshot icon */ - if(!preg_match("/freeze/i",$FAIstate)){ - $action.= $this->parent->get_snapshot_action($val['dn'],$this->module); - }else{ - $action.= " "; - $action.= " "; - } - - /* Add delete button */ - if(preg_match("/freeze/i",$FAIstate)){ - $action .= "!"; - }elseif(preg_match("/d/",$acl)){ - $action.= ""; - }else{ - $action.= " "; - } - - $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; - - if(!isset($val['description'][0])){ - $desc = ""; - }else{ - $desc = " - [ ".$val['description'][0]." ]"; - } - - /* Cutted objects should be displayed in light grey */ - $display = $val['cn'][0].$desc; - if($this->parent->CopyPasteHandler){ - foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ - if($queue_data['dn'] == $val['dn']) { - $display = "".$display.""; - break; - } - } - } - - - /* Create each field */ - $field0 = array("string" => "" , - "attach" => "style='width:20px;'"); - $field1 = array("string" => sprintf($mimeimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'"); - $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' ".$title); - $field3 = array("string" => preg_replace("/%KEY%/", $key, $action), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); - $this->AddElement(array($field0,$field1,$field2,$field3)); - } - - - /* Create summary string for list footer */ - $num_deps=0; - if(!$this->SubSearch){ - $num_deps = count($this->Added_Departments); - } - $num_objs = count($list); - - $num_obj_str = _("Number of listed mimetypes"); - $num_dep_str = _("Number of listed departments"); - - $str = "".$num_obj_str." ".$num_objs."    "; - $str.= "".$num_dep_str." ".$num_deps."    "; - - $this->set_List_Bottom_Info($str); - } - - function Save() - { - MultiSelectWindow::Save(); - } - - function save_object() - { - /* Save automatic created POSTs like regex, checkboxes */ - MultiSelectWindow::save_object(); - } - -} -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: -?> diff --git a/gosa-plugins/goto/admin/mimetypes/class_mimetypeManagement.inc b/gosa-plugins/goto/admin/mimetypes/class_mimetypeManagement.inc index 5074c325f..843ce1df6 100644 --- a/gosa-plugins/goto/admin/mimetypes/class_mimetypeManagement.inc +++ b/gosa-plugins/goto/admin/mimetypes/class_mimetypeManagement.inc @@ -1,773 +1,132 @@ config->search("faiManagement", "CLASS",array('menu','tabs')); - if(!empty($tmp)){ - return(true); - } - return(false); - } + var $app_release = ""; // The currently selected release while in release management mode! + // Tab definition + protected $tabClass = "apptabs"; + protected $tabType = "APPSTABS"; + protected $aclCategory = "application"; + protected $aclPlugin = "application"; + protected $objectName = "application"; - function mimetypeManagement (&$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->get_cfg_value("copyPaste")){ - $this->CopyPasteHandler = new CopyPasteHandler($this->config); - } - - /* Creat dialog object */ - $this->DivListMimeTypes = new divListMimeTypes($this->config,$this); + $this->config = $config; + $this->ui = $ui; if($this->IsReleaseManagementActivated()){ - - /* Check if we should enable the release selection */ - $this->enableReleaseManagement = true; - - /* Hide SubSearch checkbox */ - $this->DivListMimeTypes->DisableCheckBox("SubSearch"); - } - - /* Set default release */ - if(!$this->IsReleaseManagementActivated()){ - $this->mime_base = get_ou("mimetypeRDN").$this->config->current['BASE']; - $this->acl_base = $this->config->current['BASE']; - if(!session::is_set("mime_filter")){ - - /* Set intial release */ - $rel = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu")); - if(empty($rel)){ - $rel = $this->mime_base; - } - session::set("mime_filter",array("mime_base" => $rel)); - } - $mime_filter = session::get("mime_filter"); - $this->mime_base = $mime_filter['mime_base']; + $this->app_release = get_ou('applicationRDN').$this->config->current['BASE']; + $filter_xml = "mimetype-filter-release.xml"; + $list_xml = "mimetype-list-release.xml"; + $this->storagePoints= array(); }else{ - $this->mime_base = get_ou("mimetypeRDN").$this->config->current['BASE']; - $this->acl_base = &$this->DivListMimeTypes->selectedBase; - - /* Set intial release */ - $rel = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu")); - $rels = array_flip($this->getReleases()); - if(isset($rels[$rel])){ - $rel = $rels[$rel]; - }else{ - $rel = $this->mime_base; - } - - if(!session::is_set("mime_filter")){ - session::set("mime_filter",array("mime_base" => $this->mime_base,"mime_release" => $rel)); - } - $mime_filter = session::get("mime_filter"); - $this->mime_base = $mime_filter['mime_base']; - $this->mime_release = $mime_filter['mime_release']; - } - } - - - /* Get all releases */ - function getReleases() - { - $ldap = $this->config->get_ldap_link(); - $ret = array(); - $ret [$this->mime_base] = "/"; - - $ldap->cd($this->mime_base); - $ldap->search("(&(objectClass=FAIbranch)(objectClass=organizationalUnit))",array("ou")); - - while($attrs = $ldap->fetch()){ - $str = str_replace($this->mime_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 mime, - to be able to perform your last requests after showing a warning message */ - session::set('LOCK_VARS_TO_USE',array("/^act$/","/^id$/","/^mime_edit_/","/^mime_del_/", - "/^item_selected/","/^remove_multiple_mimetypes/","/^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("/mime_del.*/",$key)){ - $s_action = "del"; - $s_entry = preg_replace("/mime_".$s_action."_/i","",$key); - // Post for edit - }elseif(preg_match("/mime_edit_.*/",$key)){ - $s_action="edit"; - $s_entry = preg_replace("/mime_".$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("/^mime_new.*/",$key)){ - $s_action="new"; - }elseif(preg_match("/^remove_multiple_mimetypes/",$key)){ - $s_action="del_multiple"; - }elseif(preg_match("/^editPaste.*/i",$key)){ - $s_action="editPaste"; - }elseif(preg_match("/^multiple_copy_mimetypes/",$key)){ - $s_action = "copy_multiple"; - }elseif(preg_match("/^multiple_cut_mimetypes/",$key)){ - $s_action = "cut_multiple"; - } - } - - if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ - $s_action ="edit"; - $s_entry = $_GET['id']; - } - - $s_entry = preg_replace("/_.$/","",$s_entry); - - /* handle C&P from layers menu */ - if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ - $s_action = "copy_multiple"; - } - 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'] == "mime_new"){ - $s_action = "new"; + $filter_xml = "mimetype-filter.xml"; + $list_xml = "mimetype-list.xml"; + $this->storagePoints= array(get_ou("applicationRDN")); } - /* 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 mime type - ****************/ +# // 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); - /* New mime type? */ - $ui = get_userinfo(); - $acl = $ui->get_permissions($this->acl_base,"mimetypes/mimetype"); - if (($s_action=="new") && preg_match("/c/",$acl)){ + // Build headpage + $headpage = new listing(get_template_path($list_xml, true)); + $headpage->setFilter($filter); - /* By default we set 'dn' to 'new', all relevant plugins will - react on this. */ - $this->dn= "new"; - - /* Create new usertab object */ - $this->mimetabs= new mimetabs($this->config, $this->config->data['TABS']['MIMETABS'], $this->dn,"mimetypes"); - $this->mimetabs->parent = &$this; - $this->mimetabs->set_acl_base($this->acl_base); - } - - - /**************** - Edit entry canceled - ****************/ - - /* Cancel dialogs */ - if (isset($_POST['edit_cancel'])){ - $this->remove_lock(); - $this->mimetabs= NULL; - set_object_info(); + // Add copy&paste and snapshot handler. + if ($this->config->boolValueIsTrue("main", "copyPaste")){ + $this->cpHandler = new CopyPasteHandler($this->config); } - - - /**************** - Edit entry finished - ****************/ - - /* Finish mime 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->mimetabs->config))){ - - /* Check tabs, will feed message array */ - $this->mimetabs->save_object(); - $message= $this->mimetabs->check(); - - /* Save, or display error message? */ - if (count($message) == 0){ - - /* Save data data to ldap */ - $this->mimetabs->save(); - - if (!isset($_POST['edit_apply'])){ - /* Mime type has been saved successfully, remove lock from LDAP. */ - if ($this->dn != "new"){ - $this->remove_lock(); - } - unset ($this->mimetabs); - $this->mimetabs= NULL; - set_object_info(); - }else{ - - /* Reinitialize tab */ - if($this->mimetabs instanceof tabs){ - $this->mimetabs->re_init(); - } - } - } else { - /* Ok. There seem to be errors regarding to the tab data, - show message and continue as usual. */ - msg_dialog::displayChecks($message); - } + if($this->config->get_cfg_value("enableSnapshots") == "true"){ + $this->snapHandler = new SnapshotHandler($this->config); } + parent::__construct($config, $ui, "applications", $headpage); - - /**************** - Edit entry - ****************/ - - /* User wants to edit data? */ - if (($s_action=="edit") && (!isset($this->mimetabs->config))){ - - /* Get 'dn' from posted 'mimelist', must be unique */ - $this->dn= $this->mimetypes[$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,TRUE)); - } - - /* Lock the current entry, so everyone will get the - above dialog */ - add_lock ($this->dn, $this->ui->dn); - - /* Register mimetabs to trigger edit dialog */ - $this->mimetabs= new mimetabs($this->config,$this->config->data['TABS']['MIMETABS'], $this->dn,"mimetypes"); - if($this->IsReleaseManagementActivated()){ - $this->mimetabs->set_FAIstate($this->mimetypes[$s_entry]['FAIstate'][0]); - } - $this->mimetabs->parent = &$this; - $this->mimetabs->set_acl_base($this->dn); - set_object_info($this->dn); - } - - - /******************** - Delete MULTIPLE entries requested, display confirm dialog - ********************/ - - if ($s_action=="del_multiple"){ - $ids = $this->list_get_selected_items(); - - $this->dns = array(); - if(count($ids)){ - - $disallowed = array(); - foreach($ids as $id){ - $dn = $this->mimetypes[$id]['dn']; - $acl = $this->ui->get_permissions($dn, "mimetypes/mimetype"); - 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)){ - - /* Check locks */ - if ($user= get_multiple_locks($this->dns)){ - return(gen_locked_message($user,$this->dns)); - } - - $dns_names = array(); - foreach($this->dns as $dn){ - $dns_names[] = LDAP::fix($dn); - } - - add_lock ($this->dns, $this->ui->dn); - - /* Lock the current entry, so nobody will edit it during deletion */ - $smarty->assign("info", msgPool::deleteInfo($dns_names,_("Mime type"))); - $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_mimetype_confirm'])){ - - $ui = get_userinfo(); - - /* Remove user by user and check acls before removeing them */ - foreach($this->dns as $key => $dn){ - - $acl = $ui->get_permissions($dn,"mimetypes/mimetype"); - if(preg_match("/d/",$acl)){ - - /* Delete request is permitted, perform LDAP action */ - $this->mimetabs= new mimetabs($this->config, $this->config->data['TABS']['MIMETABS'], $dn,"mimetypes"); - $this->mimetabs->parent = &$this; - $this->mimetabs->set_acl_base($dn); - $this->mimetabs->delete (); - unset ($this->mimetabs); - $this->mimetabs= 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","mimetypes/".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_mimetype_cancel'])){ - $this->remove_lock(); - $this->dns = array(); - } - - - /**************** - Delete mime type - ****************/ - - /* Remove user was requested */ - if ($s_action == "del"){ - - /* Get 'dn' from posted 'uid' */ - $this->dn= $this->mimetypes[$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,"mimetypes/mimetype"); - 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("info", msgPool::deleteInfo(LDAP::fix($this->dn),_("Mime type"))); - $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 mime confirmed - ****************/ - - /* Confirmation for deletion has been passed. Group should be deleted. */ - if (isset($_POST['delete_mime_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,"mimetypes/mimetype"); - if(preg_match("/d/",$acl)){ - - /* Delete request is permitted, perform LDAP action */ - $this->mimetabs= new mimetabs($this->config, $this->config->data['TABS']['MIMETABS'], $this->dn,"mimetypes"); - $this->mimetabs->parent = &$this; - $this->mimetabs->set_acl_base($this->dn); - $this->mimetabs->delete (); - unset ($this->mimetabs); - $this->mimetabs= 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","mimetypes/".get_class($this),$dn,array(),"Tried to trick deletion."); - } - - /* Remove lock file after successfull deletion */ - $this->remove_lock(); - } - - - /**************** - Delete mime canceled - ****************/ - - /* Delete mime type canceled? */ - if (isset($_POST['delete_cancel'])){ - $this->remove_lock(); - set_object_info(); - } - - /* Show tab dialog if object is present */ - if (($this->mimetabs) && (isset($this->mimetabs->config))){ - $display= $this->mimetabs->execute(); - - /* Don't show buttons if tab dialog requests this */ - - if(($this->mimetabs instanceOf tabs || $this->mimetabs instanceOf plugin) && $this->mimetabs->read_only == TRUE){ - $display.= "

- -

"; - }elseif (!$this->mimetabs->by_object[$this->mimetabs->current]->dialog){ - $display.= "

\n"; - - if(isset($this->mimetabs->FAIstate) && !preg_match("/freeze/i",$this->mimetabs->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->mime_release; - }else{ - $base = $this->mime_base; - } - if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ - return($str); - } - - /* Display dialog with system list */ - $this->DivListMimeTypes->parent = $this; - $this->DivListMimeTypes->execute(); - if(!$this->IsReleaseManagementActivated()){ - $this->DivListMimeTypes->AddDepartments($this->DivListMimeTypes->selectedBase,3,1); - } - $this->reload(); - $this->DivListMimeTypes->setEntries($this->mimetypes); - return($this->DivListMimeTypes->Draw()); + $this->registerAction("edit_application","editEntry"); + $this->registerAction("edit_environment","editEntry"); + $this->registerAction("edit_appapplication","editEntry"); + $this->registerAction("edit_mailapplication","editEntry"); } - - /* Return departments, that will be included within snapshot detection */ - function get_used_snapshot_bases() + function renderList() { - if($this->IsReleaseManagementActivated()){ - return(array($this->mime_release)); - }else{ - return(array($this->mime_base)); - } - } - - - function reload() - { - $this->mimetypes= array(); - - /* Set base for all searches */ - $base = $this->mime_base; - $Regex = $this->DivListMimeTypes->Regex; - $SubSearch = $this->DivListMimeTypes->SubSearch; - $Flags = GL_NONE | GL_SIZELIMIT; - $Filter = "(&(|(cn=".$Regex.")(description=".$Regex."))(objectClass=gotoMimeType))"; - $tmp = array(); + $filter = $this->getFilter(); + $headpage = $this->getHeadpage(); + if($this->IsReleaseManagementActivated()){ + $filter->setComboBoxOptions("RELEASE",$this->getReleaseList()); - if(!$this->IsReleaseManagementActivated()){ - $use_base = $this->mime_base; - if($SubSearch){ - $use_base = preg_replace("/^".preg_quote(get_ou("mimeou"), '/')."/i","",$use_base); + if(isset($_POST['RELEASE'])){ + $this->app_release = get_post('RELEASE'); } - }else{ - $use_base = $this->mime_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, "mimetypes",get_ou("mimeou"), $use_base, $search_attrs, $Flags); - }else{ - $res= get_list($Filter, "mimetypes",$use_base, $search_attrs, $Flags); + $headpage->setBase($this->app_release); } - - $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']; - } - - /* sort entries */ - natcasesort($tmp2); - $this->mimetypes=array(); - foreach($tmp2 as $val){ - $this->mimetypes[]=$tmp[$val]; - } - reset ($this->mimetypes); - } - - - function remove_from_parent() - { - /* Optionally execute a command after we're done */ - $this->postremove(); - } - - - function copyPasteHandling_from_queue($s_action,$s_entry) - { - /* 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->mimetypes[$s_entry]['dn']; - if($s_action == "copy" && $ui->is_copyable($dn,"mimetypes","mimetype")){ - $this->CopyPasteHandler->add_to_queue($dn,$s_action,"mimetabs","MIMETABS","mimetypes"); - } - if($s_action == "cut" && $ui->is_cutable($dn,"mimetypes","mimetype")){ - $this->CopyPasteHandler->add_to_queue($dn,$s_action,"mimetabs","MIMETABS","mimetypes"); - } - } - - /* 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->mimetypes[$id]['dn']; - - if($s_action == "copy_multiple" && $ui->is_copyable($dn,"mimetypes","mimetype")){ - $this->CopyPasteHandler->add_to_queue($dn,"copy","mimetabs","MIMETABS","mimetypes"); - } - if($s_action == "cut_multiple" && $ui->is_cutable($dn,"mimetypes","mimetype")){ - $this->CopyPasteHandler->add_to_queue($dn,"cut","mimetabs","MIMETABS","mimetypes"); - } - } - } - - /* Start pasting entries */ - if($s_action == "editPaste"){ - $this->start_pasting_copied_objects = TRUE; - } - - /* Return C&P dialog */ - if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ - - /* Get dialog */ - $this->CopyPasteHandler->SetVar("base",preg_replace("/^".preg_quote(get_ou("mimetypeRDN"), '/')."/i","",$this->mime_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; - } - return(""); + $headpage->update(); + $display = $headpage->render(); + return($this->getHeader().$display); } - - function list_get_selected_items() + function getReleaseList($base = "", $prefix ="") { - $ids = array(); - foreach($_POST as $name => $value){ - if(preg_match("/^item_selected_[0-9]*$/",$name)){ - $id = preg_replace("/^item_selected_/","",$name); - $ids[$id] = $id; - } + $list = array(); + if(empty($base)){ + $base = get_ou('applicationRDN').$this->config->current['BASE']; + $list[$base] = "/"; } - return($ids); - } - - /* Save to LDAP */ - function save() - { - /* Optionally execute a command after we're done */ - $this->postcreate(); - } - - function remove_lock() - { - if (isset($this->mimetabs->dn)){ - del_lock ($this->mimetabs->dn); - }elseif(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); + $ldap = $this->config->get_ldap_link(); + $ldap->ls("(objectClass=FAIbranch)",$base,array("ou","FAIstate")); + while($release = $ldap->fetch()){ + $list[$release['dn']] = $prefix.$release['ou'][0]; + $list = array_merge($list,$this->getReleaseList($release['dn'],$prefix."  ")); } + return($list); } + - function save_object() + function IsReleaseManagementActivated() { - $this->DivListMimeTypes->save_object(); - if(is_object($this->CopyPasteHandler)){ - $this->CopyPasteHandler->save_object(); - } + return(FALSE); - if($this->IsReleaseManagementActivated() && isset($_POST['mime_release'])){ - $sel_rel = get_post('mime_release'); - $releases = array_flip($this->getReleases()); - if(isset($releases[$sel_rel])){ - $this->mime_release = $releases[$sel_rel]; - } - $mime_filter = session::get("mime_filter"); - $mime_filter['mime_release'] = $this->mime_release; - session::set("mime_filter",$mime_filter); - }elseif(!$this->IsReleaseManagementActivated()){ - $this->mime_base = get_ou("mimetypeRDN").$this->DivListMimeTypes->selectedBase; - $mime_filter = session::get("mime_filter"); - $mime_filter['mime_base'] = $this->mime_base; - session::set("mime_filter",$mime_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: ?> diff --git a/gosa-plugins/goto/admin/mimetypes/main.inc b/gosa-plugins/goto/admin/mimetypes/main.inc index cbd12a1cc..d2ec0ab87 100644 --- a/gosa-plugins/goto/admin/mimetypes/main.inc +++ b/gosa-plugins/goto/admin/mimetypes/main.inc @@ -1,28 +1,30 @@ remove_lock(); } } @@ -30,34 +32,25 @@ if ($remove_lock){ /* Remove this plugin from session */ if ( $cleanup ){ - session::un_set('MimeTypeManagement'); + session::un_set('mimetypeManagement'); }else{ - /* Create MimeTypeManagement object on demand */ - if (!session::is_set('MimeTypeManagement')){ - session::set('MimeTypeManagement',new mimetypeManagement ($config, $ui)); - } - - /* Get object */ - $MimeTypeManagement = session::get('MimeTypeManagement'); - $MimeTypeManagement->save_object(); - $output= $MimeTypeManagement->execute(); - - /* Page header*/ - if (get_object_info() != ""){ - $display= print_header(get_template_path($MimeTypeManagement->plIcon), _("Mimetype management"), "\"\" ".LDAP::fix(get_object_info())); - } else { - $display= print_header(get_template_path($MimeTypeManagement->plIcon), _("Mimetype management")); + /* Create applicationmanagement object on demand */ + if (!session::is_set('mimetypeManagement')){ + $mimetypeManagement= new mimetypeManagement ($config, $ui); + session::set('mimetypeManagement',$mimetypeManagement); } + $mimetypeManagement = session::get('mimetypeManagement'); + $display= $mimetypeManagement->execute(); /* Reset requested? */ if (isset($_GET['reset']) && $_GET['reset'] == 1){ - session::un_set ('MimeTypeManagement'); + session::un_set ('mimetypeManagement'); } /* Show and save dialog */ - $display.= $output; - session::set('MimeTypeManagement',$MimeTypeManagement); + session::set('mimetypeManagement',$mimetypeManagement); } + // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> diff --git a/gosa-plugins/goto/admin/mimetypes/mimetype-filter-release.tpl b/gosa-plugins/goto/admin/mimetypes/mimetype-filter-release.tpl new file mode 100644 index 000000000..6495f8fb5 --- /dev/null +++ b/gosa-plugins/goto/admin/mimetypes/mimetype-filter-release.tpl @@ -0,0 +1,39 @@ +
+

+ [F]{t}Filter{/t} +

+
+ +
+ +
+ + + + + +
+  {$RELEASE}
+
+ + + + + + +
+ + + {$NAME} +
+ + + + + +
+ {$APPLY} +
+
diff --git a/gosa-plugins/goto/admin/mimetypes/mimetype-filter-release.xml b/gosa-plugins/goto/admin/mimetypes/mimetype-filter-release.xml new file mode 100644 index 000000000..ae5852514 --- /dev/null +++ b/gosa-plugins/goto/admin/mimetypes/mimetype-filter-release.xml @@ -0,0 +1,48 @@ + + + + + application + + true + + + + + LDAP + (&(objectClass=gosaApplication)$NAME) + dn + objectClass + cn + description + + auto + + + + RELEASE + combobox + Loading. + Loading.. + Loading... + + + + textfield + NAME + 20 + 60 + + + (|(cn=*$*)(description=*$*)) + true + + LDAP + (&(objectClass=gosaApplication)(|(cn=*$NAME*)(description=*$NAME*))) + cn + 0.5 + 3 + + + + diff --git a/gosa-plugins/goto/admin/mimetypes/mimetype-filter.tpl b/gosa-plugins/goto/admin/mimetypes/mimetype-filter.tpl new file mode 100644 index 000000000..8f83a74b4 --- /dev/null +++ b/gosa-plugins/goto/admin/mimetypes/mimetype-filter.tpl @@ -0,0 +1,31 @@ +
+

+ [F]{t}Filter{/t} +

+
+ +
+ +
+ + + + + + +
+ + + {$NAME} +
+ + + + + +
+ {$APPLY} +
+
diff --git a/gosa-plugins/goto/admin/mimetypes/mimetype-filter.xml b/gosa-plugins/goto/admin/mimetypes/mimetype-filter.xml new file mode 100644 index 000000000..7e4663f0c --- /dev/null +++ b/gosa-plugins/goto/admin/mimetypes/mimetype-filter.xml @@ -0,0 +1,48 @@ + + + + + application + + true + + + + + LDAP + (&(objectClass=gosaApplication)$NAME) + dn + objectClass + cn + description + + one + + + + RELEASE + combobox + Loading. + Loading.. + Loading... + + + + textfield + NAME + 20 + 60 + + + (|(cn=*$*)(description=*$*)) + true + + LDAP + (&(objectClass=gosaApplication)(|(cn=*$NAME*)(description=*$NAME*))) + cn + 0.5 + 3 + + + + diff --git a/gosa-plugins/goto/admin/mimetypes/mimetype-list-release.tpl b/gosa-plugins/goto/admin/mimetypes/mimetype-list-release.tpl new file mode 100644 index 000000000..54599c7be --- /dev/null +++ b/gosa-plugins/goto/admin/mimetypes/mimetype-list-release.tpl @@ -0,0 +1,33 @@ + + + + + + + +
+
+

 {$HEADLINE} {$SIZELIMIT}

+
+ +
+
+ + + + +
{$RELOAD} {$SEPARATOR}  {$ACTIONS}
+
+
+ +
+
+ + + + {$LIST} +
+ {$FILTER} +
+ + diff --git a/gosa-plugins/goto/admin/mimetypes/mimetype-list-release.xml b/gosa-plugins/goto/admin/mimetypes/mimetype-list-release.xml new file mode 100644 index 000000000..374c843e3 --- /dev/null +++ b/gosa-plugins/goto/admin/mimetypes/mimetype-list-release.xml @@ -0,0 +1,143 @@ + + + + + false + false + false + true + + application + + 1 + + + + gosaApplication + application + application + plugins/goto/images/select_application.png + + + + + + |16px|||150px;r| + + + %{filter:objectType(dn,objectClass)} + + + + %{filter:departmentLink(row,dn,description)} + 2 + + + + %{filter:objectType(dn,objectClass)} + + + + + cn + string + %{filter:link(row,dn,"%s",cn)} + true + + + + + description + string + %{filter:link(row,dn,"%s",description)} + true + + + + + %{filter:actions(dn,row,objectClass)} + + +
+ + + + + sub + images/lists/new.png + + + + new + entry + images/lists/new.png + + + + + + separator + + + + edit + entry + images/lists/edit.png + + + + + remove + entry + images/lists/trash.png + + + + + exporter + + + + separator + + + + copypaste + + + + snapshot + + + + + + + + cp + copypaste + + + + edit + entry + images/lists/edit.png + + + + + snapshot + snapshot + + + + remove + entry + images/lists/trash.png + application/application[d] + + + + + +
diff --git a/gosa-plugins/goto/admin/mimetypes/mimetype-list.tpl b/gosa-plugins/goto/admin/mimetypes/mimetype-list.tpl new file mode 100644 index 000000000..b233c5874 --- /dev/null +++ b/gosa-plugins/goto/admin/mimetypes/mimetype-list.tpl @@ -0,0 +1,31 @@ + + + + + + + +
+
+

 {$HEADLINE} {$SIZELIMIT}

+
+ +
+
+ + +
{$ROOT} {$BACK} {$HOME} {$RELOAD} {$SEPARATOR} {t}Base{/t} {$BASE}  {$SEPARATOR}  {$ACTIONS}
+
+
+ +
+
+ + + + {$LIST} +
+ {$FILTER} +
+ + diff --git a/gosa-plugins/goto/admin/mimetypes/mimetype-list.xml b/gosa-plugins/goto/admin/mimetypes/mimetype-list.xml new file mode 100644 index 000000000..f322e9735 --- /dev/null +++ b/gosa-plugins/goto/admin/mimetypes/mimetype-list.xml @@ -0,0 +1,143 @@ + + + + + true + false + true + true + + application + + 1 + + + + gosaApplication + application + application + plugins/goto/images/select_application.png + + + + + + |16px|||150px;r| + + + %{filter:objectType(dn,objectClass)} + + + + %{filter:departmentLink(row,dn,description)} + 2 + + + + %{filter:objectType(dn,objectClass)} + + + + + cn + string + %{filter:link(row,dn,"%s",cn)} + true + + + + + description + string + %{filter:link(row,dn,"%s",description)} + true + + + + + %{filter:actions(dn,row,objectClass)} + + +
+ + + + + sub + images/lists/new.png + + + + new + entry + images/lists/new.png + + + + + + separator + + + + edit + entry + images/lists/edit.png + + + + + remove + entry + images/lists/trash.png + + + + + exporter + + + + separator + + + + copypaste + + + + snapshot + + + + + + + + cp + copypaste + + + + edit + entry + images/lists/edit.png + + + + + snapshot + snapshot + + + + remove + entry + images/lists/trash.png + application/application[d] + + + + + +
diff --git a/gosa-plugins/goto/admin/mimetypes/remove.tpl b/gosa-plugins/goto/admin/mimetypes/remove.tpl index 440fc2447..29adedf1b 100644 --- a/gosa-plugins/goto/admin/mimetypes/remove.tpl +++ b/gosa-plugins/goto/admin/mimetypes/remove.tpl @@ -2,22 +2,16 @@  {t}Warning{/t}

- {$info} - {t}This may be used by several groups. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} + {$info} + {t}Please double check if you really want to do this since there is no way for GOsa to get your data back.{/t}

+

- {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} + {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t}

- {if $multiple} - -   - - {else} - -   - - {/if} + +   +

-