X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_listing.inc;h=e2bdb9a44a2d7e608db8d888dbf9cc66f59bea41;hb=fdc518a8263e1cf9d6c6dd76970e60a0e5e21924;hp=cf2366ecec565f3d069b601d2367d514ac9b7e29;hpb=0cc63df977bb83b10d592c5b2f3d20d8d8f35fc6;p=gosa.git diff --git a/gosa-core/include/class_listing.inc b/gosa-core/include/class_listing.inc index cf2366ece..e2bdb9a44 100644 --- a/gosa-core/include/class_listing.inc +++ b/gosa-core/include/class_listing.inc @@ -140,6 +140,9 @@ class listing { } $this->categories= array(); if (isset($this->xmlData['definition']['objectType'])) { + if(isset($this->xmlData['definition']['objectType']['label'])) { + $this->xmlData['definition']['objectType']= array($this->xmlData['definition']['objectType']); + } foreach ($this->xmlData['definition']['objectType'] as $index => $otype) { $this->objectTypes[]= $this->xmlData['definition']['objectType'][$index]; if (isset($this->xmlData['definition']['objectType'][$index]['category'])){ @@ -290,23 +293,35 @@ class listing { } // Fill with contents, sort as configured - $entryIterator= new listingSortIterator($this->entries, $this->sortDirection[$this->sortColumn], $this->sortAttribute, $this->sortType); - foreach ($entryIterator as $row => $entry){ - $result.=""; + foreach ($this->entry as $row => $entry) { + $trow =""; // Render multi select if needed if ($this->multiSelect) { - $result.=""; + $trow.=""; } foreach ($this->xmlData['table']['column'] as $index => $config) { - $result.="colprops[$index]." class='list0'>".$this->renderCell($config['value'], $entry, $row).""; + $renderedCell= $this->renderCell($config['value'], $entry, $row); + $trow.="colprops[$index]." class='list0'>".$renderedCell.""; + + // Save rendered column + $this->entry[$row]["_sort$index"]= $renderedCell; } - $result.=""; + $trow.=""; + + // Save rendered entry + $this->entry[$row]['_rendered']= $trow; $alt++; } + // 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){ + $result.= $entry['_rendered']; + } + // Need to fill the list if it's not full (nobody knows why this is 22 ;-)) $emptyListStyle= (count($this->entries) + $deps == 0)?"border:0;":""; if ((count($this->entries) + $deps) < 22) { @@ -511,6 +526,10 @@ class listing { // Watch out for filters and prepare to execute them $data= $this->processElementFilter($data, $config, $row); + // Replace all non replaced %{...} instances because they + // are non resolved attributes or filters + $data= preg_replace('/%{[^}]+}/', ' ', $data); + return $data; } @@ -897,7 +916,7 @@ class listing { $actions= &$this->xmlData['actionmenu']['action']; $result= "". "