From 331b7ec2f0462b14f8e6872fdbbe74ae09863f6d Mon Sep 17 00:00:00 2001 From: Denis Flaven Date: Mon, 3 Jan 2011 16:39:16 +0000 Subject: [PATCH] Added the ability to (easily) attach files to a user request from the "portal" page. SVN:trunk[1045] --- portal/index.php | 73 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/portal/index.php b/portal/index.php index aab0a59c1..eb69451e8 100644 --- a/portal/index.php +++ b/portal/index.php @@ -233,6 +233,7 @@ function RequestCreationForm($oP, $oUserOrg) $oRequest->Set($sAttCode, $value); } } + $aFieldsMap = array(); foreach($aList as $sAttCode) { $value = ''; @@ -244,14 +245,24 @@ function RequestCreationForm($oP, $oUserOrg) } $aArgs = array('this' => $oRequest); + $aFieldsMap[$sAttCode] = 'attr_'.$sAttCode; $sValue = $oRequest->GetFormElementForField($oP, get_class($oRequest), $sAttCode, $oAttDef, $value, '', 'attr_'.$sAttCode, '', $iFlags, $aArgs); $aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sValue); } + $aDetails[] = array('label' => Dict::S('Portal:Attachments'), 'value' => ' '); + $aDetails[] = array('label' => ' ', 'value' => '

'); + $oP->add_linked_script("../js/json.js"); + $oP->add_linked_script("../js/forms-json-utils.js"); + $oP->add_linked_script("../js/wizardhelper.js"); + $oP->add_linked_script("../js/wizard.utils.js"); + $oP->add_linked_script("../js/linkswidget.js"); + $oP->add_linked_script("../js/extkeywidget.js"); + $oP->add_linked_script("../js/jquery.blockUI.js"); $oP->add("
\n"); $oP->add("

".Dict::S('Portal:DescriptionOfTheRequest')."

\n"); - $oP->add("
\n"); + $oP->add("\n"); $oP->add("\n"); - $oP->details($aDetails); + $oP->details($aDetails); DumpHiddenParams($oP, $aList, $aParameters); $oP->add(""); $oP->add(""); @@ -259,14 +270,36 @@ function RequestCreationForm($oP, $oUserOrg) $oP->p(" "); $oP->add(""); $oP->add("\n"); + $iFieldsCount = count($aFieldsMap); + $sJsonFieldsMap = json_encode($aFieldsMap); $oP->add_ready_script( <<add_script( +<< 

'); + index++; + } + function RemoveAttachment(id_attachment) + { + $('#attachment_'+id_attachment).remove(); + } +EOF ); } else @@ -331,6 +364,29 @@ function DoCreateRequest($oP, $oUserOrg) $iChangeId = $oMyChange->DBInsert(); $oRequest->DBInsertTracked($oMyChange); $oP->add("

".Dict::Format('UI:Title:Object_Of_Class_Created', $oRequest->GetName(), MetaModel::GetName(get_class($oRequest)))."

\n"); + + // Now process the attachements (if any) + $index = 0; + foreach($_FILES as $sName => $void) + { + $oAttachment = utils::ReadPostedDocument($sName); + if (!$oAttachment->IsEmpty()) + { + $index++; + // Create a document and attach it to the created ticket + $oDoc = new FileDoc(); + $oDoc->Set('name', Dict::Format('Portal:Attachment_No_To_Ticket_Name', $index, $oRequest->GetName(), $oAttachment->GetFileName())); + $oDoc->Set('org_id', $oUserOrg->GetKey()); + $oDoc->Set('description', $oAttachment->GetFileName()); + $oDoc->Set('contents', $oAttachment); + $oDoc->DBInsertTracked($oMyChange); + // Link the document to the ticket + $oLink = new lnkTicketToDoc(); + $oLink->Set('ticket_id', $oRequest->GetKey()); + $oLink->Set('document_id', $oDoc->GetKey()); + $oLink->DBInsertTracked($oMyChange); + } + } DisplayMainMenu($oP); } else @@ -507,6 +563,19 @@ function DisplayRequestDetails($oP, UserRequest $oRequest) } } $oP->add('
'); + $sOQL = 'SELECT FileDoc AS Doc JOIN lnkTicketToDoc AS L ON L.document_id = Doc.id WHERE L.ticket_id = :request_id'; + $oSearch = DBObjectSearch::FromOQL($sOQL); + $oSet = new CMDBObjectSet($oSearch, array(), array('request_id' => $oRequest->GetKey())); + if ($oSet->Count() > 0) + { + $sAttachements = '
'; + while($oDoc = $oSet->Fetch()) + { + $sAttachements .= ''; + } + $sAttachements .= '
'.$oDoc->GetAsHtml('contents').'
'; + $aDetails[] = array('label' => Dict::S('Portal:Attachments'), 'value' => $sAttachements); + } $oP->details($aDetails); $oP->add('
'); }