X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=plugins%2Fadmin%2Fapplications%2Fclass_applicationManagement.inc;h=7959e6f6db42b3b12582af949382f2c5d8cbb668;hb=28a907d9f00d28cbb058ac1ac319b1b22cff33ea;hp=2eaa67e2164a5f6e906e5efd81d892148ab12257;hpb=9ec5ed2946e4c80c235b114fdd0b66f940489238;p=gosa.git
diff --git a/plugins/admin/applications/class_applicationManagement.inc b/plugins/admin/applications/class_applicationManagement.inc
index 2eaa67e21..7959e6f6d 100644
--- a/plugins/admin/applications/class_applicationManagement.inc
+++ b/plugins/admin/applications/class_applicationManagement.inc
@@ -22,74 +22,59 @@ require "tabs_application.inc";
class applicationManagement extends plugin
{
/* Definitions */
- var $plHeadline= "Applications";
- var $plDescription= "This does something";
+ var $plHeadline = "Applications";
+ var $plDescription = "This does something";
/* Dialog attributes */
- var $apptabs= NULL;
- var $applications= array();
- var $ui= NULL;
- var $acl= "";
-
- var $CopyPasteHandler ;
-
- var $Release = "";
- var $Releases = array();
-
- var $enableCopyPaste = false;
- var $enableReleaseManagement = false;
-
+ var $apptabs = NULL;
+ var $ui = NULL;
+ var $CopyPasteHandler = NULL;
+ var $DivListApplication = NULL;
+ var $applications = array();
+ var $acl = "";
+ var $enableReleaseManagement = false;
+
+ function IsReleaseManagementActivated()
+ {
+ /* Check if we should enable the release selection */
+ $tmp = search_config($this->config->data,"faiManagement","CLASS");
+ if(!empty($tmp)){
+ return(true);
+ }
+ return(false);
+ }
function applicationManagement ($config, $ui)
{
/* Save configuration for internal use */
- $this->config= $config;
- $this->ui= $ui;
+ $this->config = $config;
+ $this->ui = $ui;
- if( (isset($this->config->data['MAIN']['ENABLECOPYPASTE']))
- &&
- (preg_match("/true/i",$this->config->data['MAIN']['ENABLECOPYPASTE'] ))){
- $this->enableCopyPaste = true;
+ /* Check if copy & paste is activated */
+ if($this->config->boolValueIsTrue("MAIN","ENABLECOPYPASTE")){
+ $this->CopyPasteHandler = new CopyPasteHandler($this->config);
}
- $this->CopyPasteHandler = new CopyPasteHandler($this->config);
+ /* Creat dialog object */
+ $this->DivListApplication = new divListApplication($this->config,$this);
+ if($this->IsReleaseManagementActivated()){
/* Check if we should enable the release selection */
- $tmp = search_config($this->config->data,"faiManagement","CLASS");
- if(!empty($tmp)){
$this->enableReleaseManagement = true;
- }
-
- /* Get global filter config */
- if (!is_global("appfilter")){
- $base= get_base_from_people($ui->dn);
-
- $appfilter= array("regex" => "*" ,
- "release" => "ou=apps,".$base);
- register_global("appfilter", $appfilter);
- }
- $appfilter = get_global("appfilter");
- if(!isset($_SESSION['CurrentMainBase'])){
- $_SESSION['CurrentMainBase'] = get_base_from_people($ui->dn);
+ /* Hide SubSearch checkbox */
+ $this->DivListApplication->DisableCheckBox("SubSearch");
}
-
- $this->Releases = $this->getReleases($_SESSION['CurrentMainBase']);
- asort($this->Releases);
- $this->Release = $appfilter['release'];
}
function getReleases($base)
{
- $dn = "ou=apps,".$base;
-
- $ret = array();
-
- $ret ["ou=apps,".$base] = "/";
+ $ldap = $this->config->get_ldap_link();
+ $dn = "ou=apps,".$base;
+ $ret = array();
+ $ret [$dn] = "/";
- $ldap = $this->config->get_ldap_link();
$ldap->cd($dn);
-
$ldap->search("objectClass=organizationalUnit",array("ou"));
while($attrs = $ldap->fetch()){
@@ -105,6 +90,7 @@ class applicationManagement extends plugin
$ret[$attrs['dn']]= preg_replace("/^\//","",$str);
}
}
+ asort($ret);
return($ret);
}
@@ -113,33 +99,20 @@ class applicationManagement extends plugin
/* Call parent execute */
plugin::execute();
+
+ /****************
+ Variable init
+ ****************/
+
+ /* These vars will be stored if you try to open a locked app,
+ to be able to perform your last requests after showing a warning message */
$_SESSION['LOCK_VARS_TO_USE'] = array("/^act$/","/^id$/","/^appl_edit_/","/^appl_del_/");
- /* Save data */
- $appfilter = get_global("appfilter");
$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
- /* Start for New List Managment */
- if(isset($_GET['act'])&&($_GET['act']=="dep_open")){
- $s_action="open";
- $s_entry = base64_decode($_GET['dep_id']);
- $_SESSION['CurrentMainBase']= "".$this->config->departments[trim($s_entry)];
- }
-
- /* Get posted release */
- if(isset($_POST['select_release'])){
- $r = $_POST['select_release'];
- if((isset($this->Releases[$r])) && ($this->Release != $r)){
- $this->Release = $r;
- $appfilter = get_global("appfilter");
- $appfilter['release'] = $r;
- register_global("appfilter",$appfilter);
- }
- }
-
/* Test Posts */
foreach($_POST as $key => $val){
// Post for delete
@@ -158,14 +131,8 @@ class applicationManagement extends plugin
$s_action="cut";
$s_entry = preg_replace("/^cut_/i","",$key);
// Post for new
- }elseif(preg_match("/^dep_back.*/i",$key)){
- $s_action="back";
}elseif(preg_match("/^appl_new.*/",$key)){
$s_action="new";
- }elseif(preg_match("/^dep_home.*/i",$key)){
- $s_action="home";
- }elseif(preg_match("/^dep_root.*/i",$key)){
- $s_action="root";
}elseif(preg_match("/^editPaste.*/i",$key)){
$s_action="editPaste";
}
@@ -178,100 +145,23 @@ class applicationManagement extends plugin
$s_entry = preg_replace("/_.$/","",$s_entry);
- /* Department changed? */
- if(isset($_POST['CurrentMainBase']) && $_POST['CurrentMainBase']){
- $_SESSION['CurrentMainBase']= $_POST['CurrentMainBase'];
- }
-
- /* Homebutton is posted */
- if($s_action=="home"){
- $_SESSION['CurrentMainBase']=(preg_replace("/^[^,]+,/","",$this->ui->dn));
- $_SESSION['CurrentMainBase']=(preg_replace("/^[^,]+,/","",$_SESSION['CurrentMainBase']));
- }
-
- if($s_action=="root"){
- $_SESSION['CurrentMainBase']=($this->config->current['BASE']);
- }
-
- /* If Backbutton is Posted */
- if($s_action=="back"){
- $base_back = preg_replace("/^[^,]+,/","",$_SESSION['CurrentMainBase']);
- $base_back = convert_department_dn($base_back);
-
- if(isset($this->config->departments[trim($base_back)])){
- $_SESSION['CurrentMainBase']= $this->config->departments[trim($base_back)];
- }else{
- $_SESSION['CurrentMainBase']= $this->config->departments["/"];
- }
- }
-
- if (isset($_POST['regex'])){
- $appfilter['regex']= $_POST['regex'];
- }
- if (isset($_GET['search'])){
- $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*";
- if ($s == "**"){
- $s= "*";
- }
- $appfilter['regex']= $s;
- }
-
- $this->Releases = $this->getReleases($_SESSION['CurrentMainBase']);
- asort($this->Releases);
- if(!isset($this->Releases[$this->Release])){
- $this->Release = key($this->Releases);
- $appfilter['release'] = $this->Release;
- register_global("appfilter",$appfilter);
- }
-
- register_global("appfilter", $appfilter);
-
- /* Check sorting variable */
- $this->reload();
- $smarty= get_smarty();
-
- /* Check for exeeded sizelimit */
- if (($message= check_sizelimit()) != ""){
- return($message);
- }
+ /****************
+ Copy & Paste handling
+ ****************/
/* Only perform copy / paste if it is enabled
*/
- if($this->enableCopyPaste){
-
- /* Paste copied/cutted object in here
- */
- if(($s_action == "editPaste") || ($this->CopyPasteHandler->stillOpen())){
- $this->CopyPasteHandler->save_object();
- $this->CopyPasteHandler->SetVar("base", $_SESSION['CurrentMainBase']);
-
- if($str = $this->CopyPasteHandler->execute()) {
- return($str);
- }
- }
-
-
- /* Copy current object to CopyHandler
- */
- if($s_action == "copy"){
- $this->CopyPasteHandler->Clear();
- $dn = $this->applications[$s_entry]['dn'];
- $obj = new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $dn);
- $objNew = new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], "new");
- $this->CopyPasteHandler->Copy($obj,$objNew);
- }
+ if($this->CopyPasteHandler){
+ if($str = $this->copyPasteHandling($s_action,$s_entry)){
+ return($str);
+ };
+ }
- /* Copy current object to CopyHandler
- */
- if($s_action == "cut"){
- $this->CopyPasteHandler->Clear();
- $dn = $this->applications[$s_entry]['dn'];
- $obj = new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $dn);
- $this->CopyPasteHandler->Cut($obj);
- }
- }
+ /****************
+ Create a new app
+ ****************/
/* New application? */
if ($s_action=="new"){
@@ -286,6 +176,11 @@ class applicationManagement extends plugin
$this->apptabs->set_acl(array(':all'));
}
+
+ /****************
+ Edit entry canceled
+ ****************/
+
/* Cancel dialogs */
if (isset($_POST['edit_cancel']) || isset($_POST['password_cancel'])){
del_lock ($this->apptabs->dn);
@@ -294,6 +189,11 @@ class applicationManagement extends plugin
unset ($_SESSION['objectinfo']);
}
+
+ /****************
+ Edit entry finished
+ ****************/
+
/* Finish apps edit is triggered by the tabulator dialog, so
the user wants to save edited data. Check and save at this
point. */
@@ -308,7 +208,7 @@ class applicationManagement extends plugin
if (count($message) == 0){
/* Save data data to ldap */
- $this->apptabs->set_release($this->Release);
+ $this->apptabs->set_release($this->DivListApplication->selectedRelease);
$this->apptabs->save();
gosa_log ("Application object'".$this->dn."' has been saved");
@@ -317,10 +217,6 @@ class applicationManagement extends plugin
if ($this->dn != "new"){
del_lock ($this->dn);
}
-
- /* There's no page reload so we have to read new apps at
- this point. */
- $this->reload ();
unset ($this->apptabs);
$this->apptabs= NULL;
unset ($_SESSION['objectinfo']);
@@ -331,12 +227,24 @@ class applicationManagement extends plugin
}
}
+
+ /****************
+ Edit entry
+ ****************/
+
/* User wants to edit data? */
if (($s_action=="edit") && (!isset($this->apptabs->config))){
/* Get 'dn' from posted 'applist', must be unique */
$this->dn= $this->applications[$s_entry]['dn'];
+ /* Get faistate to check if this applications is frezzed.
+ Freezed applications can't be modified anyway */
+ $state = "";
+ if(isset($this->applications[$s_entry]['FAIstate'])){
+ $state = $this->applications[$s_entry]['FAIstate'][0];
+ }
+
/* Check locking, save current plugin in 'back_plugin', so
the dialog knows where to return. */
if (($user= get_lock($this->dn)) != ""){
@@ -351,12 +259,22 @@ class applicationManagement extends plugin
$acl= get_permissions ($this->dn, $this->ui->subtreeACL);
/* Register apptabs to trigger edit dialog */
- $this->apptabs= new apptabs($this->config,
- $this->config->data['TABS']['APPSTABS'], $this->dn);
- $this->apptabs->set_acl($acl);
+ $this->apptabs= new apptabs($this->config,$this->config->data['TABS']['APPSTABS'], $this->dn);
+
+ /* If this is a freeze assign acl none */
+ if(preg_match("/freeze/",$state)){
+ $this->apptabs->set_acl(array());
+ }else{
+ $this->apptabs->set_acl($acl);
+ }
$_SESSION['objectinfo']= $this->dn;
}
+
+ /****************
+ Delete app
+ ****************/
+
/* Remove user was requested */
if ($s_action == "del"){
@@ -388,6 +306,11 @@ class applicationManagement extends plugin
}
}
+
+ /****************
+ Delete app confirmed
+ ****************/
+
/* Confirmation for deletion has been passed. Group should be deleted. */
if (isset($_POST['delete_app_confirm'])){
@@ -404,8 +327,6 @@ class applicationManagement extends plugin
unset ($this->apptabs);
$this->apptabs= NULL;
- /* Group list has changed, reload it. */
- $this->reload ();
} else {
/* Normally this shouldn't be reached, send some extra
@@ -419,6 +340,10 @@ class applicationManagement extends plugin
}
+ /****************
+ Delete app canceled
+ ****************/
+
/* Delete application canceled? */
if (isset($_POST['delete_cancel'])){
del_lock ($this->dn);
@@ -440,222 +365,60 @@ class applicationManagement extends plugin
return ($display);
}
- /* Show main page */
-
- /* Prepare departments */
- $options= "";
- foreach ($this->config->idepartments as $key => $value){
- if ($_SESSION['CurrentMainBase']== $key){
- $options.= "";
- } else {
- $options.= "";
- }
- }
-
- if($this->enableCopyPaste){
- $Copy_Paste = " ";
- if($this->CopyPasteHandler->isCurrentObjectPastAble()){
+ /****************
+ Dialog display
+ ****************/
- if($this->CopyPasteHandler->isCurrentCutted()){
- $img = "images/cutpaste.png";
- }else{
- $img = "images/copypaste.png";
- }
-
- $Copy_Paste .= " ";
- }else{
- $Copy_Paste .= "
";
- }
- }else{
- $Copy_Paste ="";
- }
-
- // Managment
- $listhead = "