From b32a9110c7cc86f43f654725d8095381cf3fc008 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 26 May 2016 19:04:43 +0300 Subject: [PATCH] Fix for deleting documents --- app/Http/Controllers/DocumentController.php | 44 ++++++++++++--------- app/Http/Requests/UpdateDocumentRequest.php | 26 ++++++++++++ app/Http/routes.php | 1 + resources/views/expenses/edit.blade.php | 8 ++++ resources/views/invoices/edit.blade.php | 8 ++++ 5 files changed, 69 insertions(+), 18 deletions(-) create mode 100644 app/Http/Requests/UpdateDocumentRequest.php diff --git a/app/Http/Controllers/DocumentController.php b/app/Http/Controllers/DocumentController.php index d597ba004474..e4ea605d57a0 100644 --- a/app/Http/Controllers/DocumentController.php +++ b/app/Http/Controllers/DocumentController.php @@ -14,6 +14,7 @@ use App\Ninja\Repositories\DocumentRepository; use App\Http\Requests\DocumentRequest; use App\Http\Requests\CreateDocumentRequest; +use App\Http\Requests\UpdateDocumentRequest; class DocumentController extends BaseController { @@ -26,20 +27,20 @@ class DocumentController extends BaseController $this->documentRepo = $documentRepo; } - + public function get(DocumentRequest $request) { return static::getDownloadResponse($request->entity()); } - + public static function getDownloadResponse($document){ $direct_url = $document->getDirectUrl(); if($direct_url){ return redirect($direct_url); } - + $stream = $document->getStream(); - + if($stream){ $headers = [ 'Content-Type' => Document::$types[$document->type]['mime'], @@ -54,59 +55,59 @@ class DocumentController extends BaseController $response = Response::make($document->getRaw(), 200); $response->header('content-type', Document::$types[$document->type]['mime']); } - + return $response; } - + public function getPreview(DocumentRequest $request) { $document = $request->entity(); - + if(empty($document->preview)){ return Response::view('error', array('error'=>'Preview does not exist!'), 404); } - + $direct_url = $document->getDirectPreviewUrl(); if($direct_url){ return redirect($direct_url); } - + $previewType = pathinfo($document->preview, PATHINFO_EXTENSION); $response = Response::make($document->getRawPreview(), 200); $response->header('content-type', Document::$types[$previewType]['mime']); - + return $response; } - + public function getVFSJS(DocumentRequest $request, $publicId, $name) { $document = $request->entity(); - + if(substr($name, -3)=='.js'){ $name = substr($name, 0, -3); } - + if(!$document->isPDFEmbeddable()){ return Response::view('error', array('error'=>'Image does not exist!'), 404); } - + $content = $document->preview?$document->getRawPreview():$document->getRaw(); $content = 'ninjaAddVFSDoc('.json_encode(intval($publicId).'/'.strval($name)).',"'.base64_encode($content).'")'; $response = Response::make($content, 200); $response->header('content-type', 'text/javascript'); $response->header('cache-control', 'max-age=31536000'); - + return $response; } - + public function postUpload(CreateDocumentRequest $request) { if (!Utils::hasFeature(FEATURE_DOCUMENTS)) { return; } - + $result = $this->documentRepo->upload(Input::all()['file'], $doc_array); - + if(is_string($result)){ return Response::json([ 'error' => $result, @@ -120,4 +121,11 @@ class DocumentController extends BaseController ], 200); } } + + public function delete(UpdateDocumentRequest $request) + { + $request->entity()->delete(); + + return RESULT_SUCCESS; + } } diff --git a/app/Http/Requests/UpdateDocumentRequest.php b/app/Http/Requests/UpdateDocumentRequest.php new file mode 100644 index 000000000000..3a950c9f3475 --- /dev/null +++ b/app/Http/Requests/UpdateDocumentRequest.php @@ -0,0 +1,26 @@ +user()->can('edit', $this->entity()); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + + ]; + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index 81a44b5ee930..2c3fba6fec4b 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -145,6 +145,7 @@ Route::group(['middleware' => 'auth:user'], function() { Route::get('documents/js/{documents}/{filename}', 'DocumentController@getVFSJS'); Route::get('documents/preview/{documents}/{filename?}', 'DocumentController@getPreview'); Route::post('document', 'DocumentController@postUpload'); + Route::delete('documents/{documents}', 'DocumentController@delete'); Route::get('quotes/create/{client_id?}', 'QuoteController@create'); Route::get('quotes/{invoices}/clone', 'InvoiceController@cloneInvoice'); diff --git a/resources/views/expenses/edit.blade.php b/resources/views/expenses/edit.blade.php index 343e11ed7179..f0b44e700e7c 100644 --- a/resources/views/expenses/edit.blade.php +++ b/resources/views/expenses/edit.blade.php @@ -243,6 +243,7 @@ }, acceptedFiles:{!! json_encode(implode(',',\App\Models\Document::$allowedMimes)) !!}, addRemoveLinks:true, + dictRemoveFileConfirmation:"{{trans('texts.are_you_sure')}}", @foreach(trans('texts.dropzone') as $key=>$text) "dict{{strval($key)}}":"{{strval($text)}}", @endforeach @@ -392,6 +393,13 @@ function handleDocumentRemoved(file){ model.removeDocument(file.public_id); + $.ajax({ + url: '{{ '/documents/' }}' + file.public_id, + type: 'DELETE', + success: function(result) { + // Do something with the result + } + }); } function handleDocumentUploaded(file, response){ diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index 1cba75934a7b..51736e2ec8c9 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -992,6 +992,7 @@ }, acceptedFiles:{!! json_encode(implode(',',\App\Models\Document::$allowedMimes)) !!}, addRemoveLinks:true, + dictRemoveFileConfirmation:"{{trans('texts.are_you_sure')}}", @foreach(trans('texts.dropzone') as $key=>$text) "dict{{strval($key)}}":"{{strval($text)}}", @endforeach @@ -1415,6 +1416,13 @@ function handleDocumentRemoved(file){ model.invoice().removeDocument(file.public_id); refreshPDF(true); + $.ajax({ + url: '{{ '/documents/' }}' + file.public_id, + type: 'DELETE', + success: function(result) { + // Do something with the result + } + }); } function handleDocumentUploaded(file, response){