X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fogroups%2Fclass_ogroupManagement.inc;h=a626537cdc8cac74bd5e24ccf2e7b6d3fddb3e46;hb=6c70dda0011722186c13040fe36eed3845d80209;hp=d848dd856069dc554ec9a0cf7dba60fe7588f8e4;hpb=ce84536664bde5801ec480eeff050df2ba90a045;p=gosa.git diff --git a/plugins/admin/ogroups/class_ogroupManagement.inc b/plugins/admin/ogroups/class_ogroupManagement.inc index d848dd856..a626537cd 100644 --- a/plugins/admin/ogroups/class_ogroupManagement.inc +++ b/plugins/admin/ogroups/class_ogroupManagement.inc @@ -31,12 +31,25 @@ class ogroupManagement extends plugin var $obtypes= array(); var $ogroup; + var $CopyPasteHandler ; + + var $enableCopyPaste = false; + + function ogroupManagement ($config, $dn= NULL) { /* Include config object */ $this->config= $config; $this->ui= get_userinfo(); + /* Copy & Paste enabled ? + */ + if((isset($this->config->data['MAIN']['ENABLECOPYPASTE']))&&(preg_match("/true/i",$this->config->data['MAIN']['ENABLECOPYPASTE'] ))){ + $this->enableCopyPaste = true; + } + + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + /* Fill translation array */ $this->obtypes= array( "posixAccount" => _("UNIX accounts"), "posixGroup" => _("Groups"), @@ -62,16 +75,22 @@ class ogroupManagement extends plugin "prtgroups" => "checked", "tcgroups" => "checked", "fongroups" => "checked", - "depselect" => $base, "regex" => "*"); register_global("ogroupfilter", $ogroupfilter); } + if(!isset($_SESSION['CurrentMainBase'])){ + $ui= get_userinfo(); + $base= get_base_from_people($ui->dn); + $_SESSION['CurrentMainBase'] = $base; + } } function execute() { - /* Call parent execute */ - plugin::execute(); + /* Call parent execute */ + plugin::execute(); + + $_SESSION['LOCK_VARS_TO_USE'] = array("/^act$/","/^id$/","/^group_edit_/","/^group_del_/"); /* Prepare template */ $smarty= get_smarty(); @@ -80,11 +99,15 @@ class ogroupManagement extends plugin $s_action = ""; $s_entry = ""; - foreach( array("depselect", "regex") as $type){ + foreach( array("regex") as $type){ if (isset($_POST[$type])){ $ogroupfilter[$type]= $_POST[$type]; } } + if(isset($_POST['CurrentMainBase'])){ + $_SESSION['CurrentMainBase'] = $_POST['CurrentMainBase']; + } + if (isset($_POST['Ogroup_dialog_posted'])){ foreach( array("usergroups", "groupgroups", "appgroups", "depgroups", "servergroups", "wsgroups", "prtgroups", "tcgroups", "fongroups") as $type){ @@ -107,65 +130,78 @@ class ogroupManagement extends plugin /* Test Posts */ foreach($_POST as $key => $val){ // Post for delete - if(preg_match("/group_del.*/",$key)){ + if(preg_match("/^group_del.*/",$key)){ $s_action = "del"; - $s_entry = preg_replace("/group_".$s_action."_/i","",$key); + $s_entry = preg_replace("/^group_".$s_action."_/i","",$key); // Post for edit - }elseif(preg_match("/group_edit_.*/",$key)){ + }elseif(preg_match("/^group_edit_.*/",$key)){ $s_action="edit"; - $s_entry = preg_replace("/group_".$s_action."_/i","",$key); + $s_entry = preg_replace("/^group_".$s_action."_/i","",$key); // Post for new - }elseif(preg_match("/dep_back.*/i",$key)){ + }elseif(preg_match("/^dep_back.*/i",$key)){ $s_action="back"; - }elseif(preg_match("/group_new.*/",$key)){ + }elseif(preg_match("/^group_new.*/",$key)){ $s_action="new"; - }elseif(preg_match("/dep_home.*/i",$key)){ + }elseif(preg_match("/^dep_home.*/i",$key)){ $s_action="home"; - }elseif(preg_match("/group_tplnew.*/i",$key)){ + }elseif(preg_match("/^group_tplnew.*/i",$key)){ $s_action="new_tpl"; - }elseif(preg_match("/group_chgpw.*/i",$key)){ + }elseif(preg_match("/^group_chgpw.*/i",$key)){ $s_action="change_pw"; $s_entry = preg_replace("/group_chgpw_/i","",$key); - }elseif(preg_match("/dep_root.*/i",$key)){ + }elseif(preg_match("/^dep_root.*/i",$key)){ $s_action="root"; + }elseif(preg_match("/^editPaste.*/i",$key)){ + $s_action="editPaste"; + }elseif(preg_match("/^copy_.*/",$key)){ + $s_action="copy"; + $s_entry = preg_replace("/^copy_/i","",$key); + }elseif(preg_match("/^cut_.*/",$key)){ + $s_action="cut"; + $s_entry = preg_replace("/^cut_/i","",$key); + }elseif(preg_match("/_group_edit_/",$key)){ + $type = preg_replace("/_group_edit_.*$/","",$key); + $s_action="edit"; + $s_entry = preg_replace("/".$type."_group_edit_/i","",$key); + $_POST['arg'] = $type; } } $s_entry = preg_replace("/_.$/","",$s_entry); - + /* Department changed? */ - if(isset($_POST['depselect']) && $_POST['depselect']){ - $ogroupfilter['depselect']= $_POST['depselect']; + if(isset($_POST['CurrentMainBase']) && $_POST['CurrentMainBase']){ + $_SESSION['CurrentMainBase'] = $_POST['CurrentMainBase']; } /* Start for New List Managment */ if(isset($_GET['act'])&&($_GET['act']=="dep_open")){ $s_action="open"; $s_entry = base64_decode($_GET['dep_id']); - $ogroupfilter['depselect']= "".$this->config->departments[trim($s_entry)]; + $_SESSION['CurrentMainBase'] = "".$this->config->departments[trim($s_entry)]; } /* If Backbutton is Posted */ if($s_action=="back"){ - $base_back = preg_replace("/^[^,]+,/","",$ogroupfilter['depselect']); + $base_back = preg_replace("/^[^,]+,/","", $_SESSION['CurrentMainBase']); $base_back = convert_department_dn($base_back); if(isset($this->config->departments[trim($base_back)])){ - $ogroupfilter['depselect']= $this->config->departments[trim($base_back)]; + $_SESSION['CurrentMainBase']= $this->config->departments[trim($base_back)]; }else{ - $ogroupfilter['depselect']= $this->config->departments["/"]; + $_SESSION['CurrentMainBase']= $this->config->departments["/"]; } register_global("ogroupfilter", $ogroupfilter); } /* Homebutton is posted */ if($s_action=="home"){ - $ogroupfilter['depselect']=(preg_replace("/^[^,]+,/","",$this->ui->dn)); - $ogroupfilter['depselect']=(preg_replace("/^[^,]+,/","",$ogroupfilter['depselect'])); + $_SESSION['CurrentMainBase']=(preg_replace("/^[^,]+,/","",$this->ui->dn)); + $_SESSION['CurrentMainBase']=(preg_replace("/^[^,]+,/","", $_SESSION['CurrentMainBase'])); } /* root posted */ if($s_action=="root"){ - $ogroupfilter['depselect']=($this->config->current['BASE']); + $_SESSION['CurrentMainBase']=($this->config->current['BASE']); } // Edit if @@ -183,6 +219,40 @@ class ogroupManagement extends plugin return($message); } + /* 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']); + return($this->CopyPasteHandler->execute()); + } + + + /* Copy current object to CopyHandler + */ + if($s_action == "copy"){ + $this->CopyPasteHandler->Clear(); + $dn = $this->ogrouplist[$s_entry]['dn']; + $obj = new ogrouptabs($this->config, $this->config->data['TABS']['OGROUPTABS'], $dn); + $objNew = new ogrouptabs($this->config, $this->config->data['TABS']['OGROUPTABS'], "new"); + $this->CopyPasteHandler->Copy($obj,$objNew); + } + + + /* Copy current object to CopyHandler + */ + if($s_action == "cut"){ + $this->CopyPasteHandler->Clear(); + $dn = $this->ogrouplist[$s_entry]['dn']; + $obj = new ogrouptabs($this->config, $this->config->data['TABS']['OGROUPTABS'], $dn); + $this->CopyPasteHandler->Cut($obj); + } + } + /* New group? */ if ($s_action=="new"){ @@ -214,7 +284,7 @@ class ogroupManagement extends plugin /* Lock the current entry, so nobody will edit it during deletion */ add_lock ($this->dn, $this->ui->dn); - $smarty->assign("info", sprintf(_("You're about to delete the object group '%s'."), LDAP::fix($this->dn))); + $smarty->assign("info", sprintf(_("You're about to delete the object group '%s'."), @LDAP::fix($this->dn))); return($smarty->fetch(get_template_path('remove.tpl', TRUE))); } else { @@ -262,7 +332,7 @@ class ogroupManagement extends plugin unset($_SESSION['objectinfo']); } - if ($s_action=="edit"){ + if (($s_action=="edit") && (! isset($this->ogroup->config)) ){ /* Get 'dn' from posted 'uid', must be unique */ $this->dn= $this->ogrouplist[$s_entry]['dn']; @@ -288,7 +358,7 @@ class ogroupManagement extends plugin } /* Finish button has been pressed */ - if (isset($_POST['edit_finish'])){ + if ((isset($_POST['edit_finish'])) && (isset($this->ogroup->config)) ){ /* Check tabs, will feed message array */ $message= $this->ogroup->check(); @@ -329,13 +399,13 @@ class ogroupManagement extends plugin } /* Show dialog if object is present */ - if ($this->ogroup){ + if (isset($this->ogroup->config)){ $display= $this->ogroup->execute(); /* Don't show buttons if tab dialog requests this */ if (!$this->ogroup->by_object[$this->ogroup->current]->dialog){ $display.= "
\n"; - $display.= "\n"; + $display.= "\n"; $display.= " \n"; $display.= "\n"; $display.= "
"; @@ -346,30 +416,70 @@ class ogroupManagement extends plugin /* Prepare departments */ $options= ""; foreach ($this->config->idepartments as $key => $value){ - if ($ogroupfilter['depselect'] == $key){ + if ($_SESSION['CurrentMainBase'] == $key){ $options.= ""; } else { $options.= ""; } } + + /* Create paste icon + * This icon is only displayed if copy & paste is enabled + */ + if($this->enableCopyPaste){ + $Copy_Paste = "