X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_listing.inc;h=e66ff530847801ca0e05e62f6bbf5a9548465a8f;hb=9f97e0838b447e659085ba136e50f375e885804c;hp=00a9e1090d7d3d1dc99d0477fa44bb59e48e7c98;hpb=a0de0b1a8c3ad3c1b18c57f276c7d8fb65ac0c8c;p=gosa.git diff --git a/gosa-core/include/class_listing.inc b/gosa-core/include/class_listing.inc index 00a9e1090..e66ff5308 100644 --- a/gosa-core/include/class_listing.inc +++ b/gosa-core/include/class_listing.inc @@ -53,6 +53,7 @@ class listing { var $useSpan= false; var $height= 0; var $scrollPosition= 0; + var $baseSelector; function listing($filename) @@ -96,6 +97,9 @@ class listing { } } } + + // Instanciate base selector + $this->baseSelector= new baseSelector($this->bases, $this->base); } @@ -267,7 +271,7 @@ class listing { // Some browsers don't have the ability do do scrollable table bodies, filter them // here. $switch= false; - if (preg_match('/(Opera|Konqueror|Safari|msie)/i', $_SERVER['HTTP_USER_AGENT'])){ + if (preg_match('/(Opera|Konqueror|Safari)/i', $_SERVER['HTTP_USER_AGENT'])){ $switch= true; } @@ -280,13 +284,8 @@ class listing { $height= $this->height; } - $result.= ""; + $result.= "
\n"; - - $height= ""; - if ($switch){ - $height= "height:100%;"; - } - $result.= "\n"; + $result.= "
\n"; + $result.= "
\n"; $this->numColumns= count($this->colprops) + ($this->multiSelect?1:0); // Build list header @@ -381,10 +380,10 @@ class listing { // Complete list by sorting entries for _sort$index and appending them to the output $entryIterator= new listingSortIterator($this->entries, $this->sortDirection[$this->sortColumn], "_sort".$this->sortColumn, $this->sortType); foreach ($entryIterator as $row => $entry){ - $alt++; $result.="\n"; $result.= $entry['_rendered']; $result.="\n"; + $alt++; } // Need to fill the list if it's not full (nobody knows why this is 22 ;-)) @@ -406,11 +405,11 @@ class listing { } // Close list body - $result.= "
"; // Add the footer if requested if ($this->showFooter) { - $result.= ""; + $result.= "
"; foreach ($this->objectTypes as $objectType) { if (isset($this->objectTypeCount[$objectType['label']])) { @@ -419,11 +418,10 @@ class listing { } } - $result.= ""; + $result.= "
"; } // Close list - $result.= ""; $result.= $switch?"":""; // Add scroll positioner @@ -471,32 +469,44 @@ class listing { global $config; $ui= get_userinfo(); + // Take care of base selector + if ($this->baseMode) { + $this->baseSelector->update(); + // Check if a wrong base was supplied + if(!$this->baseSelector->checkLastBaseUpdate()){ + msg_dialog::display(_("Error"), msgPool::check_base(), ERROR_DIALOG); + } + } + + // Save base + $refresh= false; + if ($this->baseMode) { + $this->base= $this->baseSelector->getBase(); + session::global_set("CurrentMainBase", $this->base); + $refresh= true; + } + + // Reset object counter / DN mapping $this->objectTypeCount= array(); $this->objectDnMapping= array(); // Do not do anything if this is not our PID - if(!(isset($_REQUEST['PID']) && $_REQUEST['PID'] != $this->pid)) { + if($refresh || !(isset($_REQUEST['PID']) && $_REQUEST['PID'] != $this->pid)) { // Save position if set if (isset($_POST['position_'.$this->pid]) && is_numeric($_POST['position_'.$this->pid])) { $this->scrollPosition= $_POST['position_'.$this->pid]; } - // Save base - if (isset($_POST['BASE']) && $this->baseMode) { - $base= base64_decode(get_post('BASE')); - if (isset($this->bases[$base])) { - $this->base= $base; - session::global_set("CurrentMainBase", $this->base); - } - } - // Override the base if we got a message from the browser navigation if ($this->departmentBrowser && isset($_GET['act'])) { if (preg_match('/^department_([0-9]+)$/', validate($_GET['act']), $match)){ if (isset($this->departments[$match[1]])){ $this->base= $this->departments[$match[1]]['dn']; + if ($this->baseMode) { + $this->baseSelector->setBase($this->base); + } session::global_set("CurrentMainBase", $this->base); } } @@ -549,17 +559,23 @@ class listing { if ($action == 'ROOT') { $deps= $ui->get_module_departments($this->categories); $this->base= $deps[0]; + $this->baseSelector->setBase($this->base); + session::global_set("CurrentMainBase", $this->base); } if ($action == 'BACK') { $deps= $ui->get_module_departments($this->categories); $base= preg_replace("/^[^,]+,/", "", $this->base); if(in_array_ics($base, $deps)){ $this->base= $base; + $this->baseSelector->setBase($this->base); + session::global_set("CurrentMainBase", $this->base); } } if ($action == 'HOME') { $ui= get_userinfo(); - $this->base= $this->filter->getObjectBase($ui->dn); + $this->base= get_base_from_people($ui->dn); + $this->baseSelector->setBase($this->base); + session::global_set("CurrentMainBase", $this->base); } } @@ -582,6 +598,9 @@ class listing { function setBase($base) { $this->base= $base; + if ($this->baseMode) { + $this->baseSelector->setBase($this->base); + } } @@ -673,34 +692,7 @@ class listing { return; } - $result= ""; - - // Reset the currently used base to the first DN we found if there - // was no match. - if(!$found){ - $this->base = $firstDN; - } - - return $result; + return $this->baseSelector->render(); } @@ -986,7 +978,7 @@ class listing { $listhead =""; /* Check if we are in users home department */ - if(!count($deps) || $this->filter->base == $this->filter->getObjectBase($ui->dn)){ + if(!count($deps) || $this->filter->base == get_base_from_people($ui->dn)){ $enableHome = false; } @@ -1258,7 +1250,7 @@ class listing { $checkAcl= ""; // Category or detailed permission? - if (strpos('/', $module) === false) { + if (strpos($module, '/') !== false) { if (preg_match('/([a-zA-Z0-9]+):([rwcdm]+)/', $sAcl, $m) ) { $checkAcl= $ui->get_permissions($dn, $module, $m[1]); $sAcl= $m[2]; @@ -1302,6 +1294,11 @@ class listing { foreach($k_ids as $department){ $this->bases[$department] = $ids[$department]; } + + // Populate base selector if already present + if ($this->baseSelector && $this->baseMode) { + $this->baseSelector->setBases($this->bases); + } } @@ -1560,6 +1557,12 @@ class listing { } + function getEntries() + { + return $this->entries; + } + + function getType($dn) { if (isset($this->objectDnMapping[$dn])) {