From 03e2079b2c49edf857f79bc422c783f15b3473fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Fri, 22 Nov 2019 16:48:44 +0300 Subject: [PATCH] close #931 Fixed: Bulk action delete not working --- app/BulkActions/Banking/Accounts.php | 2 +- app/BulkActions/Common/Companies.php | 2 +- app/BulkActions/Common/Items.php | 2 +- app/BulkActions/Expenses/Payments.php | 2 +- app/BulkActions/Expenses/Vendors.php | 2 +- app/BulkActions/Incomes/Customers.php | 2 +- app/BulkActions/Incomes/Revenues.php | 2 +- app/BulkActions/Settings/Categories.php | 2 +- app/BulkActions/Settings/Currencies.php | 2 +- app/BulkActions/Settings/Taxes.php | 2 +- app/Http/Controllers/Common/BulkActions.php | 20 +++++++++++-- resources/assets/js/plugins/bulk-action.js | 31 +++++++++++++++++++-- 12 files changed, 57 insertions(+), 14 deletions(-) diff --git a/app/BulkActions/Banking/Accounts.php b/app/BulkActions/Banking/Accounts.php index 861e02bca..dfd45380e 100644 --- a/app/BulkActions/Banking/Accounts.php +++ b/app/BulkActions/Banking/Accounts.php @@ -77,7 +77,7 @@ class Accounts extends BulkAction $message = trans('messages.success.deleted', ['type' => $account->name]); - return new Response($message); + flash($message)->success(); } else { $message = trans('messages.warning.deleted', ['name' => $account->name, 'text' => implode(', ', $relationships)]); diff --git a/app/BulkActions/Common/Companies.php b/app/BulkActions/Common/Companies.php index efea6c034..53866e29b 100644 --- a/app/BulkActions/Common/Companies.php +++ b/app/BulkActions/Common/Companies.php @@ -97,7 +97,7 @@ class Companies extends BulkAction $message = trans('messages.success.deleted', ['type' => $company->name]); - return new Response($message); + flash($message)->success(); } catch (\HttpException $e) { $this->response->errorUnauthorized(trans('companies.error.not_user_company')); } diff --git a/app/BulkActions/Common/Items.php b/app/BulkActions/Common/Items.php index 01d5a95fe..1b9e37cd4 100644 --- a/app/BulkActions/Common/Items.php +++ b/app/BulkActions/Common/Items.php @@ -68,7 +68,7 @@ class Items extends BulkAction $message = trans('messages.success.deleted', ['type' => $item->name]); - return new Response($message); + flash($message)->success(); } else { $message = trans('messages.warning.deleted', ['name' => $item->name, 'text' => implode(', ', $relationships)]); diff --git a/app/BulkActions/Expenses/Payments.php b/app/BulkActions/Expenses/Payments.php index badc556b6..9d798fd87 100644 --- a/app/BulkActions/Expenses/Payments.php +++ b/app/BulkActions/Expenses/Payments.php @@ -61,7 +61,7 @@ class Payments extends BulkAction $message = trans('messages.success.deleted', ['type' => trans_choice('general.' . \Str::plural($type), 1)]); - return new Response($message); + flash($message)->success(); } else { $this->response->errorUnauthorized(); } diff --git a/app/BulkActions/Expenses/Vendors.php b/app/BulkActions/Expenses/Vendors.php index 598b2828e..f122cbfac 100644 --- a/app/BulkActions/Expenses/Vendors.php +++ b/app/BulkActions/Expenses/Vendors.php @@ -67,7 +67,7 @@ class Vendors extends BulkAction $message = trans('messages.success.deleted', ['type' => $contact->name]); - return new Response($message); + flash($message)->success(); } else { $message = trans('messages.warning.deleted', ['name' => $contact->name, 'text' => implode(', ', $relationships)]); diff --git a/app/BulkActions/Incomes/Customers.php b/app/BulkActions/Incomes/Customers.php index 1e07d2fc1..e0594e625 100644 --- a/app/BulkActions/Incomes/Customers.php +++ b/app/BulkActions/Incomes/Customers.php @@ -67,7 +67,7 @@ class Customers extends BulkAction $message = trans('messages.success.deleted', ['type' => $contact->name]); - return new Response($message); + flash($message)->success(); } else { $message = trans('messages.warning.deleted', ['name' => $contact->name, 'text' => implode(', ', $relationships)]); diff --git a/app/BulkActions/Incomes/Revenues.php b/app/BulkActions/Incomes/Revenues.php index f7f9b6c20..ded4ff970 100644 --- a/app/BulkActions/Incomes/Revenues.php +++ b/app/BulkActions/Incomes/Revenues.php @@ -61,7 +61,7 @@ class Revenues extends BulkAction $message = trans('messages.success.deleted', ['type' => trans_choice('general.' . \Str::plural($type), 1)]); - return new Response($message); + flash($message)->success(); } else { $this->response->errorUnauthorized(); } diff --git a/app/BulkActions/Settings/Categories.php b/app/BulkActions/Settings/Categories.php index 91455fb9b..0d27f0c18 100644 --- a/app/BulkActions/Settings/Categories.php +++ b/app/BulkActions/Settings/Categories.php @@ -41,7 +41,7 @@ class Categories extends BulkAction $message = trans('messages.success.disabled', ['type' => $category->name]); - return $this->itemResponse($category->fresh(), new Transformer(), $message); + flash($message)->success(); } else { $message = trans('messages.warning.disabled', ['name' => $category->name, 'text' => implode(', ', $relationships)]); diff --git a/app/BulkActions/Settings/Currencies.php b/app/BulkActions/Settings/Currencies.php index 2de5aca58..19984c40c 100644 --- a/app/BulkActions/Settings/Currencies.php +++ b/app/BulkActions/Settings/Currencies.php @@ -67,7 +67,7 @@ class Currencies extends BulkAction $message = trans('messages.success.deleted', ['type' => $currency->name]); - return new Response($message); + flash($message)->success(); } else { $message = trans('messages.warning.deleted', ['name' => $currency->name, 'text' => implode(', ', $relationships)]); diff --git a/app/BulkActions/Settings/Taxes.php b/app/BulkActions/Settings/Taxes.php index b9d497e82..df7a5d6a7 100644 --- a/app/BulkActions/Settings/Taxes.php +++ b/app/BulkActions/Settings/Taxes.php @@ -67,7 +67,7 @@ class Taxes extends BulkAction $message = trans('messages.success.deleted', ['type' => $tax->name]); - return new Response($message); + flash($message)->success(); } else { $message = trans('messages.warning.deleted', ['name' => $tax->name, 'text' => implode(', ', $relationships)]); diff --git a/app/Http/Controllers/Common/BulkActions.php b/app/Http/Controllers/Common/BulkActions.php index c66e98741..c9f49f7ec 100644 --- a/app/Http/Controllers/Common/BulkActions.php +++ b/app/Http/Controllers/Common/BulkActions.php @@ -29,8 +29,24 @@ BulkActions extends Controller $bulk_actions = app('App\BulkActions\\' . ucfirst($group) . '\\' . ucfirst($type)); } - $bulk_actions->{$request->get('handle')}($request); + $result = $bulk_actions->{$request->get('handle')}($request); - return view('common.import.create', compact('group', 'type', 'path', 'namespace')); + if (!empty($result) && isset($result->file)) { + /*return response()->json([ + 'success' => true, + 'redirect' => false, + 'error' => false, + 'data' => [], + 'message' => '' + ]);*/ + } else { + return response()->json([ + 'success' => true, + 'redirect' => true, + 'error' => false, + 'data' => [], + 'message' => '' + ]); + } } } diff --git a/resources/assets/js/plugins/bulk-action.js b/resources/assets/js/plugins/bulk-action.js index 7e152e3bd..d3050c841 100644 --- a/resources/assets/js/plugins/bulk-action.js +++ b/resources/assets/js/plugins/bulk-action.js @@ -80,14 +80,41 @@ export default class BulkAction { .then(response => { //this.loading = false; //this.modal = false; + if (response.data.redirect) { + window.location.reload(false); + } else { + this.loading = false; + this.modal = false; - window.location.reload(false); + // It is necessary to create a new blob object with mime-type explicitly set + // otherwise only Chrome works like it should + var newBlob = new Blob([response.body], {type: 'application/pdf'}) + + // IE doesn't allow using a blob object directly as link href + // instead it is necessary to use msSaveOrOpenBlob + if (window.navigator && window.navigator.msSaveOrOpenBlob) { + window.navigator.msSaveOrOpenBlob(newBlob) + return + } + + // For other browsers: + // Create a link pointing to the ObjectURL containing the blob. + const data = window.URL.createObjectURL(newBlob) + var link = document.createElement('a') + link.href = data + link.download = filename + '.pdf' + link.click() + setTimeout(function () { + // For Firefox it is necessary to delay revoking the ObjectURL + window.URL.revokeObjectURL(data) + }, 100) + } }) .catch(error => { //this.loading = false; //this.modal = false; - window.location.reload(false); + //window.location.reload(false); }); }