X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-plugins%2Ffai%2Fadmin%2Ffai%2Fclass_faiScript.inc;h=2703ae7219a1bc6b6f793396f920c84f7922642e;hb=89f67cee6e7bd74cbc0f1d489d573b8101d48ac3;hp=17cd0734488bedbef6dd95be8b76c0051bbcdc44;hpb=ff3ef83f8dcb54659807a39f8513486b5c0badb0;p=gosa.git diff --git a/gosa-plugins/fai/admin/fai/class_faiScript.inc b/gosa-plugins/fai/admin/fai/class_faiScript.inc index 17cd07344..2703ae721 100644 --- a/gosa-plugins/fai/admin/fai/class_faiScript.inc +++ b/gosa-plugins/fai/admin/fai/class_faiScript.inc @@ -71,6 +71,31 @@ class faiScript extends plugin } $this->ui = get_userinfo(); + + $this->scriptListWidget= new sortableListing($this->convertList(TRUE), $this->convertList()); + $this->scriptListWidget->setDeleteable(true); + $this->scriptListWidget->setInstantDelete(false); + $this->scriptListWidget->setEditable(true); + $this->scriptListWidget->setWidth("100%"); + $this->scriptListWidget->setHeight("140px"); + $this->scriptListWidget->setHeader(array(_("Name"),_("Description"))); + } + + + function convertList($type = FALSE) + { + $data = array(); + $s_acl = $this->ui->get_permissions($this->dn,"fai/faiScriptEntry","FAIscript"); + foreach($this->SubObjects as $cn => $entry){ + if($entry['status'] == "delete") continue; + if($type){ + $data[$cn] = $entry; + }else{ + if(!isset($entry['description'])) $entry['description']=""; + $data[$cn] = array('data' => array($entry['cn'], $entry['description'])); + } + } + return($data); } @@ -88,7 +113,7 @@ class faiScript extends plugin /* Check if we must decode some attributes */ if(in_array_ics($attrs,$this->sub64coded)){ - $var = postDecode($var); + $var = base64_decode($var); } /* check if this is a binary entry */ @@ -147,77 +172,50 @@ class faiScript extends plugin set_object_info($this->dn); } - /* Handle posts */ - $s_action = $s_entry = ""; - foreach($_POST as $name => $value){ - - if(preg_match("/^download_/",$name)){ - $s_entry = postDecode(preg_replace("/^download_/","",$name)); - $obj = $this->SubObjects[$s_entry]; - $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); - send_binary_content(stripslashes($obj['FAIscript']),$obj['cn'].".FAIscript"); - break; - } + $this->scriptListWidget->setAcl($this->getacl("")); + $this->scriptListWidget->save_object(); + $action = $this->scriptListWidget->getAction(); + if($action['action'] =="edit"){ + $s_entry = $this->scriptListWidget->getKey($action['targets'][0]); + if(isset($this->SubObjects[$s_entry])){ - /* Edit script posted */ - if(preg_match("/^editscript_/",$name)){ - $s_action = "edit"; - $s_entry = preg_replace("/^editscript_/","",$name); - $s_entry = postDecode(preg_replace("/_.*/","",$s_entry)); - break; - } - - /* Delete script requested */ - if(preg_match("/^deletescript_/",$name) && !preg_match("/freeze/i",$this->FAIstate)){ - $s_action = "remove"; - $s_entry = preg_replace("/^deletescript_/","",$name); - $s_entry = postDecode(preg_replace("/_.*/","",$s_entry)); - break; - } - } - - if(isset($_GET['act']) && $_GET['act'] == "edit" && isset($_GET['id'])){ - $s_entry = postDecode($_GET['id']); - if(isset($this->SubObjects[$s_entry])){ - $s_action = "edit"; - } - } + $obj = $this->SubObjects[$s_entry]; + if($obj['status'] == "FreshLoaded"){ + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + } - if($s_action =="edit" && isset($this->SubObjects[$s_entry])){ + /* Create new dialog and set acl attributes */ + $this->dialog= new $this->subClassName($this->config,$this->dn,$obj); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->set_acl_base($this->acl_base_for_current_object($obj['dn'])); + $this->dialog->set_acl_category("fai"); - /* Get object, and load missing entry values */ - $obj = $this->SubObjects[$s_entry]; - if($obj['status'] == "FreshLoaded"){ - $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + /* Assign some additional dialog informations like headline and parent */ + set_object_info($obj['dn']); + $this->dialog->parent = &$this; + $this->is_dialog=true; } - - /* Create new dialog and set acl attributes */ - $this->dialog= new $this->subClassName($this->config,$this->dn,$obj); - $this->dialog->FAIstate = $this->FAIstate; - $this->dialog->set_acl_base($this->acl_base_for_current_object($obj['dn'])); - $this->dialog->set_acl_category("fai"); - - /* Assign some additional dialog informations like headline and parent */ - set_object_info($obj['dn']); - $this->dialog->parent = &$this; - $this->is_dialog=true; } /* Check acls, are we allowed to delete an entry */ - if($s_action == "remove" && isset($this->SubObjects[$s_entry])){ - $entry = $this->SubObjects[$s_entry]; - $acl = $this->ui->get_permissions($this->acl_base_for_current_object($entry['dn']),"fai/faiScriptEntry") ; - if(preg_match("/d/",$acl)){ - $status = $entry['status']; - if($status == "edited" || $status == "FreshLoaded"){ - $this->SubObjects[$s_entry]['status']= "delete"; - }else{ - unset($this->SubObjects[$s_entry]); + if($action['action'] =="delete"){ + $s_entry = $this->scriptListWidget->getKey($action['targets'][0]); + if(isset($this->SubObjects[$s_entry])){ + $entry = $this->SubObjects[$s_entry]; + $acl = $this->ui->get_permissions($this->acl_base_for_current_object($entry['dn']),"fai/faiScriptEntry") ; + if(preg_match("/d/",$acl)){ + $status = $entry['status']; + if($status == "edited" || $status == "FreshLoaded"){ + $this->SubObjects[$s_entry]['status']= "delete"; + }else{ + unset($this->SubObjects[$s_entry]); + } } } } - /* Save the edited entry */ + + /* Save the edited entry */ if(isset($_POST['SaveSubObject'])){ /* Check if there are still errors remaining that must be fixed before saving */ @@ -264,30 +262,6 @@ class faiScript extends plugin } } - /* Sort entries */ - $tmp = $keys = array(); - - if($this->sort_by == "name"){ - foreach($this->SubObjects as $key => $entry){ - $keys[$key]=$entry['cn']; - } - }elseif($this->sort_by == "priority"){ - foreach($this->SubObjects as $key => $entry){ - $keys[$key]=$entry['FAIpriority']; - } - } - - natcasesort($keys); - - if($this->sort_order == "down"){ - $keys =array_reverse($keys); - } - - foreach($keys as $key => $order_var){ - $tmp[$key]=$this->SubObjects[$key]; - } - $this->SubObjects = $tmp; - /* Cancel Dialog */ if(isset($_POST['CancelSubObject'])){ $this->is_dialog=false; @@ -302,71 +276,9 @@ class faiScript extends plugin return($display); } - /* Divlist added 23.02.2006 - Containing FAIscripts - */ - $divlist = new divlist("FAIscripts"); - $divlist->SetEntriesPerPage(0); - $plug = $_GET['plug']; - - if($this->sort_order == "up"){ - $dir = image('images/lists/sort-up.png'); - }else{ - $dir = image('images/lists/sort-down.png'); - } - - if($this->sort_by == "name"){ - $sort_name = $dir; - $sort_prio = ""; - }else{ - $sort_name = ""; - $sort_prio = $dir; - } - - $divlist->SetHeader(array( array("string"=>""._("Name")."".$sort_name), - array("string"=>"".$sort_prio._("Priority")."", - "attach"=>"style='width:100px;'"), - array("string"=>_("Download"), - "attach"=>"style='width:100px;'"), - array("string"=>_("Action"), - "attach"=>"style='border-right: 0px;width:100px;text-align:right;'"))); - $divlist->SetHeight(300); - $divlist->SetWidth("100%"); - foreach($this->getList(true) as $key => $name){ - - $dn= $this->acl_base_for_current_object($name['dn']); - $acl = $this->ui->get_permissions($dn,"fai/faiScriptEntry") ; - $act = ""; - - /* Hide delete icon if this object is freezed */ - if(preg_match("/freeze/", $this->FAIstate)){ - $act .= image('images/lists/edit.png', 'editscript_%s',msgPool::editButton()); - }else{ - $act .= image('images/lists/edit.png', 'editscript_%s',msgPool::editButton()); - if(preg_match("/d/",$acl)){ - $act .= image('images/lists/trash.png', 'deletescript_%s',msgPool::delButton()); - } - } - - /* Check acls for download icon */ - $s_acl = $this->ui->get_permissions($dn,"fai/faiScriptEntry","FAIscript") ; - if(($this->SubObjects[$key]['status'] == "new") || ($this->SubObjects[$key]['dn'] == "new") || !preg_match("/r/",$s_acl)){ - $down = ""; - }else{ - $down = image('images/save.png', 'download_'.postEncode($key)); - } - - /* Check if we are allowed to view this object */ - $s_acl = $this->ui->get_permissions($dn,"fai/faiScriptEntry","cn") ; - if(preg_match("/r/",$s_acl)){ - $divlist->AddEntry(array( array("string"=>"".$name['name'].""), - array("string"=>$name['FAIpriority'] , "attach" => "style='width:100px;'"), - array("string"=>$down , "attach" => "style='width:100px;'"), - array("string"=>str_replace("%s",postEncode($key),$act), - "attach"=>"style='border-right: 0px;width:100px;text-align:right;'"))); - } - } - $smarty->assign("Entry_divlist",$divlist->DrawList()); + $this->scriptListWidget->setListData($this->convertList(TRUE), $this->convertList()); + $this->scriptListWidget->update(); + $smarty->assign("Entry_listing",$this->scriptListWidget->render()); /* Magic quotes GPC, escapes every ' " \, to solve some security risks * If we post the escaped strings they will be escaped again @@ -528,7 +440,7 @@ class faiScript extends plugin foreach($Objects as $name => $obj){ foreach($this->sub64coded as $codeIt){ - $obj[$codeIt]=postEncode(stripslashes($obj[$codeIt])); + $obj[$codeIt]=base64_encode(stripslashes($obj[$codeIt])); } $tmp = array();