summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 17ac686)
raw | patch | inline | side by side (parent: 17ac686)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 6 Sep 2005 12:26:07 +0000 (12:26 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 6 Sep 2005 12:26:07 +0000 (12:26 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@1312 594d385d-05f5-0310-b6e9-bd551577e9d8
plugins/admin/FAI/class_faiManagement.inc | patch | blob | history | |
plugins/admin/FAI/class_faiPartitionTable.inc | patch | blob | history |
index 901b44baf5eb6f1afd43542d7d02bb744e14cee0..800964b6c5cb790d6d89840804dde7e78b3e64f0 100644 (file)
*/
function faiManagement ($config, $ui)
{
- /* #WT ??? Whats That */
$this->ui = $ui;
- /* Set current dn to "", wherefore ? */
+ /* Set current dn to "", */
$this->dn = "";
/* Assign config */
}elseif(preg_match("/^entry_edit_.*/",$key)){
$s_entry = preg_replace("/^entry_edit_/","",$key);
$s_entry = preg_replace("/_.*$/","",$s_entry);
-
$s_action = "edit";
+ }elseif(preg_match("/^entry_delete_.*/",$key)){
+ $s_entry = preg_replace("/^entry_delete_/","",$key);
+ $s_entry = preg_replace("/_.*$/","",$s_entry);
+ $s_action = "delete";
}
-
+
+ }
+
+ /* Confirm dialog
+ * Delte object
+ */
+ 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= get_permissions ($this->dn, $this->ui->subtreeACL);
+ $this->acl= get_module_permission($acl, "FAIclass", $this->dn);
+ if (chkacl($this->acl, "delete") == ""){
+
+ /* 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 component at '%s'."), $this->dn));
+ return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
+ } else {
+
+ /* Obviously the user isn't allowed to delete. Show message and
+ clean session. */
+ print_red (_("You are not allowed to delete this component!"));
+ }
+ }
+
+ /* 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. */
+ if (chkacl($this->acl, "delete") == ""){
+
+ /* Find out more about the object type */
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cat($this->dn);
+ $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(array($this->acl));
+
+ $this->dialog->by_object[$type[1]]->remove_from_parent ();
+ unset ($this->dialog);
+ gosa_log ("System object'".$this->dn."' has been removed");
+ $this->dialog= NULL;
+
+ /* Terminal list has changed, reload it. */
+ $this->reload ();
+ } 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);
}
+ /* Edit Entry */
if($s_action == "edit"){
$entry = $this->objects[$s_entry];
switch($entry['type']){
case "FAIpartitionTable" :
$this->dn = $entry['dn'];
- $this->dialog= new tabsPartition($this->config,
+ $this->dialog= new tabsPartition($this->config,
$this->config->data['TABS']['PARTITIONTABS'],$this->dn);
$this->is_dialog = true;
;break;
$faifilter['regex'] = preg_replace("/\*\*/","*",$faifilter['regex']);
$_SESSION['faifilter']= $faifilter;
- $this->reload();
-
/* Edit dialog was canceled
* Remove dialog an show management dialog
*/
"</div>";
+ $this->reload();
/* Create list with objects */
$divlist = new divlist("faiManagement");
array("string" => _("Obtions"), "attach" => "style='border:none'" )));
- $action = "<input type='image' src='images/edit.png' alt='"._("edit")."' name='entry_edit_%s' title='"._("Edit user")."'>";
+ $action = "<input type='image' src='images/edit.png' alt='"._("edit")."' name='entry_edit_%KEY%' title='"._("Edit object")."'>";
+ $action .= "<input type='image' src='images/delete.png' alt='"._("delete")."' name='entry_delete_%KEY%' title='"._("Delete object")."'>";
/* Attach objects */
foreach($this->objects as $key => $value){
$field1 = array("string" => $img , "attach" => "style='height:26px;width=20px;'");
$field2 = array("string" => $value['cn'].$desc , "attach" => "");
$field3 = array("string" => $info, "attach" => "");
- $field4 = array("string" => sprintf($action,$key) , "attach" => "style='border-right:none;'");
+ $field4 = array("string" => preg_replace("/%KEY%/",$key,$action) , "attach" => "style='border-right:none;'");
$divlist->AddEntry(array($field1,$field2,$field3,$field4));
}
/* Array to save objects */
$objects = array();
+
+ $this->objects=array();
$res= get_list($this->ui->subtreeACL, "(objectClass=organizationalUnit)",
FALSE, $base, array("cn","description","objectClass"),TRUE);
reset ($this->objects);
}
- function remove_from_parent()
- {
- $ldap= $this->config->get_ldap_link();
- $ldap->cd ($this->dn);
- $ldap->recursive_remove();
-
- /* Optionally execute a command after we're done */
- $this->postremove();
-
- /* Delete references to object groups */
- $ldap->cd ($this->config->current['BASE']);
- $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".$this->dn."))", array("cn"));
- while ($ldap->fetch()){
- $og= new ogroup($this->config, $ldap->getDN());
- unset($og->member[$this->dn]);
- $og->save ();
- }
-
- }
-
function remove_lock()
{
if (isset($this->dn)){
}
}
+ function get_type($array){
+ if(in_array("FAIpartitionTable",$array['objectClass'])){
+ return(array("tabsPartition","faiPartitionTable","PARTITIONTABS"));
+ }
+ }
+
}
?>
diff --git a/plugins/admin/FAI/class_faiPartitionTable.inc b/plugins/admin/FAI/class_faiPartitionTable.inc
index 6a45e892bfef8dff96c2c1018775527baade10f0..8d657ca60244e9efcec9fc1485ffb14f4c26b7eb 100644 (file)
var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
/* attribute list for save action */
- var $ignore_account= TRUE;
- var $attributes = array("cn","description");
- var $objectclasses= array("top","FAIclass","FAIpartitionTable");
-
- var $cn = "";
- var $description = "";
- var $disks = array();
- var $is_dialog = false;
- var $dialog = NULL;
+ var $ignore_account = TRUE;
+ var $attributes = array("cn","description");
+ var $objectclasses = array("top","FAIclass","FAIpartitionTable");
+
+ /* Specific attributes */
+ var $cn = ""; // The class name for this object
+ var $description = ""; // The description for this set of partitions
+ var $disks = array(); // All defined Disks
+ var $is_dialog = false; // specifies which buttons will be shown to save or abort
+ var $dialog = NULL; // a dialog, e.g. new disk dialog
+
function faiPartitionTable ($config, $dn= NULL)
{
+ /* Load Attributes */
plugin::plugin ($config, $dn);
- $this->partitions = array();
-
/* If "dn==new" we try to create a new entry
- * Else we must read all objects from ldap taht belong to this entry
- * First read disks from ldap ... and then the partition definitions for the disks
+ * Else we must read all objects from ldap which belong to this entry.
+ * First read disks from ldap ... and then the partition definitions for the disks.
*/
if($dn != "new"){
$this->dn =$dn;
$partition[$key] = $val[0];
}
}
-
+ /* Append fetched partitions
+ */
$this->disks[$name]['partitions'][$partition['FAIpartitionNr']] = $partition;
}
}
$this->is_dialog = true;
}
+ /* Edit disk.
+ * Open dialog which allows us to edit the selected entry
+ */
if((isset($_POST['EditDisk']))&&(isset($_POST['disks']))){
$this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$this->disks[$_POST['disks']]);
$this->is_dialog = true;
}
+ /* Edit aborted, close dialog, without saving anything
+ */
if(isset($_POST['CancelDisk'])){
unset($this->dialog);
$this->dialog = NULL;
$this->is_dialog=false;
}
+ /* Dialog saved
+ * Save given data from Dialog, if no error is occured
+ */
if(isset($_POST['SaveDisk'])){
$this->dialog->save_object();
if(count($this->dialog->check())){
}
}
+ /* Display dialog if one is defined
+ */
if(isset($this->dialog)){
$this->dialog->save_object();
return($this->dialog->execute());
}
+ /* Assign all attributes to smarty engine
+ */
foreach($this->attributes as $attrs){
$smarty->assign($attrs,$this->$attrs);
if($this->$attrs){
$smarty->assign($attrs."CHK"," disabled ");
}
}
-
- $disks = array();
- foreach($this->partitions as $part){
- $disks[$part['cn']] = $part['cn']." [".$part['description']."]";
- }
-
-
+
$disks = $this->getDisks();
$smarty->assign("disks" ,$disks);
$smarty->assign("diskKeys",array_flip($disks));
}
function getDisks(){
+ /* Return all available disks for this partition table
+ * Return in listBox friendly array
+ */
$a_return = array();
foreach($this->disks as $key => $disk){
$cnt = count( $disk['partitions']);
return($a_return);
}
+
+ /* Delete me, and all my subtrees
+ */
function remove_from_parent()
{
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd ($this->dn);
+ $ldap->rmdir_recursive($this->dn);
+ $this->handle_post_events("remove");
+
/* This cannot be removed... */
}
- /* Save data to object */
+ /* Save data to object
+ */
function save_object()
{
plugin::save_object();
function check()
{
$message= array();
+ if(empty($this->description)){
+ $message[]=_("Please enter a valid description.");
+ }
return ($message);
}
function save()
{
plugin::save();
-
+ /* Save current settings.
+ * 1 : We must save the partition table, with its description and cn
+ * 2 : Append Disk with cn and description.
+ * 3 : Save partitions for each disk
+ */
+
+ /* remove old entry */
$ldap = $this->config->get_ldap_link();
$ldap->cat($this->dn);
if($ldap->count()){
$ldap->rmdir_recursive($this->dn);
show_ldap_error($ldap->get_error());
}
+
+ /* Add partition table to ldap
+ */
$ldap->cd($this->dn);
$ldap->create_missing_trees($this->dn);
$ldap->cd($this->dn);
$ldap->add($this->attrs);
show_ldap_error($ldap->get_error());
+ /* Append all disks to ldap */
foreach($this->disks as $cn=>$disk){
$disk_cn = "cn=".$cn.",".$this->dn;
$disk_attrs['cn'] = $disk['cn'];
$ldap->create_missing_trees($disk_cn);
$ldap->cd($disk_cn);
$ldap->add($disk_attrs);
- show_ldap_error($ldap->get_error());
+ show_ldap_error($ldap->get_error());
+ /* Add all partitions */
foreach($disk['partitions'] as $key => $partition){
$partition_attrs = array();
foreach($partition as $key => $value){
}
$this->handle_post_events("add");
}
-
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: