X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/906790226701c99aede853b0ff46bd1998b40aa0..refs/pull/3850/head:/app/Http/Controllers/UserPreferencesController.php diff --git a/app/Http/Controllers/UserPreferencesController.php b/app/Http/Controllers/UserPreferencesController.php index c4718681a..aef959712 100644 --- a/app/Http/Controllers/UserPreferencesController.php +++ b/app/Http/Controllers/UserPreferencesController.php @@ -38,79 +38,54 @@ class UserPreferencesController extends Controller $providedShortcuts = $request->get('shortcut', []); $shortcuts = new UserShortcutMap($providedShortcuts); - setting()->putUser(user(), 'ui-shortcuts', $shortcuts->toJson()); - setting()->putUser(user(), 'ui-shortcuts-enabled', $enabled); + setting()->putForCurrentUser('ui-shortcuts', $shortcuts->toJson()); + setting()->putForCurrentUser('ui-shortcuts-enabled', $enabled); - $this->showSuccessNotification('Shortcuts preferences have been updated!'); + $this->showSuccessNotification(trans('preferences.shortcuts_update_success')); return redirect('/preferences/shortcuts'); } /** - * Update the user's preferred book-list display setting. + * Update the preferred view format for a list view of the given type. */ - public function switchBooksView(Request $request, int $id) + public function changeView(Request $request, string $type) { - return $this->switchViewType($id, $request, 'books'); - } - - /** - * Update the user's preferred shelf-list display setting. - */ - public function switchShelvesView(Request $request, int $id) - { - return $this->switchViewType($id, $request, 'bookshelves'); - } - - /** - * Update the user's preferred shelf-view book list display setting. - */ - public function switchShelfView(Request $request, int $id) - { - return $this->switchViewType($id, $request, 'bookshelf'); - } - - /** - * For a type of list, switch with stored view type for a user. - */ - protected function switchViewType(int $userId, Request $request, string $listName) - { - $this->checkPermissionOrCurrentUser('users-manage', $userId); + $valueViewTypes = ['books', 'bookshelves', 'bookshelf']; + if (!in_array($type, $valueViewTypes)) { + return redirect()->back(500); + } - $viewType = $request->get('view_type'); - if (!in_array($viewType, ['grid', 'list'])) { - $viewType = 'list'; + $view = $request->get('view'); + if (!in_array($view, ['grid', 'list'])) { + $view = 'list'; } - $user = $this->userRepo->getById($userId); - $key = $listName . '_view_type'; - setting()->putUser($user, $key, $viewType); + $key = $type . '_view_type'; + setting()->putForCurrentUser($key, $view); - return redirect()->back(302, [], "/settings/users/$userId"); + return redirect()->back(302, [], "/"); } /** * Change the stored sort type for a particular view. */ - public function changeSort(Request $request, string $id, string $type) + public function changeSort(Request $request, string $type) { $validSortTypes = ['books', 'bookshelves', 'shelf_books', 'users', 'roles', 'webhooks', 'tags', 'page_revisions']; if (!in_array($type, $validSortTypes)) { return redirect()->back(500); } - $this->checkPermissionOrCurrentUser('users-manage', $id); - $sort = substr($request->get('sort') ?: 'name', 0, 50); $order = $request->get('order') === 'desc' ? 'desc' : 'asc'; - $user = $this->userRepo->getById($id); $sortKey = $type . '_sort'; $orderKey = $type . '_sort_order'; - setting()->putUser($user, $sortKey, $sort); - setting()->putUser($user, $orderKey, $order); + setting()->putForCurrentUser($sortKey, $sort); + setting()->putForCurrentUser($orderKey, $order); - return redirect()->back(302, [], "/settings/users/{$id}"); + return redirect()->back(302, [], "/"); } /** @@ -119,7 +94,7 @@ class UserPreferencesController extends Controller public function toggleDarkMode() { $enabled = setting()->getForCurrentUser('dark-mode-enabled', false); - setting()->putUser(user(), 'dark-mode-enabled', $enabled ? 'false' : 'true'); + setting()->putForCurrentUser('dark-mode-enabled', $enabled ? 'false' : 'true'); return redirect()->back(); } @@ -127,18 +102,15 @@ class UserPreferencesController extends Controller /** * Update the stored section expansion preference for the given user. */ - public function updateExpansionPreference(Request $request, string $id, string $key) + public function changeExpansion(Request $request, string $type) { - $this->checkPermissionOrCurrentUser('users-manage', $id); - $keyWhitelist = ['home-details']; - if (!in_array($key, $keyWhitelist)) { + $typeWhitelist = ['home-details']; + if (!in_array($type, $typeWhitelist)) { return response('Invalid key', 500); } $newState = $request->get('expand', 'false'); - - $user = $this->userRepo->getById($id); - setting()->putUser($user, 'section_expansion#' . $key, $newState); + setting()->putForCurrentUser('section_expansion#' . $type, $newState); return response('', 204); } @@ -161,6 +133,6 @@ class UserPreferencesController extends Controller array_splice($currentFavorites, $index, 1); } - setting()->putUser(user(), 'code-language-favourites', implode(',', $currentFavorites)); + setting()->putForCurrentUser('code-language-favourites', implode(',', $currentFavorites)); } }