Code

Updated table summary
[gosa.git] / gosa-plugins / fai / admin / fai / class_faiPackage.inc
index bbfa30c33429b47b331af09abd09e5e89f3e132e..d32f26a64d41e27de24dc2c150bd47363a5deaee 100644 (file)
@@ -47,6 +47,8 @@ class faiPackage extends plugin
   var $base;
   var $FAIpackage ;
 
+  var $packageSelect ;
+
   var $FAIinstallMethods  = array( "install", "ninstall", "remove", 
       "dselect-upgrade", "taskinst", "taskrm",
       "hold", "clean", "aptitude", "aptitude-r",
@@ -271,12 +273,46 @@ class faiPackage extends plugin
       }
     }
 
-    /* + was pressed to open the package dialog */
-    if(isset($_POST['Addpkg']) && 
-        $this->acl_is_writeable("FAIpackage") && 
-        !preg_match("/freeze/",$this->FAIstate)){
-      $this->dialog = new faiPackageEntry($this->config, $this->FAIdebianRelease,$this->usedPackages);
-      $this->is_dialog =true;
+    // Open the packageSelect dialog to allow adding packages out of a list.
+    if(isset($_POST['Addpkg']) && $this->acl_is_writeable("FAIpackage") && !preg_match("/freeze/",$this->FAIstate)){
+      $this->packageSelect = new packageSelect($this->config, get_userinfo());
+      session::set('packageSelect_Release',$this->FAIdebianRelease);
+      $this->dialog =true;
+    }
+
+    // Close packageSelect dialog.
+    if(isset($_POST['packageSelect_cancel'])){
+      $this->packageSelect = FALSE;
+      $this->dialog =FALSE;
+    }
+
+    // Close packageSelect dialog and add the selected packages.
+    if(isset($_POST['packageSelect_save']) && $this->packageSelect instanceOf packageSelect){
+      if(!preg_match("/freeze/i", $this->FAIstate)){
+        $use = $this->packageSelect->save();
+
+        foreach($use as $pkg){
+          $item = array();
+          for($i =0; $i < $pkg['count']; $i++){
+            $item[$pkg[$i]] = $pkg[$pkg[$i]][0];
+          }
+          $this->usedPackages[$item['PACKAGE']] = $item['PACKAGE']; 
+        }
+
+        ksort($this->usedPackages);
+
+        /* Generate package list */
+        $this->list= $this->genPkgs(TRUE);
+      }
+      $this->packageSelect = FALSE;
+      $this->dialog =FALSE;
+    }
+
+    // Display package add dialog 
+    if($this->packageSelect instanceOf packageSelect){
+
+      session::set('filterBlacklist', array('PACKAGE' => $this->usedPackages));
+      return $this->packageSelect->execute();
     }
 
 
@@ -339,30 +375,6 @@ class faiPackage extends plugin
       $this->is_dialog=false;
     }
 
-    /* attach new packages */
-    if(isset($_POST['SaveSubObject'])) {
-      if(!preg_match("/freeze/i", $this->FAIstate)){
-        $this->dialog->save_object();
-        if(count($this->dialog->check())){
-          foreach($this->dialog->check() as $msgs){
-            msg_dialog::display(_("Error"), $msgs, ERROR_DIALOG);
-          }
-        }else{
-          $use = $this->dialog->save();
-          $this->usedPackages = $use;
-          $this->dialog = false;
-          $this->is_dialog=false;
-          ksort($this->usedPackages);
-
-          /* Generate package list */
-          $this->list= $this->genPkgs(TRUE);
-        }
-      }else{
-        $this->dialog = false;
-        $this->is_dialog=false;
-      }
-    }
-
     /* Save Configuration */
     if(isset($_POST['SaveObjectConfig'])){
       if(!preg_match("/^freeze/", $this->FAIstate)){