Code

We're html5, right?
[gosa.git] / gosa-core / include / class_listing.inc
index 46f427a28fe732500b423f6719494035226369bd..225509525ad1420ae3c3b97d4b2ddb220d2473ec 100644 (file)
@@ -57,7 +57,7 @@ class listing {
   var $baseSelector;
 
 
-  function listing($filename)
+  function listing($source, $isString = FALSE)
   {
     global $config;
     global $class_mapping;
@@ -65,8 +65,14 @@ class listing {
     // Initialize pid
     $this->pid= preg_replace("/[^0-9]/", "", microtime(TRUE));
 
-    if (!$this->load($filename)) {
-      die("Cannot parse $filename!");
+    if($isString){
+        if(!$this->loadString($source)){
+            die("Cannot parse $source!");
+        }
+    }else{
+        if (!$this->loadFile($source)) {
+            die("Cannot parse $source!");
+        }
     }
 
     // Set base for filter
@@ -81,7 +87,7 @@ class listing {
     }
 
     // Move footer information
-    $this->showFooter= ($config->get_cfg_value("listSummary") == "true");
+    $this->showFooter= ($config->get_cfg_value("core","listSummary") == "true");
 
     // Register build in filters
     $this->registerElementFilter("objectType", "listing::filterObjectType");
@@ -148,10 +154,13 @@ class listing {
     return false;
   }
 
+  function loadFile($filename)
+  {
+    return($this->loadString(file_get_contents($filename)));
+  }
 
-  function load($filename)
+  function loadString($contents)
   {
-    $contents = file_get_contents($filename);
     $this->xmlData= xml::xml2array($contents, 1);
 
     if (!isset($this->xmlData['list'])) {
@@ -336,11 +345,11 @@ class listing {
       // Fill with department browser if configured this way
       $departmentIterator= new departmentSortIterator($this->departments, $this->sortDirection[$this->sortColumn]);
       foreach ($departmentIterator as $row => $entry){
-        $result.="<tr>";
+        $rowResult= "<tr>";
 
         // Render multi select if needed
         if ($this->multiSelect || $this->singleSelect) {
-          $result.="<td style='text-align:center;padding:0;' class='list1'>&nbsp;</td>";
+          $rowResult.="<td style='text-align:center;padding:0;' class='list1'>&nbsp;</td>";
         }
 
         // Render defined department columns, fill the rest with some stuff
@@ -351,19 +360,27 @@ class listing {
             $colspan= $config['span'];
             $this->useSpan= true;
           }
-          $result.="<td colspan='$colspan' ".$this->colprops[$index]." class='list1'>".$this->renderCell($config['value'], $entry, $row)."</td>";
+          $rowResult.="<td colspan='$colspan' ".$this->colprops[$index]." class='list1'>".$this->renderCell($config['value'], $entry, $row)."</td>";
           $rest-= $colspan;
         }
 
         // Fill remaining cols with nothing
         $last= $this->numColumns - $rest;
         for ($i= 0; $i<$rest; $i++){
-          $result.= "<td ".$this->colprops[$last+$i-1]." class='list1'>&nbsp;</td>";
+          $rowResult.= "<td ".$this->colprops[$last+$i-1]." class='list1'>&nbsp;</td>";
         }
-        $result.="</tr>";
+        $rowResult.="</tr>";
 
+        // Apply label to objecttype icon?
+        if (preg_match("/<objectType:([^:]+):(.*)\/>/i", $rowResult, $matches)){
+            $objectType= image($matches[1], null, LDAP::fix(base64_decode($matches[2])));
+            $rowResult= preg_replace("/<objectType[^>]+>/", $objectType, $rowResult);
+        }
+        $result.= $rowResult;
         $alt++;
       }
+
+
       $deps= $alt;
     }