diff --git a/app/Http/Controllers/KeyController.php b/app/Http/Controllers/KeyController.php index 417b95bf8df3d68cd38c076ed771524163e8f9e1..eb9f37a04720da71f692ff88cb5e1167ae557bcb 100644 --- a/app/Http/Controllers/KeyController.php +++ b/app/Http/Controllers/KeyController.php @@ -5,36 +5,58 @@ namespace App\Http\Controllers; use Cookie; use Illuminate\Http\Request; use LaravelLocalization; +use \App\Models\Key; class KeyController extends Controller { public function index(Request $request) { $redirUrl = $request->input('redirUrl', ""); + $cookie = Cookie::get('key'); + $key = $request->input('keyToSet', ''); - return view('key') - ->with('title', trans('titles.key')); + if(empty($key) && empty($cookie)){ + $key = 'enter_key_here'; + }elseif(empty($key) && !empty($cookie)){ + $key = $cookie; + }elseif(!empty($key)){ + $key = $request->input('key'); + } + $cookieLink = LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('loadSettings', Cookie::get())); + return view('key') + ->with('title', trans('titles.key')) + ->with('cookie', $key) + ->with('cookieLink', $cookieLink); } public function setKey(Request $request) { $redirUrl = $request->input('redirUrl', ""); - $key = $request->input('key', ''); + $keyToSet = $request->input('keyToSet'); + $key = new Key ($request->input('keyToSet', '')); - if (app('App\Models\Key')->getStatus()) { + if ($key->getStatus()) { # Valid Key $host = $request->header("X_Forwarded_Host", ""); if (empty($host)) { $host = $request->header("Host", ""); } - - Cookie::queue('key', $key, 525600, '/', null, false, false); - return redirect($redirUrl); + Cookie::queue('key', $keyToSet, 0, '/', null, false, false); + $settings = Cookie::get(); + $settings['key'] = $keyToSet; + $cookieLink = LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('loadSettings', $settings)); + return view('key') + ->with('title', trans('titles.key')) + ->with('cookie', $keyToSet) + ->with('cookieLink', $cookieLink); } else { + $cookieLink = LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('loadSettings', Cookie::get())); return view('key') ->with('title', trans('titles.key')) - ->with('keyValid', false); + ->with('keyValid', false) + ->with('cookie', 'enter_key_here') + ->with('cookieLink', $cookieLink); } } diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index a4140a043ef0ce02571f2bbb1917363599c5822f..d22e7d633b654d27c9124ba6b616695cafade905 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use Cookie; use LaravelLocalization; use \App\MetaGer; +use \App\Models\Key; use \Illuminate\Http\Request; class SettingsController extends Controller @@ -56,7 +57,7 @@ class SettingsController extends Controller $cookies = Cookie::get(); $settingActive = false; foreach ($cookies as $key => $value) { - if (\starts_with($key, [$fokus . "_engine_", $fokus . "_setting_"]) || strpos($key, $fokus . '_blpage') === 0 || $key === 'dark_mode' || $key === 'new_tab' || $key === 'key') { + if (\starts_with($key, [$fokus . "_engine_", $fokus . "_setting_"]) || strpos($key, $fokus . '_blpage') === 0 || $key === 'dark_mode' || $key === 'new_tab' || $key === 'key' || $key === 'zitate') { $settingActive = true; } } @@ -211,16 +212,12 @@ class SettingsController extends Controller // Currently only the setting for quotes is supported $quotes = $request->input('zitate', ''); - if(!empty($quotes)){ - if($quotes === "off"){ - $path = \Request::path(); - $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5); - Cookie::queue($fokus . "_setting_zitate", "off", 0, $cookiePath, null, false, false); - }elseif($quotes === "on") { - $path = \Request::path(); - $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5); - Cookie::queue($fokus . "_setting_zitate", "", 0, $cookiePath, null, false, false); - } + if(!empty($quotes)) { + if($quotes === "off") { + Cookie::queue('zitate', 'off', 0, '/', null, false, false); + }elseif($quotes === "on") { + Cookie::queue('zitate', '', 0, '/', null, false, false); + } } $darkmode = $request->input('dm'); @@ -270,6 +267,9 @@ class SettingsController extends Controller if($key === 'key'){ Cookie::queue($key, "", 0, '/', null, false, false); } + if($key === 'zitate'){ + Cookie::queue($key, "", 0, '/', null, false, false); + } } $this->clearBlacklist($request); @@ -298,7 +298,9 @@ class SettingsController extends Controller Cookie::queue($key, "", 0, '/', null, false, false); } elseif($key === 'key') { Cookie::queue($key, "", 0, '/', null, false, false); - }else{ + } elseif($key === 'zitate') { + Cookie::queue($key, "", 0, '/', null, false, false); + } else{ Cookie::queue($key, "", 0, $cookiePath, null, false, false); } return redirect($request->input('url', 'https://metager.de')); @@ -314,7 +316,11 @@ class SettingsController extends Controller if($key === 'dark_mode'){ Cookie::queue($key, "", 0, '/', null, false, false); } elseif($key === 'new_tab') { - Cookie::queue($key, "", 0, '/', null, false, false); + Cookie::queue($key, "", 0, '/', null, false, false); + } elseif($key === 'key') { + Cookie::queue($key, "", 0, '/', null, false, false); + } elseif($key === 'zitate') { + Cookie::queue($key, "", 0, '/', null, false, false); } else { Cookie::queue($key, "", 0, $cookiePath, null, false, false); } @@ -404,39 +410,50 @@ class SettingsController extends Controller $path = \Request::path(); $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5); - $sumaFile = MetaGer::getLanguageFile(); - $sumaFile = json_decode(file_get_contents($sumaFile), true); - - $foki = array_keys($sumaFile['foki']); - $regexUrl = '#^(\*\.)?[a-z0-9]+(\.[a-z0-9]+)?(\.[a-z0-9]{2,})$#'; + $langFile = MetaGer::getLanguageFile(); + $langFile = json_decode(file_get_contents($langFile)); + $regexUrl = '#^(\*\.)?[a-z0-9]+(\.[a-z0-9]+)?(\.[a-z0-9]{2,})$#'; - $cookies = $request->all(); - foreach($cookies as $key => $value){ - $blpage = false; - foreach($foki as $fokus){ - if(strpos($key, $fokus . '_blpage') === 0 && preg_match($regexUrl, $value) === 1){ - Cookie::queue($key, $value, 0, $cookiePath, null, false, false); - $blpage = true; + $settings = $request->all(); + foreach($settings as $key => $value) { + if($key === 'key') { + $memberKey = new Key($value); + if($memberKey->getStatus()){ + Cookie::queue($key, $value, 0, '/', null, false, false); } } - if($blpage){ - continue; - } - if($key === 'dark_mode'){ + elseif($key === 'dark_mode' && ($value === '1' || $value === '2')){ Cookie::queue($key, $value, 0, '/', null, false, false); } - if($key === 'new_tab' && $value === 'on') { + elseif($key === 'new_tab' && $value === 'on') { Cookie::queue($key, 'on', 0, '/', null, false, false); - } - foreach($sumaFile['filter']['parameter-filter'] as $suma => $filter){ - if($key === $suma && $value === $filter){ - Cookie::queue($key, $value, 0, $cookiePath, null, false, false); - } + }elseif($key === 'zitate' && $value === 'off'){ + Cookie::queue($key, 'off', 0, '/', null, false, false); + } else { + foreach($langFile->foki as $fokus => $fokusInfo) { + if(strpos($key, $fokus . '_blpage') === 0 && preg_match($regexUrl, $value) === 1){ + Cookie::queue($key, $value, 0, $cookiePath, null, false, false); + } elseif(strpos($key, $fokus.'_setting_') === 0) { + foreach($langFile->filter->{'parameter-filter'} as $parameter) { + foreach($parameter->values as $p => $v) { + if($key === $fokus.'_setting_' . $parameter->{'get-parameter'} && $value === $p){ + Cookie::queue($key, $value, 0, $cookiePath, null, false, false); + } + } + } + } else { + $sumalist = array_keys($this->getSumas($fokus)); + foreach($sumalist as $suma) { + if(strpos($key, $fokus . '_engine_' . $suma) === 0) { + Cookie::queue($key, 'off', 0, $cookiePath, null, false, false); + } + } + } + } } } - return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), url('/'))); } -} +} \ No newline at end of file diff --git a/app/MetaGer.php b/app/MetaGer.php index e61f4e82c09dc7b40436a7d86096440326ad56a5..2767f0272aa51b2207a7116eca924007ea8454a2 100644 --- a/app/MetaGer.php +++ b/app/MetaGer.php @@ -1092,12 +1092,12 @@ class MetaGer $this->agent = new Agent(); $this->mobile = $this->agent->isMobile(); # Sprüche - if (!App::isLocale("de") || (\Cookie::has($this->getFokus() . '_setting_zitate') && \Cookie::get($this->getFokus() . '_setting_zitate') === "off")) { - $this->sprueche = "off"; + if (!App::isLocale('de') || (\Cookie::has('zitate') && \Cookie::get('zitate') === 'off')) { + $this->sprueche = 'off'; } else { - $this->sprueche = "on"; + $this->sprueche = 'on'; } - if ($request->filled("zitate") && $request->input('zitate') === "on" || $request->input('zitate') === "off") { + if ($request->filled('zitate') && $request->input('zitate') === 'on' || $request->input('zitate') === 'off') { $this->sprueche = $request->input('quotes'); } diff --git a/resources/lang/de/key.php b/resources/lang/de/key.php index c39f62f45b1f0f99f0586fc3277f26ee4334da06..f29f434b0c955872eb77b9fe56ae78593892bc20 100644 --- a/resources/lang/de/key.php +++ b/resources/lang/de/key.php @@ -7,8 +7,8 @@ return [ 'p3' => 'Wenn Sie sich den Cookie anschauen steht dort drin "key=xxxx". Wir verwenden diesen dementsprechend nicht für Tracking-Zwecke. Er wird auch zu keinem Zeitpunkt in irgendeiner Form von uns gespeichert oder geloggt.', 'p4' => 'Wichtig: Um diese Funktion nutzen zu können, müssen Sie Cookies in Ihrem Browser zugelassen haben. Die Einstellung bleibt dann solange gespeichert, wie Ihr Browser Cookies speichert.', 'p5' => 'Um den Schlüssel darüber hinausgehend speichern zu können haben Sie folgende Möglichkeiten:', - 'li1' => 'Richten Sie sich <code>:url</code>', - 'li2' => 'Falls Sie MetaGer als Standardsuchmaschine verwenden, können Sie nach der Schlüsseleingabe den Eintrag löschen und erneut hinzufügen. Wenn Sie in Ihrem Browser einen "Suchstring" eingeben müssen, können Sie <code>:url</code> verwenden.', + 'li1' => 'Richten Sie sich folgenden Link als Startseite/Lesezeichen ein:', + 'li2' => 'Falls Sie MetaGer als Standardsuchmaschine verwenden, können Sie nach der Schlüsseleingabe den Eintrag löschen und erneut hinzufügen. Wenn Sie in Ihrem Browser einen "Suchstring" eingeben müssen, können Sie folgenden verwenden:', 'placeholder1' => 'Schlüssel eingeben...', 'removeKey' => 'aktuellen Schlüssel entfernen', 'invalidKey' => 'Der eingegebene Schlüssel ist ungültig', diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 26de372ad66b973bb77db40cabb9dec7b3aff793..3925e423a48bbcd475e9dbed2b284c7481e2d183 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -25,7 +25,7 @@ return [ 'add' => 'Hinzufügen', 'clear' => 'Blacklist leeren', 'copy' => 'Kopieren', - 'hint' => 'Diese Einstellung betrifft alle Fokusse und Unterseiten übergreifend!', + 'hint' => 'Diese Einstellungen betreffen alle Fokusse und Unterseiten übergreifend!', 'darkmode' => 'Dunklen Modus umschalten', 'system' => 'Systemstandard', diff --git a/resources/lang/en/key.php b/resources/lang/en/key.php index 8026105ee2fefc9038bf01268a3d499dde2030d0..a78cb1fe3b7d01ec60431d39d5972a814409158d 100644 --- a/resources/lang/en/key.php +++ b/resources/lang/en/key.php @@ -7,7 +7,7 @@ return [ 'p3' => 'If you look at the cookie there is "key = xxxx" in there. We do not use it for tracking purposes. It is also never stored or logged by us in any way.', 'p4' => 'Important: In order to use this function, you must have allowed cookies in your browser. The setting will remain saved as long as your browser saves cookies.', 'p5' => 'In order to be able to save the key beyond that, you have the following options:', - 'li1' => 'Set up <code>:url</code> as the start page in your browser.', + 'li1' => 'Set the following URL as start page/bookmark in your browser:', 'li2' => 'If you are using MetaGer as the default search engine, you can delete the entry after entering the key and add it again. If you have to enter a "search string" in your browser, you can use <code>:url</code>.', 'placeholder1' => 'Enter key ...', 'removeKey' => 'Remove current key', diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php index 62673341ed689a7cf4efa650a3347206d5f08e6e..d45aec158ba791736576d44560aca2baf292453c 100644 --- a/resources/lang/en/settings.php +++ b/resources/lang/en/settings.php @@ -25,7 +25,7 @@ return [ 'add' => 'Add', 'clear' => 'Clear black list', 'copy' => 'Copy', - 'hint' => 'This setting affects all foci and sub-pages!', + 'hint' => 'These settings affect all foci and sub-pages!', 'darkmode' => 'Toggle dark mode', 'system' => 'System Default', diff --git a/resources/less/metager/general/specific.less b/resources/less/metager/general/specific.less index 028c845406144e4477c8459e2c156c52b69a9e5e..2f812a934e7876c25a8f008fd44cb353fbe9af6f 100644 --- a/resources/less/metager/general/specific.less +++ b/resources/less/metager/general/specific.less @@ -20,4 +20,14 @@ fieldset input[type=text] { padding-right: 10px; border-width: 1px; overflow: visible; +} + +.copyLink{ + display:flex; + .loadSettings{ + flex-grow:1; + width:100%; + background-color:@input-bg; + color:@input-text; + } } \ No newline at end of file diff --git a/resources/less/metager/pages/settings.less b/resources/less/metager/pages/settings.less index 767d8304624b554810a3282075a05c94ef95c9b3..57987b15f319cf01812c86e86ea756378dfff313 100644 --- a/resources/less/metager/pages/settings.less +++ b/resources/less/metager/pages/settings.less @@ -88,14 +88,4 @@ width:20px; } } - #cookieLink{ - display:flex; - align-items:left; - #loadSettings{ - flex-grow:1; - width:100%; - background-color:@input-bg; - color:@input-text; - } - } } \ No newline at end of file diff --git a/resources/views/key.blade.php b/resources/views/key.blade.php index 1b66cf0f02ba685c5de512e355b887df7ce5eefe..eec467c0a73225d9dbf3054474f0059f1f8ec135 100644 --- a/resources/views/key.blade.php +++ b/resources/views/key.blade.php @@ -21,30 +21,31 @@ <p>{{ trans('key.p4') }}</p> <p>{{ trans('key.p5') }}</p> <ol> - <li>{!! trans('key.li1', ["url" => - route("startpage", [ - "key" => - empty(Cookie::get('key')) ? - "enter_key_here" : - Cookie::get('key') - ])])!!} als Startseite im Browser ein.</li> - <li>@lang('key.li2', ["url" => - route("resultpage", [ - "key" => - empty(Cookie::get('key')) ? - "enter_key_here" : - Cookie::get('key') - ]) . "&eingabe=%s"])</li> + <li> + @lang ('key.li1') + <div class="copyLink"> + <input id="loadSettings" class="loadSettings" type="text" value="{{$cookieLink}}"> + <button class="js-only btn btn-default" onclick="var copyText = document.getElementById('loadSettings');copyText.select();copyText.setSelectionRange(0, 99999);document.execCommand('copy');">@lang('settings.copy')</button> + </div> + </li> + </br> + <li> + @lang('key.li2') + <div class="copyLink"> + <input id="searchString" class="loadSettings" type="text" value="{{route("resultpage", ["key" => $cookie]) . "&eingabe=%s"}}"> + <button class="js-only btn btn-default" onclick="var copyText = document.getElementById('searchString');copyText.select();copyText.setSelectionRange(0, 99999);document.execCommand('copy');">@lang('settings.copy')</button> + </div> + </li> </ol> </div> <div class="section"> <div id="form-wrapper"> <form method="post"> <input type="hidden" name="redirUrl" value="{{ Request::input('redirUrl', '') }}" /> - <input type="text" name="key" value="{{Cookie::get('key')}}" placeholder="@lang('key.placeholder1')" autofocus> + <input type="text" name="keyToSet" value="{{$cookie === 'enter_key_here' ? '' : $cookie}}" placeholder="@lang('key.placeholder1')" autofocus> <button type="submit" class="btn btn-success">OK</button> </form> - @if(Cookie::get('key') !== NULL) + @if($cookie !== 'enter_key_here') <form method="post" action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), action('KeyController@removeKey', ['redirUrl' => url()->full()])) }}"> <input type="hidden" name="redirUrl" value="{{ Request::input('redirUrl', '') }}" /> <button type="submit" class="btn btn-default">@lang('key.removeKey')</button> diff --git a/resources/views/settings/index.blade.php b/resources/views/settings/index.blade.php index a17501e54fe0dbbfbcaee586f8aa6d6dbedc80bd..cf82c1a47a4619958344af022f4033467e81dbcd 100644 --- a/resources/views/settings/index.blade.php +++ b/resources/views/settings/index.blade.php @@ -12,8 +12,8 @@ <h2>@lang('settings.hint.header')</h2> <p>@lang('settings.hint.text', ["link" => LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('showAllSettings', ['url' => url()->full()])) ])</p> <p>@lang('settings.hint.loadSettings')</p> - <div id="cookieLink"> - <input id="loadSettings" type="text" value="{{$cookieLink}}"> + <div class="copyLink"> + <input id="loadSettings" class="loadSettings" type="text" value="{{$cookieLink}}"> <button class="js-only btn btn-default" onclick="var copyText = document.getElementById('loadSettings');copyText.select();copyText.setSelectionRange(0, 99999);document.execCommand('copy');">@lang('settings.copy')</button> </div> </div> @@ -125,6 +125,7 @@ <div class="card-light"> <h2>Weitere Einstellungen</h2> + <p>@lang('settings.hint')</p> <form id="setting-form" action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('enableSetting')) }}" method="post" class="form"> <input type="hidden" name="fokus" value="{{ $fokus }}"> <input type="hidden" name="url" value="{{ $url }}"> @@ -135,7 +136,6 @@ <option value="off" {{ Cookie::get('dark_mode') === "1" ? "disabled selected" : "" }}>@lang('settings.light')</option> <option value="on" {{ Cookie::get('dark_mode') === "2" ? "disabled selected" : "" }}>@lang('settings.dark')</option> </select> - <small>@lang('settings.hint')</small> </div> <div class="form-group"> <label for="nt">@lang('settings.newTab')</label> @@ -143,14 +143,13 @@ <option value="off" {{ !Cookie::has('new_tab') ? "disabled selected" : "" }}>@lang('settings.off')</option> <option value="on" {{ Cookie::get('new_tab') === "on" ? "disabled selected" : "" }}>@lang('settings.on')</option> </select> - <small>@lang('settings.hint')</small> </div> @if(LaravelLocalization::getCurrentLocale() === "de") <div class="form-group"> <label for="zitate">Zitate</label> <select name="zitate" id="zitate" class="form-control"> - <option value="on" @if(Cookie::get($fokus . "_setting_zitate") === null)disabled selected @endif>Anzeigen</option> - <option value="off" {{ Cookie::get($fokus . "_setting_zitate") === "off" ? "disabled selected" : "" }}>Nicht Anzeigen</option> + <option value="on" @if(Cookie::get("zitate") === null)disabled selected @endif>Anzeigen</option> + <option value="off" {{ Cookie::get("zitate") === "off" ? "disabled selected" : "" }}>Nicht Anzeigen</option> </select> </div> @endif