Code

Updated FAI partition handling
[gosa.git] / gosa-plugins / fai / admin / fai / class_faiManagement.inc
index 1668c12505755ce81e1b40436479bc9a65c8d73e..0099a68637175dc13b4b3d10156e08a9d27fd054 100644 (file)
@@ -113,6 +113,8 @@ class faiManagement extends plugin
     
                $display        = "";
     $s_action  = "";
+    $i_entryID ="";
+    $s_entryType= "";
                $s_entry        = "";
     $no_save = FALSE;   // hide Apply / Save buttons
     
@@ -260,24 +262,46 @@ class faiManagement extends plugin
         foreach(array("opsi_netboot","opsi_local") as $type){
           if(isset($group[$type])) unset($group[$type]);
         }
-        if(count($group)){
+        if(count($group) == 1){
+          $s_action = "remove";
+          $i_entryID = $s_entry;
+          $s_entryType = key($group);
+        }elseif(count($group)){
           $this->dialog = new faiGroupHandle($group,"remove");
         }
       }
     }elseif($s_action == "group_edit"){
       if(isset($this->objects[$s_entry])){
         $group = $this->objects[$s_entry];
-        $this->dialog = new faiGroupHandle($group,"edit");
+        if(count($group) == 1){
+          $s_action = "edit";
+          $i_entryID = $s_entry;
+          $s_entryType = key($group);
+        }else{
+          $this->dialog = new faiGroupHandle($group,"edit");
+        }
       }
     }elseif($s_action == "group_cut"){
       if(isset($this->objects[$s_entry])){
         $group = $this->objects[$s_entry];
-        $this->dialog = new faiGroupHandle($group,"cut");
+        if(count($group) == 1){
+          $s_action = "cut";
+          $i_entryID = $s_entry;
+          $s_entryType = key($group);
+        }else{
+          $this->dialog = new faiGroupHandle($group,"cut");
+        }
       }
     }elseif($s_action == "group_copy"){
       if(isset($this->objects[$s_entry])){
         $group = $this->objects[$s_entry];
-        $this->dialog = new faiGroupHandle($group,"copy");
+        if(count($group) == 1){
+          $s_action = "copy";
+          $i_entryID = $s_entry;
+          $s_entryType = key($group);
+        }else{
+          $this->dialog = new faiGroupHandle($group,"copy");
+        }
       }
     }
     if($this->dialog instanceOf faiGroupHandle){
@@ -298,7 +322,7 @@ class faiManagement extends plugin
      ********************/
 
     /* Display the copy & paste dialog, if it is currently open */
-    $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry);
+    $ret = $this->copyPasteHandling_from_queue($s_action,$i_entryID,$s_entryType);
     if($ret){
       return($ret);
     }
@@ -326,8 +350,8 @@ class faiManagement extends plugin
           $this->dialog->set_acl_base($dn);
           $this->dialog->by_object[$type[1]]->remove_from_parent ();
           $this->dialog= FALSE;
-          $to_del = FAI::clean_up_releases($dn);
           FAI::save_release_changes_now();
+          $to_del = FAI::clean_up_releases($dn);
           foreach($to_del as $dn){
             $ldap->rmdir_recursive($dn);
           }
@@ -351,7 +375,7 @@ class faiManagement extends plugin
       Delete confirme dialog 
      ****************/
 
-    if ($s_action=="del_multiple" || 
+    if ($s_action=="del_multiple" || $s_action == "remove" ||  
         $this->dialog instanceOf faiGroupHandle && $this->dialog->get_mode() == "remove"){
  
       /* Collect objects to delete and check if objects are freezed
@@ -359,13 +383,18 @@ class faiManagement extends plugin
       $dns = array();
       $errors = "";
       $this->dns = array();
-      if($this->dialog instanceOf faiGroupHandle){
+
+      if($s_action == "remove"){
+        $to_delete =array($entry = $this->objects[$i_entryID][$s_entryType]);
+      }elseif($this->dialog instanceOf faiGroupHandle){
         $to_delete = $this->dialog->get_selected();
       }else{
         $ids = $this->list_get_selected_items();
         $to_delete = array();
         foreach($ids as $id){
-          $to_delete = array_merge($to_delete,$this->objects[$id]);
+          foreach($this->objects[$id] as $obj) { 
+            array_push($to_delete, $obj); 
+          } 
         }
       } 
 
@@ -462,7 +491,7 @@ class faiManagement extends plugin
           $this->dialog->by_object[$a_setup[1]]->FAIstate = $entry['FAIstate'];
           $this->dialog->set_acl_base($this->dn);
           $this->is_dialog  = true;
-          session::set('objectinfo',$this->dn);
+          set_object_info($this->dn);
         }
       }
     }
@@ -921,7 +950,7 @@ class faiManagement extends plugin
                if(isset($_POST['edit_cancel'])){
                        $this->dialog=FALSE;
                        $this->is_dialog = false;
-                       session::un_set('objectinfo');
+                       set_object_info();
       $this->remove_lock();
                }
 
@@ -973,7 +1002,7 @@ class faiManagement extends plugin
           $this->remove_lock();
           $this->dialog=FALSE;
           $this->is_dialog=false;
-          session::un_set('objectinfo');
+          set_object_info();
         }else{
 
           /* Reinitialize tab */
@@ -1303,7 +1332,7 @@ class faiManagement extends plugin
   }
 
 
-  function copyPasteHandling_from_queue($s_action,$s_entry)
+  function copyPasteHandling_from_queue($s_action,$i_entryID,$s_entryType)
   {
     /* Check if Copy & Paste is disabled */
     if(!is_object($this->CopyPasteHandler)){
@@ -1312,7 +1341,29 @@ class faiManagement extends plugin
 
     $ui = get_userinfo();
 
-    /* Add a single entry to queue */
+    // Copy a single entry
+    if($s_action == "copy"){
+      $entry = $this->objects[$i_entryID][$s_entryType];
+      $this->CopyPasteHandler->cleanup_queue();
+      $a_setup  = $this->get_type($entry);
+      $dn = $entry['dn'];
+      if($ui->is_copyable($dn,"fai",$a_setup[1])){
+        $this->CopyPasteHandler->add_to_queue($dn,"copy",$a_setup[0],$a_setup[2],"fai");
+      }
+    }
+
+    // cut a single entry
+    if($s_action == "cut"){
+      $entry = $this->objects[$i_entryID][$s_entryType];
+      $this->CopyPasteHandler->cleanup_queue();
+      $a_setup  = $this->get_type($entry);
+      $dn = $entry['dn'];
+      if($ui->is_copyable($dn,"fai",$a_setup[1])){
+        $this->CopyPasteHandler->add_to_queue($dn,"cut",$a_setup[0],$a_setup[2],"fai");
+      }
+    }
+
+    /* Add a entries from the group selection to queue */
     if($this->dialog instanceOf faiGroupHandle && !$this->dialog->is_open()){
 
       if(in_array($this->dialog->get_mode(),array("copy"))){