Loading config/merged/signature.config.php +18 −3 Changes for config/merged/signature.config.php: 18 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace UnicaenCalendrier; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Regex; use Laminas\Router\Http\Segment; use UnicaenSignature\Controller\ProcessController; use UnicaenSignature\Controller\ProcessControllerFactory; Loading Loading @@ -43,6 +44,7 @@ return [ 'signatures', 'signatureflows', 'signatureflowsUi', 'previewDocument', 'triggerProcess', ], 'privileges' => [ Loading Loading @@ -149,13 +151,14 @@ return [ ] ], 'document' => [ 'type' => Segment::class, 'type' => Regex::class, 'options' => [ 'route' => '/document/:id', 'regex' => '/document-(?<id>\d+)-preview?', 'spec' => '/document-%id%-preview', 'defaults' => [ 'action' => 'previewDocument' ] ] ], ], 'new' => [ 'type' => Segment::class, Loading Loading @@ -186,6 +189,18 @@ return [ 'defaults' => [ 'action' => 'signatures' ] ], 'may_terminate' => true, 'child_routes' => [ 'preview-document' => [ 'type' => Segment::class, 'options' => [ 'route' => '/preview-document/:id', 'defaults' => [ 'action' => 'previewDocument' ] ] ] ] ], 'new' => [ Loading public/src/views/TriggerProcess.vue +4 −4 Changes for public/src/views/TriggerProcess.vue: 4 added lines, 4 removed lines. Original line number Diff line number Diff line <template> <div> <div class="row"> <div class="col-md-6"> <div class="col-md-8"> <h1>{{ signatureflow.label }}</h1> <p>{{ signatureflow.description }}</p> Document : <a :href="signatureflow.doc_url+'?dl=0'" download="true">Document</a> <iframe width="100%" height="100%" :src="signatureflow.doc_url+'?dl=0'"></iframe> Document : <a :href="signatureflow.doc_url" download="preview">Document</a> <iframe width="100%" height="800px" :src="signatureflow.doc_url+'?dl=0'"></iframe> </div> <div class="col-md-6"> <div class="col-md-4"> <h2>étapes</h2> <article v-for="s in signatureflow.steps" class="step"> <h3>Etape {{ s.order}} - <strong>{{ s.label }}</strong></h3> Loading src/Controller/ProcessController.php +2 −2 Changes for src/Controller/ProcessController.php: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ class ProcessController extends AbstractActionController public function configureAction(): ViewModel|JsonModel { try { $id = $this->params()->fromRoute('id'); $id = intval($this->params()->fromRoute('id')); if (!$id) { throw new SignatureException("Paramètre manquant"); } Loading Loading @@ -155,7 +155,7 @@ class ProcessController extends AbstractActionController $doc = $this->getProcessService()->getProcessDocumentDatas($process); header('Content-Type: ' . $doc['mime']); header('Content-Transfer-Encoding: Binary'); header('Content-Disposition: attachment; filename="preview.pdf'); // header('Content-Disposition: attachment; filename="preview.pdf'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); Loading src/Controller/SignatureController.php +48 −2 Changes for src/Controller/SignatureController.php: 48 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ use Laminas\View\Model\ViewModel; use UnicaenSignature\Entity\Db\Signature; use UnicaenSignature\Form\SignatureForm; use UnicaenSignature\Service\SignatureServiceAwareTrait; use UnicaenSignature\Utils\FileUploader; use UnicaenSignature\Utils\SignatureConstants; class SignatureController extends AbstractActionController Loading Loading @@ -254,12 +255,29 @@ class SignatureController extends AbstractActionController ); $form->setData($post); if ($form->isValid()) { $file = $this->getRequest()->getFiles()->toArray()['file']; $destination = $this->getSignatureService()->getSignatureConfigurationService()->getDocumentsLocation(); $basename = uniqid('tmp_signature_simple_'); $mimesAllowed = $this->getSignatureService()->getSignatureConfigurationService()->getDocumentMimes(); $uploader = new FileUploader(); $uploader->setDestination($destination) ->setFilename($basename) ->setMimesAllowed($mimesAllowed); $uploader->updoad($file); /** @var Signature $datas */ $datas = $form->getData(); $datas->setDocumentPath($uploader->getUploadName()); try { $this->getSignatureService()->saveNewSignature($form->getData(), true); } catch (Exception $e) { $this->flash()->addErrorMessage($e->getMessage()); } return $this->redirect()->toRoute('unicaen-signature'); return $this->redirect()->toRoute('unicaen-signature/signatures'); } else { // meh } Loading Loading @@ -320,12 +338,40 @@ class SignatureController extends AbstractActionController return $this->redirect()->toRoute('unicaen-signature/signatures'); } public function previewDocumentAction() { try { $id = intval($this->params()->fromRoute('id')); if (!$id) { throw new SignatureException("Paramètre manquant"); } $signature = $this->getSignatureService()->getSignature($id); $doc = $this->getSignatureService()->getDocumentData($signature); header('Content-Type: ' . $doc['mime']); header('Content-Transfer-Encoding: Binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: '. filesize($doc['path'])); die($doc['datas']); } catch (\Exception $e) { $this->flash()->addErrorMessage($e->getMessage()); } } /** * Affichage du document. * * @return Response|void */ public function downloadAction() { try { $id = $this->params('id'); header("Content-type:application/pdf"); header("Content-Disposition:attachment;filename=test.pdf"); header("Content-Disposition:attachment;filename=preview.pdf"); die($this->getSignatureService()->getDocumentSignedSignatureById($id)); } catch (Exception $e) { $this->flash()->addErrorMessage("Erreur : " . $e->getMessage()); Loading src/Entity/Db/Signature.php +7 −0 Changes for src/Entity/Db/Signature.php: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -529,4 +529,11 @@ class Signature } return $out; } public function __toString(): string { return sprintf("[%s] signature : '%s'", $this->getId(), $this->getLabel()); } } No newline at end of file Loading
config/merged/signature.config.php +18 −3 Changes for config/merged/signature.config.php: 18 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace UnicaenCalendrier; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Regex; use Laminas\Router\Http\Segment; use UnicaenSignature\Controller\ProcessController; use UnicaenSignature\Controller\ProcessControllerFactory; Loading Loading @@ -43,6 +44,7 @@ return [ 'signatures', 'signatureflows', 'signatureflowsUi', 'previewDocument', 'triggerProcess', ], 'privileges' => [ Loading Loading @@ -149,13 +151,14 @@ return [ ] ], 'document' => [ 'type' => Segment::class, 'type' => Regex::class, 'options' => [ 'route' => '/document/:id', 'regex' => '/document-(?<id>\d+)-preview?', 'spec' => '/document-%id%-preview', 'defaults' => [ 'action' => 'previewDocument' ] ] ], ], 'new' => [ 'type' => Segment::class, Loading Loading @@ -186,6 +189,18 @@ return [ 'defaults' => [ 'action' => 'signatures' ] ], 'may_terminate' => true, 'child_routes' => [ 'preview-document' => [ 'type' => Segment::class, 'options' => [ 'route' => '/preview-document/:id', 'defaults' => [ 'action' => 'previewDocument' ] ] ] ] ], 'new' => [ Loading
public/src/views/TriggerProcess.vue +4 −4 Changes for public/src/views/TriggerProcess.vue: 4 added lines, 4 removed lines. Original line number Diff line number Diff line <template> <div> <div class="row"> <div class="col-md-6"> <div class="col-md-8"> <h1>{{ signatureflow.label }}</h1> <p>{{ signatureflow.description }}</p> Document : <a :href="signatureflow.doc_url+'?dl=0'" download="true">Document</a> <iframe width="100%" height="100%" :src="signatureflow.doc_url+'?dl=0'"></iframe> Document : <a :href="signatureflow.doc_url" download="preview">Document</a> <iframe width="100%" height="800px" :src="signatureflow.doc_url+'?dl=0'"></iframe> </div> <div class="col-md-6"> <div class="col-md-4"> <h2>étapes</h2> <article v-for="s in signatureflow.steps" class="step"> <h3>Etape {{ s.order}} - <strong>{{ s.label }}</strong></h3> Loading
src/Controller/ProcessController.php +2 −2 Changes for src/Controller/ProcessController.php: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ class ProcessController extends AbstractActionController public function configureAction(): ViewModel|JsonModel { try { $id = $this->params()->fromRoute('id'); $id = intval($this->params()->fromRoute('id')); if (!$id) { throw new SignatureException("Paramètre manquant"); } Loading Loading @@ -155,7 +155,7 @@ class ProcessController extends AbstractActionController $doc = $this->getProcessService()->getProcessDocumentDatas($process); header('Content-Type: ' . $doc['mime']); header('Content-Transfer-Encoding: Binary'); header('Content-Disposition: attachment; filename="preview.pdf'); // header('Content-Disposition: attachment; filename="preview.pdf'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); Loading
src/Controller/SignatureController.php +48 −2 Changes for src/Controller/SignatureController.php: 48 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ use Laminas\View\Model\ViewModel; use UnicaenSignature\Entity\Db\Signature; use UnicaenSignature\Form\SignatureForm; use UnicaenSignature\Service\SignatureServiceAwareTrait; use UnicaenSignature\Utils\FileUploader; use UnicaenSignature\Utils\SignatureConstants; class SignatureController extends AbstractActionController Loading Loading @@ -254,12 +255,29 @@ class SignatureController extends AbstractActionController ); $form->setData($post); if ($form->isValid()) { $file = $this->getRequest()->getFiles()->toArray()['file']; $destination = $this->getSignatureService()->getSignatureConfigurationService()->getDocumentsLocation(); $basename = uniqid('tmp_signature_simple_'); $mimesAllowed = $this->getSignatureService()->getSignatureConfigurationService()->getDocumentMimes(); $uploader = new FileUploader(); $uploader->setDestination($destination) ->setFilename($basename) ->setMimesAllowed($mimesAllowed); $uploader->updoad($file); /** @var Signature $datas */ $datas = $form->getData(); $datas->setDocumentPath($uploader->getUploadName()); try { $this->getSignatureService()->saveNewSignature($form->getData(), true); } catch (Exception $e) { $this->flash()->addErrorMessage($e->getMessage()); } return $this->redirect()->toRoute('unicaen-signature'); return $this->redirect()->toRoute('unicaen-signature/signatures'); } else { // meh } Loading Loading @@ -320,12 +338,40 @@ class SignatureController extends AbstractActionController return $this->redirect()->toRoute('unicaen-signature/signatures'); } public function previewDocumentAction() { try { $id = intval($this->params()->fromRoute('id')); if (!$id) { throw new SignatureException("Paramètre manquant"); } $signature = $this->getSignatureService()->getSignature($id); $doc = $this->getSignatureService()->getDocumentData($signature); header('Content-Type: ' . $doc['mime']); header('Content-Transfer-Encoding: Binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: '. filesize($doc['path'])); die($doc['datas']); } catch (\Exception $e) { $this->flash()->addErrorMessage($e->getMessage()); } } /** * Affichage du document. * * @return Response|void */ public function downloadAction() { try { $id = $this->params('id'); header("Content-type:application/pdf"); header("Content-Disposition:attachment;filename=test.pdf"); header("Content-Disposition:attachment;filename=preview.pdf"); die($this->getSignatureService()->getDocumentSignedSignatureById($id)); } catch (Exception $e) { $this->flash()->addErrorMessage("Erreur : " . $e->getMessage()); Loading
src/Entity/Db/Signature.php +7 −0 Changes for src/Entity/Db/Signature.php: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -529,4 +529,11 @@ class Signature } return $out; } public function __toString(): string { return sprintf("[%s] signature : '%s'", $this->getId(), $this->getLabel()); } } No newline at end of file