diff --git a/plugins/admin/systems/class_glpiAttachmentPool.inc b/plugins/admin/systems/class_glpiAttachmentPool.inc
index eebbb9e881b37a56eca00dec645e08deeb7af20c..fcfa664a12fd3b9e09d21b4ad582be16f32d269a 100644 (file)
var $Selected = array();
var $Selected = array();
+ var $delAttach= "";
+
function glpiAttachmentPool ($config, $dn= NULL,$used=NULL)
{
plugin::plugin ($config, $dn);
if(!isset($_SESSION['GlpiAttachmentFilter'])){
$_SESSION['GlpiAttachmentFilter'] = array("filter"=>"*");
}
function glpiAttachmentPool ($config, $dn= NULL,$used=NULL)
{
plugin::plugin ($config, $dn);
if(!isset($_SESSION['GlpiAttachmentFilter'])){
$_SESSION['GlpiAttachmentFilter'] = array("filter"=>"*");
}
+
+ /* Assign used attributes */
if($used != NULL){
$this->Selected = $used;
}
if($used != NULL){
$this->Selected = $used;
}
function execute()
{
plugin::execute();
function execute()
{
plugin::execute();
- $attach = $this->parent->handle->getAttachments();
+ $attach = $this->parent->handle->getAttachments();
/* Fill templating stuff */
/* Fill templating stuff */
- $smarty= get_smarty();
- $display= "";
- $only_once = true;
+ $smarty = get_smarty();
+ $display = "";
+ $only_once = true;
+
+ /* walk through all posted objects */
foreach($_POST as $name => $value){
foreach($_POST as $name => $value){
+ /* Open dialog to create a new entry */
if(preg_match("/new_attach/",$name)){
$this->edit = true;
$this->entry=array();
if(preg_match("/new_attach/",$name)){
$this->edit = true;
$this->entry=array();
+
+ /* Set default values */
foreach($this->attributes as $attr) {
$this->$attr = "";
$this->entry[$attr]="";
}
}
foreach($this->attributes as $attr) {
$this->$attr = "";
$this->entry[$attr]="";
}
}
+ /* Remove attach*/
if((preg_match("/^delAttach_/",$name))&&($only_once)){
$only_once = false;
$str = preg_replace("/^delAttach_/","",$name);
$str = base64_decode(preg_replace("/_.*$/","",$str));
if((preg_match("/^delAttach_/",$name))&&($only_once)){
$only_once = false;
$str = preg_replace("/^delAttach_/","",$name);
$str = base64_decode(preg_replace("/_.*$/","",$str));
- $this->parent->handle->deleteAttachment($str);
+
+ /* remove attach from db */
+ $this->delAttach = $str;
+ $smarty->assign("warning", sprintf(_("You're about to delete the glpi attachment component '%s'."), $attach[$str]['name']));
+ return($smarty->fetch(get_template_path('remove_glpi.tpl', TRUE)));
}
}
-
+
+ /* Start editing entry */
if((preg_match("/^editAttach_/",$name))&&($only_once)){
$only_once = false;
$str = preg_replace("/^editAttach_/","",$name);
$str = base64_decode(preg_replace("/_.*$/","",$str));
if((preg_match("/^editAttach_/",$name))&&($only_once)){
$only_once = false;
$str = preg_replace("/^editAttach_/","",$name);
$str = base64_decode(preg_replace("/_.*$/","",$str));
-
- $this->edit = true;
+
+ /* Check if we have an attachment with given ID */
foreach($attach as $att ){
foreach($attach as $att ){
-
if($att['ID'] == $str ){
if($att['ID'] == $str ){
- $this->entry = $att;
+
+ /* Entry was found, show dialog */
+ $this->edit = true;
+ $this->entry = $att;
+
+ foreach($att as $name => $value){
+ $this->$name = $value;
+ }
}
}
}
}
}
}
}
}
+ if((isset($_POST['delete_glpi_confirm']))&&(isset($attach[$this->delAttach]))){
+ $this->parent->handle->deleteAttachment($this->delAttach);
+ $attach = $this->parent->handle->getAttachments();
+ }
+
+ /* Someone tries to upload a file */
if(($this->edit == true)&&(isset($_POST['upload']))){
if(!isset($_FILES['filename'])){
print_red(_("There is no valid file uploaded."));
if(($this->edit == true)&&(isset($_POST['upload']))){
if(!isset($_FILES['filename'])){
print_red(_("There is no valid file uploaded."));
} // ende check if file was uploaded
}// upload post
} // ende check if file was uploaded
}// upload post
+ /* save attachment*/
if(($this->edit == true)&&(isset($_POST['SaveAttachment']))){
if(count($this->check())==0){
$this->save_entry();
if(($this->edit == true)&&(isset($_POST['SaveAttachment']))){
if(count($this->check())==0){
$this->save_entry();
}
}
}
}
+ /* Abort editing/adding attachment*/
if(($this->edit == true)&&(isset($_POST['CancelAttachment']))){
$this->edit = false;
$this->entry = array();
}
if(($this->edit == true)&&(isset($_POST['CancelAttachment']))){
$this->edit = false;
$this->entry = array();
}
+ /* If edit == true, we have to show a dialog to edit or add an attach
+ */
if($this->edit == true){
foreach($this->attributes as $attr){
$smarty->assign($attr,$this->$attr);
if($this->edit == true){
foreach($this->attributes as $attr){
$smarty->assign($attr,$this->$attr);
return($smarty->fetch(get_template_path('glpiAttachmentEdit.tpl', TRUE)));
}
return($smarty->fetch(get_template_path('glpiAttachmentEdit.tpl', TRUE)));
}
-
-
-
-
+ /* Create list with checkboxes to select / deselect some attachents */
$divlist = new divlist("Attachment");
$divlist->SetHeader(array(
array("string" => " ", "attach" => "style='text-align:center;width:20px;'"),
$divlist = new divlist("Attachment");
$divlist->SetHeader(array(
array("string" => " ", "attach" => "style='text-align:center;width:20px;'"),
$editdel = "<input type='image' name='editAttach_%s' src='images/edit.png'>";
$editdel.= "<input type='image' name='delAttach_%s' src='images/edittrash.png'>";
$editdel = "<input type='image' name='editAttach_%s' src='images/edit.png'>";
$editdel.= "<input type='image' name='delAttach_%s' src='images/edittrash.png'>";
+ /* Add all given attachments to divlist
+ */
foreach($attach as $entry){
foreach($attach as $entry){
-
- if((empty($entry['name']))||(empty($entry['comment']))){
-
- if(empty($entry['name'])){
- $str1 = "<i>"._("empty")."</i>";
- }else{
- $str1 = $entry['name'];
- }
-
- if(!empty($entry['comment'])){
- $str1.= " [".$entry['comment']."]";
- }
- }else{
- $str1 = $entry['name']." [".$entry['comment']."]";
- }
- $edit = str_replace("%s",base64_encode($entry['ID']),$editdel);
- $str2 = $entry['mime']." ";
+ /* Create display name*/
+ if((empty($entry['name']))||(empty($entry['comment']))){
- $chkbox = "<input type='hidden' name='wasOnPage_%s'>".
- "<input type='checkbox' name='useMe_%s' value='%s' %CHECKED%>";
-
- if(in_array($entry['ID'],$this->Selected)){
- $chkbox = preg_replace("/%CHECKED%/"," checked ",$chkbox);
- }else {
- $chkbox = preg_replace("/%CHECKED%/"," ",$chkbox);
+ /* In glpi it is possible to add entries without name
+ so i've added this block
+ */
+ if(empty($entry['name'])){
+ $str1 = "<i>"._("empty")."</i>";
+ }else{
+ $str1 = $entry['name'];
}
}
- $chkbox = preg_replace("/%s/",$entry['ID'],$chkbox);
- $divlist->AddEntry(array(
- array("string" => $chkbox,
- "attach" => "style='text-align:center;width:20px;'"),
- array("string"=> $str1),
- array("string"=> $str2,"attach"=>"style='width:200px;'"),
- array("string"=> $edit ,"attach" => "style='width:60px;border-right:0px;text-align:right;'")
- ));
-
+
+ if(!empty($entry['comment'])){
+ $str1.= " [".$entry['comment']."]";
+ }
+ }else{
+ /* Both attributes given */
+ $str1 = $entry['name']." [".$entry['comment']."]";
+ }
+
+ $edit = str_replace("%s",base64_encode($entry['ID']),$editdel);
+ $str2 = $entry['mime']." ";
+
+ $chkbox = "<input type='hidden' name='wasOnPage_%s'>".
+ "<input type='checkbox' name='useMe_%s' value='%s' %CHECKED%>";
+
+ if(in_array($entry['ID'],$this->Selected)){
+ $chkbox = preg_replace("/%CHECKED%/"," checked ",$chkbox);
+ }else {
+ $chkbox = preg_replace("/%CHECKED%/"," ",$chkbox);
+ }
+ $chkbox = preg_replace("/%s/",$entry['ID'],$chkbox);
+ $divlist->AddEntry(array(
+ array("string" => $chkbox,
+ "attach" => "style='text-align:center;width:20px;'"),
+ array("string"=> $str1),
+ array("string"=> $str2,"attach"=>"style='width:200px;'"),
+ array("string"=> $edit ,"attach" => "style='width:60px;border-right:0px;text-align:right;'")
+ ));
+
}
$listhead = "<div style='background:#F0F0F9;padding:5px;'>".
}
$listhead = "<div style='background:#F0F0F9;padding:5px;'>".
- " <input class='center' type='image'
- src='images/new.png' align='middle' title='"._("Create new attachment")."'
- name='new_attach' alt='"._("New Attachment"). "'> ".
- "</div>";
-
+ " <input class='center' type='image'
+ src='images/new.png' align='middle' title='"._("Create new attachment")."'
+ name='new_attach' alt='"._("New Attachment"). "'> ".
+ "</div>";
$smarty->assign("attachments", $divlist->DrawList());
$smarty->assign("attachmenthead", $listhead);
$smarty->assign("attachments", $divlist->DrawList());
$smarty->assign("attachmenthead", $listhead);
$smarty->assign("alphabet", generate_alphabet());
$smarty->assign("attachment_regex", $_SESSION['GlpiAttachmentFilter']['filter']);
$smarty->assign("alphabet", generate_alphabet());
$smarty->assign("attachment_regex", $_SESSION['GlpiAttachmentFilter']['filter']);
-
$display.= $smarty->fetch(get_template_path('glpiAttachmentPool.tpl', TRUE));
return($display);
}
$display.= $smarty->fetch(get_template_path('glpiAttachmentPool.tpl', TRUE));
return($display);
}
return($this->Selected);
}
return($this->Selected);
}
+ /* Adds new or saves edited entries */
function save_entry()
{
if($this->edit){
function save_entry()
{
if($this->edit){
}
}
}
}
+ /* Checkboxes are only posted, if they are checked
+ * To check if it was deselected, we check if wasOnPage
+ * was posted with given name, so we can deselect this entry
+ */
+
foreach($_POST as $name => $value){
if(preg_match("/wasOnPage_/",$name)){
$id=preg_replace("/wasOnPage_/","",$name);
foreach($_POST as $name => $value){
if(preg_match("/wasOnPage_/",$name)){
$id=preg_replace("/wasOnPage_/","",$name);
}
}
}
}
+ /* Simple check */
function check()
{
$message = array();
function check()
{
$message = array();