diff --git a/app/Http/Controllers/Assoziator.php b/app/Http/Controllers/Assoziator.php index b4a7d686dbaaf71e194d27d4f17d958b7fda643c..e60a0d3a804fef53c647752890709cb28eb94943 100644 --- a/app/Http/Controllers/Assoziator.php +++ b/app/Http/Controllers/Assoziator.php @@ -14,13 +14,25 @@ class Assoziator extends Controller return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), '/asso')); } - $url = "https://metager.de/meta/meta.ger3?eingabe=" . urlencode($eingabe) . "&out=atom10&key=test"; + $params = [ + "eingabe" => $eingabe, + "out" => "atom10", + "key" => env("ASSO_KEY", "test"), + ]; + + + $url = route("resultpage", $params); + + # Special Case for local development as the port forwarding does not work within docker + if(env("APP_ENV", "") === "local" && stripos($url, "http://localhost:8080") === 0){ + $url = str_replace("http://localhost:8080", "http://nginx", $url); + } $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_RETURNTRANSFER => 1, - CURLOPT_USERAGENT => $_SERVER["AGENT"], + CURLOPT_USERAGENT => $_SERVER["HTTP_USER_AGENT"], CURLOPT_FOLLOWLOCATION => true, CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_MAXCONNECTS => 500, @@ -34,6 +46,11 @@ class Assoziator extends Controller )); $response = curl_exec($ch); + + if(curl_errno($ch)){ + abort(500, curl_error($ch)); + } + $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); @@ -115,8 +132,9 @@ class Assoziator extends Controller ->with('navbarFocus', 'dienste') ->with('words', $words) ->with('keywords', $eingabe) - ->with('wordCount', $wordCount); + ->with('wordCount', $wordCount) + ->with('css', [mix('css/asso/style.css')]) + ->with('darkcss', [mix('css/asso/dark.css')]);; - die(var_dump($words)); } } diff --git a/app/Http/Middleware/BrowserVerification.php b/app/Http/Middleware/BrowserVerification.php index ecd9b76a2df4b270e3a4734ff49b9845641b6326..8069d2684aaa533cc3bfc2d4a80ea77b88fe18ae 100644 --- a/app/Http/Middleware/BrowserVerification.php +++ b/app/Http/Middleware/BrowserVerification.php @@ -17,7 +17,7 @@ class BrowserVerification * @param \Closure $next * @return mixed */ - public function handle($request, Closure $next) + public function handle($request, Closure $next, $route = "resultpage") { $bvEnabled = config("metager.metager.browserverification_enabled"); @@ -42,6 +42,7 @@ class BrowserVerification } header('X-Accel-Buffering: no'); + //use parameter for middleware to skip this when using associator if (($request->filled("loadMore") && Cache::has($request->input("loadMore"))) || app('App\Models\Key')->getStatus()) { return $next($request); } @@ -83,7 +84,7 @@ class BrowserVerification $params = $request->all(); $params["mgv"] = $key; - $url = route("resultpage", $params); + $url = route($route, $params); echo(view('layouts.resultpage.unverifiedResultPage') ->with('url', $url) diff --git a/app/Http/Middleware/HumanVerification.php b/app/Http/Middleware/HumanVerification.php index d38133150635a5487926aee6df36642c5ef9c9b6..202e52face64f290bf18e1caf66ae46de9ccbfaf 100644 --- a/app/Http/Middleware/HumanVerification.php +++ b/app/Http/Middleware/HumanVerification.php @@ -46,6 +46,8 @@ class HumanVerification * If someone that uses a bot finds this out we * might have to change it at some point. */ + + //use parameter for middleware to skip this when using associator if (!env('BOT_PROTECTION', false) || app('App\Models\Key')->getStatus()) { $update = false; return $next($request); diff --git a/resources/less/metager/pages/asso/style-dark.less b/resources/less/metager/pages/asso/style-dark.less new file mode 100644 index 0000000000000000000000000000000000000000..8a60b0a30d8f350052ae548c9454e1fa5d9aec4e --- /dev/null +++ b/resources/less/metager/pages/asso/style-dark.less @@ -0,0 +1,7 @@ +.reasso { + color: #fd8307; +} + +tr:nth-child(odd){ + background-color: #333030; +} \ No newline at end of file diff --git a/resources/less/metager/pages/asso/style.less b/resources/less/metager/pages/asso/style.less new file mode 100644 index 0000000000000000000000000000000000000000..a3234f46bfa44f143f5e51ad92b79b1078783adc --- /dev/null +++ b/resources/less/metager/pages/asso/style.less @@ -0,0 +1,33 @@ +table { + width: 100%; +} +table > tbody > tr { + text-align: center; + +} + +tr:nth-child(odd){ + background-color: #dbd8d8; +} +form div.input-group-addon button { + padding: 9px; +} + +.reasso { + color: #06C; + font-size: 1.3rem; + cursor: pointer; +} +.reasso:hover { + color: red; +} + +td.association { + display: flex; + align-items: center; + margin-left: 8px; + padding: 8px; +} +.asso-search-link { + margin-right: 10px; +} \ No newline at end of file diff --git a/resources/views/assoziator/asso.blade.php b/resources/views/assoziator/asso.blade.php index fdeeb6e92fd01bd0345b489132a8cff970c8b002..7ff76adb245e65f86ef8d3e80426566dbf6bef08 100644 --- a/resources/views/assoziator/asso.blade.php +++ b/resources/views/assoziator/asso.blade.php @@ -1,65 +1,54 @@ @extends('layouts.subPages') -@section('title', $title ) +@section('title', $title) @section('content') - <style> - form div.input-group-addon button { - padding: 9px; - } + <h1 class="page-title">{{ trans('asso.head.1') }}</h1> + <div class="card-heavy"> + <p>{{ trans('asso.1.1') }} <a + href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), '/datenschutz') }}" + target="_blank">{{ trans('asso.1.2') }}</a>{{ trans('asso.1.3') }}.</p> - .reasso { - color: rgb(0, 102, 204); - } - .reasso:hover { - color: red; - } - - td.association { - display: flex; - } - .asso-search-link { - margin-right: 10px; - } - </style> - <h1 class="page-title">{{ trans('asso.head.1') }}</h1> - <div class="card-heavy"> - <p>{{ trans('asso.1.1') }} <a href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), '/datenschutz') }}" target="_blank">{{ trans('asso.1.2') }}</a>{{ trans('asso.1.3') }}.</p> - - <form method="post" class="form-inline"> - <input type="text" class="form-control search-input-mini" placeholder="{{ trans('asso.search.placeholder') }}" @if(isset($keywords)) value="{{$keywords}}" @endif name="q" required autofocus/><button type="submit" class="search-btn-mini"><i class="fa fa-search" aria-hidden="true"></i></button> - </form> - </div> - @if(isset($words)) - <div class="card-heavy"> - <div class="table-responsive"> - <table class="table"> - <caption>Assoziationen für "{{ $keywords }}"</caption> - <thead> - <tr> - <th>#</th> - <th>Assoziation</th> - <th>Relevanz</th> - </tr> - </thead> - <tbody> - @php $i = 1; @endphp - @foreach($words as $key => $value) - <tr> - <td>{{ $i }}</td> - <td class="association"> - <a class="asso-search-link" href="{{ action('MetaGerSearch@search', ['eingabe' => $key]) }}" title="{{ trans('asso.searchasso.title') }}"><i class="fa fa-search" aria-hidden="true"></i></a> - <form method="POST"> - <button name="q" value="{{ $key }}" class="reasso" type="submit" title="{{ trans('asso.reasso.title') }}">{{ $key }}</button> - </form> - </td> - <td>{{ round(($value / $wordCount) * 100, 2) }}%</td> - @php $i++; @endphp - </tr> - @endforeach - </tbody> - </table> - </div> - </div> - @endif + <form method="get" class="form-inline" + action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('assoresults')) }}"> + <input type="text" class="form-control search-input-mini" placeholder="{{ trans('asso.search.placeholder') }}" + @if (isset($keywords)) value="{{ $keywords }}" @endif name="q" required autofocus /><button type="submit" class="search-btn-mini"><i + class="fa fa-search" aria-hidden="true"></i></button> + </form> + </div> + @if (isset($words)) + <div class="card-heavy"> + <div class="table-responsive"> + <table class="table"> + <caption>Assoziationen für "{{ $keywords }}"</caption> + <thead> + <tr> + <th>#</th> + <th>Assoziation</th> + <th>Relevanz</th> + </tr> + </thead> + <tbody> + @php $i = 1; @endphp + @foreach ($words as $key => $value) + <tr> + <td>{{ $i }}</td> + <td class="association"> + <a class="asso-search-link" + href="{{ action('MetaGerSearch@search', ['eingabe' => $key]) }}" + title="{{ trans('asso.searchasso.title') }}"><i class="fa fa-search" + aria-hidden="true"></i></a> + <a name="q" value="{{ $key }}" class="reasso" + href="{{ route('assoresults', ['q' => $key]) }}" + title="{{ trans('asso.reasso.title') }}">{{ $key }}</a> + </td> + <td>{{ round(($value / $wordCount) * 100, 2) }}%</td> + @php $i++; @endphp + </tr> + @endforeach + </tbody> + </table> + </div> + </div> + @endif @endsection diff --git a/routes/web.php b/routes/web.php index e13a59e537b05f88883f7977e0f24df404b3abbf..eb81c6e648ce808091d5ae7f4a06e548dd91b2aa 100644 --- a/routes/web.php +++ b/routes/web.php @@ -38,9 +38,11 @@ Route::group( Route::get('asso', function () { return view('assoziator.asso') ->with('title', trans('titles.asso')) - ->with('navbarFocus', 'dienste'); + ->with('navbarFocus', 'dienste') + ->with('css', [mix('css/asso/style.css')]) + ->with('darkcss', [mix('css/asso/dark.css')]); }); - Route::post('asso', 'Assoziator@asso'); + Route::get('asso/meta.ger3', 'Assoziator@asso')->middleware('browserverification:assoresults', 'humanverification')->name("assoresults"); Route::get('impressum', function () { return view('impressum') diff --git a/webpack.mix.js b/webpack.mix.js index 3e1b9cdcffae4b1c81eec11c74ac6d78c04a683e..350be5f7396ca4058e6e08d32e2495dd731f562f 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -55,6 +55,12 @@ mix .less("resources/less/metager/pages/count/style.less", "public/css/count/style.css", { strictMath: true }) + .less("resources/less/metager/pages/asso/style-dark.less", "public/css/asso/dark.css", { + strictMath: true + }) + .less("resources/less/metager/pages/asso/style.less", "public/css/asso/style.css", { + strictMath: true + }) .less("resources/less/metager/pages/spende/danke.less", "public/css/spende/danke.css", { strictMath: true })