From 0787fce30396474a433ffa016f6e84fbcc2b29bb Mon Sep 17 00:00:00 2001 From: hickert Date: Mon, 21 Sep 2009 11:55:29 +0000 Subject: [PATCH] Added dummy licences plugin git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@14296 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../opsiLicences/class_licenceGeneric.inc | 404 +++++++++++++++ .../admin/opsiLicences/class_opsiLicences.inc | 488 ++++++++++++++++++ .../opsi/admin/opsiLicences/generic.tpl | 85 +++ gosa-plugins/opsi/admin/opsiLicences/main.inc | 67 +++ 4 files changed, 1044 insertions(+) create mode 100644 gosa-plugins/opsi/admin/opsiLicences/class_licenceGeneric.inc create mode 100644 gosa-plugins/opsi/admin/opsiLicences/class_opsiLicences.inc create mode 100644 gosa-plugins/opsi/admin/opsiLicences/generic.tpl create mode 100644 gosa-plugins/opsi/admin/opsiLicences/main.inc diff --git a/gosa-plugins/opsi/admin/opsiLicences/class_licenceGeneric.inc b/gosa-plugins/opsi/admin/opsiLicences/class_licenceGeneric.inc new file mode 100644 index 000000000..61d47eea2 --- /dev/null +++ b/gosa-plugins/opsi/admin/opsiLicences/class_licenceGeneric.inc @@ -0,0 +1,404 @@ +attrs + var $roleOccCache = array(); + + // A list of attributes managed by this plugin + var $attributes = array("cn","description", + "telephoneNumber","facsimileTelephoneNumber","roleOccupant"); + + + /* Initialize the class + */ + function __construct($config,$dn){ + plugin::plugin($config,$dn); + $this->is_account = TRUE; + + // Initialize list of occupants + $this->roleOccupant = array(); + if(isset($this->attrs['roleOccupant'])){ + for($i=0;$i<$this->attrs['roleOccupant']['count']; $i++){ + $this->roleOccupant[] = $this->attrs['roleOccupant'][$i]; + } + } + + // Detect the objects base + if ($this->dn == "new"){ + $this->base = session::get('CurrentMainBase'); + } else { + $this->base= preg_replace("/^[^,]+,".preg_quote(get_ou("roleRDN"), '/i')."/","",$this->dn); + } + + // Keep track of naming attribute modifications + $this->orig_base = $this->base; + $this->orig_dn = $dn; + $this->orig_cn = $this->cn; + + // Reload the occupant cache. + $this->reload(); + } + + + /* Keep occupant cache up to date. + * Else, we may have entries we can't display. + */ + function reload() + { + // Entries can't be added twice. + $attrs = array("description", "objectClass", "uid","cn"); + $this->roleOccupant = array_unique($this->roleOccupant); + $this->roleOccupant = array_values($this->roleOccupant); + + $ldap = $this->config->get_ldap_link(); + foreach($this->roleOccupant as $dn){ + if(!isset($this->roleOccCache[$dn])){ + if($ldap->dn_exists($dn)){ + $ldap->cat($dn, $attrs); + + $tmp = $ldap->fetch(); + if(!isset($tmp['cn'])){ + + // Extract the namingAttribute out of the dn. + $cn = preg_replace("/^[^=]*+=([^,]*).*$/","\\1",$tmp['dn']); + if(isset($tmp['uid'])){ + $cn = $tmp['uid'][0]; + } + if(isset($tmp['description'])){ + $cn.= " [".$tmp['description'][0]."]"; + } + $tmp['cn'][0] = $cn; + } + + $this->roleOccCache[$dn] = $tmp; + } + } + } + + } + + + function getOccupants(){ + return($this->roleOccupant); + } + + /* Generate HTML output of this plugin. + */ + function execute() + { + // Get list of possible ldap bases, will be selectable in the ui. + $tmp = $this->allowedBasesToMoveTo(); + + + /*************** + * Dialog handling + ***************/ + + if(isset($_POST['edit_membership']) && !$this->dialog instanceOf plugin){ + $this->dialog = new occupantSelect($this->config,$this->dn,$this); + } + if(isset($_POST['delete_membership']) && !$this->dialog instanceOf plugin){ + if(isset($_POST['members'])){ + foreach($_POST['members'] as $id){ + if(isset($this->roleOccupant[$id])){ + unset($this->roleOccupant[$id]); + } + } + $this->reload(); + } + } + + if(isset($_POST['add_object_cancel']) && $this->dialog instanceOf plugin){ + $this->dialog = NULL; + } + if(isset($_POST['add_object_finish']) && $this->dialog instanceOf plugin){ + $ret = $this->dialog->save(); + foreach($ret as $key => $entry){ + $this->roleOccupant[] = $entry['dn']; + $this->roleOccCache[$entry['dn']] = $entry['attrs']; + } + $this->reload(); + $this->dialog = NULL; + } + + if($this->dialog instanceOf plugin){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + + /*************** + * Template handling + ***************/ + + // Get smarty instance and assign required variables. + $smarty = get_smarty(); + $smarty->assign("bases", $tmp); + $smarty->assign("base_select",$this->base); + $smarty->assign("members",$this->convert_list()); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + // Assign current permissions for each attribute. + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $attr => $desc){ + $smarty->assign($attr."ACL",$this->getacl($attr)); + } + return($smarty->fetch(get_template_path('roleGeneric.tpl',TRUE,dirname(__FILE__)))); + } + + + /* Check user input and return a list of 'invalid input' messages. + */ + function check() + { + $message = plugin::check(); + + // Set the new acl base + if($this->dn == "new") { + $this->set_acl_base($this->base); + } + + // Check if we are allowed to create/move this user + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[]= msgPool::permCreate(); + }elseif($this->orig_dn != "new" && + !$this->acl_is_moveable($this->base) && + ($this->orig_base != $this->base || $this->orig_cn != $this->cn )){ + $message[]= msgPool::permMove(); + } + + /* must: cn */ + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + // Check if this name is uniq for roles. + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=organizationalRole)(cn=$this->cn))", array("cn")); + $ldap->fetch(); + if ($ldap->count() != 0 && ( $this->dn == 'new' || $this->cn != $this->orig_cn)){ + $message[]= msgPool::duplicated(_("Name")); + } + + return($message); + } + + + /* Returns list of occupants as \n"; + } + return ($temp); + } + + + /* Removes the object from the ldap database + */ + function remove_from_parent() + { + plugin::remove_from_parent(); + + // Remove this object. + $ldap= $this->config->get_ldap_link(); + $ldap->rmdir($this->dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + // Log action. + new log("remove","roles/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + // Trigger remove signal + $this->handle_post_events("remove"); + } + + + /* Saves object modifications + */ + function save(){ + plugin::save(); + + /* Save data. Using 'modify' implies that the entry is already present, use 'add' for + new entries. So do a check first... */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat ($this->dn, array('dn')); + if ($ldap->fetch()){ + $mode= "modify"; + } else { + $mode= "add"; + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + } + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,$this->attributes, "Save via $mode"); + + // Finally write data with selected 'mode' + $this->cleanup(); + $ldap->cd ($this->dn); + $ldap->$mode ($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), + $this->dn, LDAP_MOD, get_class())); + return (1); + } + + // Send modify/add events + $this->handle_post_events($mode); + + // Update ACL dependencies too + if($this->dn != $this->orig_dn && $this->orig_dn != "new"){ + $tmp = new acl($this->config,$this->parent,$this->dn); + $tmp->update_acl_membership($this->orig_dn,$this->dn); + } + + // Log action + if($mode == "modify"){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + return 0; + } + + + /* This avoids that users move themselves out of their rights. + */ + function allowedBasesToMoveTo() + { + $bases = $this->get_allowed_bases(); + return($bases); + } + + + /* Save HTML inputs + */ + function save_object() + { + plugin::save_object(); + if(isset($_POST['base'])){ + $this->base = get_post('base'); + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Load member objects */ + $this->roleOccupant = array(); + if (isset($source['roleOccupant'])){ + foreach ($source['roleOccupant'] as $key => $value){ + if ("$key" != "count"){ + $value= @LDAP::convert($value); + $this->roleOccupant["$value"]= "$value"; + } + } + } + $this->reload(); + } + + + function getCopyDialog() + { + $smarty = get_smarty(); + $smarty->assign("cn", $this->cn); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Role generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 1, + "plSection" => array("administration"), + "plCategory" => array("roles" => array("description" => _("Roles"), + "objectClass" => "organizationalRole")), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "description" => _("Description"), + "base" => _("Base"), + "telephoneNumber" => _("Telefon number"), + "facsimileTelephoneNumber" => _("Fax number"), + "roleOccupant" => _("Occupants")) + )); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/gosa-plugins/opsi/admin/opsiLicences/class_opsiLicences.inc b/gosa-plugins/opsi/admin/opsiLicences/class_opsiLicences.inc new file mode 100644 index 000000000..2ad9c2ec0 --- /dev/null +++ b/gosa-plugins/opsi/admin/opsiLicences/class_opsiLicences.inc @@ -0,0 +1,488 @@ +config= &$config; + $this->ui= get_userinfo(); + + // Copy & Paste enabled ? + if ($this->config->get_cfg_value("copyPaste") == "true"){ + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + } + + // Initialize the corresponding list class. + $this->DivListRoles = new divListRole($this->config,$this); + } + + + function execute() + { + // Call parent execute + plugin::execute(); + + // Variables to restore after 'entry locked' warning was displayed + session::set('LOCK_VARS_TO_USE',array('/^copy/','/^cut/','/^role_/','/^act/', + '/^id/','/^menu_action/','/^item/')); + + $smarty = get_smarty(); + + /*************** + * Handle _POST/_GET variables + ***************/ + + // Get entry related posts + $s_action = ""; + $s_entry = ""; + foreach($_POST as $name => $value){ + if(preg_match("/^cut_/",$name)){ + $s_action = "cut"; + $s_entry = preg_replace("/^cut_([0-9]*)_.*$/","\\1",$name); + break; + } + if(preg_match("/^copy_/",$name)){ + $s_action = "copy"; + $s_entry = preg_replace("/^copy_([0-9]*)_.*$/","\\1",$name); + break; + } + if(preg_match("/^role_edit_/",$name)){ + $s_action = "edit"; + $s_entry = preg_replace("/^role_edit_([0-9]*)_.*$/","\\1",$name); + break; + } + if(preg_match("/^role_del_/",$name)){ + $s_action = "remove"; + $s_entry = preg_replace("/^role_del_([0-9]*)_.*$/","\\1",$name); + break; + } + } + + if(isset($_GET['act']) && $_GET['act'] == "edit_entry" && isset($_GET['id'])){ + $id = $_GET['id']; + if(isset($this->roles[$id])){ + $s_action = "edit"; + $s_entry = $id; + } + } + + // Get menu related posts + if(isset($_POST['menu_action'])) { + if($_POST['menu_action'] == "editPaste"){ + $s_action = "editPaste"; + }elseif($_POST['menu_action'] == "role_new"){ + $s_action = "new"; + }elseif($_POST['menu_action'] == "remove_multiple_roles"){ + $s_action = "remove_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); + } + + + /*************** + * Remove handling + ***************/ + + if($s_action == "remove_multiple" || $s_action == "remove"){ + + if($s_action == "remove_multiple"){ + $ids = $this->list_get_selected_items(); + }else{ + $ids = array($s_entry); + } + + if(count($ids)){ + $this->dns = array(); + $disallowed = array(); + foreach($ids as $id){ + $dn = $this->roles[$id]['dn']; + $acl = $this->ui->get_permissions($dn, "roles/roleGeneric"); + 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){ + $dns_names[] = LDAP::fix($dn); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + add_lock ($this->dns, $this->ui->dn); + + $smarty->assign("info", msgPool::deleteInfo($dns_names,_("Role"))); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /* Remove lock */ + if(isset($_POST['delete_multiple_roles_cancel'])){ + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /* Confirmation for deletion has been passed. Users should be deleted. */ + if (isset($_POST['delete_multiple_roles_confirm'])){ + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + + $acl = $this->ui->get_permissions($dn, "roles/roleGeneric"); + if (preg_match('/d/', $acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->dialog= new roletabs($this->config,$this->config->data['TABS']['ROLETABS'], $dn); + $this->dialog->delete(); + $this->dialog= 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","roles/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /*************** + * New handling + ***************/ + + if($s_action == "new" && !$this->dialog instanceOf tabs){ + $this->dialog = new roletabs($this->config, $this->config->data['TABS']['ROLETABS'], "new"); + $this->dialog->set_acl_base($this->DivListRoles->selectedBase); + } + + /*************** + * Edit handling + ***************/ + + if($s_action == "edit" && !$this->dialog instanceOf tabs){ + if(!isset($this->roles[$s_entry])){ + trigger_error("Unknown entry!"); + }else{ + + $entry = $this->roles[$s_entry]; + $this->dn = $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); + + /* Open the dialog */ + $this->dialog = new roletabs($this->config, $this->config->data['TABS']['ROLETABS'], + $entry['dn'], "roles"); + $this->dialog->set_acl_base($this->dn); + set_object_info($this->dn); + } + } + + + /*************** + * Dialog handling + ***************/ + + if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply'])) && $this->dialog instanceOf tabs){ + $this->dialog->save_object(); + $msgs = $this->dialog->check(); + if(count($msgs)){ + msg_dialog::displayChecks($msgs); + }else{ + $this->dialog->save(); + if (!isset($_POST['edit_apply'])){ + $this->remove_lock(); + $this->dialog= NULL; + set_object_info(); + }else{ + $this->dialog->re_init(); + } + } + } + + if (isset($_POST['edit_cancel']) && $this->dialog instanceOf tabs){ + $this->remove_lock(); + $this->dialog= NULL; + set_object_info(); + } + + if($this->dialog instanceOf tabs){ + $display= $this->dialog->execute(); + + $dialog_opened = ($this->dialog->by_object[$this->dialog->current]->dialog instanceOf plugin); + + if(!$dialog_opened){ + if($this->dialog->read_only == TRUE){ + $display.= "

+ +

"; + }else{ + + $display.= "

\n"; + $display.= "\n"; + $display.= " \n"; + if ($this->dn != "new"){ + $display.= "\n"; + $display.= " \n"; + } + $display.= "\n"; + $display.= "

"; + } + } + return ($display); + } + + + /*************** + * List handling + ***************/ + + // Check if there is a snapshot dialog open + $base = $this->DivListRoles->selectedBase; + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + // Display dialog with group list + $this->DivListRoles->parent = $this; + $this->DivListRoles->execute(); + + // Add departments if subsearch is disabled + if(!$this->DivListRoles->SubSearch){ + $this->DivListRoles->AddDepartments($this->DivListRoles->selectedBase,3,1); + } + $this->reload (); + $this->DivListRoles->setEntries($this->roles); + return($this->DivListRoles->Draw()); + } + + + // Refreshes the list of known role objects. + function reload() + { + + // Get current ldap base and filter settings. + $base = $this->DivListRoles->selectedBase; + $Regex = $this->DivListRoles->Regex; + + // Search and fetch all matching role objects. + $this->roles = array(); + $ldap = $this->config->get_ldap_link(); + $filter= "(&(objectClass=organizationalRole)(cn=$Regex))"; + $attrs = array("cn","description","objectClass"); + + if($this->DivListRoles->SubSearch){ + $res= get_sub_list($filter, "roles",array(), $base, $attrs, GL_SIZELIMIT | GL_SUBSEARCH); + }else{ + $res= get_sub_list($filter, "roles",get_ou('roleRDN'), get_ou('roleRDN').$base, $attrs, GL_SIZELIMIT ); + } + + $tmp = array(); + foreach($res as $attrs){ + $tmp[$attrs['cn'][0].$attrs['dn']] = $attrs; + } + + uksort($tmp, 'strnatcasecmp'); + $this->roles = array_values($tmp); + } + + + /* \brief Returns a list of selected entry ids. + * E.g. remove multiple entries. + * @return Array A list of entry IDs + */ + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + function remove_lock() + { + if (isset($this->dialog->dn)){ + del_lock ($this->dialog->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); + } + } + + + /* Return departments, that will be included within snapshot detection + */ + function get_used_snapshot_bases() + { + return(array(get_ou('roleRDN').$this->DivListRoles->selectedBase)); + } + + + 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->roles[$s_entry]['dn']; + if($s_action == "copy" && $ui->is_copyable($dn,"roles","roleGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"roletabs","ROLETABS","roles"); + } + if($s_action == "cut" && $ui->is_cutable($dn,"roles","roleGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"roletabs","ROLETABS","roles"); + } + } + + /* 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->roles[$id]['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"roles","roleGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,"copy","roletabs","ROLETABS","roles"); + } + if($s_action == "cut_multiple" && $ui->is_cutable($dn,"roles","roleGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,"cut","roletabs","ROLETABS","roles"); + } + } + } + + /* 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",$this->DivListRoles->selectedBase); + $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(""); + } + + + function save_object() + { + $this->DivListRoles->save_object(); + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/gosa-plugins/opsi/admin/opsiLicences/generic.tpl b/gosa-plugins/opsi/admin/opsiLicences/generic.tpl new file mode 100644 index 000000000..3f74097fe --- /dev/null +++ b/gosa-plugins/opsi/admin/opsiLicences/generic.tpl @@ -0,0 +1,85 @@ + + + + + +
+ +

  + {t}Generic{/t} +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
{t}Name{/t}{$must} + {render acl=$cnACL} + + {/render} +
{t}Description{/t} + {render acl=$descriptionACL} + + {/render} +
+
+ +
+
+ {render acl=$baseACL} + + {/render} + {render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + + {/render} +

 


{t}Phone number{/t} + {render acl=$telephoneNumberACL} + + {/render} +
{t}Fax number{/t} + {render acl=$facsimileTelephoneNumberACL} + + {/render} +
+ +
+

  + {t}Occupants{/t} +

+ +{render acl=$roleOccupantACL} + +{/render} +
+{render acl=$roleOccupantACL} +   +{/render} +{render acl=$roleOccupantACL} + +{/render} +
diff --git a/gosa-plugins/opsi/admin/opsiLicences/main.inc b/gosa-plugins/opsi/admin/opsiLicences/main.inc new file mode 100644 index 000000000..90906cc07 --- /dev/null +++ b/gosa-plugins/opsi/admin/opsiLicences/main.inc @@ -0,0 +1,67 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + $macl = session::get('roleManagement'); + $macl->remove_lock(); + session::un_set('roleManagement'); +}else{ + + /* Create object object on demand */ + if (!session::is_set('roleManagement')){ + session::set('roleManagement',new roleManagement($config)); + } + $roleManagement = session::get('roleManagement'); + + /* Execute formular */ + $roleManagement->save_object(); + $output= $roleManagement->execute (); + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path('plugins/rolemanagement/images/plugin.png'), + _("Roles"), + "\"\" ". + LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path('plugins/rolemanagement/images/plugin.png'), _("Role management")); + } + + $display.= $output; + + /* Store changes in session */ + session::set('roleManagement',$roleManagement); +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> -- 2.30.2