diff --git a/plugins/admin/applications/class_applicationManagement.inc b/plugins/admin/applications/class_applicationManagement.inc
index 9df2492d1c16c1a278de64e7233f92f8222ec31a..801ca3fe6268847ea647622a53ecf8b47b7f3b13 100644 (file)
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 */
/* 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;
/* Hide SubSearch checkbox */
$ldap = $this->config->get_ldap_link();
$dn = "ou=apps,".$base;
$ret = array();
- $ret [$base] = "/";
+ $ret ["ou=apps,".$base] = "/";
$ldap->cd($dn);
$ldap->search("objectClass=organizationalUnit",array("ou"));
$this->dn= "new";
/* Create new usertab object */
- $this->apptabs= new apptabs($this->config,
- $this->config->data['TABS']['APPSTABS'], $this->dn);
- $this->apptabs->set_acl(array(':all'));
+ $this->apptabs= new apptabs($this->config,$this->config->data['TABS']['APPSTABS'], $this->dn,"application");
+ $this->apptabs->set_acl_base($this->DivListApplication->selectedBase);
}
/* Finish apps 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($this->apptabs->config))){
+ if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply']) ) && (isset($this->apptabs->config))){
/* Check tabs, will feed message array */
$this->apptabs->last= $this->apptabs->current;
$this->apptabs->save();
gosa_log ("Application object'".$this->dn."' has been saved");
- /* Application has been saved successfully, remove lock from
- LDAP. */
- if ($this->dn != "new"){
- del_lock ($this->dn);
+ if (!isset($_POST['edit_apply'])){
+ /* Application has been saved successfully, remove lock from
+ LDAP. */
+ if ($this->dn != "new"){
+ del_lock ($this->dn);
+ }
+ unset ($this->apptabs);
+ $this->apptabs= NULL;
+ unset ($_SESSION['objectinfo']);
}
- unset ($this->apptabs);
- $this->apptabs= NULL;
- unset ($_SESSION['objectinfo']);
} else {
/* Ok. There seem to be errors regarding to the tab data,
show message and continue as usual. */
above dialog */
add_lock ($this->dn, $this->ui->dn);
- /* Set up the users ACL's for this 'dn' */
- $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,"application");
+ $this->apptabs->set_acl_base($this->dn);
$_SESSION['objectinfo']= $this->dn;
}
/* Load permissions for selected 'dn' and check if
we're allowed to remove this 'dn' */
- $acl= get_permissions ($this->dn, $this->ui->subtreeACL);
- $this->acl= get_module_permission($acl, "application", $this->dn);
- if (chkacl($this->acl, "delete") == ""){
+ $ui = get_userinfo();
+ $acl = $ui->get_permissions($this->dn ,"application/application");
+ 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)) != ""){
/* Some nice guy may send this as POST, so we've to check
for the permissions again. */
- if (chkacl($this->acl, "delete") == ""){
+ $ui = get_userinfo();
+ $acl = $ui->get_permissions($this->dn ,"application/application");
+
+ if(preg_match("/d/",$acl)){
/* Delete request is permitted, perform LDAP action */
- $this->apptabs= new apptabs($this->config,
- $this->config->data['TABS']['APPSTABS'], $this->dn);
- $this->apptabs->set_acl(array($this->acl));
+ $this->apptabs= new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $this->dn,"application");
+ $this->apptabs->set_acl_base($this->dn);
$this->apptabs->delete ();
gosa_log ("Application object'".$this->dn."' has been removed");
unset ($this->apptabs);
/* Don't show buttons if tab dialog requests this */
if (!$this->apptabs->by_object[$this->apptabs->current]->dialog){
$display.= "<p style=\"text-align:right\">\n";
- $display.= "<input type=\"submit\" name=\"edit_finish\" value=\""._("Save")."\">\n";
+ $display.= "<input type=\"submit\" name=\"edit_finish\" style=\"width:80px\" value=\""._("Ok")."\">\n";
$display.= " \n";
+ if ($this->dn != "new"){
+ $display.= "<input type=submit name=\"edit_apply\" value=\""._("Apply")."\">\n";
+ $display.= " \n";
+ }
$display.= "<input type=\"submit\" name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
$display.= "</p>";
}
Dialog display
****************/
+ /* Check if there is a snapshot dialog open */
+ $base = $this->DivListApplication->selectedBase;
+ if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases($base))){
+ return($str);
+ }
+
/* Display dialog with system list */
+ $this->DivListApplication->parent = $this;
$this->DivListApplication->execute();
$this->DivListApplication->AddDepartments($this->DivListApplication->selectedBase);
$this->reload();
}
+ /* Return departments, that will be included within snapshot detection */
+ function get_used_snapshot_bases(){
+ if($this->DivListApplication->selectedRelease == "main"){
+ return(array($this->DivListApplication->selectedBase));
+ }else{
+ return(array($this->DivListApplication->selectedRelease));
+ }
+ }
+
+
function reload()
{
$this->applications= array();
$Releases = $this->getReleases($base);
if(!$this->enableReleaseManagement){
- $use_base = $base;
+ $use_base = "ou=apps,".$base;
}else{
if(isset($Releases[$release])){
$use_base = $release;
}else{
- $use_base = $base;
+ $use_base = "ou=apps,".$base;
}
}
$Flags |= GL_SUBSEARCH;
}
- $res= get_list($Filter, $this->ui->subtreeACL,$use_base, array("cn","description","dn","objectClass"), $Flags);
+ $res= get_list($Filter, "application", $use_base, array("cn","description","dn","objectClass"), $Flags);
foreach ($res as $val){
$tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
}
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);
+
+ /* Check Acls */
+ $acl_all= $this->ui->has_complete_category_acls($dn,"application");
+ if(preg_match("/(c.*w|w.*c)/",$acl_all)){
+ $obj = new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $dn, "application");
+ $objNew = new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], "new","application");
+ $this->CopyPasteHandler->Copy($obj,$objNew);
+ }
}
/* 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);
+
+ /* Check Acls */
+ $acl_all= $this->ui->has_complete_category_acls($dn,"application");
+ if(preg_match("/(c.*w|w.*c)/",$acl_all)){
+ $obj = new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $dn, "application");
+ $this->CopyPasteHandler->Cut($obj);
+ }
}
}
function check() {}
function adapt_from_template($dn) {}
function password_change_needed() {}
- function show_header($button_text, $text, $disabled= FALSE) {}
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>