Code

Hide refs, too. Not needed.
[gosa.git] / gosa-core / include / class_listing.inc
index c917e961a2508fd926cec0885361520e076451ee..10c05d9652012ebf1b6fcb3bc843858a37747f95 100644 (file)
@@ -289,7 +289,7 @@ class listing {
     $result.= "<td class='listheader' style='width:13px;border-right:0px;'>&nbsp;</td></table></td></tr>\n";
 
     // New table for the real list contents
-    $result.= "<tr><td colspan='$this->numColumns' class='scrollbody'><div style='width:600px;height:".($height-20)."px;' id='d_scrollbody' class='scrollbody'><table summary='' style='height:100%;width:581px;' cellspacing='0' id='t_scrollbody'>\n";
+    $result.= "<tr><td colspan='$this->numColumns' class='scrollbody'><div style='width:600px;height:".($height-20)."px;' id='d_scrollbody' class='scrollbody'><table summary='' style='height:100%;width:581px;table-layout:fixed;overflow:hidden;word-wrap:break-word;' cellspacing='0' id='t_scrollbody'>\n";
 
     // No results? Just take an empty colspanned row
     if (count($this->entries) + count($this->departments) == 0) {
@@ -450,7 +450,7 @@ class listing {
 
     // Save base
     if (isset($_POST['BASE']) && $this->baseMode) {
-      $base= validate($_POST['BASE']);
+      $base= get_post('BASE');
       if (isset($this->bases[$base])) {
         $this->base= $base;
         session::global_set("CurrentMainBase", $this->base);
@@ -555,32 +555,38 @@ class listing {
     $layout= preg_replace("/^\|/", "", $layout);
     $layout= preg_replace("/\|$/", "", $layout);
     $cols= split("\|", $layout);
+
     foreach ($cols as $index => $config) {
       if ($config != "") {
+        $res= "";
         $components= split(';', $config);
-        $config= "";
         foreach ($components as $part) {
           if (preg_match("/^r$/", $part)) {
-            $config.= "text-align:right;";
+            $res.= "text-align:right;";
             continue;
           }
           if (preg_match("/^l$/", $part)) {
-            $config.= "text-align:left;";
+            $res.= "text-align:left;";
             continue;
           }
           if (preg_match("/^c$/", $part)) {
-            $config.= "text-align:center;";
+            $res.= "text-align:center;";
             continue;
           }
           if (preg_match("/^[0-9]+(|px|%)$/", $part)) {
-            $config.= "width:$part;";
+            $res.= "width:$part;min-width:$part;";
             continue;
           }
         }
 
-        $result[$index]= " style='$config' ";
+        // Add minimum width for scalable columns
+        if (!preg_match('/width:/', $res)){
+          $res.= "min-width:200px;";
+        }
+
+        $result[$index]= " style='$res' ";
       } else {
-        $result[$index]= null;
+        $result[$index]= " style='min-width:100px'";
       }
     }
 
@@ -638,8 +644,10 @@ class listing {
         $selected= " selected";
         $found= true;
       }
-      $result.= "<option value='".$key."'$selected>".$value."</option>";
+      $key = htmlentities($key,ENT_QUOTES);
+      $result.= "\n<option value=\"".$key."\"$selected>".$value."</option>";
     }
+
     $result.= "</select>";
 
     // Reset the currently used base to the first DN we found if there
@@ -1085,6 +1093,12 @@ class listing {
         if (isset($action['label'])){
           $result.= "<li$separator><a href='#'>$img"._($action['label'])."&nbsp;<img border='0' src='images/forward-arrow.png'></a>";
         }
+
+        // Ensure we've an array of actions, this enables sub menus with only one action.
+        if(isset($action['action']['type'])){
+          $action['action'] = array($action['action']);
+        }
+
         $result.= $this->recurseActions($action['action'])."</li>";
         $level--;
         $separator= "";