diff --git a/gosa-plugins/fai/admin/fai/class_faiManagement.inc b/gosa-plugins/fai/admin/fai/class_faiManagement.inc
index f9a8758612307d4beafbf128c89c2c61f242bc4f..0099a68637175dc13b4b3d10156e08a9d27fd054 100644 (file)
$display = "";
$s_action = "";
+ $i_entryID ="";
+ $s_entryType= "";
$s_entry = "";
$no_save = FALSE; // hide Apply / Save buttons
"/^edit_continue$/" => "select_class_name_finished",
+ "/^group_copy/" => "group_copy",
+ "/^group_cut/" => "group_cut",
"/^group_edit/" => "group_edit",
"/^group_remove/" => "group_remove");
foreach($_POST as $name => $value){
break;
}
}
- if(preg_match("/^edit_[0-9]*_.*$/",$name)){
+ if(preg_match("/^edit_[0-9]*_.*$/",$name)){
$i_entryID = preg_replace("/^edit_([0-9]*)_.*$/i","\\1",$name);
$s_entryType= preg_replace("/^edit_[0-9]*_([^_]*)_.*$/i","\\1",$name);
$s_action = "edit";
- break;
- }elseif(preg_match("/^entry_delete_.*/",$name)){
- $s_entry = preg_replace("/^entry_delete_/","",$name);
- $s_entry = preg_replace("/_.*$/","",$s_entry);
- $s_action = "delete";
- break;
}
}
+
+ if(isset($_GET['act']) && $_GET['act'] == "edit" && isset($_GET['id'])){
+ if(isset($this->objects[$_GET['id']])){
+ $s_action = "group_edit";
+ $s_entry = $_GET['id'];
+ }
+ }
+
foreach(array("freeze_branch" => "freeze_branch",
"branch_branch" => "branch_branch",
"remove_branch" => "remove_branch") as $from => $to){
$this->no_save = $no_save;
}
- /********************
- Copy & Paste
- ********************/
-
- /* Display the copy & paste dialog, if it is currently open */
- $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry);
- if($ret){
- return($ret);
- }
-
/*******************
Opsi extension
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];
+ 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];
+ 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){
$this->dialog->save_object();
if($this->dialog->is_open()){
return($this->dialog->execute());
- }
- if($this->dialog->is_canceled() || isset($_POST['cancel_lock'])){
+ }elseif($this->dialog->is_canceled() || isset($_POST['cancel_lock'])){
$this->dialog = FALSE;
+ }else{
+ if(!count($this->dialog->get_selected())){
+ $this->dialog = FALSE;
+ }
}
}
+ /********************
+ Copy & Paste
+ ********************/
+
+ /* Display the copy & paste dialog, if it is currently open */
+ $ret = $this->copyPasteHandling_from_queue($s_action,$i_entryID,$s_entryType);
+ if($ret){
+ return($ret);
+ }
+
/********************
Delete MULTIPLE entries confirmed
$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);
}
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
$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);
+ }
}
}
$this->dns = array();
}
-
/****************
Edit entry
****************/
- if(($s_action == "edit") || $this->dialog instanceOf faiGroupHandle && $this->dialog->get_mode() == "edit"){
+ if($s_action == "edit" || $this->dialog instanceOf faiGroupHandle && $this->dialog->get_mode() == "edit"){
$entry = array();
if($this->dialog instanceOf faiGroupHandle){
$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);
}
}
}
if(isset($_POST['edit_cancel'])){
$this->dialog=FALSE;
$this->is_dialog = false;
- session::un_set('objectinfo');
+ set_object_info();
$this->remove_lock();
}
$this->remove_lock();
$this->dialog=FALSE;
$this->is_dialog=false;
- session::un_set('objectinfo');
+ set_object_info();
}else{
/* Reinitialize tab */
function remove_lock()
{
- if (isset($this->dn)){
+ if (isset($this->dn) && !empty($this->dn)){
del_lock ($this->dn);
}
if(isset($this->dns) && is_array($this->dns) && count($this->dns)){
}
- 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)){
$ui = get_userinfo();
- /* Add a single entry to queue */
+ // Copy a single entry
if($s_action == "copy"){
-
- /* Cleanup object queue */
+ $entry = $this->objects[$i_entryID][$s_entryType];
$this->CopyPasteHandler->cleanup_queue();
- $entry = $this->objects[$s_entry];
$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,$s_action,$a_setup[0],$a_setup[2],"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"))){
+
+ /* Cleanup object queue */
+ $this->CopyPasteHandler->cleanup_queue();
+ $group = $this->dialog->get_selected();
+ foreach($group as $entry){
+ $a_setup = $this->get_type($entry);
+ $dn = $entry['dn'];
+ if($ui->is_copyable($dn,"fai",$a_setup[1])){
+ $this->CopyPasteHandler->add_to_queue($dn,$this->dialog->get_mode(),$a_setup[0],$a_setup[2],"fai");//$a_setup[1]);
+ }
+ }
+ $this->dialog = FALSE;
}
}
/* Add new entries to CP queue */
foreach($this->list_get_selected_items() as $id){
+ $group = $this->objects[$id];
+ foreach($group as $entry){
+ $a_setup = $this->get_type($entry);
+ $dn = $entry['dn'];
- /* Cleanup object queue */
- $entry = $this->objects[$id];
- $a_setup = $this->get_type($entry);
- $dn = $entry['dn'];
-
- if($s_action == "copy_multiple" && $ui->is_copyable($dn,"fai",$a_setup[1])){
- $this->CopyPasteHandler->add_to_queue($dn,"copy",$a_setup[0],$a_setup[2],"fai");//$a_setup[1]);
+ if($s_action == "copy_multiple" && $ui->is_copyable($dn,"fai",$a_setup[1])){
+ $this->CopyPasteHandler->add_to_queue($dn,"copy",$a_setup[0],$a_setup[2],"fai");//$a_setup[1]);
+ }
}
}
}