From c9098b3fe372efc653f295bfe67525a30797a233 Mon Sep 17 00:00:00 2001 From: cajus Date: Wed, 30 Sep 2009 09:59:29 +0000 Subject: [PATCH] Removed obsolete stuff git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@14402 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../roleManagement/class_divListRole.inc | 232 --------- .../roleManagement/class_occupantSelect.inc | 163 ------ .../roleManagement/class_roleGeneric.inc | 404 --------------- .../roleManagement/class_roleManagement.inc | 488 ------------------ .../admin/roleManagement/main.inc | 67 --- .../admin/roleManagement/occupantSelect.tpl | 49 -- .../admin/roleManagement/paste_generic.tpl | 14 - .../admin/roleManagement/remove.tpl | 18 - .../admin/roleManagement/roleGeneric.tpl | 85 --- .../admin/roleManagement/tabs_roles.inc | 78 --- .../opsiLicenses/html/images/license.png | Bin 1112 -> 0 bytes gosa-plugins/opsiLicenses/html/images/new.png | Bin 1323 -> 0 bytes .../opsiLicenses/html/images/plugin.png | Bin 1531 -> 0 bytes gosa-plugins/opsiLicenses/plugin.dsc | 7 - 14 files changed, 1605 deletions(-) delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/class_divListRole.inc delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/class_occupantSelect.inc delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/class_roleGeneric.inc delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/class_roleManagement.inc delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/main.inc delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/occupantSelect.tpl delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/paste_generic.tpl delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/remove.tpl delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/roleGeneric.tpl delete mode 100644 gosa-plugins/opsiLicenses/admin/roleManagement/tabs_roles.inc delete mode 100644 gosa-plugins/opsiLicenses/html/images/license.png delete mode 100644 gosa-plugins/opsiLicenses/html/images/new.png delete mode 100644 gosa-plugins/opsiLicenses/html/images/plugin.png delete mode 100644 gosa-plugins/opsiLicenses/plugin.dsc diff --git a/gosa-plugins/opsiLicenses/admin/roleManagement/class_divListRole.inc b/gosa-plugins/opsiLicenses/admin/roleManagement/class_divListRole.inc deleted file mode 100644 index beb068a69..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/class_divListRole.inc +++ /dev/null @@ -1,232 +0,0 @@ -parent = $parent; - $this->ui = get_userinfo(); - - // Dynamic action col, depending on snapshot icons - $action_col_size = 90; - if($this->parent->snapshotEnabled()){ - $action_col_size += 38; - } - - // Set list strings - $this->SetTitle(_("List of roles")); - $this->SetSummary(_("List of roles")); - $this->EnableAplhabet(true); - - // Result page will look like a headpage - $this->SetHeadpageMode(); - - // Disable buttonsm - $this->EnableCloseButton(false); - $this->EnableSaveButton (false); - - // Add checkbox: Toggle all selected / deselected - $chk = ""; - - // Set Page col headers - $this->AddHeader(array("string" => $chk,"attach"=>"style='width:20px;'")); - $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); - $this->AddHeader(array("string" => _("Role")." / "._("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(SEPERATOR); - $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), - msgPool::selectToView("","subsearch_small"), false); - - // Add regex user input field - $this->AddRegex ("Regex", _("Regular expression for matching role names"), "*" , true); - } - - - function GenHeader() - { - /* Get all departments within this subtree */ - $ui= get_userinfo(); - $first = ""; - $found = FALSE; - $base = $this->config->current['BASE']; - $options = $this->create_department_list($this->module); - - /* Add a seperator after displaying c&p and snapshot icons ? */ - $add_sep = false; - - /* Get copy & paste icon */ - $acls = $ui->get_permissions($this->selectedBase,"roles/roleGeneric"); - $acl_all= $ui->has_complete_category_acls($this->selectedBase,"roles"); - - /* Add default header */ - $listhead = MultiSelectWindow::get_default_header(); - - /* Add department selector */ - $listhead .= _("Base")." ". - "  "; - - /* Create Layers menu */ - $s = ".|"._("Actions")."|\n"; - - /* Append create options */ - if(preg_match("/c/",$acls)) { - $s .= "..|". - " "._("Create")."|\n"; - $s.= "...|". - " "._("Role")."|role_new|\n"; - } - - /* Multiple options */ - $s.= "..|---|\n"; - $s.= "..|". - " "._("Remove")."|"."remove_multiple_roles|\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); - } - - - function execute() - { - $this->ClearElementsList(); - $this->GenHeader(); - } - - function setEntries($list) - { - // Defining Links - $editlink = "%s"; - - // Dynamic action col, depending on snapshot icons - $action_col_size = 90; - if($this->parent->snapshotEnabled()){ - $action_col_size += 38; - } - - $ui = get_userinfo(); - - // Assigning roles - foreach($list as $key => $val){ - - // Get object permissions - $acl = $ui->get_permissions($val['dn'],"roles/roleGeneric"); - $acl_all= $ui->has_complete_category_acls($val['dn'],"roles"); - - - // Add copy & cut functionality */ - $actions = $this->parent->get_copypaste_action($val['dn'],"ogroups","ogroup"); - - // Create edit and remove icon buttons - $actions.= ""; - - $actions.= $this->parent->get_snapshot_action($val['dn'],$this->module); - if(preg_match("/d/",$acl)){ - $actions.= ""; - }else{ - $actions.= " "; - } - - // Append role descriptio, if available - $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; - if(!isset($val['description'][0])){ - $desc = ""; - }else{ - $desc = " - [ ".$val['description'][0]." ]"; - } - - // Cutted entry are displayed in a light grey as indication. - $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; - } - } - } - - // Append the entry to the divlist - $field0 = array("string" => "" , - "attach" => "style='width:20px;'"); - $field1 = array("string" => ""._("Role")."", - "attach" => "style='text-align:center;width: 20px;'"); - $field2 = array("string" => sprintf($editlink,$key,$display), - "attach" => "style='' ".$title); - $field4 = array("string" => preg_replace("/%KEY%/", $key, $actions), - "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); - - $this->AddElement(array($field0,$field1,$field2,$field4)); - } - - - // Create the list summary - $num_deps=0; - if(!$this->SubSearch){ - $num_deps = count($this->Added_Departments); - } - $num_objs = count($list); - $num_obj_str = _("Number of listed roles"); - $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); - } -} -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: -?> diff --git a/gosa-plugins/opsiLicenses/admin/roleManagement/class_occupantSelect.inc b/gosa-plugins/opsiLicenses/admin/roleManagement/class_occupantSelect.inc deleted file mode 100644 index 7fc690e9f..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/class_occupantSelect.inc +++ /dev/null @@ -1,163 +0,0 @@ -config = $config; - $this->dn = $dn; - $this->parent = $parent; - $this->skipEntries = $parent->getOccupants(); - - /* Get global filter config */ - if (!session::is_set("roleAddOccupantFilter")){ - $ui= get_userinfo(); - $base= get_base_from_people($ui->dn); - $roleAddOccupantFilter= array( - "dselect" => $base, - "subtrees" => FALSE, - "regex" => "*"); - session::set("roleAddOccupantFilter", $roleAddOccupantFilter); - } - - } - - - function execute() - { - /* Save data */ - $roleAddOccupantFilter= session::get("roleAddOccupantFilter"); - if(isset($_POST['occupantSearched'])){ - - $roleAddOccupantFilter['subtrees'] = false; - if(isset($_POST['subtrees'])){ - $roleAddOccupantFilter['subtrees'] = "checked"; - } - - foreach( array("dselect", "regex") as $type){ - if (isset($_POST[$type])){ - $roleAddOccupantFilter[$type]= $_POST[$type]; - } - } - } - if (isset($_GET['search'])){ - $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*"; - if ($s == "**"){ - $s= "*"; - } - $roleAddOccupantFilter['regex']= $s; - } - session::set("roleAddOccupantFilter", $roleAddOccupantFilter); - - $smarty = get_smarty(); - $smarty->assign("search_image", get_template_path('images/lists/search.png')); - $smarty->assign("launchimage", get_template_path('images/lists/action.png')); - $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); - $smarty->assign("deplist", $this->config->idepartments); - $smarty->assign("alphabet", generate_alphabet()); - $smarty->assign("hint", print_sizelimit_warning()); - $smarty->assign("apply", apply_filter()); - $smarty->assign("objects", $this->getObjects()); - foreach( array("dselect", "regex", "subtrees") as $type){ - $smarty->assign("$type", $roleAddOccupantFilter[$type]); - } - return($smarty->fetch(get_template_path("occupantSelect.tpl",TRUE, dirname(__FILE__)))); - } - - - function getObjects() - { - - // Initialize variables - $ldap = $this->config->get_ldap_link(); - $roleAddOccupantFilter= session::get("roleAddOccupantFilter"); - $regex = $roleAddOccupantFilter['regex']; - - // Detect the base to be use for ldap search - if($roleAddOccupantFilter['subtrees']){ - $base = $roleAddOccupantFilter['dselect']; - }else{ - $base = get_people_ou().$roleAddOccupantFilter['dselect']; - } - - // Set search flags flat/subsearch - $Get_list_flags = 0; - if($roleAddOccupantFilter['subtrees'] == "checked"){ - $Get_list_flags |= GL_SUBSEARCH; - } - - // Search for matching user objects. - $filter = "(&(objectClass=gosaAccount)(!(uid=*$))(|(uid=$regex)(cn=$regex)))"; - $res = get_list($filter, "users/user" , $base, - array("description", "objectClass", "sn", "givenName", "uid","cn"),$Get_list_flags); - - // Collect data. - $this->objects = array(); - foreach($res as $attrs){ - - // Skip entries which are already part of our role - if(in_array($attrs['dn'], $this->skipEntries)) continue; - - $name = $attrs['cn'][0]; - $dn = $attrs['dn']; - if (isset($attrs["description"][0])){ - $name .= " [".$attrs["description"][0]."]"; - } - - $entry = array(); - $entry['attrs'] = $attrs; - $entry['name'] = $name; - $entry['dn'] = $dn; - $this->objects[] = $entry; - } - uksort ($this->objects, 'strnatcasecmp'); - reset ($this->objects); - - // Create HTML content - $temp = ""; - foreach ($this->objects as $key => $value){ - $temp.= " - \n"; - } - return ($temp); - } - - - function save() - { - $ret = array(); - if(isset($_POST['objects'])){ - $objects = $_POST['objects']; - foreach($objects as $id){ - $ret[] = $this->objects[$id]; - } - } - return($ret); - } -} - -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: -?> diff --git a/gosa-plugins/opsiLicenses/admin/roleManagement/class_roleGeneric.inc b/gosa-plugins/opsiLicenses/admin/roleManagement/class_roleGeneric.inc deleted file mode 100644 index 6674ddf94..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/class_roleGeneric.inc +++ /dev/null @@ -1,404 +0,0 @@ -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/opsiLicenses/admin/roleManagement/class_roleManagement.inc b/gosa-plugins/opsiLicenses/admin/roleManagement/class_roleManagement.inc deleted file mode 100644 index bc52cb554..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/class_roleManagement.inc +++ /dev/null @@ -1,488 +0,0 @@ -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/opsiLicenses/admin/roleManagement/main.inc b/gosa-plugins/opsiLicenses/admin/roleManagement/main.inc deleted file mode 100644 index 90906cc07..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/main.inc +++ /dev/null @@ -1,67 +0,0 @@ -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: -?> diff --git a/gosa-plugins/opsiLicenses/admin/roleManagement/occupantSelect.tpl b/gosa-plugins/opsiLicenses/admin/roleManagement/occupantSelect.tpl deleted file mode 100644 index c34e29731..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/occupantSelect.tpl +++ /dev/null @@ -1,49 +0,0 @@ - - - - - -
-
-

- {t}Select objects to add{/t} {$hint} -

-
-
-

- - -

-
-
-
-

[F]{t}Filters{/t}

-
-
- - {$alphabet} -
-

- {t}Search in subtrees{/t}
-

- -
  -
- -
- {$apply} -
-
- - - -

- -   - -

- diff --git a/gosa-plugins/opsiLicenses/admin/roleManagement/paste_generic.tpl b/gosa-plugins/opsiLicenses/admin/roleManagement/paste_generic.tpl deleted file mode 100644 index 91f84d8ae..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/paste_generic.tpl +++ /dev/null @@ -1,14 +0,0 @@ - - - - - -
- {$must} - - -
- - diff --git a/gosa-plugins/opsiLicenses/admin/roleManagement/remove.tpl b/gosa-plugins/opsiLicenses/admin/roleManagement/remove.tpl deleted file mode 100644 index 76cf28860..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/remove.tpl +++ /dev/null @@ -1,18 +0,0 @@ -
-  {t}Warning{/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} -

- -

- -   - -

- diff --git a/gosa-plugins/opsiLicenses/admin/roleManagement/roleGeneric.tpl b/gosa-plugins/opsiLicenses/admin/roleManagement/roleGeneric.tpl deleted file mode 100644 index 3f74097fe..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/roleGeneric.tpl +++ /dev/null @@ -1,85 +0,0 @@ - - - - - -
- -

  - {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/opsiLicenses/admin/roleManagement/tabs_roles.inc b/gosa-plugins/opsiLicenses/admin/roleManagement/tabs_roles.inc deleted file mode 100644 index f7f9b34be..000000000 --- a/gosa-plugins/opsiLicenses/admin/roleManagement/tabs_roles.inc +++ /dev/null @@ -1,78 +0,0 @@ -base = $baseobject= $this->by_object['roleGeneric']->base; - $this->addSpecialTabs(); - - - } - - function save_object($save_current= FALSE) - { - tabs::save_object($save_current); - - /* Update reference, transfer variables */ - $baseobject= $this->by_object['roleGeneric']; - foreach ($this->by_object as $name => $obj){ - - /* Don't touch base object */ - if ($name != 'roleGeneric'){ - $obj->parent= &$this; - $obj->cn= $baseobject->cn; - $this->by_object[$name]= $obj; - } - } - } - - function save($ignore_account= FALSE) - { - $baseobject= $this->by_object['roleGeneric']; - - /* Check for new 'dn', in order to propagate the - 'dn' to all plugins */ - $new_dn= 'cn='.$baseobject->cn.','.get_ou("roleRDN").$baseobject->base; - - /* Move group? */ - if ($this->dn != $new_dn){ - - /* Write entry on new 'dn' */ - if ($this->dn != "new"){ - $baseobject->update_acls($this->dn,$new_dn); - $baseobject->move($this->dn, $new_dn); - $this->by_object['roleGeneric']= $baseobject; - } - - /* Happen to use the new one */ - $this->dn= $new_dn; - } - $ret= tabs::save(); - return $ret; - } -} - -?> diff --git a/gosa-plugins/opsiLicenses/html/images/license.png b/gosa-plugins/opsiLicenses/html/images/license.png deleted file mode 100644 index f2d5c59f973623cb8dcf097472bcbd150aa3a55d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmV-e1gHCnP)Px%{ZLF)MeOkQoW+SI2;^W}q;^5%nz`(({$lmVp^yTXF zgoK5#$KSTi;^5-rErGZ4_4s_M&Typ5cBjqg>g`pQ!{X`kr@h$m^!V=c_&A8XeXY>z z@byQIzFwfp>Fe%Umcv4dyzuq<@bvfM+bPloyYL= z_wDfW>FxFA>h0v^=i1})XP?NNxz_Ra`_$d*^!NJU=JDg^=-=SsFoL+w+33yJ=s1SD z8FsSi?(^sC@7?6@%GKt{)aFQzzyAOK{Qdp_X{u&sW}>2_dU|@m!NQJ?kNEoiwzs(Z z{r>3b>%|05-rnBw^Yw6WaMab-^7s7S-{7&r+ht{C`~3dcFRlTdf$MijgF4=`2G3&{^p;&@Xg)n^7z(LhW7dX^Z5P#{{Qpc=+xBK z5p%H2BV|L7z=MN?+v@Y#=<~=FTJQ4qZ*Ol9a<9)baF>{v`1}6%?DOfa$LjO>EPuAU z*Xi~7{odZ+;^gL*!Q6GO(b-{<X{NLZ;*Wm4Bo5t?)_V4od#nI%Iw$!r2-2VRl?eX`w(B$3S-thDIO_0Cj z=I8A0^4sI?#n|cn{r>6g^0mm{d3kvaaIVYQ>4vY-+u-Pqv(x+h{eZF4Z>!JL)z!z- z<@oyi>+kg3-r?NeEj;_dSH{oUQ&`uzU<{r|$;V*CIA z00DGTPE!Ct=GbNc0004EOGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-gl9ta;f*ne`g0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN zqDe$SR2b7^V88+9sv`4NEXo4`gaB7wz?WNGc_J`=UcGswoP)p#Mga(a5u09~cZ`jC z-Vdm*yuIvsnMdPH^ZfY10w?n7&*ptUbTKc_Aa1231A|LmUVVLD_9@=H)CWJ=^5%lg ztgn}KNHp?3Bm_0XU2cCps~#ukH-Cu0+`N@wcjaA!xnxD298g#NeuPu=@-EfayXSEr edxud3m$w0BRXAYxTehnJ0000w zfq*0dJTC|UO(!HIB&4U;)Wq1jy5g1~CMcH^LI@!>H6G8@l;6L9|IpCz@YIySK=wuJ zrAEN`t?@0D3@Bbw@}W)-pb<^v8emDYygn@feHZ&Kvb6wrI8Z;Qv)g$-92Ujm;;ydS zx2vmXX8xIg{O{Y6l8K4QNuTe~p@D(HLATpr5ClPpMgbkATP>>sif$IUwduf9?NG1R z3;bI4;H*anp~9vmB6-bJ9cDc_4Oqu ztJO;7-MfSk0sxXENrV8Z*VI*%44BTFp7I?4dh>dB%^HE8prtOL2HZzoKg^5)Ob63} zULY|s6aoO6RwzMTR;$q@C3!r|_JqW_eqec7(yIQ$ zK+5Lm=QfAya4Xi#bPrd&L$lW?Hz_LJIo=Tsof70pJ8Q)3#{VK3@Ylh0d8z@;+GKLud z8d*7J0a-TL87&89K258VN&v?C>SrGu0&?rh-Zf4G4G4!n##Cx+V{0h%oC9X_ z-n|6{!Ju5OPzZw8Yj|(v?Cnp4ugOi{+wMC6MR~n$H$ZRns@(!W7f-$KN&+a#Zg)5U zYTx9Zi330epY<@w04SA8B}D;d+-4gcJ#nJCT9Tqsm+SH47<;VI{}pEQu3ep- zdVOVOMa7jXBO^AO&Bn5Xh@vQpA|V{daU4g8#bU8I9E6mYZ`jbbOGjuw~1pP3`TCjSUSA4OS~5cDvoqvVyqOq(}%bQBcK&H4R;aN~v`2m;4Nqmz?PXLomfy~8mvap_W9TkNzTy!49~!us{4 zr57$349UrAbxsb$ye!`z>vlCB*T2@|0000YdQ@0+Q*UN;cVTj6004N}D=#nC%goCz hPEIUH)ypqR2LLwM23QbN%3J^d002ovPDHLkV1j;gZgBtr diff --git a/gosa-plugins/opsiLicenses/html/images/plugin.png b/gosa-plugins/opsiLicenses/html/images/plugin.png deleted file mode 100644 index e01a7c1ff1f6e76f3e118758612e9644197c1b52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1531 zcmVPx&08mU+MfUps?C|!S#op!S>B`H@A$+v6#N0N9y0ymLFNM0n&f*_?wXCeIWu(l| z+UeQk^jw<7eX`Wn-t45q-RSJ`jJw&b#@^-V>&V~jwzjve&ExO%`tkPs{r>-vveIs% z%J=#FRGP-->Fnz6^~TcV_4xZgj=$RC?oF1&-sSM??eO8^e`0n%gIEcJ` zt+V^W!$OL@@b&ue^!MWA+T-$PpU9lK*75fH)ZOd!_xj-G@#E&`-{9deg1FAv=*`#Y zIEK0zcCzX2^XKdD-Q@4e)#l06=17je{{R2{{r&)Hs%BA=-)YaDV_x#@9;IYEnWo2di{QlVE^taXMg}2wzLVK8) znW3Vi-rwKtzS8LF>Unv3-+-o#j*j&B{rUU;=AXRq&E4tp_|{T}_WAzv`2GI=|MT7G z)YR4ybFj=KWkZm_gM)hsy?^T-rh@ACFht+5 zf3~~V>Gk>j-rnEhL z{`dO++;Nh1Ctbg<0V=k@viGKRa;-0JW1_W1k#%i!++|Np$p;Mw8s z-QM4_!`tWV^z!!n-{0WZ;O%6a#_sa=@ACJ>(d3o3)Uw0e{{H^$@%OjTS=j`tC+vD!V*y;WK{^{-VwaDLjd3g;oRTkpTOJo`251p8000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-} z0006)Nkl#Vc^&9Z+|MhL?Pgt{S9f zYMN$x*u&5iMYpXhy=?4z%daEu4afqnbKBttMp1VK+yT}f|K9p`*ZGLJ$oB!e1^Hfb z`PS37Kz6!2psPz83$aXQJ$y9qAv{e0imBORexzYAh)l7!-SE@Y3JP*5x%_+{zy3bB z)UBrORKlSU@Q&VI#P;Tgv+~PDtgXEW2|(8m6w@998tY&p?57Oa>C1^^8aO@uIwt^& zj8k}nv4PEw9LeoB+e55{Orcra*{cDM%elGnC1opXjGW`eLZ;8mTcv2Ksj*;HyZ7#t3V zMR2)<)Rf7~#^%JbZ0;*NPbZ(tg+eP8RF2W$iyrb*lkp}^RaKi>lW#H8!FkMlSsE9t zp{j<|y5!d9(Ro6|%?8}{oKGkSMBKjt h`@V3bE#1WR#eXC)@DSIZJQ4r^002ovPDHLkV1linvEl## diff --git a/gosa-plugins/opsiLicenses/plugin.dsc b/gosa-plugins/opsiLicenses/plugin.dsc deleted file mode 100644 index 0658a7d27..000000000 --- a/gosa-plugins/opsiLicenses/plugin.dsc +++ /dev/null @@ -1,7 +0,0 @@ -[gosa-plugin] -name = opsiLicenses -description = "Opsi license management plugin" -version = 2.6.5 -author = "Fabian Hickert " -homepage = https://oss.gonicus.de/labs/gosa/ -depends = opsi -- 2.30.2