diff options
| author | horus | 2019-05-19 20:54:05 +0200 |
|---|---|---|
| committer | horus | 2019-05-19 20:54:05 +0200 |
| commit | 95f37787bfe32eb5ce37afbee9c68bd233edffda (patch) | |
| tree | 69a9e0c86b06b9cecf84e666031b6f496bddecea | |
| parent | 924f23c1c6b5deeea44b08c7d3032426826fa3bb (diff) | |
| download | kategorischeraperitif-95f37787bfe32eb5ce37afbee9c68bd233edffda.tar.gz | |
Adds search by spirit type.
| -rw-r--r-- | app/Http/Controllers/ListOfferController.php | 20 | ||||
| -rw-r--r-- | app/Http/Controllers/RSSController.php | 10 | ||||
| -rw-r--r-- | app/Http/Controllers/SearchController.php | 23 | ||||
| -rw-r--r-- | resources/views/listoffer.blade.php | 6 | ||||
| -rw-r--r-- | resources/views/search.blade.php | 6 | ||||
| -rw-r--r-- | resources/views/snippets/spirittypesbuttons.blade.php | 14 |
6 files changed, 64 insertions, 15 deletions
diff --git a/app/Http/Controllers/ListOfferController.php b/app/Http/Controllers/ListOfferController.php index 993bfcd..ba4face 100644 --- a/app/Http/Controllers/ListOfferController.php +++ b/app/Http/Controllers/ListOfferController.php @@ -57,9 +57,18 @@ class ListOfferController extends Controller { * Database query */ $view_name = \Request::route()->getName(); - #$data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->simplePaginate(10); - $data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(10); - $count = DB::table($view_name . '_view')->whereNotNull('url')->count(); + + if ( "" != Input::get('type') ) { + $data = DB::table($view_name . '_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(10); + $count = DB::table($view_name . '_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->count(); + + } else { + $data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(10); + $count = DB::table($view_name . '_view')->whereNotNull('url')->count(); + } + + # Only used on misc_view, all_view and search. + $spirit_types = DB::select('SELECT DISTINCT spirit_type FROM ' . $view_name . '_view ' . ' ORDER BY spirit_type' ); $rss_feed = "/angebote/" . $view_name . "/feed/"; $query_string = ""; @@ -73,6 +82,7 @@ class ListOfferController extends Controller { } if ( "misc" == $view_name ) { + $view_name = "Andere Angebote"; if ( $data->count() ) { $title = "andere Angebote"; @@ -87,9 +97,11 @@ class ListOfferController extends Controller { $title = "Angebote"; } } else { + $spirit_types = array(); + $title = ucfirst($view_name) . "-Angebote"; } - return view('listoffer', ['data' => $data, 'count' => $count, 'spirit_type' => $view_name, 'rss_feed' => $rss_feed, 'title' => $title ]); + return view('listoffer', ['data' => $data, 'count' => $count, 'spirit_type' => $view_name, 'spirit_types' => $spirit_types, 'rss_feed' => $rss_feed, 'title' => $title ]); } } diff --git a/app/Http/Controllers/RSSController.php b/app/Http/Controllers/RSSController.php index 5c30bd9..f46aef4 100644 --- a/app/Http/Controllers/RSSController.php +++ b/app/Http/Controllers/RSSController.php @@ -61,9 +61,13 @@ class RSSController extends Controller { $view_name = str_replace("/angebote/", "", $view_name); if ( "search" == $view_name ) { - $query = Input::get("q"); - $q = "%" . Utility::escapeLike($query) . "%"; - $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orderBy($sort_by, $order_by)->limit(20)->get(); + if ( "" != Input::get("q") ) { + $query = Input::get("q"); + $q = "%" . Utility::escapeLike($query) . "%"; + $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orderBy($sort_by, $order_by)->limit(20)->get(); + } else { + $data = DB::table('all_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->orderBy($sort_by, $order_by)->limit(20)->get(); + } } else { $data = DB::table($view_name . '_view')->orderBy($sort_by, $order_by)->limit(20)->get(); } diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php index 4fe8db3..9efc391 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -58,10 +58,22 @@ class SearchController extends Controller { } } - $query = Input::get("q"); - $q = "%" . Utility::escapeLike($query) . "%"; - $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q)->orderBy($sort_by, $order_by)->paginate(20); - $count = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q); + if ( "" != Input::get('type') ) { + $query = Input::get('type'); + $data = DB::table('all_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(20); + $count = DB::table('all_view')->where('spirit_type', '=', Input::get('type'))->whereNotNull('url')->count(); + + $title = "Suche nach " . ucwords(Input::get('type')); + } else { + $query = Input::get("q"); + $q = "%" . Utility::escapeLike($query) . "%"; + $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q)->orderBy($sort_by, $order_by)->paginate(20); + $count = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q)->count(); + + $title = "Suche nach " . ucwords(Input::get('q')); + } + + $spirit_types = DB::select('SELECT DISTINCT spirit_type FROM all_view ORDER BY spirit_type' ); $query_string = ""; $query_params = Input::except('page'); @@ -70,11 +82,12 @@ class SearchController extends Controller { } $query_string = ltrim($query_string, "&"); + /* * For strftime() in view. */ #setlocale(LC_TIME, 'de_DE.utf8'); - return view('search', ['data' => $data, 'count' => $count, 'search_phrase' => $query, 'rss_feed' => '/angebote/search/feed/?' . $query_string ]); + return view('search', ['data' => $data, 'count' => $count, 'search_phrase' => $query, 'spirit_types' => $spirit_types, 'title' => $title, 'rss_feed' => '/angebote/search/feed/?' . $query_string ]); } } diff --git a/resources/views/listoffer.blade.php b/resources/views/listoffer.blade.php index a2a52e1..db9cf80 100644 --- a/resources/views/listoffer.blade.php +++ b/resources/views/listoffer.blade.php @@ -13,7 +13,9 @@ <?php $header = ""; $header_text = "Du bist auf der Suche nach einer neuen Lieblingsspirituose? Hier sind alle aktuell reduzierten Angebote aufgelistet. Viel Spaß beim stöbern!"; - if ( "Alle Angebote" == $spirit_type ) { + if ( "" != Input::get('type') ) { + $header = "Alle " . Input::get('type') . "-Angebote"; + } else if ( "Alle Angebote" == $spirit_type ) { $header = "Alle aktuellen Sonderangebote"; } else if ( "Andere Angebote" == $spirit_type ){ $header = "Aktuelle Spirituosen-Sonderangebote"; @@ -47,6 +49,8 @@ </div> </header><!-- .page-header --> + @include('snippets.spirittypesbuttons') + {{ $data->appends(Input::except('page'))->links('paginate') }} <?php diff --git a/resources/views/search.blade.php b/resources/views/search.blade.php index f715989..a795003 100644 --- a/resources/views/search.blade.php +++ b/resources/views/search.blade.php @@ -28,9 +28,9 @@ if ( $data->count() ) { ?> <div class="card taxonomy-card"> <div class="card-body"> - <h1 class="card-title page-title">Suche</h1> + <h1 class="card-title page-title">{{ $title }}</h1> <p> - Sie haben nach <strong>{{ ucwords($search_phrase) }}</strong> gesucht ({{$count->count()}} Treffer) + Sie haben nach <strong>{{ ucwords($search_phrase) }}</strong> gesucht ({{$count}} Treffer) </p> @include('snippets.sortbuttons') <?php @@ -58,6 +58,8 @@ if ( $data->count() ) { </div> </header><!-- .page-header --> + @include('snippets.spirittypesbuttons') + {{ $data->appends(Input::except('page'))->links('paginate') }} <?php diff --git a/resources/views/snippets/spirittypesbuttons.blade.php b/resources/views/snippets/spirittypesbuttons.blade.php new file mode 100644 index 0000000..0f0a5a5 --- /dev/null +++ b/resources/views/snippets/spirittypesbuttons.blade.php @@ -0,0 +1,14 @@ +<?php +if ( isset($spirit_types) && 0 < count($spirit_types) ) { +?> +<div class="btn-toolbar mb-2 mt-2 align-top w-100" role="toolbar" aria-label="Sorten"> +<?php + foreach( $spirit_types as $o ) { +?> + <a class="btn btn-white" href="/angebote/search?type={{ $o->spirit_type }}">{{ $o->spirit_type }}</a> +<?php + } +?> +</div></p> +<?php +} |
