From ca78e3eab727f516cf03ae246519606421ad75d3 Mon Sep 17 00:00:00 2001 From: hickert Date: Tue, 26 Jan 2010 10:28:05 +0000 Subject: [PATCH] Updated posix plugin to use the new kind of lists for trust machines. -Not yet completely finished. git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@15310 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../personal/posix/class_posixAccount.inc | 98 +------------- .../posix/trustSelect/class_trustSelect.inc | 122 ++++++++++++++++++ .../posix/trustSelect/trust-filter.tpl | 37 ++++++ .../posix/trustSelect/trust-filter.xml | 64 +++++++++ .../personal/posix/trustSelect/trust-list.tpl | 38 ++++++ .../personal/posix/trustSelect/trust-list.xml | 64 +++++++++ 6 files changed, 330 insertions(+), 93 deletions(-) create mode 100644 gosa-core/plugins/personal/posix/trustSelect/class_trustSelect.inc create mode 100644 gosa-core/plugins/personal/posix/trustSelect/trust-filter.tpl create mode 100644 gosa-core/plugins/personal/posix/trustSelect/trust-filter.xml create mode 100644 gosa-core/plugins/personal/posix/trustSelect/trust-list.tpl create mode 100644 gosa-core/plugins/personal/posix/trustSelect/trust-list.xml diff --git a/gosa-core/plugins/personal/posix/class_posixAccount.inc b/gosa-core/plugins/personal/posix/class_posixAccount.inc index 94f10da0a..8d7fe104f 100644 --- a/gosa-core/plugins/personal/posix/class_posixAccount.inc +++ b/gosa-core/plugins/personal/posix/class_posixAccount.inc @@ -69,7 +69,7 @@ class posixAccount extends plugin var $force_ids= 0; var $gotoLastSystemLogin= ""; var $groupSelect= FALSE; - var $show_ws_dialog= FALSE; + var $trustDialog= FALSE; var $secondaryGroups= array(); var $primaryGroup= 0; var $was_trust_account= FALSE; @@ -363,7 +363,7 @@ class posixAccount extends plugin /* Add user workstation? */ if (isset($_POST["add_ws"])){ - $this->show_ws_dialog= TRUE; + $this->trustDialog= new trustSelect($this->config,get_userinfo()); $this->dialog= TRUE; } @@ -386,7 +386,7 @@ class posixAccount extends plugin /* Add user workstation finished? */ if (isset($_POST["add_ws_finish"]) || isset($_POST["add_ws_cancel"])){ - $this->show_ws_dialog= FALSE; + $this->trustDialog= NULL; $this->dialog= FALSE; } @@ -395,101 +395,13 @@ class posixAccount extends plugin $smarty->assign("usePrototype", "true"); /* Show ws dialog */ - if ($this->show_ws_dialog){ - /* Save data */ - $sysfilter= session::get("sysfilter"); - foreach( array("depselect", "regex") as $type){ - if (isset($_POST[$type])){ - $sysfilter[$type]= $_POST[$type]; - } - } - if (isset($_GET['search'])){ - $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*"; - if ($s == "**"){ - $s= "*"; - } - $sysfilter['regex']= $s; - } - session::set("sysfilter", $sysfilter); - - /* Get workstation list */ - $exclude= ""; - foreach($this->accessTo as $ws){ - $exclude.= "(cn=$ws)"; - } - if ($exclude != ""){ - $exclude= "(!(|$exclude))"; - } - $regex= $sysfilter['regex']; - - $acls = array(); - if(class_available("servgeneric")) $acls[] = "server"; - if(class_available("workgeneric")) $acls[] = "worstation"; - if(class_available("termgeneric")) $acls[] = "terminal"; - - $filter= "(&(|(objectClass=goServer)(objectClass=gotoWorkstation)(objectClass=gotoTerminal))$exclude(cn=*)(cn=$regex))"; - - $deps_a = array(get_ou("serverRDN"), - get_ou("terminalRDN"), - get_ou("workstationRDN")); - - $res= get_sub_list($filter, $acls, $deps_a, get_ou("systemRDN").$sysfilter['depselect'], array("cn"), GL_SUBSEARCH | GL_SIZELIMIT); - $wslist= array(); - foreach ($res as $attrs){ - $wslist[]= preg_replace('/\$/', '', $attrs['cn'][0]); - } - asort($wslist); - $smarty->assign("search_image", get_template_path('images/lists/search.png')); - $smarty->assign("launchimage", get_template_path('images/lists/action.png')); - $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); - $smarty->assign("deplist", $this->config->idepartments); - $smarty->assign("alphabet", generate_alphabet()); - foreach( array("depselect", "regex") as $type){ - $smarty->assign("$type", $sysfilter[$type]); - } - $smarty->assign("hint", print_sizelimit_warning()); - $smarty->assign("wslist", $wslist); - $smarty->assign("apply", apply_filter()); - $display= $smarty->fetch (get_template_path('trust_machines.tpl', TRUE, dirname(__FILE__))); - return ($display); + if ($this->trustDialog){ + return($this->trustDialog->execute()); } /* Manage group add dialog */ if ($this->groupSelect){ - return($this->groupSelect->execute()); - - /* Get global filter config */ - $this->reload(); - - /* remove already assigned groups */ - $glist= array(); - foreach ($this->grouplist as $key => $value){ - if (!isset($this->groupMembership[$key]) && obj_is_writable($key,"groups/group","memberUid")){ - $glist[$key]= $value; - } - } - - if($this->SubSearch){ - $smarty->assign("SubSearchCHK"," checked "); - }else{ - $smarty->assign("SubSearchCHK",""); - } - - $smarty->assign("regex",$this->GroupRegex); - $smarty->assign("guser",$this->GroupUserRegex); - $smarty->assign("groups", $glist); - $smarty->assign("search_image", get_template_path('images/lists/search.png')); - $smarty->assign("launchimage", get_template_path('images/lists/action.png')); - $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); - $smarty->assign("deplist", $this->config->idepartments); - $smarty->assign("alphabet", generate_alphabet()); - $smarty->assign("depselect", session::get('CurrentMainBase')); - $smarty->assign("hint", print_sizelimit_warning()); - $smarty->assign("apply", apply_filter()); - - $display.= $smarty->fetch (get_template_path('posix_groups.tpl', TRUE, dirname(__FILE__))); - return ($display); } // Handle ssh dialog? diff --git a/gosa-core/plugins/personal/posix/trustSelect/class_trustSelect.inc b/gosa-core/plugins/personal/posix/trustSelect/class_trustSelect.inc new file mode 100644 index 000000000..df39484c2 --- /dev/null +++ b/gosa-core/plugins/personal/posix/trustSelect/class_trustSelect.inc @@ -0,0 +1,122 @@ +config = $config; + $this->ui = $ui; + + $this->storagePoints = array(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("trust-filter.xml", true, dirname(__FILE__))); + $filter->setObjectStorage($this->storagePoints); +# } + $this->setFilter($filter); + + // Build headpage + $headpage = new listing(get_template_path("trust-list.xml", true, dirname(__FILE__))); + $headpage->registerElementFilter("filterProperties", "groupManagement::filterProperties"); + $headpage->setFilter($filter); + parent::__construct($config, $ui, "groups", $headpage); + } + + + static function filterProperties($row, $classes) + { + $result= ""; + + $map = array( + "posixGroup" => + array( + "image" => "plugins/groups/images/groups.png", + "plugin" => "group", + "alt" => _("Posix"), + "title" => _("Edit posix properties") + ), + + "gosaMailAccount" => + array( + "image" => "plugins/groups/images/mail.png", + "plugin" => "mailgroup", + "alt" => _("Mail"), + "title" => _("Edit mail properties") + ), + + "sambaGroupMapping" => + array( + "image" => "plugins/groups/images/samba.png", + "plugin" => "group", + "alt" => _("Samba"), + "title" => _("Edit samba properties") + ), + + "goFonPickupGroup" => + array( + "image" => "plugins/groups/images/asterisk.png", + "plugin" => "group", + "alt" => _("Phone"), + "title" => _("Edit phone properties") + ), + + "gotoMenuGroup" => + array( + "image" => "plugins/groups/images/menu.png", + "plugin" => "appgroup", + "alt" => _("Menu"), + "title" => _("Edit start menu properties") + ), + + "gotoEnvironment" => + array( + "image" => "plugins/groups/images/environment.png", + "plugin" => "environment", + "alt" => _("Environment"), + "title" => _("Edit environment properties") + ) + ); + + + // Walk thru map + foreach ($map as $oc => $properties) { + if (in_array_ics($oc, $classes)) { + $result.=""; + } else { + $result.=" "; + } + } + return $result; + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/gosa-core/plugins/personal/posix/trustSelect/trust-filter.tpl b/gosa-core/plugins/personal/posix/trustSelect/trust-filter.tpl new file mode 100644 index 000000000..c115cd06c --- /dev/null +++ b/gosa-core/plugins/personal/posix/trustSelect/trust-filter.tpl @@ -0,0 +1,37 @@ +
+

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

+
+ +
+ +
+ + {$PRIMARY} 
+ {$SAMBA} 
+ {$MAIL} 
+ + {$SCOPE} + + + + + + +
+ + + {$NAME} +
+ + + + + +
+ {$APPLY} +
+
diff --git a/gosa-core/plugins/personal/posix/trustSelect/trust-filter.xml b/gosa-core/plugins/personal/posix/trustSelect/trust-filter.xml new file mode 100644 index 000000000..17abcd750 --- /dev/null +++ b/gosa-core/plugins/personal/posix/trustSelect/trust-filter.xml @@ -0,0 +1,64 @@ + + + + + groups + + true + + + + + LDAP + (&(objectClass=posixGroup)$NAME(|$PRIMARY$MAIL$SAMBA)) + dn + objectClass + cn + description + + auto + + + + checkbox + PRIMARY + true + + (!(objectClass=gosaObject)) + + + + checkbox + MAIL + true + + (objectClass=gosaMailAccount) + + + + checkbox + SAMBA + true + + (objectClass=sambaGroupMapping) + + + + textfield + NAME + 20 + 60 + + + (|(cn=*$*)(description=*$*)) + true + + LDAP + (&(objectClass=posixGroup)(|(cn=*$NAME*)(description=*$NAME*))) + cn + 0.5 + 3 + + + + diff --git a/gosa-core/plugins/personal/posix/trustSelect/trust-list.tpl b/gosa-core/plugins/personal/posix/trustSelect/trust-list.tpl new file mode 100644 index 000000000..92449a651 --- /dev/null +++ b/gosa-core/plugins/personal/posix/trustSelect/trust-list.tpl @@ -0,0 +1,38 @@ + + + + + + + +
+
+

 {$HEADLINE} {$SIZELIMIT}

+
+ +
+
+ + +
{$ROOT} {$BACK} {$HOME} {$RELOAD} {$SEPARATOR} {t}Base{/t} {$BASE}  {$SEPARATOR}  {$ACTIONS}
+
+
+ +
+
+ + + + {$LIST} +
+ {$FILTER} +
+ + +

+ +   + +

+ + diff --git a/gosa-core/plugins/personal/posix/trustSelect/trust-list.xml b/gosa-core/plugins/personal/posix/trustSelect/trust-list.xml new file mode 100644 index 000000000..c9c3c8d49 --- /dev/null +++ b/gosa-core/plugins/personal/posix/trustSelect/trust-list.xml @@ -0,0 +1,64 @@ + + + + + true + false + true + true + + groups + + 1 + + + + posixGroup + groups + group + plugins/groups/images/groups.png + + + + + + |20px;c||| + + + %{filter:objectType(dn,objectClass)} + + + + %{filter:departmentLink(row,dn,description)} + 1 + + + + %{filter:objectType(dn,objectClass)} + + + + + cn + string + %{filter:link(row,dn,"%s",cn)} + true + + + + + description + string + %{filter:link(row,dn,"%s",description)} + true + + +
+ + + + + + + +
-- 2.30.2