summaryrefslogtreecommitdiff
path: root/site
diff options
context:
space:
mode:
Diffstat (limited to 'site')
-rw-r--r--site/app/Http/Controllers/FKOfferController.php94
-rw-r--r--site/resources/views/fk-offer.blade.php219
-rw-r--r--site/resources/views/layouts/fk-base.blade.php85
-rw-r--r--site/resources/views/snippets/fk-footer.blade.php47
-rw-r--r--site/routes/web.php7
5 files changed, 452 insertions, 0 deletions
diff --git a/site/app/Http/Controllers/FKOfferController.php b/site/app/Http/Controllers/FKOfferController.php
new file mode 100644
index 0000000..3c761b3
--- /dev/null
+++ b/site/app/Http/Controllers/FKOfferController.php
@@ -0,0 +1,94 @@
+<?php
+namespace App\Http\Controllers;
+use Illuminate\Http\Request;
+use App\Helpers\CryptoHelper;
+
+use Illuminate\Support\Facades\DB;
+use App\Http\Controllers\Controller;
+
+use Carbon;
+use Illuminate\Support\Facades\Input;
+
+class FKOfferController extends Controller {
+ /**
+ * Shows the index page.
+ *
+ * @return Response
+ */
+ public function showPage(Request $request) {
+
+ /*
+ * Sorting
+ */
+ $sort_by = Input::get("sort");
+ switch ($sort_by) {
+ case("price"):
+ $sort_by = "discounted_price";
+ break;
+ case("discounted_price"):
+ $sort_by = "discounted_price";
+ break;
+ case("name"):
+ $sort_by = "name";
+ break;
+ case("shop"):
+ $sort_by = "shop";
+ break;
+ case("procent"):
+ $sort_by = "procent";
+ break;
+ case("time"):
+ $sort_by = "created_at";
+ break;
+ case("created_at"):
+ $sort_by = "created_at";
+ break;
+ default:
+ $sort_by = "created_at";
+ break;
+ }
+
+ $order_by = $request->input("order");
+ if ( "asc" != $order_by ) {
+ $order_by = "desc";
+ }
+
+ /*
+ * Database query
+ */
+ $view_name = \Request::route()->getName();
+ $data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->simplePaginate(20);
+ $count = DB::table($view_name . '_view')->whereNotNull('url')->count();
+
+ $rss_feed = "/" . $view_name . "/feed/";
+ $query_string = "";
+ $query_params = Input::except('page');
+ foreach( $query_params as $key => $value) {
+ $query_string .= "&" . $key . "=" . $value;
+ }
+ if ( "" != $query_string ) {
+ $query_string = ltrim($query_string, "&");
+ $rss_feed .= "?" . $query_string;
+ }
+
+ if ( "misc" == $view_name ) {
+ $view_name = "Andere Angebote";
+ if ( $data->count() ) {
+ $title = "andere Angebote";
+ } else {
+ $title = "anderen Angebote";
+ }
+ } else if ( "all" == $view_name ) {
+ $view_name = "Alle Angebote";
+ if ( $data->count() ) {
+ $title = "alle Angebote";
+ } else {
+ $title = "Angebote";
+ }
+ } else {
+ $title = ucfirst($view_name) . "-Angebote";
+ }
+
+ return view('fk-offer', ['data' => $data, 'count' => $count, 'spirit_type' => $view_name, 'rss_feed' => $rss_feed, 'title' => $title ]);
+ }
+}
diff --git a/site/resources/views/fk-offer.blade.php b/site/resources/views/fk-offer.blade.php
new file mode 100644
index 0000000..10f50a1
--- /dev/null
+++ b/site/resources/views/fk-offer.blade.php
@@ -0,0 +1,219 @@
+@extends('layouts.base')
+
+@section('header')
+{{ ucfirst($title) }}
+@endsection
+
+@section('feed')
+ {!! Feed::link(secure_url($rss_feed), 'atom', 'Feed von ' . $spirit_type, 'de') !!}
+@endsection
+
+@section('content')
+ <div class="container">
+ <div class="jumbotron p-3 p-md-5 text-white rounded bg-dark bbg-white ttext-dark box-shadow">
+ <div class="col-md-6 px-0">
+ <h1 class="display-4 font-italic">{{ ucfirst($spirit_type) }} <span class="text-mute ml-10">({{$count}} Angebote)</span><!-- --></h1>
+ <!--p class="lead my-3">Finde immer die günstigsten Angebote im Bereich Spirituosen. Täglich neue Schnäppchen.</p-->
+ <p class="lead mb-0"><a href="/" class="text-white font-weight-bold">Zurück zur Übersicht...</a></p>
+ </div>
+ </div>
+
+<?php
+if ( !$data->count() ) {
+ /* Keine Angebote */
+?>
+<div class="alert alert-secondary" data-track-content data-content-name="{{ ucfirst($spirit_type) }}" data-content-piece="Keine Angebote" data-content-target="">
+ <h4 class="alert-heading">Keine Angebote</h4>
+ Momentan liegen keine {{ $title }} vor. Probieren Sie es später noch einmal.
+</div>
+<?php
+ /* Ende Keine Angebote */
+} else {
+ /* Liste Angebote */
+
+?>
+
+@include('snippets.sortbuttons')
+<?php
+ $count = 0;
+ foreach( $data as $offer) {
+
+ if ( $count % 2 == 0) {
+?>
+<!-- .row -->
+ <div class="row mb-2">
+<?php
+ }
+
+?>
+ <div class="col-md-6 col-sm-12" id="{{ $offer->name }}" data-track-content data-content-name="{{ ucfirst($spirit_type) }}" data-content-piece="{{ $offer->name }}" data-content-target="{{ $offer->url }}">
+ <div class="card flex-md-row mb-4 box-shadow h-md-250 h-sm-500">
+
+ <!-- >= md -->
+ <div class="card-body d-none d-md-flex flex-row align-items-start">
+ <div class="card-img-overlay" title="{{$offer->name}} :: {{ $offer->shop }}">
+ <p class="card-text bg-danger float-right rounded off-badge">{{ $offer->procent}}%</p>
+<!--
+ <p class="card-text h-100 float-right">
+ <span class="bg-danger ffloat-right rounded off-badge">{{ $offer->procent}}%</span>
+ <span class="created_at d-flex ffloat-right rounded">{{ date("d.m.y", $offer->created_at) }}</span>
+ </p>
+-->
+
+ <!--p class="card-text created_at h-100 float-right d-flex fflex-column justify-content-end">{{ $offer->created_at}}</p-->
+ </div>
+ <div class="card-img-overlay w-55">
+ <div class="d-inline align-items-start text-left w-100 mb-2">
+ <a class="s-link" title="Alles anzeigen von: {{ $offer->spirit_type }}" href="/search?q={{ $offer->spirit_type }}"><strong class="text-primary">{{ $offer->spirit_type }}</strong></a>
+ <a class="text-dark float-right" href="{{ $offer->shop_url }}">{{ $offer->shop }}</a>
+ </div>
+
+ <h4 class="mb-0 hide-overflow h-45">
+ <a class="text-dark ttext-truncate hide-overflow" href="{{ $offer->url }}" title="{{$offer->name}}" >{{ $offer->name }}</a>
+ <span class="text-fade-out"></span>
+ </h4>
+
+ <p class="card-text mb-auto text-success w-100"><strong class="ffloat-right text-large" style="margin-left: 3px;">{{ TF::fF($offer->discounted_price) }}€</strong>* <del class="text-danger">{{ TF::fF($offer->original_price) . "€" }}</del>
+ <span class="float-right text-muted">{{ TF::fF($offer->base_price ) }}€/L</span>
+ </p>
+ <div class="mb-1 text-muted w-100">
+ <span class="float-right">{{ TF::fF($offer->volume) . " Liter" }}</span><span>{{ TF::fF($offer->abv) . "%" }} Alk.</span>
+ </div>
+ <a class="u ttext-large" href="{{ $offer->url }}" title="Link zum Angebot bei {{$offer->shop}}">Jetzt bestellen</a>
+ <p class="text-muted text-small w-100 nnmt-10">
+ Versand: <strong>{{ TF::fF($offer->shipping_costs) }}€</strong>
+<?php
+ if ( "" != $offer->free_shipping ) {
+?>
+ <span class=" float-right">Gratis ab <strong>{{ $offer->free_shipping }}</strong></span>
+<?php
+ } else {
+?>
+ <span class=" float-right">Versand ist nie kostenlos.</span>
+<?php
+ }
+?>
+ <br>
+<!--
+ <span class=" float-right">{{ date("d.m.Y", $offer->created_at) }}</span>
+-->
+ <span class=" float-right">* Preis vom <strong>{{ strftime("%d. %B", $offer->created_at) }}</strong></span>
+ </p>
+ </div>
+ </div>
+ <img class="card-img-right flex-auto d-none d-md-block border-white img-thumbnail" src="{{ $offer->image_url }}" alt="{{ $offer->name }}" title="{{$offer->name}} :: {{ $offer->shop }}">
+
+ <!-- <= sm -->
+ <!-- Maybe make the image a link
+ <a href="{{ $offer->url }}">
+ </a>
+ -->
+<?php
+ // sets style explicitly for Drankdozijn
+ if ( "Drankdozijn" == $offer->shop ) {
+ $style = 'margin-left: auto; margin-right: 25px; width:50%; object-fit: cover; width: 70px;';
+ } else {
+ $style = '';
+ }
+?>
+ <img style="{{ $style }}" class="card-img-top flex-auto d-sm-block img-thumbnail d-md-none" src="{{ $offer->image_url }}" alt="{{ $offer->name }}" title="{{$offer->name}} :: {{ $offer->shop }}">
+ <div class="card-body .d-md-none d-lg-none d-xl-none d-xs-flex flex-column align-items-start">
+<!--
+ <div class="h-100 card-img-overlay">
+ <p class="card-text bg-danger float-right rounded" style="color: white; font-size: 150%; padding-right: 10px; padding-left:10px; opacity: 0.9;">{{ $offer->procent}}%</p>
+ </div>
+-->
+ <div class="flex-column bg-dark-opacity" >
+ <div class="d-inline align-items-start text-left w-100 mb-2">
+ <p class="card-text bg-danger rounded off-badge text-center" title="{{$offer->name}} :: {{ $offer->shop }}"><strong>{{ $offer->procent}}%</strong> gesenkt</p>
+ <a class="text-dark float-right text-dotted" href="{{ $offer->shop_url }}">{{ $offer->shop }}</a>
+ </div>
+ <div class="d-block align-items-start text-left w-100 mb-2">
+ <strong class="text-primary">{{ $offer->spirit_type }}</strong>
+ </div>
+ <h3 class="mb-0 d-inline-block hide-overflow h-100">
+ <a class="text-dark ttext-truncate" href="{{ $offer->url }}" title="{{$offer->name}}" >{{ $offer->name }}</a>
+ </h3>
+
+ <div class="mb-1 text-muted w-100">
+ <span class="float-right">{{ TF::fF($offer->volume) . " Liter" }}</span><span>{{ TF::fF($offer->abv) . "%" }} Alk.</span>
+ </div>
+
+ <p class="card-text mb-auto text-success w-100"><strong class="ffloat-right text-large" style="margin-left: 3px;">{{ TF::fF($offer->discounted_price) }}€</strong>* <del class="text-danger">{{ TF::fF($offer->original_price) . "€" }}</del>
+ <span class="float-right text-muted">{{ TF::fF($offer->base_price ) }}€/L</span>
+ </p>
+ <strong><a href="{{ $offer->url }}" class="text-large">Jetzt bestellen</a></strong>
+ <p class="text-muted text-small w-100 nmt-10">
+ Versand: <strong>{{ TF::fF($offer->shipping_costs) }}€</strong>
+<?php
+ if ( "" != $offer->free_shipping ) {
+?>
+ <span class=" float-right">Gratis ab <strong>{{ $offer->free_shipping }}</strong></span>
+<?php
+ } else {
+?>
+ <span class=" float-right">Versand ist nie kostenlos.</span>
+<?php
+ }
+?>
+ <br>
+ <span class=" float-right">* Preis vom <strong>{{ strftime("%d. %B", $offer->created_at) }}</strong></span>
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+<?php
+
+
+ if ( $count % 2 == 1) {
+?>
+ <!-- ./row -->
+ </div>
+<?php
+ }
+
+ $count++;
+
+ }
+
+ // schließt den div bei ungerade einträgen
+ if ( $count % 2 == 1) {
+?>
+ <!-- ./row -->
+ </div>
+<?php
+ }
+
+?>
+
+ {{ $data->appends(Input::except('page'))->links() }}
+
+<?php
+ /* Ende Liste Angebote */
+}
+?>
+
+<!-- ./container -->
+ </div>
+
+@endsection
+
+@section('scripts')
+<script>
+$(window).on("load", function(){
+ $("img.card-img-top").each( function(k, v){
+
+ // sets style like with Drankdozijn
+ if ( (this.naturalWidth / this.naturalHeight) < 0.3 ) {
+ console.log("debug: changing css for " + this.title);
+ $(this).css("width", this.naturalWidth);
+ $(this).css("onject-fit", "cover");
+ $(this).css("margin-left", "auto");
+ $(this).css("margin-right", "25px");
+ }
+ });
+});
+</script>
+@endsection
diff --git a/site/resources/views/layouts/fk-base.blade.php b/site/resources/views/layouts/fk-base.blade.php
new file mode 100644
index 0000000..ac72844
--- /dev/null
+++ b/site/resources/views/layouts/fk-base.blade.php
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html lang="de">
+<head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, minimumscale=1.0, maximum-scale=1.0" />
+ <meta name="description" content="">
+ <meta name="author" content="">
+ <link rel="icon" href="https://files.fuselkoenig.de/favicon.ico">
+ <title>@yield('header') | {{ env("APP_BRANDING") }}</title>
+
+ <link rel="alternate" type="application/rss+xml" title="Fuselkönig &raquo; Feed" href="https://www.fuselkoenig.de/feed/" />
+ <link rel="alternate" type="application/rss+xml" title="Fuselkönig &raquo; Kommentar-Feed" href="https://www.fuselkoenig.de/comments/feed/" />
+
+ <link rel='stylesheet' id='yarppWidgetCss-css' href='https://www.fuselkoenig.de/wp-content/plugins/yet-another-related-posts-plugin/style/widget.css?ver=5.1.1' type='text/css' media='all' />
+ <link rel='stylesheet' id='social-icons-widget-widget-css' href='https://www.fuselkoenig.de/wp-content/plugins/social-media-icons-widget/css/social_icons_widget.css?ver=5.1.1' type='text/css' media='all' />
+ <link rel='stylesheet' id='wp-block-library-css' href='https://www.fuselkoenig.de/wp-includes/css/dist/block-library/style.min.css?ver=5.1.1' type='text/css' media='all' />
+ <link rel='stylesheet' id='contact-form-7-css' href='https://www.fuselkoenig.de/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.1.1' type='text/css' media='all' />
+ <link rel='stylesheet' id='cookie-law-info-css' href='https://www.fuselkoenig.de/wp-content/plugins/cookie-law-info/public/css/cookie-law-info-public.css?ver=1.7.6' type='text/css' media='all' />
+ <link rel='stylesheet' id='cookie-law-info-gdpr-css' href='https://www.fuselkoenig.de/wp-content/plugins/cookie-law-info/public/css/cookie-law-info-gdpr.css?ver=1.7.6' type='text/css' media='all' />
+ <link rel='stylesheet' id='theme-styles-css' href='https://www.fuselkoenig.de/wp-content/themes/fuselkoenig_de_v2/css/theme.css?ver=0.1.1551979696' type='text/css' media='all' />
+ <link rel='stylesheet' id='elasticpress-facets-css' href='https://www.fuselkoenig.de/wp-content/plugins/elasticpress/features/facets/assets/css/facets.min.css?ver=2.8.2' type='text/css' media='all' />
+ <link rel='stylesheet' id='recent-posts-widget-with-thumbnails-public-style-css' href='https://www.fuselkoenig.de/wp-content/plugins/recent-posts-widget-with-thumbnails/public.css?ver=6.4.0' type='text/css' media='all' />
+
+ <link href="/font/css/open-iconic-bootstrap.css" rel="stylesheet">
+ <link href="/css/custom.css" rel="stylesheet">
+ <link href="/css/colors.css" rel="stylesheet">
+
+ <script type='text/javascript' src='https://www.fuselkoenig.de/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
+ <script type='text/javascript' src='https://www.fuselkoenig.de/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script>
+
+
+
+ @yield('feed')
+ @yield('css')
+
+<?php
+if ( "" != env('PIWIK_URL') && "" != env('PIWIK_ID') ) {
+?>
+<script type="text/javascript">
+ var _paq = _paq || [];
+ /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ _paq.push(['enableHeartBeatTimer', 5]);
+ _paq.push(['trackVisibleContentImpressions']);
+ (function() {
+ var u="{{ env('PIWIK_URL') }}";
+ _paq.push(['setTrackerUrl', u+'js/']);
+ _paq.push(['setSiteId', '{{ env("PIWIK_ID") }}']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'js/'; s.parentNode.insertBefore(g,s);
+ })();
+</script>
+<?php
+}
+?>
+</head>
+
+<body>
+
+<?php
+if ( "" != env('PIWIK_URL') && "" != env('PIWIK_ID') ) {
+?>
+<noscript>
+<img src="{{ env('PIWIK_URL') }}js/?idsite={{ env('PIWIK_ID') }}&rec=1" style="border:0" alt="" />
+</noscript>
+<?php
+}
+?>
+
+ @include('snippets.navbar')
+
+ @yield('content')
+
+ @include('snippets.fk-footer')
+
+<script type='text/javascript' src='https://test.fuselkoenig.com/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.1.1'></script>
+<script type='text/javascript' src='https://test.fuselkoenig.com/wp-content/themes/fuselkoenig_de_v2/js/theme.min.js?ver=0.1.1551979696'></script>
+<script type='text/javascript' src='https://test.fuselkoenig.com/wp-includes/js/underscore.min.js?ver=1.8.3'></script>
+<script type='text/javascript' src='https://test.fuselkoenig.com/wp-content/plugins/elasticpress/features/facets/assets/js/facets.min.js?ver=2.8.2'></script>
+<script type='text/javascript' src='https://test.fuselkoenig.com/wp-includes/js/wp-embed.min.js?ver=5.1.1'></script>
+
+ @yield('scripts')
+</body>
+</html>
diff --git a/site/resources/views/snippets/fk-footer.blade.php b/site/resources/views/snippets/fk-footer.blade.php
new file mode 100644
index 0000000..a870301
--- /dev/null
+++ b/site/resources/views/snippets/fk-footer.blade.php
@@ -0,0 +1,47 @@
+<!-- .custom-footer-widget -->
+<div class="wrapper footer" id="wrapper-footer-full">
+ <div class="container" id="footer-full-content" tabindex="-1">
+ <div class="row">
+ <div id="custom_html-2" class="widget_text footer-widget widget_custom_html widget-count-1 col-md-12">
+ <div class="textwidget custom-html-widget">
+
+ <div class="row footer-menu">
+ <div class="col-xs col-sm">
+ <nav class="nav flex-column">
+ <h3 class="nav-item text-muted">Impressum</h3>
+ <a class="nav-link" rel="nofollow" title="Link zum Impressum" href="/impressum/">Impressum</a>
+ <a class="nav-link" rel="nofollow" title="Link zum Haftungsausschluss" href="/impressum/#haftungsausschluss">Haftungsausschluss</a>
+ <a class="nav-link" rel="nofollow" title="Link zur Datenschutzerklärung" href="/impressum/#datenschutz">Datenschutz</a>
+ </nav>
+ </div>
+ <div class="col-xs col-sm">
+ <nav class="nav flex-column ml-0">
+ <h3 class="nav-item text-muted">Kontakt</h3>
+ <a class="nav-link" title="Link zum Kontaktformular" href="/kontakt">Kontaktformular</a>
+ <a class="nav-link" rel="nofollow" title="Über mich" href="/ueber-diesen-blog/">Maximilian Möhring</a>
+ </nav>
+ </div>
+ <div class="col-xs-12 col-sm">
+ <nav class="nav flex-column ml-0">
+ <h3 class="nav-item text-muted">Social Media</h3>
+ <ul class="icons-medium nav">
+ <li class="pinterest">
+ <a title="Pinterest" class="nav-link" href="https://pinterest.de/fuselkoenig" target="_blank"><img class="site-icon" src="/wp-content/plugins/social-media-icons-widget/icons/medium/pinterest.jpg" alt="Pinterest" title="Pinterest" height="32" width="32" /></a>
+ </li>
+ <li class="twitter nav-item">
+ <a title="Twitter" class="nav-link" href="https://twitter.com/fuselkoenig" target="_blank"><img class="site-icon" src="/wp-content/plugins/social-media-icons-widget/icons/medium/twitter.jpg" alt="Twitter" title="Twitter" height="32" width="32" /></a>
+ </li>
+ <li class="rss">
+ <a title="RSS-Feed" class="nav-link" href="/feed/" target="_blank"><img class="site-icon" src="/wp-content/plugins/social-media-icons-widget/icons/medium/rss.jpg" alt="RSS Feed" title="RSS Feed" height="32" width="32" /></a>
+ </li>
+ </ul>
+ </nav>
+ </div>
+ </div>
+</div></div></div><!-- .footer-widget -->
+ </div>
+ </div>
+<!-- .custom-footer-widget -->
+
+<a id="back-to-top" href="#" class="btn btn-primary btn-float btn-lg back-to-top" role="button" title="Nach oben" data-toggle="tooltip" data-placement="left"><i class="material-icons">arrow_upward</i></a>
+</div><!-- #page we need this extra closing tag here -->
diff --git a/site/routes/web.php b/site/routes/web.php
index b63116e..a7adaef 100644
--- a/site/routes/web.php
+++ b/site/routes/web.php
@@ -20,6 +20,13 @@ Route::get('/rum', 'OfferController@showPage')->name('rum');
Route::get('/misc', 'OfferController@showPage')->name('misc');
Route::get('/all', 'OfferController@showPage')->name('all');
+Route::get('/angebote/whisky', 'FKOfferController@showPage')->name('whisky');
+Route::get('/angebote/wodka', 'FKOfferController@showPage')->name('wodka');
+Route::get('/angebote/gin', 'FKOfferController@showPage')->name('gin');
+Route::get('/angebote/rum', 'FKOfferController@showPage')->name('rum');
+Route::get('/angebote/misc', 'FKOfferController@showPage')->name('misc');
+Route::get('/angebote/all', 'FKOfferController@showPage')->name('all');
+
Route::get('/wp/whisky', 'WPOfferController@showPage')->name('whisky');
Route::get('/wp/wodka', 'WPOfferController@showPage')->name('wodka');
Route::get('/wp/gin', 'WPOfferController@showPage')->name('gin');