Code

Updated pst handling
[gosa.git] / gosa-core / include / class_sortableListing.inc
index 75de2bee55a554c2a227037a69c831217179bd85..79bc25e7ab45bb4821db12350d818bef09f4e473 100644 (file)
@@ -60,9 +60,27 @@ class sortableListing {
     // Save data to display
     $this->setListData($data, $displayData);
 
+    // Get list of used IDs 
+    if(!session::is_set('sortableListing_USED_IDS')){
+        session::set('sortableListing_USED_IDS',array());
+    }
+    $usedIds = session::get('sortableListing_USED_IDS');
+
     // Generate instance wide unique ID
-    $tmp= gettimeofday();
-    $this->id= 'l'.md5(microtime().$tmp['sec']);
+    $id = "";
+    while($id == "" || in_array($id, $usedIds)){
+
+        // Wait 1 msec to ensure that we definately get a new id
+        if($id != "") usleep(1);
+        $tmp= gettimeofday();
+        $id =  'l'.md5(microtime().$tmp['sec']);
+    }
+
+    // Only keep the last 10 list IDsi
+    $usedIds = array_slice($usedIds, count($usedIds) -10, 10);
+    $usedIds[] = $id;
+    session::set('sortableListing_USED_IDS',$usedIds);
+    $this->id = $id;
 
     // Set reorderable flag
     $this->reorderable= $reorderable;
@@ -71,6 +89,10 @@ class sortableListing {
     }
   }
 
+  public function setReorderable($bool)
+  {
+    $this->reorderable= $bool;
+  }
    
   public function setDefaultSortColumn($id)
   {
@@ -210,7 +232,7 @@ class sortableListing {
     }
 
     // Do we need colspecs?
-    $action_width= ($this->editable?20:0) + ($this->deleteable?20:0);
+    $action_width= ($this->editable?30:0) + ($this->deleteable?30:0);
     if ($this->colspecs) {
       $result.= " <colgroup>\n";
       for ($i= 0; $i<$this->columns; $i++) {
@@ -236,7 +258,7 @@ class sortableListing {
         $link= "href='?plug=".$_GET['plug']."&amp;PID=".$this->id."&amp;act=SORT_$i'";
         $sorter= "";
         if ($i == $this->sortColumn){
-          $sorter= "&nbsp;".image("images/lists/sort-".($this->sortDirection[$i]?"up":"down").".png", null, $this->sortDirection[$i]?_("Up"):_("Down"));
+          $sorter= "&nbsp;".image("images/lists/sort-".($this->sortDirection[$i]?"up":"down").".png", null, $this->sortDirection[$i]?_("Sort ascending"):_("Sort descending"));
         }
 
         if ($this->reorderable) {
@@ -276,8 +298,14 @@ class sortableListing {
         $first= " style='border:0'";
 
         foreach ($this->displayData[$row] as $column) {
-          $result.= "   <td$editable$first>".$column."</td>\n";
-          $first= "";
+
+            // Do NOT use the onClick statement for columns that contain links or buttons.
+            if(preg_match("<.*type=.submit..*>", $column) || preg_match("<a.*href=.*>", $column)){
+                $result.= "   <td$first>".$column."</td>\n";
+            }else{
+                $result.= "   <td$editable$first>".$column."</td>\n";
+            }
+            $first= "";
         }
 
         if ($action_width) {