X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_listing.inc;h=e2bdb9a44a2d7e608db8d888dbf9cc66f59bea41;hb=fdc518a8263e1cf9d6c6dd76970e60a0e5e21924;hp=c50453a8ee75fee3228fa7cb581af8febb00310b;hpb=2bc36b4f6cc2bcbed445b83e245cc5779ac8c884;p=gosa.git diff --git a/gosa-core/include/class_listing.inc b/gosa-core/include/class_listing.inc index c50453a8e..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'])){ @@ -267,11 +270,18 @@ class listing { } // Render defined department columns, fill the rest with some stuff + $rest= $this->numColumns - 1; foreach ($this->xmlData['table']['department'] as $index => $config) { - $result.="colprops[$index]." class='list1'>".$this->renderCell($config['value'], $entry, $row).""; + $colspan= 1; + if (isset($config['span'])){ + $colspan= $config['span']; + } + $result.="colprops[$index]." class='list1'>".$this->renderCell($config['value'], $entry, $row).""; + $rest-= $colspan; } - $last= count($this->xmlData['table']['department']) + 1; - $rest= $this->numColumns - $last; + + // Fill remaining cols with nothing + $last= $this->numColumns - $rest; for ($i= 0; $i<$rest; $i++){ $result.= "colprops[$last+$i-1]." class='list1'> "; } @@ -283,26 +293,38 @@ 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) + count($deps) == 0)?"border:0;":""; - if (count($this->entries) + count($deps) < 22) { + $emptyListStyle= (count($this->entries) + $deps == 0)?"border:0;":""; + if ((count($this->entries) + $deps) < 22) { $result.= ""; for ($i= 0; $i<$this->numColumns; $i++) { if ($i == 0) { @@ -366,6 +388,9 @@ class listing { global $config; $ui= get_userinfo(); + // Reset object counter + $this->objectTypeCount= array(); + // Do not do anything if this is not our PID if(isset($_REQUEST['PID']) && $_REQUEST['PID'] != $this->pid) { return; @@ -501,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; } @@ -887,7 +916,7 @@ class listing { $actions= &$this->xmlData['actionmenu']['action']; $result= "". "