mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-23 20:00:33 -04:00
Fix for deleting documents
This commit is contained in:
parent
7599edbc8c
commit
b32a9110c7
@ -14,6 +14,7 @@ use App\Ninja\Repositories\DocumentRepository;
|
|||||||
|
|
||||||
use App\Http\Requests\DocumentRequest;
|
use App\Http\Requests\DocumentRequest;
|
||||||
use App\Http\Requests\CreateDocumentRequest;
|
use App\Http\Requests\CreateDocumentRequest;
|
||||||
|
use App\Http\Requests\UpdateDocumentRequest;
|
||||||
|
|
||||||
class DocumentController extends BaseController
|
class DocumentController extends BaseController
|
||||||
{
|
{
|
||||||
@ -26,20 +27,20 @@ class DocumentController extends BaseController
|
|||||||
|
|
||||||
$this->documentRepo = $documentRepo;
|
$this->documentRepo = $documentRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get(DocumentRequest $request)
|
public function get(DocumentRequest $request)
|
||||||
{
|
{
|
||||||
return static::getDownloadResponse($request->entity());
|
return static::getDownloadResponse($request->entity());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getDownloadResponse($document){
|
public static function getDownloadResponse($document){
|
||||||
$direct_url = $document->getDirectUrl();
|
$direct_url = $document->getDirectUrl();
|
||||||
if($direct_url){
|
if($direct_url){
|
||||||
return redirect($direct_url);
|
return redirect($direct_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
$stream = $document->getStream();
|
$stream = $document->getStream();
|
||||||
|
|
||||||
if($stream){
|
if($stream){
|
||||||
$headers = [
|
$headers = [
|
||||||
'Content-Type' => Document::$types[$document->type]['mime'],
|
'Content-Type' => Document::$types[$document->type]['mime'],
|
||||||
@ -54,59 +55,59 @@ class DocumentController extends BaseController
|
|||||||
$response = Response::make($document->getRaw(), 200);
|
$response = Response::make($document->getRaw(), 200);
|
||||||
$response->header('content-type', Document::$types[$document->type]['mime']);
|
$response->header('content-type', Document::$types[$document->type]['mime']);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPreview(DocumentRequest $request)
|
public function getPreview(DocumentRequest $request)
|
||||||
{
|
{
|
||||||
$document = $request->entity();
|
$document = $request->entity();
|
||||||
|
|
||||||
if(empty($document->preview)){
|
if(empty($document->preview)){
|
||||||
return Response::view('error', array('error'=>'Preview does not exist!'), 404);
|
return Response::view('error', array('error'=>'Preview does not exist!'), 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$direct_url = $document->getDirectPreviewUrl();
|
$direct_url = $document->getDirectPreviewUrl();
|
||||||
if($direct_url){
|
if($direct_url){
|
||||||
return redirect($direct_url);
|
return redirect($direct_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
$previewType = pathinfo($document->preview, PATHINFO_EXTENSION);
|
$previewType = pathinfo($document->preview, PATHINFO_EXTENSION);
|
||||||
$response = Response::make($document->getRawPreview(), 200);
|
$response = Response::make($document->getRawPreview(), 200);
|
||||||
$response->header('content-type', Document::$types[$previewType]['mime']);
|
$response->header('content-type', Document::$types[$previewType]['mime']);
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getVFSJS(DocumentRequest $request, $publicId, $name)
|
public function getVFSJS(DocumentRequest $request, $publicId, $name)
|
||||||
{
|
{
|
||||||
$document = $request->entity();
|
$document = $request->entity();
|
||||||
|
|
||||||
if(substr($name, -3)=='.js'){
|
if(substr($name, -3)=='.js'){
|
||||||
$name = substr($name, 0, -3);
|
$name = substr($name, 0, -3);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$document->isPDFEmbeddable()){
|
if(!$document->isPDFEmbeddable()){
|
||||||
return Response::view('error', array('error'=>'Image does not exist!'), 404);
|
return Response::view('error', array('error'=>'Image does not exist!'), 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$content = $document->preview?$document->getRawPreview():$document->getRaw();
|
$content = $document->preview?$document->getRawPreview():$document->getRaw();
|
||||||
$content = 'ninjaAddVFSDoc('.json_encode(intval($publicId).'/'.strval($name)).',"'.base64_encode($content).'")';
|
$content = 'ninjaAddVFSDoc('.json_encode(intval($publicId).'/'.strval($name)).',"'.base64_encode($content).'")';
|
||||||
$response = Response::make($content, 200);
|
$response = Response::make($content, 200);
|
||||||
$response->header('content-type', 'text/javascript');
|
$response->header('content-type', 'text/javascript');
|
||||||
$response->header('cache-control', 'max-age=31536000');
|
$response->header('cache-control', 'max-age=31536000');
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function postUpload(CreateDocumentRequest $request)
|
public function postUpload(CreateDocumentRequest $request)
|
||||||
{
|
{
|
||||||
if (!Utils::hasFeature(FEATURE_DOCUMENTS)) {
|
if (!Utils::hasFeature(FEATURE_DOCUMENTS)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $this->documentRepo->upload(Input::all()['file'], $doc_array);
|
$result = $this->documentRepo->upload(Input::all()['file'], $doc_array);
|
||||||
|
|
||||||
if(is_string($result)){
|
if(is_string($result)){
|
||||||
return Response::json([
|
return Response::json([
|
||||||
'error' => $result,
|
'error' => $result,
|
||||||
@ -120,4 +121,11 @@ class DocumentController extends BaseController
|
|||||||
], 200);
|
], 200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function delete(UpdateDocumentRequest $request)
|
||||||
|
{
|
||||||
|
$request->entity()->delete();
|
||||||
|
|
||||||
|
return RESULT_SUCCESS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
26
app/Http/Requests/UpdateDocumentRequest.php
Normal file
26
app/Http/Requests/UpdateDocumentRequest.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php namespace App\Http\Requests;
|
||||||
|
|
||||||
|
class UpdateDocumentRequest extends DocumentRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function authorize()
|
||||||
|
{
|
||||||
|
return $this->user()->can('edit', $this->entity());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
@ -145,6 +145,7 @@ Route::group(['middleware' => 'auth:user'], function() {
|
|||||||
Route::get('documents/js/{documents}/{filename}', 'DocumentController@getVFSJS');
|
Route::get('documents/js/{documents}/{filename}', 'DocumentController@getVFSJS');
|
||||||
Route::get('documents/preview/{documents}/{filename?}', 'DocumentController@getPreview');
|
Route::get('documents/preview/{documents}/{filename?}', 'DocumentController@getPreview');
|
||||||
Route::post('document', 'DocumentController@postUpload');
|
Route::post('document', 'DocumentController@postUpload');
|
||||||
|
Route::delete('documents/{documents}', 'DocumentController@delete');
|
||||||
|
|
||||||
Route::get('quotes/create/{client_id?}', 'QuoteController@create');
|
Route::get('quotes/create/{client_id?}', 'QuoteController@create');
|
||||||
Route::get('quotes/{invoices}/clone', 'InvoiceController@cloneInvoice');
|
Route::get('quotes/{invoices}/clone', 'InvoiceController@cloneInvoice');
|
||||||
|
@ -243,6 +243,7 @@
|
|||||||
},
|
},
|
||||||
acceptedFiles:{!! json_encode(implode(',',\App\Models\Document::$allowedMimes)) !!},
|
acceptedFiles:{!! json_encode(implode(',',\App\Models\Document::$allowedMimes)) !!},
|
||||||
addRemoveLinks:true,
|
addRemoveLinks:true,
|
||||||
|
dictRemoveFileConfirmation:"{{trans('texts.are_you_sure')}}",
|
||||||
@foreach(trans('texts.dropzone') as $key=>$text)
|
@foreach(trans('texts.dropzone') as $key=>$text)
|
||||||
"dict{{strval($key)}}":"{{strval($text)}}",
|
"dict{{strval($key)}}":"{{strval($text)}}",
|
||||||
@endforeach
|
@endforeach
|
||||||
@ -392,6 +393,13 @@
|
|||||||
|
|
||||||
function handleDocumentRemoved(file){
|
function handleDocumentRemoved(file){
|
||||||
model.removeDocument(file.public_id);
|
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){
|
function handleDocumentUploaded(file, response){
|
||||||
|
@ -992,6 +992,7 @@
|
|||||||
},
|
},
|
||||||
acceptedFiles:{!! json_encode(implode(',',\App\Models\Document::$allowedMimes)) !!},
|
acceptedFiles:{!! json_encode(implode(',',\App\Models\Document::$allowedMimes)) !!},
|
||||||
addRemoveLinks:true,
|
addRemoveLinks:true,
|
||||||
|
dictRemoveFileConfirmation:"{{trans('texts.are_you_sure')}}",
|
||||||
@foreach(trans('texts.dropzone') as $key=>$text)
|
@foreach(trans('texts.dropzone') as $key=>$text)
|
||||||
"dict{{strval($key)}}":"{{strval($text)}}",
|
"dict{{strval($key)}}":"{{strval($text)}}",
|
||||||
@endforeach
|
@endforeach
|
||||||
@ -1415,6 +1416,13 @@
|
|||||||
function handleDocumentRemoved(file){
|
function handleDocumentRemoved(file){
|
||||||
model.invoice().removeDocument(file.public_id);
|
model.invoice().removeDocument(file.public_id);
|
||||||
refreshPDF(true);
|
refreshPDF(true);
|
||||||
|
$.ajax({
|
||||||
|
url: '{{ '/documents/' }}' + file.public_id,
|
||||||
|
type: 'DELETE',
|
||||||
|
success: function(result) {
|
||||||
|
// Do something with the result
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleDocumentUploaded(file, response){
|
function handleDocumentUploaded(file, response){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user