From 603af7df015e9ae0f0ba0eeb7194dfac6a0e8acb Mon Sep 17 00:00:00 2001 From: hickert Date: Thu, 21 Jan 2010 13:37:59 +0000 Subject: [PATCH] Updated select list for systems git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@15234 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../admin/sudo/class_target_list_systems.inc | 299 +++--------------- .../sudo/admin/sudo/selectSystem-filter.tpl | 38 +++ .../sudo/admin/sudo/selectSystem-filter.xml | 64 ++++ .../sudo/admin/sudo/selectSystem-list.tpl | 31 ++ .../sudo/admin/sudo/selectSystem-list.xml | 79 +++++ 5 files changed, 249 insertions(+), 262 deletions(-) create mode 100644 gosa-plugins/sudo/admin/sudo/selectSystem-filter.tpl create mode 100644 gosa-plugins/sudo/admin/sudo/selectSystem-filter.xml create mode 100644 gosa-plugins/sudo/admin/sudo/selectSystem-list.tpl create mode 100644 gosa-plugins/sudo/admin/sudo/selectSystem-list.xml diff --git a/gosa-plugins/sudo/admin/sudo/class_target_list_systems.inc b/gosa-plugins/sudo/admin/sudo/class_target_list_systems.inc index 81c9de50a..44d5af18b 100644 --- a/gosa-plugins/sudo/admin/sudo/class_target_list_systems.inc +++ b/gosa-plugins/sudo/admin/sudo/class_target_list_systems.inc @@ -20,283 +20,58 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class target_list_systems extends MultiSelectWindow +class target_list_systems extends management { - public $config; - protected $list =array(); - private $Targets_used =array(); + // Tab definition + protected $skipFooter = TRUE; + protected $skipHeader = TRUE; - /* Regex */ - protected $Regex = "*"; - - /* CheckBoxes, to change default values modify $this->AddCheckBox */ - protected $servers ; - protected $workstations ; - protected $terminals ; - - - /* Subsearch checkbox */ - protected $SubSearch ; - protected $parent ; - public $ui ; - - - function target_list_systems(&$config,$Targets_used) - { - MultiSelectWindow::MultiSelectWindow($config, "Targetselection", array("server","terminal","workstation")); - - $this->Targets_used = $Targets_used; - - $this->SetInformation( _("Select the target objects for your scheduled action.")); - $this->SetTitle( _("Available systems")); - $this->SetSummary( _("Available systems")); - $this->SetHeadpageMode(FALSE); - - /* set Page header */ - $chk = ""; - $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); - - $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); - $this->AddHeader(array("string" => _("Object name"), "attach" => "style=''")); - - /* Text ,Value, Name, Is selected */ - $this->AddCheckBox("terminal", _("Select to see terminals"), _("Show terminals"), true); - $this->AddCheckBox("server", _("Select to see servers") , _("Show servers"), true); - $this->AddCheckBox("workstation", _("Select to see workstations"),_("Show workstations"), true); - - /* Add SubSearch checkbox */ - $this->AddCheckBox(SEPERATOR); - $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); - - /* Name,Text,Default , Connect with alphabet */ - $this->AddRegex ("Regex", _("Regular expression for matching group names"), "*" , true); - $this->EnableAplhabet(TRUE); - } - - - function GenHeader() + function __construct($config,$ui) { - $options= ""; - - /* Get all departments within this subtree */ - $ui= get_userinfo(); - $first = ""; - $found = FALSE; - $base = $this->config->current['BASE']; - - /* Add base */ - $tmp = array(); - $tmp[] = array("dn"=>$this->config->current['BASE']); - $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base, - array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); - - $deps = array(); - foreach($tmp as $tm){ - $deps[$tm['dn']] = $tm['dn']; - } - - /* Load possible departments */ - $tdeps= array(); - $tdeps= array_merge($tdeps,$ui->get_module_departments("server")); - $tdeps= array_merge($tdeps,$ui->get_module_departments("terminal")); - $tdeps= array_merge($tdeps,$ui->get_module_departments("workstation")); - $tdeps = array_unique($tdeps); - - $ids = $this->config->idepartments; - $first = ""; - $found = FALSE; - foreach($ids as $dep => $name){ - if(isset($deps[$dep]) && in_array_ics($dep, $tdeps)){ - - /* Keep first base dn in mind, we could need this - * info if no valid base was found - */ - if(empty($first)) { - $first = $dep['dn']; - } - - $value = $ids[$dep]; - if ($this->selectedBase == $dep){ - $found = TRUE; - $options.= ""; - } else { - $options.= ""; - } - } - } - - /* The currently used base is not visible with your acl setup. - * Set base to first useable base. - */ - if(!$found){ - $this->selectedBase = $first; - } - - /* Add default header */ - $listhead = MultiSelectWindow::get_default_header(); - - /* Add department selector */ - $listhead .= _("Base")." ". - "  "; - $listhead .=""; - - $this->SetListHeader($listhead); + $this->config = $config; + $this->ui = $ui; + $this->storagePoints = array(get_ou("serverRDN"), get_ou("workstationRDN"), get_ou('terminalRDN')); + +# // Build filter +# if (session::global_is_set(get_class($this)."_filter")){ +# $filter= session::global_get(get_class($this)."_filter"); +# } else { + $filter = new filter(get_template_path("selectSystem-filter.xml", true)); + $filter->setObjectStorage($this->storagePoints); +# } + $this->setFilter($filter); + + // Build headpage + $headpage = new listing(get_template_path("selectSystem-list.xml", true)); + $headpage->setFilter($filter); + parent::__construct($config, $ui, "object", $headpage); } + function save_object() {} function execute() { - $this->ClearElementsList(); - $this->GenHeader(); - $this->reload(); - $this->SetEntries($this->list); - return($this->Draw()); - } - - - function SetEntries($list) - { - /* Add Copy & Paste buttons if copy&paste is enabled - */ - // Defining Links - $editlink = "%s"; - - $ui = get_userinfo(); - - // Assigning systems - foreach($list as $key => $val){ - - if(in_array($val['cn'][0],$this->Targets_used) || - isset($val['macAddress'][0]) && in_array($val['macAddress'][0],$this->Targets_used)) continue; - - $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; - if(!isset($val['description'][0])){ - $desc = ""; - }else{ - $desc = " - [ ".$val['description'][0]." ]"; - } - - $img ="?"; - if(in_array("goServer",$val['objectClass'])){ - $img = ""._("Server").""; - }elseif(in_array("gotoWorkstation",$val['objectClass'])){ - $img = ""._("Workstation").""; - }elseif(in_array("gotoTerminal",$val['objectClass'])){ - $img = ""._("Terminal").""; - } - - /* Create each field */ - $field0 = array("string" => "" , - "attach" => "style='width:20px;'"); - $field1 = array("string" => $img, - "attach" => "style='text- align:center;width: 20px;'"); - $field2 = array("string" => $val['cn'][0].$desc, - "attach" => "style='border-right:0px;' ".$title); - - $this->AddElement(array($field0,$field1,$field2)); - } + $str = management::execute(); + $str.= "

 

+

+ +   + +

"; + return($str); } - function save() - { + { + $act = $this->detectPostActions(); + $headpage = $this->getHeadpage(); + if(!isset($act['targets'])) return(array()); $ret = array(); - $items = $this->list_get_selected_items(); - foreach($items as $item){ - $ret[] = $this->list[$item]; + foreach($act['targets'] as $dn){ + $ret[] = $headpage->getEntry($dn); } return($ret); } - - - function save_object() - { - MultiSelectWindow::save_object(); - } - - - function reload() - { - /* Set base for all searches && initialise some vars */ - $this->list= array(); - $base = $this->selectedBase; - $filter = ""; - $Regex = $this->Regex; - - $filter= "(&(cn=".$Regex.")(|".$filter."))"; - - if($this->SubSearch){ - $res= array(); - if($this->terminal){ - $filter = "(objectClass=gotoTerminal)"; - $filter= "(&(cn=".$Regex.")(|".$filter."))"; - $res= array_merge($res,get_sub_list($filter,"terminal",get_ou('terminalRDN'),$base, - array("cn","objectClass","description"), GL_SIZELIMIT | GL_SUBSEARCH)); - } - if($this->workstation){ - $filter = "(objectClass=gotoWorkstation)"; - $filter= "(&(cn=".$Regex.")(|".$filter."))"; - $res= array_merge($res,get_sub_list($filter, "workstation", get_ou('workstationRDN'),$base, - array("cn","objectClass","description"), GL_SIZELIMIT | GL_SUBSEARCH)); - } - if($this->server){ - $filter = "(objectClass=goServer)"; - $filter = "(&(cn=".$Regex.")(|".$filter."))"; - $res= array_merge($res,get_sub_list($filter, "server", get_ou('serverRDN'),$base, - array("cn","objectClass","description"), GL_SIZELIMIT | GL_SUBSEARCH)); - } - }else{ - $res= array(); - if($this->terminal){ - $filter = "(objectClass=gotoTerminal)"; - $filter= "(&(cn=".$Regex.")(|".$filter."))"; - $res= array_merge($res,get_list($filter,"terminal", get_ou('terminalRDN').$base, - array("cn","objectClass","description"), GL_SIZELIMIT )); - } - if($this->workstation){ - $filter = "(objectClass=gotoWorkstation)"; - $filter= "(&(cn=".$Regex.")(|".$filter."))"; - $res= array_merge($res,get_list($filter, "workstation", get_ou('workstationRDN').$base, - array("cn","objectClass","description"), GL_SIZELIMIT )); - } - if($this->server){ - $filter = "(objectClass=goServer)"; - $filter = "(&(cn=".$Regex.")(|".$filter."))"; - $res= array_merge($res,get_list($filter, "server", get_ou('serverRDN').$base, - array("cn","objectClass","description"), GL_SIZELIMIT )); - } - } - - $this->list= $res; - ksort ($this->list); - reset ($this->list); - $tmp=array(); - foreach($this->list as $tkey => $val ){ - $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val; - } - ksort($tmp); - $this->list=array(); - foreach($tmp as $val){ - $this->list[]=$val; - } - reset ($this->list); - } - - function list_get_selected_items() - { - $ids = array(); - foreach($_POST as $name => $value){ - if(preg_match("/^item_selected_[0-9]*$/",$name)){ - $id = preg_replace("/^item_selected_/","",$name); - $ids[$id] = $id; - } - } - return($ids); - } } - - // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> diff --git a/gosa-plugins/sudo/admin/sudo/selectSystem-filter.tpl b/gosa-plugins/sudo/admin/sudo/selectSystem-filter.tpl new file mode 100644 index 000000000..2f09c5868 --- /dev/null +++ b/gosa-plugins/sudo/admin/sudo/selectSystem-filter.tpl @@ -0,0 +1,38 @@ +
+

+ [F]{t}Filter{/t} +

+
+ +
+ +
+ + {$SERVER} 
+ {$WORKSTATION} 
+ {$TERMINAL} 
+ +
+ {$SCOPE} + + + + + + +
+ + + {$NAME} +
+ + + + + +
+ {$APPLY} +
+
diff --git a/gosa-plugins/sudo/admin/sudo/selectSystem-filter.xml b/gosa-plugins/sudo/admin/sudo/selectSystem-filter.xml new file mode 100644 index 000000000..6677db548 --- /dev/null +++ b/gosa-plugins/sudo/admin/sudo/selectSystem-filter.xml @@ -0,0 +1,64 @@ + + + + + server + + true + + + + + LDAP + (&(|$SERVER $WORKSTATION $TERMINAL ) $NAME) + dn + objectClass + cn + description + + auto + + + + textfield + NAME + 20 + 60 + + + (cn=*$*) + true + + LDAP + (cn=*$NAME*) + cn + 0.5 + 3 + + + + + checkbox + SERVER + true + (objectClass=goServer) + + + + + checkbox + WORKSTATION + true + + (objectClass=gotoWorkstation) + + + + checkbox + TERMINAL + true + + (objectClass=gotoTerminal) + + + diff --git a/gosa-plugins/sudo/admin/sudo/selectSystem-list.tpl b/gosa-plugins/sudo/admin/sudo/selectSystem-list.tpl new file mode 100644 index 000000000..b233c5874 --- /dev/null +++ b/gosa-plugins/sudo/admin/sudo/selectSystem-list.tpl @@ -0,0 +1,31 @@ + + + + + + + +
+
+

 {$HEADLINE} {$SIZELIMIT}

+
+ +
+
+ + +
{$ROOT} {$BACK} {$HOME} {$RELOAD} {$SEPARATOR} {t}Base{/t} {$BASE}  {$SEPARATOR}  {$ACTIONS}
+
+
+ +
+
+ + + + {$LIST} +
+ {$FILTER} +
+ + diff --git a/gosa-plugins/sudo/admin/sudo/selectSystem-list.xml b/gosa-plugins/sudo/admin/sudo/selectSystem-list.xml new file mode 100644 index 000000000..0fa7b886b --- /dev/null +++ b/gosa-plugins/sudo/admin/sudo/selectSystem-list.xml @@ -0,0 +1,79 @@ + + + + + true + false + true + true + + server + + 1 + + + + goServer + server + servgeneric + plugins/systems/images/select_server.png + + + + + gotoWorkstation + workstation + workgeneric + plugins/systems/images/select_workstation.png + + + + + gotoTerminal + terminal + termgeneric + plugins/systems/images/select_terminal.png + + + + + + |20px;c|220px|| + + + %{filter:objectType(dn,objectClass)} + + + + %{filter:departmentLink(row,dn,description)} + 1 + + + + %{filter:objectType(dn,objectClass)} + + + + + cn + string + %{cn} + true + + + + + description + string + %{description} + true + + +
+ + + + + + +
-- 2.30.2