config = $config; $this->ui = $ui; $this->storagePoints = array( get_ou("core", "userRDN"), get_ou("core", "groupRDN"), get_ou("termgeneric", "terminalRDN"), get_ou("workgeneric", "workstationRDN"), get_ou("servgeneric", "serverRDN"), get_ou("printgeneric", "printerRDN"), get_ou("phoneGeneric", "phoneRDN")); // 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("selectObject-filter.xml", true, dirname(__FILE__))); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("selectObject-list.xml", true, dirname(__FILE__))); $headpage->registerElementFilter("depLabel", "objectSelect::filterDepLabel"); $this->registerAction("open","openEntry"); $headpage->setFilter($filter); parent::__construct($config, $ui, "object", $headpage); } // An action handler which enables to switch into deparmtment by clicking the names. function openEntry($action,$entry) { $headpage = $this->getHeadpage(); $headpage->setBase(array_pop($entry)); } // A filter which allows to open a department by clicking on the departments name. static function filterDepLabel($row,$dn,$pid,$base,$objectClass, $cn) { $cn = $cn[0]; if(!in_array_strict('gosaDepartment', $objectClass)){ return($cn); } if($dn == $base){ $cn ="."; } $dn= LDAP::fix(func_get_arg(1)); return("$cn"); } function save() { $act = $this->detectPostActions(); $headpage = $this->getHeadpage(); if(!isset($act['targets'])) return(array()); $ret = array(); foreach($act['targets'] as $dn){ $ret[] = $headpage->getEntry($dn); } return($ret); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>