Code

Updated class filter and listing.
[gosa.git] / gosa-core / include / class_filter.inc
index 3db6b5a4b542aceaf8083a1c29179786f75b18bd..2afa3fe60685fe2e85029debd50dcb29552e9c1c 100644 (file)
@@ -25,6 +25,9 @@ class filter {
   var $xmlData;
   var $searches= array();
   var $search;
+
+  #FIXME - Seems to be obsolete. Categories are defined in the listing.xml <objectType> 
+  #         and not in the filter.xml anymore.
   var $category= "";
   var $objectStorage= array();
   var $base= "";
@@ -36,6 +39,16 @@ class filter {
   var $converter= null;
   var $pid;
 
+  /* An editor which allows to create user defined ldap-filter.
+   * Due to the fact that it requires additional ldap schemata 
+   *  (objectClasses=gosaProperties) this is currently optional.
+   */
+  var $filterEditor = NULL;
+
+  /* The categories this filter is made for (e.g. ['users'] or. ['server','workstation']). 
+   * Since this is set we are able to create user defined filters.
+   */
+  var $categories   = array();
 
   function filter($filename)
   {
@@ -149,11 +162,11 @@ class filter {
         $characters= $element['autocomplete']['characters'];
       }
       $result.= "<div id='autocomplete$tag' class='autocomplete'></div>".
-                "<script type='text/javascript'>".
-                "new Ajax.Autocompleter('$tag', 'autocomplete$tag', 'autocomplete.php', { minChars: $characters, frequency: $frequency });".
-                "</script>";
+        "<script type='text/javascript'>".
+        "new Ajax.Autocompleter('$tag', 'autocomplete$tag', 'autocomplete.php', { minChars: $characters, frequency: $frequency });".
+        "</script>";
 
-       $this->autocompleters[$tag]= $element['autocomplete'];
+      $this->autocompleters[$tag]= $element['autocomplete'];
     }
     return $result;
   }
@@ -220,7 +233,7 @@ class filter {
   {
     $content= "<table class='filter-wrapper'><tr><td>".$this->renderFilterMenu()."</td><td>";
     $content.= "<div class='search-filter'><input type='text' name='search_filter' value='".$this->value."'></div>".
-              "&nbsp;<button class='search-filter' type='submit' title='"._("Search")."'>".image("images/find.png")."</button></td></tr></table>";
+      "&nbsp;<button class='search-filter' type='submit' title='"._("Search")."'>".image("images/find.png")."</button></td></tr></table>";
 
     // Return meta data
     return ("<input type='hidden' name='FILTER_PID' value='".$this->pid."'>".$content);
@@ -267,9 +280,9 @@ class filter {
         $filter= preg_replace("/\\$/", "*".normalizeLdap($this->value)."*", $filter);
       }
 
-      $result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes, $this->category, $this->objectStorage));
+      $result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes, $this->categories, $this->objectStorage));
     }
-    
+
     return ($result);
   }
 
@@ -314,10 +327,10 @@ class filter {
     $filter= preg_replace("/\\$/", normalizeLdap($value), $filter);
     if (isset($config['base']) && isset($config['scope']) && isset($config['category'])) {
       $result= call_user_func(array($backend, 'query'), $config['base'], $config['scope'], $filter, $attributes,
-                           $config["category"], $config["objectStorage"]);
+          $config["category"], $config["objectStorage"]);
     } else {
       $result= call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes,
-                           $this->category, $this->objectStorage);
+          $this->categories, $this->objectStorage);
     }
 
     foreach ($result as $entry) {
@@ -393,12 +406,16 @@ class filter {
   {
     // Load shortcut
     $result= "<input type='hidden' name='act' id='filter' value=''><div style='display:none'><input type='submit' name='exec_filter' id='exec_filter' value=''></div>".
-             "<ul class='level1' id='filter-root'><li><a href='#'>".image("images/filter.png")._("...")."&nbsp;".image("images/lists/sort-down.png")."</a>";
+      "<ul class='level1' id='filter-root'><li><a href='#'>".image("images/filter.png")._("...")."&nbsp;".image("images/lists/sort-down.png")."</a>";
 
     // Build ul/li list
     $result.= "<ul class='level2'>";
     $result.= "<li><a href='#'>Dummy placeholder</a></li>";
-    #$result.= "<li$separator><a href='#' onClick='document.getElementById(\"actionmenu\").value= \"".$action['name']."\";mainform.submit();'>$img"._($action['label'])."</a></li>";
+    $result.= "<li><a href='#'>Dummy placeholder</a></li>";
+#$result.= "<li$separator><a href='#' onClick='document.getElementById(\"actionmenu\").value= \"".$action['name']."\";mainform.submit();'>$img"._($action['label'])."</a></li>";
+
+# AUTOCOMPLETER and getTextbox
+
     $result.= "</ul>";
 
     $script= '<script type="text/javascript" language="JavaScript">var menu2; menu2= new Menu("filter-root", "menu2", configMenu)</script>';
@@ -406,7 +423,17 @@ class filter {
     return "<div id='filtermenu'>".$result."</li></ul><div>$script";
   }
 
+
+  
+  function setCategories($categories)
+  {
+    if(!is_array($categories) && !empty($categories)){
+      $categories = array($categories)  ;
+    }
+    $this->categories = $categories;
+  }
 }
 
 
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>