From: cajus Date: Fri, 18 Apr 2008 13:52:06 +0000 (+0000) Subject: Moved base select dialog to where it belongs X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=234179d7aba1e62e75b172070674cdc02f713236;p=gosa.git Moved base select dialog to where it belongs git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@10565 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/gosa-core/include/class_baseSelectDialog.inc b/gosa-core/include/class_baseSelectDialog.inc new file mode 100644 index 000000000..c2476640b --- /dev/null +++ b/gosa-core/include/class_baseSelectDialog.inc @@ -0,0 +1,217 @@ +parent = $parent; + + $this->selectedBase = $config->current['BASE']; + $this->allowedBases = $onlyAllowThisBases; + + $this->SetTitle("Base"); + $this->SetSummary(_("Choose a base")); + $this->SetListHeader("
". + "  ". + "  ". + "  ". + "  ". + "
"); + + $this->SetInformation(_("Step in the prefered tree and click save to use the current subtree as base. Or click the image at the end of each entry.")); + + $this->EnableAplhabet (true); + $this->EnableCloseButton(true); + $this->EnableSaveButton (true); + + $this->SetSaveButtonString(_("Use")); + $this->SetCloseButtonString(_("Cancel")); + + $this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>_("Base"))); + $this->AddHeader(array("string"=>_("Action"),"attach"=>"style='width:50px;border-right:0px;'")); + + /* Text ,Value ,Name ,Is selected */ +// $this->AddCheckBox("Doesnothing","servers","Doesnothing",true); + + /* Name ,Text ,Default , Connect with alphabet */ + $this->AddRegex ("base_selection_regex",_("Filter entries with this syntax"),"*" , true); + } + + function execute() + { + $this->setEntries(); + return($this->Draw()); + } + + function setEntries() + { + $this->ClearElementsList(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->selectedBase); + $ldap->ls("(&(objectClass=gosaDepartment) + (|(ou=".$this->base_selection_regex.") + (cn=".$this->base_selection_regex.") + (description=".$this->base_selection_regex.")))", + $this->selectedBase,array("ou","description","cn")); + + $link = "%s"; + + $base_back = preg_replace("/^[^,]+,/","",$this->selectedBase); + $base_back = convert_department_dn($base_back); + + /* Add departments, to be able to switch into them + */ + while($attrs = $ldap->fetch()){ + + $key = $attrs['dn'] ; + $val = $attrs['ou'][0]; + + if(count($this->allowedBases) != 0){ + if(!isset($this->allowedBases[$key])){ + continue; + break; + } + } + + /* Append description */ + if(isset($attrs['description'][0])){ + $val.=" [".$attrs['description'][0]."]"; + } + + /* Add missing entries ... */ + if(!isset($this->config->departments[trim($key)])){ + $this->config->departments[trim($key)]=""; + } + + /* check if this department contains sub-departments + Display different image in this case + */ + $non_empty=""; + $keys= str_replace("/","\/",$key); + foreach($this->config->departments as $keyd ){ + if(preg_match("/,".$keys."/",$keyd)){ + $non_empty="full"; + } + } + + /* Add to divlist */ + $field1 = array("string" => "department", + "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($link,base64_encode($key),$val), "attach" => "style=''"); + $field3 = array("string" => sprintf(" ",base64_encode($key)), + "attach" => "style='width:50px;border-right:0px;text-align:right;'"); + $this->AddElement(array($field1,$field2,$field3)); + } + } + + function Save() + { + MultiSelectWindow :: Save(); + $this->BaseToUse = $this->selectedBase; + } + + function isSelected() + { + return($this->BaseToUse); + } + + function setCurrentBase($base) + { + $this->selectedBase = $base; + } + + function save_object() + { + /* Save current base */ + $old_base = $this->selectedBase; + + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow::save_object(); + + if(isset($_GET['open_dep'])){ + $this->selectedBase = base64_decode($_GET['open_dep']); + } + + $s_action =""; + foreach($_POST as $key => $value){ + if(preg_match("/^dep_back.*/i",$key)){ + $s_action="back"; + }elseif(preg_match("/^dep_root.*/",$key)){ + $s_action="root"; + }elseif(preg_match("/^dep_home.*/i",$key)){ + $s_action="home"; + }elseif(preg_match("/^usebase_/",$key)){ + $tmp = preg_replace("/^usebase_/","",$key); + $tmp = preg_replace("/_.*$/","",$tmp); + $tmp = base64_decode($tmp); + $this->BaseToUse = $tmp; + } + } + + $ui= get_userinfo(); + /* Homebutton is posted */ + if($s_action=="home"){ + $this->selectedBase=(preg_replace("/^[^,]+,/","",$ui->dn)); + $this->selectedBase=(preg_replace("/^[^,]+,/","",$this->selectedBase)); + } + + /* back to the roots ^^ */ + if($s_action=="root"){ + $this->selectedBase=($this->config->current['BASE']); + } + + /* If Backbutton is Posted */ + if($s_action=="back"){ + $base_back = preg_replace("/^[^,]+,/","",$this->selectedBase); + $base_back = convert_department_dn($base_back); + + if(isset($this->config->departments[trim($base_back)])){ + $this->selectedBase= $this->config->departments[trim($base_back)]; + }else{ + $this->selectedBase= $this->config->departments["/"]; + } + } + + /* Restore old base, if selected base is not allowed */ + if(count($this->allowedBases) && !isset($this->allowedBases[$this->selectedBase])){ + $this->selectedBase = $old_base; + } + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/gosa-plugins/systems/admin/systems/class_baseSelectDialog.inc b/gosa-plugins/systems/admin/systems/class_baseSelectDialog.inc deleted file mode 100644 index c2476640b..000000000 --- a/gosa-plugins/systems/admin/systems/class_baseSelectDialog.inc +++ /dev/null @@ -1,217 +0,0 @@ -parent = $parent; - - $this->selectedBase = $config->current['BASE']; - $this->allowedBases = $onlyAllowThisBases; - - $this->SetTitle("Base"); - $this->SetSummary(_("Choose a base")); - $this->SetListHeader("
". - "  ". - "  ". - "  ". - "  ". - "
"); - - $this->SetInformation(_("Step in the prefered tree and click save to use the current subtree as base. Or click the image at the end of each entry.")); - - $this->EnableAplhabet (true); - $this->EnableCloseButton(true); - $this->EnableSaveButton (true); - - $this->SetSaveButtonString(_("Use")); - $this->SetCloseButtonString(_("Cancel")); - - $this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'")); - $this->AddHeader(array("string"=>_("Base"))); - $this->AddHeader(array("string"=>_("Action"),"attach"=>"style='width:50px;border-right:0px;'")); - - /* Text ,Value ,Name ,Is selected */ -// $this->AddCheckBox("Doesnothing","servers","Doesnothing",true); - - /* Name ,Text ,Default , Connect with alphabet */ - $this->AddRegex ("base_selection_regex",_("Filter entries with this syntax"),"*" , true); - } - - function execute() - { - $this->setEntries(); - return($this->Draw()); - } - - function setEntries() - { - $this->ClearElementsList(); - $ldap = $this->config->get_ldap_link(); - $ldap->cd($this->selectedBase); - $ldap->ls("(&(objectClass=gosaDepartment) - (|(ou=".$this->base_selection_regex.") - (cn=".$this->base_selection_regex.") - (description=".$this->base_selection_regex.")))", - $this->selectedBase,array("ou","description","cn")); - - $link = "%s"; - - $base_back = preg_replace("/^[^,]+,/","",$this->selectedBase); - $base_back = convert_department_dn($base_back); - - /* Add departments, to be able to switch into them - */ - while($attrs = $ldap->fetch()){ - - $key = $attrs['dn'] ; - $val = $attrs['ou'][0]; - - if(count($this->allowedBases) != 0){ - if(!isset($this->allowedBases[$key])){ - continue; - break; - } - } - - /* Append description */ - if(isset($attrs['description'][0])){ - $val.=" [".$attrs['description'][0]."]"; - } - - /* Add missing entries ... */ - if(!isset($this->config->departments[trim($key)])){ - $this->config->departments[trim($key)]=""; - } - - /* check if this department contains sub-departments - Display different image in this case - */ - $non_empty=""; - $keys= str_replace("/","\/",$key); - foreach($this->config->departments as $keyd ){ - if(preg_match("/,".$keys."/",$keyd)){ - $non_empty="full"; - } - } - - /* Add to divlist */ - $field1 = array("string" => "department", - "attach" => "style='text-align:center;width:20px;'"); - $field2 = array("string" => sprintf($link,base64_encode($key),$val), "attach" => "style=''"); - $field3 = array("string" => sprintf(" ",base64_encode($key)), - "attach" => "style='width:50px;border-right:0px;text-align:right;'"); - $this->AddElement(array($field1,$field2,$field3)); - } - } - - function Save() - { - MultiSelectWindow :: Save(); - $this->BaseToUse = $this->selectedBase; - } - - function isSelected() - { - return($this->BaseToUse); - } - - function setCurrentBase($base) - { - $this->selectedBase = $base; - } - - function save_object() - { - /* Save current base */ - $old_base = $this->selectedBase; - - /* Save automatic created POSTs like regex, checkboxes */ - MultiSelectWindow::save_object(); - - if(isset($_GET['open_dep'])){ - $this->selectedBase = base64_decode($_GET['open_dep']); - } - - $s_action =""; - foreach($_POST as $key => $value){ - if(preg_match("/^dep_back.*/i",$key)){ - $s_action="back"; - }elseif(preg_match("/^dep_root.*/",$key)){ - $s_action="root"; - }elseif(preg_match("/^dep_home.*/i",$key)){ - $s_action="home"; - }elseif(preg_match("/^usebase_/",$key)){ - $tmp = preg_replace("/^usebase_/","",$key); - $tmp = preg_replace("/_.*$/","",$tmp); - $tmp = base64_decode($tmp); - $this->BaseToUse = $tmp; - } - } - - $ui= get_userinfo(); - /* Homebutton is posted */ - if($s_action=="home"){ - $this->selectedBase=(preg_replace("/^[^,]+,/","",$ui->dn)); - $this->selectedBase=(preg_replace("/^[^,]+,/","",$this->selectedBase)); - } - - /* back to the roots ^^ */ - if($s_action=="root"){ - $this->selectedBase=($this->config->current['BASE']); - } - - /* If Backbutton is Posted */ - if($s_action=="back"){ - $base_back = preg_replace("/^[^,]+,/","",$this->selectedBase); - $base_back = convert_department_dn($base_back); - - if(isset($this->config->departments[trim($base_back)])){ - $this->selectedBase= $this->config->departments[trim($base_back)]; - }else{ - $this->selectedBase= $this->config->departments["/"]; - } - } - - /* Restore old base, if selected base is not allowed */ - if(count($this->allowedBases) && !isset($this->allowedBases[$this->selectedBase])){ - $this->selectedBase = $old_base; - } - } -} -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: -?>