From 0d4db603a47a6cd8889bb7b591bdc2cffbcac134 Mon Sep 17 00:00:00 2001 From: Abijeet Date: Tue, 26 Dec 2017 12:38:16 +0530 Subject: [PATCH] Adds button to allow users to toggle the book view via the books list page. Closes #613 Signed-off-by: Abijeet --- app/Http/Controllers/BookController.php | 2 +- app/Http/Controllers/UserController.php | 21 +++++++++++++++++++++ resources/lang/en/entities.php | 1 + resources/views/books/index.blade.php | 7 ++++++- routes/web.php | 1 + 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index e181aec89..aa8f89ea4 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -46,7 +46,7 @@ class BookController extends Controller 'books' => $books, 'recents' => $recents, 'popular' => $popular, - 'new' => $new, + 'new' => $new, 'booksViewType' => $booksViewType ]); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index fe5c7a243..5c10133a2 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -249,4 +249,25 @@ class UserController extends Controller 'assetCounts' => $assetCounts ]); } + + public function switchBookView($id, Request $request) { + $this->checkPermission('users-manage'); + $viewType = $request->get('book_view_type'); + + if (!in_array($viewType, ['grid', 'list'])) { + $viewType = 'list'; + } + + $user = $this->user->findOrFail($id); + setting()->putUser($user, 'books_view_type', $viewType); + + $previousUrl = url()->previous(); + if (empty($previousUrl)) { + // if no previous URL, redirect to settings + return redirect("/settings/users/$id"); + } else { + // redirect to the previous page. + return redirect($previousUrl); + } + } } diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php index 4dc5ccc38..6e481d03b 100644 --- a/resources/lang/en/entities.php +++ b/resources/lang/en/entities.php @@ -99,6 +99,7 @@ return [ 'books_sort_named' => 'Sort Book :bookName', 'books_sort_show_other' => 'Show Other Books', 'books_sort_save' => 'Save New Order', + 'books_toggle_view' => 'Toggle Book View', /** * Chapters diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index d392af045..5ca01a550 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -4,6 +4,11 @@
+
id}/switch-book-view") }}" method="POST" class="inline"> + {!! csrf_field() !!} + + +
@if($currentUser->can('book-create-all')) {{ trans('entities.books_create') }} @endif @@ -52,7 +57,7 @@
@endforeach {!! $books->render() !!} - @else + @else
@foreach($books as $key => $book) @include('books/grid-item', ['book' => $book]) diff --git a/routes/web.php b/routes/web.php index f5e59f109..31de09737 100644 --- a/routes/web.php +++ b/routes/web.php @@ -146,6 +146,7 @@ Route::group(['middleware' => 'auth'], function () { Route::get('/users', 'UserController@index'); Route::get('/users/create', 'UserController@create'); Route::get('/users/{id}/delete', 'UserController@delete'); + Route::post('/users/{id}/switch-book-view', 'UserController@switchBookView'); Route::post('/users/create', 'UserController@store'); Route::get('/users/{id}', 'UserController@edit'); Route::put('/users/{id}', 'UserController@update');