summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Http/Controllers/ListOfferController.php20
-rw-r--r--app/Http/Controllers/RSSController.php10
-rw-r--r--app/Http/Controllers/SearchController.php23
-rw-r--r--resources/views/listoffer.blade.php6
-rw-r--r--resources/views/search.blade.php6
-rw-r--r--resources/views/snippets/spirittypesbuttons.blade.php14
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
+}