Code

Updated terminal copy & paste
[gosa.git] / plugins / admin / systems / class_baseSelectDialog.inc
index a0d9f340aebc6fa00279ade6cf49d342dfdc8a32..0a1040c7a22909d72193cfec8ba8122ab60fb998 100644 (file)
@@ -2,38 +2,49 @@
 
 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 $BaseToUse         = false;  // used to specify the selected base, 
+                                      // false if none is selected
 
-  var $selectedBase         = false;  // used to specify the selected base, 
-                                      // false if none is selected 
-  function baseSelectDialog ($config)
+  var $allowedBases         = array();
+  var $parent               = NULL;
+  function baseSelectDialog ($config,$parent,$onlyAllowThisBases = array())
   {
-    MultiSelectWindow::MultiSelectWindow($config);
-    
-    $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");
-    $this->SetSummary(_("Please choose your prefered base"));
+    $this->SetSummary(_("Choose a base"));
     $this->SetListHeader("<div style='background:#F0F0F9;padding:5px;'>".
-        " <input class='center' type='image' align='middle' src='images/list_back.png'
-        title='"._("Go up one department")."' alt='"._("Up")."' name='dep_back'>&nbsp;".
         " <input class='center' type='image' src='images/list_root.png' align='middle'
         title='"._("Go to root department")."' name='dep_root' alt='"._("Root")."'>&nbsp;".
+        " <input class='center' type='image' align='middle' src='images/list_back.png'
+        title='"._("Go up one department")."' alt='"._("Up")."' name='dep_back'>&nbsp;".
         " <input class='center' type='image' align='middle' src='images/list_home.png'
         title='"._("Go to users department")."' alt='"._("Home")."' name='dep_home'>&nbsp;".
+        " <input class='center' type='image' src='images/list_reload.png' align='middle' title='"._("Reload list")."' name='submit_department' alt='"._("Submit")."'>&nbsp;".
         "</div>");
 
-    $this->SetInformation(_("Step in the prefered tree and click save to use the subtree as base for the currently edited user. Or click the image on the end of each entry."));
+    $this->SetInformation(_("Step in the prefered tree and click save to use the current subtree as base. Or click the image at the end of each entry."));
 
     $this->EnableAplhabet   (true);
     $this->EnableCloseButton(true);
     $this->EnableSaveButton (true);
 
+    $this->SetSaveButtonString(_("Use"));
+    $this->SetCloseButtonString(_("Cancel"));
+
     $this->AddHeader(array("string"=>"&nbsp;","attach"=>"style='width:20px;'"));
-    $this->AddHeader(array("string"=>"Base"));
-    $this->AddHeader(array("string"=>"Option","attach"=>"style='width:50px;border-right:0px;'"));
+    $this->AddHeader(array("string"=>_("Base")));
+    $this->AddHeader(array("string"=>_("Action"),"attach"=>"style='width:50px;border-right:0px;'"));
 
     /*                  Text        ,Value    ,Name         ,Is selected */
 //  $this->AddCheckBox("Doesnothing","servers","Doesnothing",true);
@@ -52,24 +63,31 @@ 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
      */
     while($attrs = $ldap->fetch()){
-  
       $key = $attrs['dn']  ;
       $val = $attrs['ou'][0];
+    
+      if(count($this->allowedBases) != 0){
+        if(!isset($this->allowedBases[$key])){
+          continue;
+          break;
+        }
+      }
  
       /* Append description */ 
       if(isset($attrs['description'][0])){
@@ -96,7 +114,7 @@ class baseSelectDialog extends MultiSelectWindow
       $field1 = array("string" => "<img src='images/".$non_empty."folder.png' alt='department'>", 
                       "attach" => "style='text-align:center;width:20px;'");
       $field2 = array("string" => sprintf($link,base64_encode($key),$val), "attach" => "style=''");
-      $field3 = array("string" => sprintf("&nbsp;<input type='image' img src='images/save.png' name='usebase_%s'>",base64_encode($key)), 
+      $field3 = array("string" => sprintf("&nbsp;<input title='"._("Select this base")."' type='image' img src='images/save.png' name='usebase_%s'>",base64_encode($key)), 
                       "attach" => "style='width:50px;border-right:0px;text-align:right;'");
       $this->AddElement(array($field1,$field2,$field3));
     }
@@ -105,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 ="";
@@ -139,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: