From faee24fcb4a666a284511ca9e0a9bc4dabba4429 Mon Sep 17 00:00:00 2001 From: hickert Date: Fri, 22 Jan 2010 09:20:50 +0000 Subject: [PATCH] Updated User selection dialog git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@15246 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../goto/events/class_DaemonEvent_notify.inc | 4 +- .../goto/events/class_EventAddUserDialog.inc | 221 +++--------------- .../goto/events/eventTargetUser-filter.tpl | 37 +++ .../goto/events/eventTargetUser-filter.xml | 56 +++++ .../goto/events/eventTargetUser-list.tpl | 31 +++ .../goto/events/eventTargetUser-list.xml | 71 ++++++ 6 files changed, 230 insertions(+), 190 deletions(-) create mode 100644 gosa-plugins/goto/addons/goto/events/eventTargetUser-filter.tpl create mode 100644 gosa-plugins/goto/addons/goto/events/eventTargetUser-filter.xml create mode 100644 gosa-plugins/goto/addons/goto/events/eventTargetUser-list.tpl create mode 100644 gosa-plugins/goto/addons/goto/events/eventTargetUser-list.xml diff --git a/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_notify.inc b/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_notify.inc index 44565dd9e..3765b2f1b 100644 --- a/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_notify.inc +++ b/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_notify.inc @@ -174,10 +174,8 @@ class DaemonEvent_notify extends DaemonEvent if($this->target_divlist == NULL){ $this->target_divlist = new EventAddUserDialog($this->config,$this); } - $this->target_divlist->execute(); - $smarty = get_smarty(); - $smarty->assign("divlist",$this->target_divlist->Draw()); + $smarty->assign("divlist",$this->target_divlist->execute()); return($smarty->fetch(get_template_path('target_list.tpl', TRUE, dirname(__FILE__)))); } diff --git a/gosa-plugins/goto/addons/goto/events/class_EventAddUserDialog.inc b/gosa-plugins/goto/addons/goto/events/class_EventAddUserDialog.inc index de812ba94..569bedf32 100644 --- a/gosa-plugins/goto/addons/goto/events/class_EventAddUserDialog.inc +++ b/gosa-plugins/goto/addons/goto/events/class_EventAddUserDialog.inc @@ -3,7 +3,7 @@ * This code is part of GOsa (http://www.gosa-project.org) * Copyright (C) 2003-2008 GONICUS GmbH * - * ID: $$Id: class_EventAddUserDialog.inc 9597 2008-03-10 14:16:59Z hickert $$ + * ID: $$Id: class_EventAddSystemDialog.inc 15243 2010-01-22 08:53:18Z hickert $$ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,200 +20,47 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class EventAddUserDialog extends MultiSelectWindow +class EventAddUserDialog extends management { - public $display_server = TRUE; - public $display_workstation = TRUE; - public $display_ogroup = TRUE; - public $filter_iprange = FALSE; + // Tab definition + protected $skipFooter = TRUE; + protected $skipHeader = TRUE; - public $regex = "*"; - public $ipfrom = "0.0.0.0"; - public $ipto = "*"; - public $_target_list = array(); - - function __construct(&$config,$parent) - { - MultiSelectWindow::MultiSelectWindow($config, "EventAddUserDialog", - array("users","groups")); - - $this->parent = $parent; - $this->ui = get_userinfo(); - - - $this->target_divlist = new MultiSelectWindow($this->config,"EventAddTargetUserList","gotomasses"); - $this->SetSummary(_("Targets")); - $this->EnableCloseButton(FALSE); - $this->EnableSaveButton(FALSE); - - $this->SetInformation(_("This dialog shows all available targets for your event, check the targets you want to add and use the 'Use' button to accept.")); - - /* Toggle all selected / deselected */ - $chk = ""; - - $this->EnableAplhabet(TRUE); - - /* set Page header */ - $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); - $this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'")); - $this->AddHeader(array("string"=>_("System / Department"))); - - //$name,$string,$value,$conn,$image="images/lists/search.png") - $this->AddRegex("regex" ,"regex" ,"*" , TRUE); - - $this->AddCheckBox("display_users" ,"1", _("Display users"),TRUE); - $this->AddCheckBox("display_groups" ,"1", _("Display groups"),TRUE); - } - - - function execute() - { - $this->ClearElementsList(); - $this->AddDepartments($this->selectedBase,2,1); - $this->setEntries(); - $this->GenHeader(); - } - - - function GenHeader() - { - $modules = array("users","groups"); - - /* Add base */ - $tmp = array(); - $base = $this->config->current['BASE']; - $tmp[] = array("dn"=>$this->config->current['BASE']); - $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $modules, $base, - array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); - - $deps = array(); - foreach($tmp as $tm){ - $deps[$tm['dn']] = $tm['dn']; - } - - $department = $departments = array(); - $ui= get_userinfo(); - $d = $ui->get_module_departments($modules); - foreach($d as $department){ - $departments[$department] = $department; - } - - /* Load possible departments */ - $ids = $this->config->idepartments; - $first = ""; - $found = FALSE; - $options = array(); - foreach($ids as $dep => $name){ - if(isset($deps[$dep]) && in_array_ics($dep, $departments)){ - - /* 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.= ""; - } - } - } - - $listhead = $this->get_default_header(); - - /* Add base selection */ - $listhead .= _("Base")."  ". - "  "; - - $this->SetListHeader($listhead); - - } - - - function setEntries() - { - $_target_list = array(); - - if($this->display_users){ - $_target_list = array_merge($_target_list, - get_sub_list("(&(objectClass=person)(objectClass=gosaAccount))","users",get_people_ou(),get_people_ou().$this->selectedBase, - array("cn","objectClass","description","uid"),GL_NONE)); - } - if($this->display_groups){ - $_target_list = array_merge($_target_list, - get_sub_list("(objectClass=posixGroup)","groups",get_groups_ou(),get_groups_ou().$this->selectedBase, - array("cn","objectClass","description"),GL_NONE)); - } - $this->_target_list = $_target_list; - - $tmp = array(); - foreach($this->_target_list as $key => $object){ - $tmp[$key] = $object['cn'][0]; - } - natcasesort($tmp); - - foreach($tmp as $key => $obj){ - - $obj = $this->_target_list[$key]; - $name = $obj['cn'][0]; - if(isset($obj['description'])){ - $name .= " [".$obj['description'][0]."]"; - } - - $img =""; - if(in_array("gosaAccount",$obj['objectClass'])){ - $img = 'U'; - }elseif(in_array("posixGroup",$obj['objectClass'])){ - $img = 'G'; - } - - $field1 = array("string" => "", - "attach" => "style='width:20px;'"); - $field2 = array("string" => $img, - "attach" => "style='width:20px;'"); - $field3 = array("string" => $name , "attach" => "title='".$obj['dn']."'"); - $this->AddElement(array($field1,$field2,$field3)); - } - } - - - function get_selected_targets() + function __construct($config,$ui) { - $a_targets = array("USERS" => array(),"GROUPS" => array()); - - foreach($this->list_get_selected_items() as $id){ - $obj = $this->_target_list[$id]; - if(in_array("posixGroup",$obj['objectClass'])){ - $a_targets['GROUPS'][] = $obj['cn'][0]; - } - if(in_array("gosaAccount",$obj['objectClass'])){ - $a_targets['USERS'][] = $obj['uid'][0]; - } - } - - return($a_targets); + $this->config = $config; + $this->ui = $ui; + $this->storagePoints = array( + get_ou("userRDN"), + get_ou("groupRDN")); + + // 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("../../addons/goto/events/eventTargetUser-filter.xml", TRUE)); + $filter->setObjectStorage($this->storagePoints); + # } + $this->setFilter($filter); + + // Build headpage + $headpage = new listing(get_template_path("../../addons/goto/events/eventTargetUser-list.xml", TRUE)); + $headpage->setFilter($filter); + parent::__construct($config, $ui, "object", $headpage); } + function save_object() {} - /*! \brief Returns a set of elements selected in a MultiSelectWindow - @return Array[integer]=integer - */ - protected function list_get_selected_items() + function save() { - $ids = array(); - foreach($_POST as $name => $value){ - if(preg_match("/^item_selected_[0-9]*$/",$name)){ - $id = preg_replace("/^item_selected_/","",$name); - $ids[$id] = $id; - } + $act = $this->detectPostActions(); + $headpage = $this->getHeadpage(); + if(!isset($act['targets'])) return(array()); + $ret = array(); + foreach($act['targets'] as $dn){ + $ret[] = $headpage->getEntry($dn); } - return($ids); + return($ret); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: diff --git a/gosa-plugins/goto/addons/goto/events/eventTargetUser-filter.tpl b/gosa-plugins/goto/addons/goto/events/eventTargetUser-filter.tpl new file mode 100644 index 000000000..031ad398b --- /dev/null +++ b/gosa-plugins/goto/addons/goto/events/eventTargetUser-filter.tpl @@ -0,0 +1,37 @@ +
+

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

+
+ +
+ +
+ + {$GROUP} 
+ {$USER} 
+ +
+ {$SCOPE} + + + + + + +
+ + + {$NAME} +
+ + + + + +
+ {$APPLY} +
+
diff --git a/gosa-plugins/goto/addons/goto/events/eventTargetUser-filter.xml b/gosa-plugins/goto/addons/goto/events/eventTargetUser-filter.xml new file mode 100644 index 000000000..e08a9d1e7 --- /dev/null +++ b/gosa-plugins/goto/addons/goto/events/eventTargetUser-filter.xml @@ -0,0 +1,56 @@ + + + + + server + + true + + + + + LDAP + (&(|$USER $GROUP) $NAME) + dn + objectClass + cn + description + + auto + + + + textfield + NAME + 20 + 60 + + + (cn=*$*) + true + + LDAP + (cn=*$NAME*) + cn + 0.5 + 3 + + + + + checkbox + GROUP + true + (objectClass=posixGroup) + + + + + checkbox + USER + true + (objectClass=gosaAccount) + + + + diff --git a/gosa-plugins/goto/addons/goto/events/eventTargetUser-list.tpl b/gosa-plugins/goto/addons/goto/events/eventTargetUser-list.tpl new file mode 100644 index 000000000..b233c5874 --- /dev/null +++ b/gosa-plugins/goto/addons/goto/events/eventTargetUser-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/goto/addons/goto/events/eventTargetUser-list.xml b/gosa-plugins/goto/addons/goto/events/eventTargetUser-list.xml new file mode 100644 index 000000000..f01d29f7b --- /dev/null +++ b/gosa-plugins/goto/addons/goto/events/eventTargetUser-list.xml @@ -0,0 +1,71 @@ + + + + + true + false + true + true + + users + + 1 + + + + gosaAccount + users + user + plugins/users/images/select_user.png + + + + + posixGroup + groups + group + plugins/groups/images/groups.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