From a9426759d2d0760007a2b1f5aba7cc417de32212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Thu, 16 Aug 2018 22:19:03 +0200 Subject: [PATCH] add different table sort options, change default to last-updated --- app/Http/Controllers/DashController.php | 51 +++++++++++++++++++++---- app/Models/Table.php | 2 +- resources/views/welcome.blade.php | 26 ++++++++++++- 3 files changed, 69 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/DashController.php b/app/Http/Controllers/DashController.php index 9bc45e3..013ded0 100644 --- a/app/Http/Controllers/DashController.php +++ b/app/Http/Controllers/DashController.php @@ -20,16 +20,53 @@ class DashController extends Controller return back(); } - $users = User::orderBy('updated_at', 'desc') + $data['tableSort'] = $sort = \Input::get('tableSort', 'last-updated'); + + $data['sortOptions'] = [ + 'most-visited' => 'Most Visited', + 'last-updated' => 'Last Updated', + 'most-updated' => 'Most Updated', +// 'most-discussed' => 'Most Discussed', +// 'most-liked' => 'Most Liked', + 'newest' => 'Newest', + 'oldest' => 'Oldest', + ]; + + $data['users'] = User::orderBy('updated_at', 'desc') ->withCount(['tables']) - ->paginate(10, ['id', 'title', 'name', 'tables_count'], 'pageu'); + ->paginate(10, ['id', 'title', 'name', 'tables_count'], 'userPage') + ->appends(\Input::except('userPage')); + + $tableQuery = Table::forList(); + switch ($sort) { + case 'most-visited': + $tableQuery = $tableQuery->orderBy('visits', 'desc'); + break; + case 'last-updated': + $tableQuery = $tableQuery->orderBy('updated_at', 'desc'); + break; + case 'most-updated': + $tableQuery = $tableQuery->orderBy('revisions_count', 'desc'); + break; + case 'most-discussed': + $tableQuery = $tableQuery->orderBy('comments_count', 'desc'); + break; + case 'most-liked': + $tableQuery = $tableQuery->orderBy('favourites_count', 'desc'); + break; + case 'newest': + $tableQuery = $tableQuery->orderBy('created_at', 'desc'); + break; + case 'oldest': + $tableQuery = $tableQuery->orderBy('created_at', 'asc'); + break; + } - $tables = Table::forList() - ->orderBy('visits', 'desc') - ->paginate(10, ['*'], 'paget'); + $data['tables'] = $tableQuery->paginate(10, ['*'], 'tablePage') + ->appends(\Input::except('tablePage')); - $showGreeter = !$dismiss && !$request->cookie('dismiss-greeter', false); + $data['showGreeter'] = !$dismiss && !$request->cookie('dismiss-greeter', false); - return view('welcome', compact('users', 'tables', 'showGreeter')); + return view('welcome', $data); } } diff --git a/app/Models/Table.php b/app/Models/Table.php index 9ae63d7..c45e13b 100644 --- a/app/Models/Table.php +++ b/app/Models/Table.php @@ -189,6 +189,6 @@ class Table extends BaseModel public function scopeForList(Builder $query) { return $query->with('revision:id,row_count')->with('owner:id,name,title') - ->withCount(['favourites', 'forks', 'revisions', 'proposals']); + ->withCount(['favourites', 'forks', 'revisions', 'proposals', 'comments']); } } diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index cf88ca2..7098bf7 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -1,5 +1,10 @@ {{-- Public landing page --}} +@php + /** @var \App\Models\User[]|\Illuminate\Support\Collection|\Illuminate\Pagination\LengthAwarePaginator $users */ + /** @var \App\Models\Table[]|\Illuminate\Support\Collection|\Illuminate\Pagination\LengthAwarePaginator $tables */ +@endphp + @extends('layouts.app') @section('content') @@ -44,10 +49,27 @@
@icon(fa-table fa-pr fa-large) -

Popular Tables

+

Tables:

+ + + + @if(authed() && user()->confirmed)