Code

Updated get_ou()
[gosa.git] / gosa-plugins / goto / addons / goto / class_gotoLogView.inc
index 40c2db00839d7fed1a925b3b1d2146351e0490c3..e7d4dce3edb601ea9eabc52e9a3152af72317087 100644 (file)
@@ -4,7 +4,6 @@ class gotoLogView extends plugin
 {
   
   var $mac;
-  var $logs;
   var $event;
   var $parent;
   var $config;
@@ -22,6 +21,9 @@ class gotoLogView extends plugin
   
   var $ignore_account = TRUE;
   var $standalone = FALSE;
+
+  var $logs = array();
+  var $logSelector = NULL;
  
   function __construct(&$config,$dn,$parent)
   {
@@ -53,117 +55,93 @@ class gotoLogView extends plugin
     /* Query for log files
      */
     $res = $this->o_queue->get_log_info_for_mac($this->mac);
-    if($this->o_queue->is_error()){
+    if($this->o_queue->is_configured() && $this->o_queue->is_error()){
       msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG);
-    }
-
-    /* Check if there is at least one log file 
-     */
-    if(!isset($res[$this->mac]) || !is_array($res[$this->mac])){
-      $this->logs = array();
     }else{
-      $this->selected_date = key($res[$this->mac]);
-      $this->logs = $res;
+      $tmp = array();
+      foreach($res as $mac => $logs){
+        if($mac != $this->mac) continue;
+
+        foreach($logs as $name => $log){
+          if(isset($log['FILES'])){
+            foreach($log['FILES'] as $fkey => $fval){
+              $tmp[] = array(
+                  'MAC'     => $mac,
+                  'DATE'    => $log['REAL_DATE'],
+                  'DATE_STR'=> $log['DATE_STR'],
+                  'FILE'    => $fval);
+            }
+          }
+        }
+      } 
+
+      /* Check if there is at least one log file 
+       */
+      $this->logs = $tmp;
     }
 
+     // Create the filter list
+    $this->logSelector= new sortableListing($this->logs, $this->convertFilterList($this->logs));
+    $this->logSelector->setDeleteable(false);
+    $this->logSelector->setEditable(true);
+    $this->logSelector->setAcl("rwcdm");
+    $this->logSelector->setWidth("100%");
+    $this->logSelector->setHeight("120px");
+    $this->logSelector->setHeader(array(_("Date"),_("Filename")));
+    $this->logSelector->setColspecs(array('80px', '100px', '200px', '120px','150px'));
+  }
+
+  
+  /*! \brief    Converts the list of filters ($this->filters) into data which is useable
+   *             for the sortableList object ($this->filterWidget).
+   *  @return   Array   An array containg data useable for sortableLists ($this->filterWidget)
+   */
+  function convertFilterList($logs)
+  {
+    $data = array();
+    foreach($logs as $key => $log){
+      $data[$key] = array('data' => 
+        array(date('d.m.Y H:i:s',$log['DATE']),$log['FILE']));
+    }
+    return($data);
   }
 
 
   function execute()
   {
+    plugin::execute();
+
+    // Act on edit requests
+    $this->logSelector->save_object();
+    $action = $this->logSelector->getAction();
+
+    if(isset($action['action']) && $action['action'] == 'edit'){
+      $id = $action['targets'][0];
+      $entry = $this->logs[$id];
+      $this->selected_file = $entry['FILE'];
+      $this->selected_date = $entry['DATE'];
+    }
+
+
     $smarty = get_smarty();
     $smarty->assign("logs",$this->logs);   
-    $smarty->assign("logs_available", isset($this->logs[$this->mac]));
+    $smarty->assign("logs_available", count($this->logs));
     $smarty->assign("mac",$this->mac);
     $smarty->assign("selected_file",$this->selected_file);
     $smarty->assign("selected_date",$this->selected_date);
     $smarty->assign("log_file", $this->get_log($this->mac,$this->selected_date,$this->selected_file));        
     $smarty->assign("standalone",$this->standalone);
-
     if (isset($this->logs[$this->mac])){
            $date = date("d.m.Y H:i:s",$this->logs[$this->mac][$this->selected_date]['REAL_DATE']);
     }
     $file = $this->selected_file;
     $smarty->assign("selected_log",_("none"));
     if(!empty($file)){
-      $smarty->assign("selected_log",$file.", ".$date);
-    }
-
-    $divlist = new divlist("log_view");
-
-    /* Create sort direction images 
-     */
-    if($this->sort_dir){
-      $img = "<img src='images/lists/sort-down.png' border='0' alt='\\/'>";
-    }else{
-      $img = "<img src='images/lists/sort-up.png' border='0' alt='/\\'";
-    }
-    if($this->sort_by == "file"){
-      $img1 = $img;
-      $img2 = "";
-    }else{
-      $img1 = "";
-      $img2 = $img;
+      $smarty->assign("selected_log", $file.", ".date('d.m.Y H:i:s', $this->selected_date));
     }
-
-
-    /* Create list header 
-     */
-    $divlist->SetHeader(array(
-          array("string"=>"<a href='?plug=".$_GET['plug']."&sort_by=file'>"._("File")." ".$img1."</a>",
-                "attach"=>"width='200px;'"),
-          array("string"=>"<a href='?plug=".$_GET['plug']."&sort_by=time'>"._("Date")." ".$img2."</a>",
-                "attach" => "style='border-right:none;'"),
-          ));
-
-    /* Create divlist list 
-     */
-    $divlist->SetEntriesPerPage(0);
-    $divlist->SetHeight(150); 
-
-    /* Create sortable array
-     */ 
-    $link = "<a href='?plug=".$_GET['plug']."&time=%time%&file=%file%&mac=%mac%'>%str%</a>";
-    $to_add = array();
-    $sort_by = $this->sort_by;
-    foreach($this->logs as $mac => $times){
-      foreach($times as $time => $data){
-        $rtime = $data['REAL_DATE'];
-        foreach($data['FILES'] as $file){
-
-          $highlight = "";
-          if($file == $this->selected_file && $time == $this->selected_date && $mac == $this->mac){
-            $highlight = "background-color:#CCCCCC";
-          }
-
-          $use_link = preg_replace(array("/%mac%/","/%time%/","/%file%/"),array($mac,$time,$file),$link);
-          $to_add[$$sort_by.$file.$time] = array(
-            array("string" => preg_replace("/%str%/",$file,$use_link),
-                  "attach" => "style='width:200px; $highlight'"),
-            array("string" => preg_replace("/%str%/",date("d.m.Y H:i:s",$rtime),$use_link),
-                  "attach" => "style='border-right:none; $highlight'"),
-            );
-        }
-      }
-    }
-
-    /* Sort entries 
-     */
-    if(!$this->sort_dir){
-      uksort($to_add, "strnatcasecmp");
-    }else{
-      uksort($to_add, "strnatcasecmp");
-      $to_add = array_reverse($to_add);
-    }
-
-    /* Append entries to list 
-     */
-    foreach($to_add as $entry){
-      $divlist->AddEntry($entry);
-    }
-
     $smarty->assign("ACL",preg_match("/r/",$this->getacl("")));
-    $smarty->assign("divlist",$divlist->DrawList());
+    $this->logSelector->setAcl($this->getacl(""));
+    $smarty->assign("listing", $this->logSelector->render());
     return($smarty->fetch(get_template_path('log_view.tpl', TRUE,dirname(__FILE__))));
   }
 
@@ -171,7 +149,7 @@ class gotoLogView extends plugin
   function get_log($mac,$date,$file)
   {
     $res = $this->o_queue->get_log_file($mac,$date,$file);
-    if($this->o_queue->is_error()){
+    if($this->o_queue->is_configured() && $this->o_queue->is_error()){
       msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG);
     }
     $res = nl2br(htmlentities($res));
@@ -200,12 +178,12 @@ class gotoLogView extends plugin
   {
     return (array(
           "plShortName"   => _("Log view"),
-          "plDescription" => _("Goto log view"),
+          "plDescription" => _("GOto log view"),
           "plSelfModify"  => FALSE,
           "plDepends"     => array(),
           "plPriority"    => 30,
           "plSection"     => array("administration"),
-          "plCategory"    => array("workstation"),
+          "plCategory"    => array("workstation","server"),
 
           "plProvidedAcls"=> array()
             ));