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 = "  "; + if($this->CopyPasteHandler->isCurrentObjectPastAble()){ + if($this->CopyPasteHandler->isCurrentCutted()){ + $img = "images/cutpaste.png"; + }else{ + $img = "images/copypaste.png"; + } + $Copy_Paste .= " "; + }else{ + $Copy_Paste .= ""._("Can "; + } + }else{ + $Copy_Paste =""; + } + + // Managment $listhead = "
". - "  ". "  ". + "  ". "  ". + "  ". "  ". " ". + $Copy_Paste. "  ". - _("Base")." ". + _("Base")." ". "  ". "
"; - $actions = ""; - $actions.= ""; + /* Add Copy & Paste buttons if copy&paste is enabled + */ + if($this->enableCopyPaste){ + $actions = " "; + $actions.= " "; + $actions.= ""; + $actions.= ""; + }else{ + $actions = ""; + $actions.= ""; + } + // Defining Links $linkopen = "%s"; @@ -390,7 +500,7 @@ name='dep_root' alt='"._("Root")."'> ". array("string" => " ", "attach" => "style='text-align:center;width:20px;'"), array("string" => _("Name of object groups")." / "._("Departments"), "attach" => "style=''"), array("string" => _("Properties"), "attach" => "style='width:136px;'"), - array("string" => _("Actions"), "attach" => "style='width:60px;border-right:0px;text-align:right;'") + array("string" => _("Actions"), "attach" => "style='width:80;border-right:0px;text-align:right;'") )); @@ -416,7 +526,7 @@ name='dep_root' alt='"._("Root")."'> ". $field1 = array("string" => ""._("Department")."", "attach" => "style='text-align:center;width:20px;'"); $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val), "attach" => "style=''"); $field3 = array("string" => " ", "attach" => "style='width:136px;'"); - $field4 = array("string" => " ", "attach" => "style='width:60px;border-right:0px;text-align:right;'"); + $field4 = array("string" => " ", "attach" => "style='width:80;border-right:0px;text-align:right;'"); $divlist->AddEntry(array($field1,$field2,$field3,$field4)); } @@ -430,7 +540,7 @@ name='dep_root' alt='"._("Root")."'> ". $mail = $empty; } - $title = "title='dn : ".$val['dn']."'"; + $title = "title='dn: ".@LDAP::fix($val['dn'])."'"; if(!isset($val['description'][0])){ $desc = ""; @@ -439,8 +549,8 @@ name='dep_root' alt='"._("Root")."'> ". } $field1 = array("string" => ""._("Object group")."", "attach" => "style='text-align:center;width:20px;'"); $field2 = array("string" => sprintf($editlink,$key,($val['cn']['0'].$desc)), "attach" => "style='' ".$title); - $field3 = array("string" => $this->convert_list($val)." ".$mail, "attach" => "style='width:136px;'"); - $field4 = array("string" => preg_replace("/%KEY%/", $key, $actions), "attach" => "style='width:60px;border-right:0px;text-align:right;'"); + $field3 = array("string" => preg_replace("/%KEY/", $key, $this->convert_list($val))." ".$mail, "attach" => "style='width:136px;'"); + $field4 = array("string" => preg_replace("/%KEY%/", $key, $actions), "attach" => "style='width:80;border-right:0px;text-align:right;'"); $divlist->AddEntry(array($field1,$field2,$field3,$field4)); } @@ -461,10 +571,10 @@ name='dep_root' alt='"._("Root")."'> ". $smarty->assign("groups", $divlist->DrawList()); foreach( array("usergroups", "groupgroups", "appgroups", "depgroups", - "servergroups", "wsgroups", "prtgroups", "tcgroups", "fongroups", "regex", "depselect") as $type){ + "servergroups", "wsgroups", "prtgroups", "tcgroups", "fongroups", "regex" ) as $type){ $smarty->assign("$type", $ogroupfilter[$type]); } - + $smarty->assign("CurrentMainBase" , $_SESSION['CurrentMainBase']); $smarty->assign("hint", print_sizelimit_warning()); $smarty->assign("apply", apply_filter()); $smarty->assign("alphabet", generate_alphabet()); @@ -478,15 +588,15 @@ name='dep_root' alt='"._("Root")."'> ". $conv= array( - "U" => array("select_user.png",_("User")), - "G" => array("select_groups.png",_("Group")), - "A" => array("select_application.png",_("Application")), - "D" => array("select_department.png",_("Department")), - "S" => array("select_server.png",_("Server")), - "F" => array("select_phone.png",_("Phone")), - "W" => array("select_workstation.png",_("Workstation")), - "T" => array("select_terminal.png",_("Terminal")), - "P" => array("select_printer.png",_("Printer"))); + "U" => array("select_user.png" ,_("User") , "ogroup"), + "G" => array("select_groups.png" ,_("Group") , "ogroup"), + "A" => array("select_application.png" ,_("Application") , "ogroup"), + "D" => array("select_department.png" ,_("Department") , "ogroup"), + "S" => array("select_server.png" ,_("Server") , "ogroup"), + "F" => array("select_phone.png" ,_("Phone") , "phonequeue"), + "W" => array("select_workstation.png" ,_("Workstation") , "workstartup"), + "T" => array("select_terminal.png" ,_("Terminal") , "termgroup"), + "P" => array("select_printer.png" ,_("Printer") , "ogroup")); /* Assemble picture */ $type= $input['gosaGroupObjects'][0]; @@ -495,22 +605,29 @@ name='dep_root' alt='"._("Root")."'> ". $p1['pic']= $conv[$type[0]][0]; $p1['tit']= $conv[$type[0]][1]; $p1['alt']= $type[0]; + $p1['lnk']= $conv[$type[0]][2]; } else { $p1['pic']= "empty.png"; $p1['tit']= ""; $p1['alt']= ""; + $p1['lnk']= "";//$conv[$type[0]][2]; } + if (isset($type[1])){ $p2['pic']= $conv[$type[1]][0]; $p2['alt']= $type[1]; $p2['tit']= $conv[$type[1]][1]; + $p2['lnk']= $conv[$type[1]][2]; } else { $p2['pic']= "empty.png"; $p2['alt']= ""; $p2['tit']= ""; + $p2['lnk']= ""; //$conv[$type[0]][2]; } - $temp = "".$p1["; - $temp.= "".$p2["; + $temp = ""; + $temp.= ""; return ($temp); } @@ -521,7 +638,7 @@ name='dep_root' alt='"._("Root")."'> ". $ogroupfilter= get_global('ogroupfilter'); /* Set base for all searches */ - $base= $ogroupfilter['depselect']; + $base= $_SESSION['CurrentMainBase']; /* Regex filter? */ if ($ogroupfilter['regex'] != ""){ @@ -571,9 +688,7 @@ name='dep_root' alt='"._("Root")."'> ". $filter= "(&(cn=$regex)(objectClass=gosaGroupOfNames))"; } - $groups = ($this->config->current['GROUPS']); - - $res= get_list($this->ui->subtreeACL, "$filter",FALSE, $groups.",".$base, array("*"), TRUE); + $res= get_list($filter, $this->ui->subtreeACL, get_groups_ou().$base, array("*"), GL_SIZELIMIT ); $this->ogrouplist= $res; ksort ($this->ogrouplist); reset ($this->ogrouplist); @@ -591,26 +706,19 @@ name='dep_root' alt='"._("Root")."'> ". $base2 = preg_replace("/".$peopleOU."/i","",$base); } - $res3 = get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))", - TRUE, $base2, array("ou", "description"), TRUE); - - + /* Get all departments within this subtree */ + $deps= get_list("(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))", $this->ui->subtreeACL, + $base2, array("ou", "description"), GL_SIZELIMIT | GL_CONVERT); - $this->departments= array(); - $tmp = array(); - foreach ($res3 as $value){ - $tmp[strtolower($value['dn']).$value['dn']]=$value; - } - ksort($tmp); - foreach($tmp as $value){ - if(isset($value["description"][0])){ - $this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]"; + $this->departments = array(); + foreach($deps as $value){ + if(isset($value['description'][0])){ + $this->departments[$value['dn']]= get_sub_department($value['dn'])." - [".$value["description"][0]."]"; }else{ - $this->departments[$value['dn']]=convert_department_dn2($value['dn']);//$value["description"][0]; + $this->departments[$value['dn']]= get_sub_department($value['dn']); } } - /* END NEW LIST MANAGMENT - */ + natcasesort($this->departments); $tmp=array(); foreach($this->ogrouplist as $tkey => $val ){ @@ -622,11 +730,7 @@ name='dep_root' alt='"._("Root")."'> ". $this->ogrouplist[]=$val; } reset ($this->ogrouplist); - - - } - } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: