]> BookStack Code Mirror - bookstack/commitdiff
Adds button to allow users to toggle the book view via the books list page.
authorAbijeet <redacted>
Tue, 26 Dec 2017 07:08:16 +0000 (12:38 +0530)
committerAbijeet <redacted>
Tue, 26 Dec 2017 07:08:16 +0000 (12:38 +0530)
Closes #613

Signed-off-by: Abijeet <redacted>
app/Http/Controllers/BookController.php
app/Http/Controllers/UserController.php
resources/lang/en/entities.php
resources/views/books/index.blade.php
routes/web.php

index e181aec8967285956ab5f707dc9a4fd09e326bf7..aa8f89ea493cd88f6e8e86058ab69917ad381d42 100644 (file)
@@ -46,7 +46,7 @@ class BookController extends Controller
             'books' => $books,
             'recents' => $recents,
             'popular' => $popular,
-            'new' => $new, 
+            'new' => $new,
             'booksViewType' => $booksViewType
         ]);
     }
index fe5c7a243b6c4e7899cf5730da9755225268f371..5c10133a2cbe1aa6c4a2cf3e6cfd86777bfb0c01 100644 (file)
@@ -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);
+        }
+    }
 }
index 4dc5ccc382c1a242ca4a2f13153eb8f09a0d7191..6e481d03bf8b559d5e83a1720228657145fb6830 100644 (file)
@@ -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
index d392af045aab36ee3a99e03a21a8a2a9200517d5..5ca01a550e92dd52b51ecee9c906f57809d86297 100644 (file)
@@ -4,6 +4,11 @@
     <div class="col-xs-1"></div>
     <div class="col-xs-11 faded">
         <div class="action-buttons">
+            <form action="{{ baseUrl("/settings/users/{$currentUser->id}/switch-book-view") }}" method="POST" class="inline">
+                {!! csrf_field() !!}
+                <input type="hidden" value="{{ $booksViewType === 'list'? 'grid' : 'list' }}" name="book_view_type">
+                <button type="submit" class="text-pos text-button"><i class="zmdi zmdi-wrap-text"></i>{{ trans('entities.books_toggle_view') }}</button>
+            </form>
             @if($currentUser->can('book-create-all'))
                 <a href="{{ baseUrl("/books/create") }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i>{{ trans('entities.books_create') }}</a>
             @endif
@@ -52,7 +57,7 @@
                     <hr>
                 @endforeach
                 {!! $books->render() !!}
-            @else 
+            @else
              <div class="row auto-clear">
                     @foreach($books as $key => $book)
                             @include('books/grid-item', ['book' => $book])
index f5e59f1095a3adeb1289e945ad3da826dff65640..31de09737034eba8f1154691162e2cd3cdc1ed6d 100644 (file)
@@ -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');
Morty Proxy This is a proxified and sanitized view of the page, visit original site.