1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-08-06 12:02:45 +03:00

Implemented functionality to make books sort function

Also changed public user settings to be stored in session rather than DB.
Cleaned existing list view type logic.
This commit is contained in:
Dan Brown
2018-12-07 18:33:32 +00:00
parent 0b976d9f91
commit 4c574c22a8
16 changed files with 218 additions and 47 deletions

View File

@@ -28,7 +28,7 @@
@stop
@section('body')
@include('books.list', ['books' => $books, 'bookViewType' => $booksViewType])
@include('books.list', ['books' => $books, 'view' => $view])
@stop
@section('right')
@@ -42,7 +42,7 @@
<span>{{ trans('entities.books_create') }}</span>
</a>
@endif
@include('books.view-toggle', ['booksViewType' => $booksViewType])
@include('books.view-toggle', ['view' => $view])
</div>
</div>

View File

@@ -1,30 +1,15 @@
<div class="content-wrap card {{ $booksViewType === 'list' ? 'thin' : '' }}">
<div class="content-wrap card {{ $view === 'list' ? 'thin' : '' }}">
<div class="grid halves v-center">
<h1 class="list-heading">{{ trans('entities.books') }}</h1>
<div class="text-right">
<div class="list-sort-container">
<div class="list-sort-label">Sort</div>
<div class="list-sort">
<div class="list-sort-type dropdown-container" dropdown>
<div dropdown-toggle>Name</div>
<ul>
<li><a href="#">Name</a></li>
<li><a href="#">Created Date</a></li>
<li><a href="#">Popularity</a></li>
</ul>
</div>
<div class="list-sort-dir">
@icon('sort-up')
</div>
</div>
</div>
@include('partials.sort', ['options' => $sortOptions, 'order' => $order, 'sort' => $sort])
</div>
</div>
@if(count($books) > 0)
@if($booksViewType === 'list')
@if($view === 'list')
<div class="entity-list">
@foreach($books as $book)
<a href="{{ $book->getUrl() }}" class="book entity-list-item" data-entity-type="book" data-entity-id="{{$book->id}}">

View File

@@ -2,8 +2,8 @@
<form action="{{ baseUrl("/settings/users/{$currentUser->id}/switch-book-view") }}" method="POST" class="inline">
{!! csrf_field() !!}
{!! method_field('PATCH') !!}
<input type="hidden" value="{{ $booksViewType === 'list'? 'grid' : 'list' }}" name="view_type">
@if ($booksViewType === 'list')
<input type="hidden" value="{{ $view === 'list'? 'grid' : 'list' }}" name="view_type">
@if ($view === 'list')
<a onclick="this.closest('form').submit()" type="submit" class="icon-list-item">
<span class="icon">@icon('grid')</span>
<span>{{ trans('common.grid_view') }}</span>

View File

@@ -0,0 +1,32 @@
<?php
$selectedSort = (isset($sort) && array_key_exists($sort, $options)) ? $sort : array_keys($options)[0];
$order = (isset($order) && in_array($order, ['asc', 'desc'])) ? $order : 'asc';
?>
<div class="list-sort-container" list-sort-control>
<div class="list-sort-label">{{ trans('common.sort') }}</div>
<form action="{{ baseUrl("/settings/users/{$currentUser->id}/change-books-sort") }}" method="post">
{!! csrf_field() !!}
{!! method_field('PATCH') !!}
<input type="hidden" value="{{ $selectedSort }}" name="sort">
<input type="hidden" value="{{ $order }}" name="order">
<div class="list-sort">
<div class="list-sort-type dropdown-container" dropdown>
<div dropdown-toggle>{{ $options[$selectedSort] }}</div>
<ul>
@foreach($options as $key => $label)
<li @if($key === $selectedSort) class="active" @endif><a href="#" data-sort-value="{{$key}}">{{ $label }}</a></li>
@endforeach
</ul>
</div>
<div class="list-sort-dir" data-sort-dir>
@if($order === 'desc')
@icon('sort-up')
@else
@icon('sort-down')
@endif
</div>
</div>
</form>
</div>