diff --git a/gosa-plugins/goto/admin/groups/apps/class_groupApplication.inc b/gosa-plugins/goto/admin/groups/apps/class_groupApplication.inc
index c2e57e4e3b529f9da70eab578f3212457e62e0a0..29a6d540fa80ab2627a8b1f0c07a37ca2af47814 100644 (file)
<?php
class appgroup extends plugin
{
- /* CLI vars */
- var $cli_summary= "Manage application groups";
- var $cli_description= "Some longer text\nfor help";
- var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
-
-
var $config;
var $curbase;
if($this->enableReleaseManagement){
/* Only display those releases that we are able to read */
- $dn = $this->config->current['BASE'];
+ $dn = get_ou("applicationou").$this->config->current['BASE'];
$filter = "(&(objectClass=organizationalUnit)(objectClass=FAIbranch))";
- $res = get_list($filter,"application", $dn, array("ou","FAIstate"), GL_SUBSEARCH);
+ $res = get_sub_list($filter,array("application","fai"), array(get_ou("applicationou"),get_ou("faiou")),$dn, array("ou","FAIstate"), GL_SUBSEARCH);
+
foreach($res as $attrs){
if(preg_match("/".get_ou('applicationou')."/",$attrs['dn'])){
}
}elseif(in_array("gotoMenuEntry",$attrs['objectClass'])){
+
$type = "ENTRY";
$data['INFO'] = "";
$data['PARAMETER'] = array();
if(isset($attrs['gosaApplicationParameter'])){
for($p = 0 ; $p < $attrs['gosaApplicationParameter']['count'] ; $p ++){
- $tmp = split(":",$attrs['gosaApplicationParameter'][$p]);
- $data['PARAMETER'][$tmp[0]] = $tmp[1];
+ if(preg_match("/:/",$attrs['gosaApplicationParameter'][$p])){
+ $tmp = split(":",$attrs['gosaApplicationParameter'][$p]);
+ $data['PARAMETER'][$tmp[0]] = $tmp[1];
+ }elseif($attrs['gosaApplicationParameter'][$p] == "*separator*"){
+ $type = "SEPERATOR";
+ $data['PARAMETER'] = array();
+ break;
+ }
}
}
}elseif(in_array("FAIbranch",$attrs['objectClass'])){
}
}
+ $data['LDAP_ATTRS'] = $attrs;
$data['DN'] = $attrs['dn'];
$data['NAME'] = $name;
$data['TYPE'] = $type;
/* Call parent execute */
plugin::execute();
+ if(isset($_GET['r'])) $this->__construct($this->config,$this->dn);
+
if (isset($_POST['modify_state'])){
$this->is_account = !$this->is_account;
}
/* Do we represent a valid account? */
if (!$this->is_account){
- $display= $this->show_enable_header(_("Add application extension"),
- _("Application extension disabled. You can enable it by clicking below."));
+ $display= $this->show_disable_header(msgPool::addFeaturesButton(_("Menu")), msgPool::featuresDisabled(_("Menu")));
return ($display);
}
- $display = $this->show_enable_header(_("Remove application extension"),
- _("Application extension enabled. You can disable it by clicking below."));
-
+ $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Menu")), msgPool::featuresEnabled(_("Menu")));
if(isset($_GET['send'])){
$id = $_GET['send'];
/* Append departments for current base */
foreach($departments as $key => $app){
$div->AddEntry(array(
- array("string"=>"<img class='center' src='images/folder.png' alt='"._("department")."'> ".sprintf($linkopen,
+ array("string"=>"<img class='center' src='images/lists/folder.png' alt='"._("department")."'> ".sprintf($linkopen,
base64_encode($key),$app),
"attach"=>"style='border:0px;'")
));
$all = $this->_get_all_entries();
$key = $this->_get_release_key($release);
if(isset($all[$key]) && count($all[$key]['ENTRIES'])){
- $res = $this->_get_all_entries(TRUE,TRUE,&$all[$key]['ENTRIES']);
+ $res = $this->_get_all_entries(TRUE,TRUE,$all[$key]['ENTRIES']);
return($res);
}
return(array());
}
foreach($a_remove as $remove){
$ldap->rmdir_recursive($remove);
- show_ldap_error($ldap->get_error(),
- sprintf(_("Removing of group/application account with dn '%s' failed, could not remove '%s'."),
- $this->dn,$remove));
+ if (!$ldap->success()){
+ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class()));
+ }
}
$this->_load_menu_structure();
}
}
}
}
+
+ /* Add seperator */
+ if(isset($_POST['add_seperator']) && isset($_POST['menu_folder'])){
+ $folder = $_POST['menu_folder'];
+ $this->_add_seperator($folder);
+ }
+
if(isset($_POST['add_menu_to_folder']) && isset($_POST['menu_folder'])){
$folder = $_POST['menu_folder'];
$name = $_POST['menu_folder_name'];
$all = $this->_get_all_entries();
if(isset($all[$id])){
$all[$id]['STATUS'] = "REMOVED";
+ $all[$id]['ENTRIES'] = array();
return(TRUE);
}
return(FALSE);
if(isset($all[$folder_id])){
+ if(!isset($entry['ENTRIES'])){
+ $entries = array();
+ }else{
+ $entries = $entry['ENTRIES'];
+ }
+
$folder = &$all[$folder_id];
- $entries = $entry['ENTRIES'];
$entry['UNIQID'] = uniqid();
$entry['PARENT'] = $folder_id;
}
+ /*! \brief Add the application identified by $app_id to folder $folder_id
+ @param String folder_id The UNIQID of the folder where we want to add the new folder.
+ @param Integer app_id The ID of the application which should be added.
+ */
+ function _add_seperator($folder_id)
+ {
+ $all = $this->_get_all_entries();
+ if($folder_id == "BASE"){
+ $folder_id = $this->_get_release_key($this->FAIrelease);
+ }
+
+ if(isset($all[$folder_id])){
+ $new = array();
+ $new['TYPE'] = "SEPERATOR";
+ $new['NAME'] = "SEPERATOR";
+ $new['UNIQID']= uniqid();
+ $new['PARENT']= $folder_id;
+ $new['PARAMETER']= array();
+ $new['STATUS']= "ADDED";
+ $all[$folder_id]['ENTRIES'][] = $new;
+ }
+ }
+
+
/*! \brief Return all entries linear.
@param Boolean $add_tags If TRUE, OPEN/CLOSE Tags will be appended.
@param &Array Start here, Pointer to an array.
*/
- function _get_all_entries($add_tags = FALSE, $skip_release = FALSE, $cur = NULL)
+ function _get_all_entries($add_tags = FALSE, $skip_release = FALSE, &$cur = NULL)
{
$ret = array();
if($cur == NULL){
if(!$add_tags){
$ret[$tmp['UNIQID']] = &$cur[$key];
if(isset($entry['ENTRIES']) && count($entry['ENTRIES'])){
- $ret = array_merge($ret,$this->_get_all_entries($add_tags,$skip_release,&$cur[$key]['ENTRIES']));
+ $ret = array_merge($ret,$this->_get_all_entries($add_tags,$skip_release,$cur[$key]['ENTRIES']));
}
}else{
if($add){
$ret[] = array("TYPE" => "OPEN", "PARENT" => $entry['PARENT']);
- $ret = array_merge($ret,$this->_get_all_entries($add_tags,$skip_release,&$cur[$key]['ENTRIES']));
+ $ret = array_merge($ret,$this->_get_all_entries($add_tags,$skip_release,$cur[$key]['ENTRIES']));
$ret[] = array("TYPE" => "CLOSE" , "PARENT" => $entry['PARENT']);
}
}
$prio = 0;
$Actions = array("Remove" => array(),"Edit" => array() , "Add" => array());
+ $sep_id = 0;
foreach($all as $entry){
$prio ++;
$cur = $entry;
$dn = "";
do{
- if($cur['TYPE'] == "ENTRY"){
+ if($cur['TYPE'] == "SEPERATOR"){
+ $sep_id ++;
+ $dn.= "cn=seperator_".$sep_id.",";
+ }elseif($cur['TYPE'] == "ENTRY"){
$dn.= "cn=".$cur['NAME'].",";
}elseif($cur['TYPE'] == "FOLDER"){
$dn.= "cn=".$cur['NAME'].",";
$cur_dn = $dn.$this->dn;
$attrs = array();
+
switch($entry['TYPE']){
+ case "SEPERATOR" :
+ {
+ $attrs['objectClass'] = array("gotoMenuEntry");
+ $attrs['cn'] = "seperator_".$sep_id;
+ $attrs['gosaApplicationPriority'] = $prio;
+ $attrs['gosaApplicationParameter'] = "*separator*";
+ }
+ break;
case "ENTRY" :
{
- $attrs['objectClass'] = "gotoMenuEntry";
+ $attrs['objectClass'] = array("gotoMenuEntry");
$attrs['cn'] = $entry['NAME'];
$attrs['gosaApplicationPriority'] = $prio;
$attrs['gosaApplicationParameter'] = array();
break;
case "FOLDER" :
{
- $attrs['objectClass'] = "gotoSubmenuEntry";
+ $attrs['objectClass'] = array("gotoSubmenuEntry");
$attrs['cn'] = $entry['NAME'];
$attrs['gosaApplicationPriority'] = $prio;
if($entry['STATUS'] != "ADDED"){
}
break;
case "RELEASE" :
- {
+ {
$attrs['ou'] = $entry['NAME'];
$attrs['objectClass'] = array();
$attrs['objectClass'][] = "top";
}
break;
}
-
+
+ /* Append missing ObjectClasses, ... Tagging */
+ if(isset($entry['LDAP_ATTRS'])){
+ for($i = 0 ; $i < $entry['LDAP_ATTRS']['objectClass']['count']; $i ++){
+ $oc = $entry['LDAP_ATTRS']['objectClass'][$i];
+ if(!in_array($oc,$attrs['objectClass'])){
+ $attrs['objectClass'][] = $oc;
+ }
+ }
+ }
+
if($entry['STATUS'] == "LOADED"){
continue;
}
if($entry['STATUS'] == "REMOVED"){
- $Actions['Remove'][$cur_dn] = $cur_dn;
+ if(isset($entry['DN'])){
+ $Actions['Remove'][$entry['DN']] = $entry['DN'];
+ }else{
+ $Actions['Remove'][$cur_dn] = $cur_dn;
+ }
}
if($entry['STATUS'] == "EDITED"){
$Actions['Edit'][$cur_dn] = $attrs;
$ldap->cat($dn);
if($ldap->count()){
$ldap->rmdir_recursive($dn);
- show_ldap_error($ldap->get_error(), _("Could not save group application settings."));
+ if (!$ldap->success()){
+ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_DEL, get_class()));
+ }
}
}
foreach($Actions['Add'] as $dn => $data){
$ldap->cat($dn);
if(!$ldap->count()){
$ldap->add($data);
- show_ldap_error($ldap->get_error(), _("Could not save group application settings."));
+ if (!$ldap->success()){
+ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_DEL, get_class()));
+ }
}
}
foreach($Actions['Edit'] as $dn => $data){
$ldap->cat($dn);
if($ldap->count()){
$ldap->modify($data);
- show_ldap_error($ldap->get_error(), _("Could not save group application settings."));
+ if (!$ldap->success()){
+ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_DEL, get_class()));
+ }
}
}
+
$this->_load_menu_structure();
}