From 2a6f7e00b5f14e9e36160ef5999fd3111fd88f24 Mon Sep 17 00:00:00 2001 From: Viktor Rennert Date: Wed, 18 Mar 2015 13:20:02 +0100 Subject: [PATCH] Reworked pdf store flow from AjaxController to invoice save. --- app/controllers/AjaxController.php | 23 ---------------------- app/controllers/InvoiceController.php | 18 +++++++++++++++++ app/routes.php | 2 -- app/views/invoices/edit.blade.php | 28 ++++++++------------------- 4 files changed, 26 insertions(+), 45 deletions(-) delete mode 100644 app/controllers/AjaxController.php diff --git a/app/controllers/AjaxController.php b/app/controllers/AjaxController.php deleted file mode 100644 index 0e502220474c..000000000000 --- a/app/controllers/AjaxController.php +++ /dev/null @@ -1,23 +0,0 @@ -file($tmpName) === 'application/pdf; charset=binary') { - move_uploaded_file($tmpName, $uploadsDir.$name); - } - } - } -} \ No newline at end of file diff --git a/app/controllers/InvoiceController.php b/app/controllers/InvoiceController.php index 28a04b3cbaf9..6d6598842256 100755 --- a/app/controllers/InvoiceController.php +++ b/app/controllers/InvoiceController.php @@ -397,6 +397,10 @@ class InvoiceController extends \BaseController Utils::trackViewed($client->getDisplayName(), ENTITY_CLIENT, $url); } + if (!empty(Input::get('pdfupload')) && strpos(Input::get('pdfupload'), 'data:application/pdf;base64,') === 0) { + $this->storePDF(Input::get('pdfupload'), $input->invoice->public_id); + } + if ($action == 'clone') { return $this->cloneInvoice($publicId); } elseif ($action == 'convert') { @@ -539,4 +543,18 @@ class InvoiceController extends \BaseController return View::make('invoices.history', $data); } + + private function storePDF($encodedString, $public_id) + { + $uploadsDir = storage_path().'/pdfcache/'; + $encodedString = str_replace('data:application/pdf;base64,', '', $encodedString); + $name = 'cache-'.$public_id.'.pdf'; + + if (file_put_contents($uploadsDir.$name, base64_decode($encodedString)) !== false) { + $finfo = new finfo(FILEINFO_MIME); + if ($finfo->file($uploadsDir.$name) !== 'application/pdf; charset=binary') { + unlink($uploadsDir.$name); + } + } + } } diff --git a/app/routes.php b/app/routes.php index 0d7c1997cd78..fc436e177b86 100755 --- a/app/routes.php +++ b/app/routes.php @@ -147,8 +147,6 @@ Route::group(array('before' => 'auth'), function() { Route::get('api/credits/{client_id?}', array('as'=>'api.credits', 'uses'=>'CreditController@getDatatable')); Route::post('credits/bulk', 'CreditController@bulk'); - Route::post('ajax/pdfupload', 'AjaxController@pdfupload'); - //Route::resource('timesheets', 'TimesheetController'); }); diff --git a/app/views/invoices/edit.blade.php b/app/views/invoices/edit.blade.php index f2b7c40e101f..b21174fee1c4 100755 --- a/app/views/invoices/edit.blade.php +++ b/app/views/invoices/edit.blade.php @@ -719,25 +719,7 @@ function onEmailClick() { if (confirm('{{ trans("texts.confirm_email_$entityType") }}')) { - var invoice = createInvoiceModel(); - var design = getDesignJavascript(); - if (!design) return; - var doc = generatePDF(invoice, design, true); - - var formdata = new FormData(); - formdata.append('filename', 'cache-' + invoice.public_id + '.pdf'); - formdata.append('fileblob', doc.output('blob')); - - $.ajax({ - type: 'POST', - url: '{{ URL::to("ajax/pdfupload") }}', - data: formdata, - processData: false, - contentType: false - }).done(function( data ) { - submitAction('email'); - }); - + submitAction('email'); } } @@ -747,6 +729,12 @@ submitAction(''); } } else { + var invoice = createInvoiceModel(); + var design = getDesignJavascript(); + if (!design) return; + var doc = generatePDF(invoice, design, true); + + $('form.form-horizontal.warn-on-exit').append(''); submitAction(''); } } @@ -757,7 +745,7 @@ return; } $('#action').val(value); - $('#submitButton').click(); + $('#submitButton').click(); } function isSaveValid() {