Code

Updated terminal copy & paste
[gosa.git] / plugins / admin / systems / class_baseSelectDialog.inc
index 8e32df4446099a87e2d73b33615450689f7d53c3..0a1040c7a22909d72193cfec8ba8122ab60fb998 100644 (file)
@@ -2,21 +2,23 @@
 
 class baseSelectDialog extends MultiSelectWindow
 {
-  var $selected_base        = ""; // Used for navigation 
+  var $selectedBase        = ""; // Used for navigation 
   var $base_selection_regex = "*"; // Used regex ... 
-//  var $Doesnothing          = ""; // Checkbox which does nothing 
-
-  var $selectedBase         = false;  // used to specify the selected base, 
+  var $BaseToUse         = false;  // used to specify the selected base, 
                                       // false if none is selected
 
   var $allowedBases         = array();
+  var $parent               = NULL;
  
-  function baseSelectDialog ($config,$onlyAllowThisBases = array())
+  function baseSelectDialog ($config,$parent,$onlyAllowThisBases = array())
   {
-    MultiSelectWindow::MultiSelectWindow($config,"BASEselectWindow");
-    
-    $this->selected_base = $config->current['BASE'];
-  
+    echo "Need to pass module via parameter!<br>";
+    $module= "all";
+    MultiSelectWindow::MultiSelectWindow($config, "BASEselectWindow", $module);
+   
+    $this->parent = $parent;
+    $this->selectedBase = $config->current['BASE'];
     $this->allowedBases  = $onlyAllowThisBases;
 
     $this->SetTitle("Base");
@@ -61,16 +63,16 @@ class baseSelectDialog extends MultiSelectWindow
   {
     $this->ClearElementsList();
     $ldap = $this->config->get_ldap_link();
-    $ldap->cd($this->selected_base);
+    $ldap->cd($this->selectedBase);
     $ldap->ls("(&(objectClass=gosaDepartment)
                  (|(ou=".$this->base_selection_regex.")
                    (cn=".$this->base_selection_regex.")
                    (description=".$this->base_selection_regex.")))",
-              $this->selected_base,array("ou","description","cn"));
+              $this->selectedBase,array("ou","description","cn"));
 
     $link = "<a href='?plug=".$_GET['plug']."&open_dep=%s'>%s</a>";
 
-    $base_back          = preg_replace("/^[^,]+,/","",$this->selected_base);
+    $base_back          = preg_replace("/^[^,]+,/","",$this->selectedBase);
     $base_back          = convert_department_dn($base_back);
   
     /* Add departments, to be able to switch into them
@@ -121,26 +123,29 @@ class baseSelectDialog extends MultiSelectWindow
   function Save()
   {
     MultiSelectWindow :: Save();  
-    $this->selectedBase = $this->selected_base;
+    $this->BaseToUse = $this->selectedBase;
   }
 
   function isSelected() 
   {
-    return($this->selectedBase);
+    return($this->BaseToUse);
   }
 
   function setCurrentBase($base)
   {
-    $this->selected_base = $base;
+    $this->selectedBase = $base;
   }
 
   function save_object()
   {
+    /* Save current base */
+    $old_base = $this->selectedBase;
+  
     /* Save automatic created POSTs like regex, checkboxes */
     MultiSelectWindow::save_object();   
     
     if(isset($_GET['open_dep'])){
-      $this->selected_base = base64_decode($_GET['open_dep']);
+      $this->selectedBase = base64_decode($_GET['open_dep']);
     } 
 
     $s_action ="";
@@ -155,33 +160,38 @@ class baseSelectDialog extends MultiSelectWindow
         $tmp = preg_replace("/^usebase_/","",$key);
         $tmp = preg_replace("/_.*$/","",$tmp);
         $tmp = base64_decode($tmp);
-        $this->selectedBase = $tmp;
+        $this->BaseToUse = $tmp;
       }
     }
 
     $ui= get_userinfo();
     /* Homebutton is posted */
     if($s_action=="home"){
-      $this->selected_base=(preg_replace("/^[^,]+,/","",$ui->dn));
-      $this->selected_base=(preg_replace("/^[^,]+,/","",$this->selected_base));
+      $this->selectedBase=(preg_replace("/^[^,]+,/","",$ui->dn));
+      $this->selectedBase=(preg_replace("/^[^,]+,/","",$this->selectedBase));
     }
 
     /* back to the roots ^^ */
     if($s_action=="root"){
-      $this->selected_base=($this->config->current['BASE']);
+      $this->selectedBase=($this->config->current['BASE']);
     }
 
     /* If Backbutton is Posted */
     if($s_action=="back"){
-      $base_back          = preg_replace("/^[^,]+,/","",$this->selected_base);
+      $base_back          = preg_replace("/^[^,]+,/","",$this->selectedBase);
       $base_back          = convert_department_dn($base_back);
 
       if(isset($this->config->departments[trim($base_back)])){
-        $this->selected_base= $this->config->departments[trim($base_back)];
+        $this->selectedBase= $this->config->departments[trim($base_back)];
       }else{
-        $this->selected_base= $this->config->departments["/"];
+        $this->selectedBase= $this->config->departments["/"];
       }
     }
+
+    /* Restore old base, if selected base is not allowed */
+    if(count($this->allowedBases) && !isset($this->allowedBases[$this->selectedBase])){
+      $this->selectedBase = $old_base;
+    }
   }
 }
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: