index 2158806541b83b0ee86d2c2465de53f5993ef7c5..e95dc01c3ce685d2866f443ac2aa41faccffb344 100644 (file)
var $dispNewFreeze= false;
var $DivListFai;
+ var $start_pasting_copied_objects = FALSE;
+ var $CopyPasteHandler = FALSE;
/* construction/reconstruction
*/
$s_entry = "";
/* If an entry was locked, these vars will be stored in a session to allow direct edit */
- $_SESSION['LOCK_VARS_TO_USE'] = array("/^edit_entry$/","/^id$/","/^entry_edit_/","/^entry_delete_/");
+ $_SESSION['LOCK_VARS_TO_USE'] = array("/^edit_entry$/","/^id$/","/^entry_edit_/","/^entry_delete_/","/^item_selected/","/^remove_multiple_fai_objects/");
/****************
"/create_script/i"=>"new_script", "/create_hook/i"=>"new_hook",
"/create_variable/i"=>"new_variable", "/create_template/i"=>"new_template",
"/create_package/i"=>"new_package", "/create_profile/i"=>"new_profile",
- "/edit_continue/"=>"select_class_name_finished");
+ "/edit_continue/"=>"select_class_name_finished",
+ "/^multiple_copy_fai/" => "copy_multiple",
+ "/^multiple_cut_fai/" => "cut_multiple",
+ "/^remove_multiple_fai_objects/" => "del_multiple");
foreach($_POST as $name => $value){
foreach($posts as $reg => $act ){
if ($s_action=="delete"){
+ /* Get 'dn' from posted termlinst */
+ $this->dn= $this->objects[$s_entry]['dn'];
+
/* Load permissions for selected 'dn' and check if
we're allowed to remove this 'dn' */
$acl = $this->ui->get_permissions($this->dn,"fai/".$type_acl_mapping[$this->objects[$s_entry]['type']]);
if(preg_match("/d/",$acl)){
- /* Get 'dn' from posted termlinst */
- $this->dn= $this->objects[$s_entry]['dn'];
-
/* Check locking, save current plugin in 'back_plugin', so the dialog knows where to return. */
if (($user= get_lock($this->dn)) != ""){
return(gen_locked_message ($user, $this->dn));
/* Lock the current entry, so nobody will edit it during deletion */
add_lock ($this->dn, $this->ui->dn);
$smarty->assign("warning", sprintf(_("You're about to delete all information about the FAI class at '%s'."), @LDAP::fix($this->dn)));
+ $smarty->assign("multiple", false);
return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
} else {
}
+ /********************
+ Delete MULTIPLE entries requested, display confirm dialog
+ ********************/
+
+ if ($s_action=="del_multiple"){
+ $this->dns = array();
+ $ids = $this->list_get_selected_items();
+
+ if(count($ids)){
+
+ foreach($ids as $id){
+ $dn = $this->objects[$id]['dn'];
+ if (($user= get_lock($dn)) != ""){
+ return(gen_locked_message ($user, $dn));
+ }
+ $this->dns[$id] = $dn;
+ }
+
+ $dns_names = "<br><pre>";
+ foreach($this->dns as $dn){
+ add_lock ($dn, $this->ui->dn);
+ $dns_names .= $dn."\n";
+ }
+ $dns_names .="</pre>";
+
+ /* Lock the current entry, so nobody will edit it during deletion */
+ if (count($this->dns) == 1){
+ $smarty->assign("warning", sprintf(_("You're about to delete the following entry %s"), @LDAP::fix($dns_names)));
+ } else {
+ $smarty->assign("warning", sprintf(_("You're about to delete the following entries %s"), @LDAP::fix($dns_names)));
+ }
+ $smarty->assign("multiple", true);
+ return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
+ }
+ }
+
+
+ /********************
+ Delete MULTIPLE entries confirmed
+ ********************/
+
+ /* Confirmation for deletion has been passed. Users should be deleted. */
+ if (isset($_POST['delete_multiple_fai_object_confirm'])){
+
+ /* Find out more about the object type */
+ $ldap = $this->config->get_ldap_link();
+
+ /* Remove user by user and check acls before removeing them */
+ foreach($this->dns as $key => $dn){
+
+ $ldap->cat($dn, array('objectClass'));
+ $attrs = $ldap->fetch();
+ $type = $this->get_type($attrs);
+
+ $acl = $this->ui->get_permissions($dn,"fai/".$type[1]);
+ if(preg_match("/d/",$acl)){
+
+ $this->dialog = new $type[0]($this->config, $this->config->data['TABS'][$type[2]], $dn,"fai");
+ $this->dialog->set_acl_base($dn);
+ $this->dialog->by_object[$type[1]]->remove_from_parent ();
+ unset ($this->dialog);
+ $this->dialog= NULL;
+ $to_del = clean_up_releases($dn);
+ save_release_changes_now();
+
+ foreach($to_del as $dn){
+ $ldap->rmdir_recursive($dn);
+ }
+
+ } else {
+
+ /* Normally this shouldn't be reached, send some extra
+ logs to notify the administrator */
+ print_red (_("You are not allowed to delete this component!"));
+ new log("security","fai/".get_class($this),$dn,array(),"Tried to trick deletion.");
+ }
+
+ /* Remove lock file after successfull deletion */
+ del_lock ($dn);
+ unset($this->dns[$key]);
+ }
+ }
+
+
+ /********************
+ Delete MULTIPLE entries Canceled
+ ********************/
+
+ /* Remove lock */
+ if(isset($_POST['delete_multiple_fai_object_cancel'])){
+ foreach($this->dns as $key => $dn){
+ del_lock ($dn);
+ unset($this->dns[$key]);
+ }
+ }
+
+
/****************
Delete aborted
****************/
****************/
/* Deltetion was confirmed, so delete this entry
- */
- if (isset($_POST['delete_terminal_confirm'])){
-
- /* Some nice guy may send this as POST, so we've to check
- for the permissions again. */
- $acl = $this->ui->get_permissions($this->dn,"fai/".$type_acl_mapping[$this->objects[$s_entry]['type']]);
- if(preg_match("/d/",$acl)){
+ */
+ if (isset($_POST['delete_terminal_confirm'])){
+
+ /* Some nice guy may send this as POST, so we've to check
+ for the permissions again. */
+
+ /* Find out more about the object type */
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cat($this->dn, array('objectClass'));
+ if($ldap->count()){
+ $attrs = $ldap->fetch();
+ $type = $this->get_type($attrs);
+
+ $acl = $this->ui->get_permissions($this->dn,"fai/".$type[1]);
+ if(preg_match("/d/",$acl)){
+
+ $this->dialog = new $type[0]($this->config, $this->config->data['TABS'][$type[2]], $this->dn,"fai");
+ $this->dialog->set_acl_base($this->dn);
+ $this->dialog->by_object[$type[1]]->remove_from_parent ();
+ unset ($this->dialog);
+ $this->dialog= NULL;
+ $to_del = clean_up_releases($this->dn);
+ save_release_changes_now();
+
+ foreach($to_del as $dn){
+ $ldap->rmdir_recursive($dn);
+ }
- /* Find out more about the object type */
- $ldap = $this->config->get_ldap_link();
- $ldap->cat($this->dn, array('objectClass'));
- $attrs = $ldap->fetch();
- $type = $this->get_type($attrs);
- $this->dialog = new $type[0]($this->config, $this->config->data['TABS'][$type[2]], $this->dn);
- $this->dialog->set_acl_base($this->dn);
- $this->dialog->set_acl_category("fai");
- $this->dialog->by_object[$type[1]]->remove_from_parent ();
- unset ($this->dialog);
- gosa_log ("FAI class '".$this->dn."' has been tagged as removed");
- $this->dialog= NULL;
- $to_del = clean_up_releases($this->dn);
- save_release_changes_now();
+ } else {
- foreach($to_del as $dn){
- $ldap->rmdir_recursive($dn);
- gosa_log(sprintf(_("Release cleanup : Removing object (tagged as remvoed) that is no longer in use '%s'."),$dn));
+ /* Normally this shouldn't be reached, send some extra
+ logs to notify the administrator */
+ print_red (_("You are not allowed to delete this component!"));
+ new log("security","fai/".get_class($this),$dn,array(),"Tried to trick deletion.");
}
- } else {
-
- /* Normally this shouldn't be reached, send some extra
- logs to notify the administrator */
- print_red (_("You are not allowed to delete this component!"));
- gosa_log ("Warning: '".$this->ui->uid."' tried to trick system ".
- "deletion.");
- }
-
- /* Remove lock file after successfull deletion */
- del_lock ($this->dn);
- }
+ }else{
+ print_red(sprintf(_("Object could not be deleted '%s', object does not exist."),$this->dn));
+ }
+ /* Remove lock file after successfull deletion */
+ del_lock ($this->dn);
+ }
/****************
$this->dialog = new $a_setup[0]($this->config,$this->config->data['TABS'][$a_setup[2]],$this->dn,"fai");
$this->dialog->set_acl_base($this->dn);
-// $this->dialog->set_acl_category("fai");
$this->is_dialog = true;
if($entry['FAIstate'] == "freeze"){
$this->lock_name = $name;
$this->lock_dn = $bb;
$this->postremove();
+
+ new log("remove","fai/".get_class($this),$br[$bb],array(),"Release removed");
}
}
$mimedst = preg_replace("/ou=fai,ou=configs,ou=systems,/","ou=mime,","ou=".$name.",".$baseToUse) ;
/* Print header to have styles included */
- echo "<!-- headers.tpl-->".$smarty->fetch(get_template_path('headers.tpl'));
- echo "<body style='background-image:none;margin:3px;color:black'>";
+ echo ' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+ <html>
+ <head>
+ <title></title>
+ <style type="text/css">@import url("themes/default/style.css");</style>
+ <script language="javascript" src="include/focus.js" type="text/javascript"></script>
+ </head>
+ <body style="background: none;margin:3px;color:black">
+ ';
+
+ new log("create","fai/".get_class($this),$NewReleaseName,array(),"New $type created");
/* Duplicate applications
*/
<br><input type='submit' name='CloseIFrame' value='"._("Continue")."'>
</form></div>";
+ echo "<script language=\"javascript\" type=\"text/javascript\">scrollDown2();</script>" ;
+
/* Print footer to have valid html */
echo "</body></html>";
$acl = $this->ui->get_permissions($this->DivListFai->selectedBase,"fai/faiProfile");
if(preg_match("/c/",$acl)){
$a_setup= $this->get_type(array("objectClass"=>array("FAIprofile")));
- $this->dialog = new $a_setup[0]($this->config,$this->config->data['TABS'][$a_setup[2]],$this->dn);
+ $this->dialog = new $a_setup[0]($this->config,$this->config->data['TABS'][$a_setup[2]],$this->dn,"fai");
+ $this->dialog->set_acl_base($_SESSION['CurrentMainBase']);
+
$this->is_dialog = false;
}else{
print_red(sprintf(_("You are not allowed to create a new '%s' object."),"FAIprofile"));
$a_setup= $this->get_type(array("objectClass"=>array($this->dialog->objectClass)));
$name = $this->dialog->save();
- $this->dialog = new $a_setup[0]($this->config,
- $this->config->data['TABS'][$a_setup[2]],$this->dn,$name);
+ $this->dialog = new $a_setup[0]($this->config,$this->config->data['TABS'][$a_setup[2]],$this->dn,"fai");
+ $this->dialog->set_acl_base($_SESSION['CurrentMainBase']);
$this->dialog->by_object[$a_setup[1]]->cn = $name;
$this->is_dialog = true;
}
/* Display dialog with system list */
$this->DivListFai->parent = $this;
$this->DivListFai->execute();
- $this->DivListFai->AddDepartments($this->DivListFai->selectedBase,4);
+ $this->DivListFai->AddDepartments($this->DivListFai->selectedBase,4,1);
$this->reload();
$this->DivListFai->setEntries($this->objects);
return($this->DivListFai->Draw());
}
return ($ret);
}
-
+ function list_get_selected_items()
+ {
+ $ids = array();
+ foreach($_POST as $name => $value){
+ if(preg_match("/^item_selected_[0-9]*$/",$name)){
+ $id = preg_replace("/^item_selected_/","",$name);
+ $ids[$id] = $id;
+ }
+ }
+ return($ids);
+ }
+
+
/* reload list of objects */
function reload()
{