Code

Updated filter automatic indent
[gosa.git] / gosa-core / include / class_baseSelector.inc
index 01750129fc844b538790203cde9f68a23888965d..2833ce5e36a00fd6df54c821e55528b139cb9da1 100644 (file)
@@ -29,15 +29,8 @@ class baseSelector {
   private $submitButton= true;
   protected $tree;
   protected $pathMapping;
+  protected $lastState;
 
-  // It would be better to get a dn -> [name, description, type] array
-  // to avoid these tasks be done several times. Skipping for the moment.
-  #'dc' => 'plugins/departments/images/domain.png',
-  #'dc' => 'plugins/departments/images/dc.png',
-  #'l' => 'plugins/departments/images/locality.png',
-  #'c' => 'plugins/departments/images/country.png',
-  #'o' => 'plugins/departments/images/organization.png',
-  #'ou' => 'plugins/departments/images/folder.png',
 
   function __construct($bases, $base= "")
   {
@@ -71,6 +64,18 @@ class baseSelector {
   }
 
 
+  function checkBase($base)
+  {
+    return isset($this->pathMapping[$base]);
+  }
+
+
+  function checkLastBaseUpdate()
+  {
+    return $this->lastState;
+  }
+
+
   function setBases($bases)
   {
     global $config;
@@ -101,29 +106,35 @@ class baseSelector {
     // Analyze for base changes if needed
     $this->action= null;
     $last_base= $this->base;
-    if(isset($_REQUEST['PID']) && $_REQUEST['PID'] == $this->pid) {
-      if (isset($_REQUEST['REBASE'])) {
-        $new_base= base64_decode($_REQUEST['REBASE']);
+    if(isset($_REQUEST['BPID']) && $_REQUEST['BPID'] == $this->pid) {
+      if (isset($_POST['bs_rebase_'.$this->pid]) && !empty($_POST['bs_rebase_'.$this->pid])) {
+        $new_base= base64_decode($_POST['bs_rebase_'.$this->pid]);
         if (isset($this->pathMapping[$new_base])) {
           $this->base= $new_base;
           $this->action= 'rebase';
         } else {
+          $this->lastState= false;
           return false;
         }
-      }
-    } elseif (isset($_POST['bs_input_'.$this->pid])) {
-
-      // Take over input field base
-      if ($this->submitButton && isset($_POST['submit_base_'.$this->pid.'_x']) || !$this->submitButton) {
-
-        // Check if base is available
-        foreach ($this->pathMapping as $key => $path) {
-          if (mb_strtolower($path) == mb_strtolower($_POST['bs_input_'.$this->pid])) {
-            $this->base= $key;
-            break;
+      }else{
+        // Input field set?
+        if (isset($_POST['bs_input_'.$this->pid])) {
+
+          // Take over input field base
+          if ($this->submitButton && isset($_POST['submit_base_'.$this->pid.'_x']) || !$this->submitButton) {
+
+            // Check if base is available
+            $this->lastState= false;
+            foreach ($this->pathMapping as $key => $path) {
+              if (mb_strtolower($path) == mb_strtolower($_POST['bs_input_'.$this->pid])) {
+                $this->base= $key;
+                $this->lastState= true;
+                break;
+              }
+            }
           }
         }
-      }
+      } 
 
     }
 
@@ -132,9 +143,8 @@ class baseSelector {
       return true;
     }
 
-    $link= "href='?plug=".$_GET['plug']."&PID=".$this->pid."&REBASE=".base64_encode($config->current['BASE'])."'";
-    $this->tree= "<input type='text' size='35' name='bs_input_".$this->pid."' id='bs_input_".$this->pid."' onkeydown=\"\$('bs_".$this->pid."').hide()\" onfocus=\"\$('bs_".$this->pid."').hide()\" onmouseover=\"Element.clonePosition(\$('bs_".$this->pid."'), 'bs_input_".$this->pid."', {setHeight: false, setWidth: false, offsetTop:(Element.getHeight('bs_input_".$this->pid."'))});\$('bs_".$this->pid."').show();\" onmouseout=\"rtimer= Element.hide.delay(0.25, 'bs_".$this->pid."')\" value=\"".htmlentities($this->pathMapping[$this->base])."\">";
-
+    $link= "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($config->current['BASE'])."';  $('submit_tree_base_".$this->pid."').click();\"";
+    $this->tree= "<input type='text' size='35' name='bs_input_".$this->pid."' id='bs_input_".$this->pid."' onkeydown=\"\$('bs_".$this->pid."').hide()\" onfocus=\"\$('bs_".$this->pid."').hide()\" onmouseover=\"Element.clonePosition(\$('bs_".$this->pid."'), 'bs_input_".$this->pid."', {setHeight: false, setWidth: false, offsetTop:(Element.getHeight('bs_input_".$this->pid."'))});\$('bs_".$this->pid."').show();\" onmouseout=\"rtimer= Element.hide.delay(0.25, 'bs_".$this->pid."')\" value=\"".preg_replace('/"/', '&quot;',$this->pathMapping[$this->base])."\">";
 
     // Autocompleter
     $this->tree.= "<div id='autocomplete_".$this->pid."' class='autocomplete'></div>".
@@ -146,7 +156,7 @@ class baseSelector {
     $this->tree.= "</script>";
 
     $selected= $this->base == $config->current['BASE']?"Selected":"";
-    $this->tree.= "<div class='treeList' style='display:none;max-height:".$this->height."px' id='bs_".$this->pid."' onmouseover=\"window.clearTimeout(rtimer);\" onmouseout=\"rtimer= Element.hide.delay(0.25, 'bs_".$this->pid."')\"><a class='treeList$selected' $link>/ ["._("Root")."]</a><ul class='treeList'>\n";
+    $this->tree.= "<div class='treeList' style='display:none;max-height:".$this->height."px' id='bs_".$this->pid."' onmouseover=\"window.clearTimeout(rtimer);\" onmouseout=\"rtimer= Element.hide.delay(0.25, 'bs_".$this->pid."')\"><a class='treeList$selected' $link>/&nbsp;["._("Root")."]</a><ul class='treeList'>\n";
     $first= true;
     $last_indent= 2;
 
@@ -174,27 +184,42 @@ class baseSelector {
         $this->tree.= "</li>\n";
       }
       $selected= $this->base == $base?" class='treeListSelected'":"";
-      $link= "href='?plug=".$_GET['plug']."&amp;PID=".$this->pid."&amp;REBASE=".base64_encode($base)."'";
-      $this->tree.= "<li><a$selected $link>".str_replace(' ', '&nbsp;', ldap::fix(preg_replace('/^[a-z0-9]+=([^,]+),.*$/i', '$1', $base)))."</a>";
+      $link= "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($base)."';$('submit_tree_base_".$this->pid."').click();\"";
+      $this->tree.= "<li>".
+                    image($config->department_info[$base]['img'])."&nbsp;<a$selected $link>".
+                    $this->gennonbreaks($config->department_info[$base]['name']).
+                    ($config->department_info[$base]['description']==''?'':'&nbsp;<span class="informal">['.$this->gennonbreaks($config->department_info[$base]['description']).']</span>').
+                    "</a>";
 
       $last_indent= $indent;
       $first= false;
     }
 
     // Close tree
-    for ($i= 0; $i<$last_indent; $i++) {
+    for ($i= 1; $i<$last_indent; $i++) {
       $this->tree.= "</li></ul>\n";
     }
     $this->tree.= "</div>\n";
 
     // Draw submitter if required
     if ($this->submitButton) {
-      $this->tree.= "&nbsp;<input class='center' type='image' src='images/lists/submit.png' align='middle' title='"._("Submit")."' name='submit_base_".$this->pid."' id='submit_base_".$this->pid."' alt='"._("Submit")."'>";
+      $this->tree.= image('images/lists/submit.png', "submit_base_".$this->pid, _("Submit"));
     }
+    $this->tree.= "<input type='submit' style='display:none' name='submit_tree_base_".$this->pid."' id='submit_tree_base_".$this->pid."'>";
+    $this->tree.= "<input type='hidden' name='bs_rebase_".$this->pid."' id='bs_rebase_".$this->pid."'>";
+    $this->tree.= "<input type='hidden' name='BPID' id='BPID' value='".$this->pid."'>";
 
+    $this->lastState= true;
     return true;
   }
 
+
+  function gennonbreaks($string)
+  {
+    return str_replace('-', '&#8209;', str_replace(' ', '&nbsp;', $string));
+  }
+
+
   function render()
   {
     return $this->tree;
@@ -209,8 +234,8 @@ class baseSelector {
 
   function getAction()
   {
-    // Do not do anything if this is not our PID, or there's even no PID available...
-    if(!isset($_REQUEST['PID']) || $_REQUEST['PID'] != $this->pid) {
+    // Do not do anything if this is not our BPID, or there's even no BPID available...
+    if(!isset($_REQUEST['BPID']) || $_REQUEST['BPID'] != $this->pid) {
       return;
     }