diff --git a/app/Http/Controllers/User/ImageController.php b/app/Http/Controllers/User/ImageController.php index 55042ccc..1c33f3ae 100644 --- a/app/Http/Controllers/User/ImageController.php +++ b/app/Http/Controllers/User/ImageController.php @@ -67,6 +67,21 @@ class ImageController extends Controller return $this->success('success', compact('images')); } + public function permission(Request $request): Response + { + /** @var User $user */ + $user = Auth::user(); + $permission = $request->input('permission'); + $permissions = ['public' => ImagePermission::Public, 'private' => ImagePermission::Private]; + if (! in_array($permission, array_keys($permissions))) { + return $this->error('设置失败'); + } + $user->images()->whereIn('id', (array) $request->input('ids'))->update([ + 'permission' => $permissions[$permission], + ]); + return $this->success('设置成功'); + } + public function rename(ImageRenameRequest $request): Response { /** @var User $user */ diff --git a/public/js/app.js b/public/js/app.js index 309583d0..dbe91039 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -5587,12 +5587,10 @@ window._ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js"); window.$ = window.jQuery = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); window.toastr = __webpack_require__(/*! toastr */ "./node_modules/toastr/toastr.js"); window.Swal = __webpack_require__(/*! sweetalert2 */ "./node_modules/sweetalert2/dist/sweetalert2.all.js"); -window.Swal.mixin({ - customClass: { - confirmButton: 'btn btn-success', - cancelButton: 'btn btn-danger' - }, - buttonsStyling: false +window.Swal = window.Swal.mixin({ + showCancelButton: true, + confirmButtonText: '确认', + cancelButtonText: '取消' }); toastr.options = { "closeButton": true, diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index e502710a..cdad8d83 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -2,15 +2,12 @@ window._ = require('lodash'); window.$ = window.jQuery = require('jquery'); window.toastr = require('toastr'); window.Swal = require('sweetalert2') -window.Swal.mixin({ - customClass: { - confirmButton: 'btn btn-success', - cancelButton: 'btn btn-danger' - }, - buttonsStyling: false +window.Swal = window.Swal.mixin({ + showCancelButton: true, + confirmButtonText: '确认', + cancelButtonText: '取消', }) - toastr.options = { "closeButton": true, "debug": false, diff --git a/resources/views/images.blade.php b/resources/views/images.blade.php index 88be0b76..f9144c58 100644 --- a/resources/views/images.blade.php +++ b/resources/views/images.blade.php @@ -615,7 +615,42 @@ }, visibility: { text: '设置可见性', - action: e => {}, + action: e => { + Swal.fire({ + title: '选择一个权限', + text: '选择公开将会出现在画廊中(若平台开启了画廊)', + input: 'select', + inputOptions: { + public: '公开', + private: '私有', + }, + confirmButtonText: '确认设置', + inputPlaceholder: '请选择一个权限', + showCancelButton: true, + inputValidator: (value) => { + return new Promise((resolve) => { + if (value === '') { + resolve('请选择正确的权限') + } else { + resolve(); + } + }) + } + }).then(result => { + let selected = ds.getSelection().map(item => $(item).data('id')); + axios.put('{{ route('user.images.permission') }}', { + ids: selected, + permission: result.value, + }).then(response => { + if (response.data.status) { + ds.clearSelection(); + toastr.success(response.data.message); + } else { + toastr.warning(response.data.message); + } + }); + }); + }, }, }; // 点击容器 diff --git a/routes/web.php b/routes/web.php index 3e10d3c9..cdf40947 100644 --- a/routes/web.php +++ b/routes/web.php @@ -26,6 +26,7 @@ Route::group(['middleware' => ['auth']], function () { Route::group(['prefix' => 'user'], function () { Route::get('images', [ImageController::class, 'images'])->name('user.images'); Route::delete('images', [ImageController::class, 'delete'])->name('user.images.delete'); + Route::put('images/permission', [ImageController::class, 'permission'])->name('user.images.permission'); Route::put('images/rename', [ImageController::class, 'rename'])->name('user.images.rename'); Route::put('images/movement', [ImageController::class, 'movement'])->name('user.images.movement'); Route::get('albums', [AlbumController::class, 'albums'])->name('user.albums');