diff --git a/.gitignore b/.gitignore index 5288b0f95786eaee3f7f4d24a7be82af92632779..ce2c62fe06a253c2c0b6c95525cd7a1dbd8ba4e7 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,6 @@ npm-debug.log composer.lock package-lock.json -local.log \ No newline at end of file +local.log + +browserstack.err diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 9d1f2f4848436283a28b58c572a0c9da3368ef83..932fff658100ca727c8d656cbbbb9138fc48651f 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -268,4 +268,47 @@ class SettingsController extends Controller } return redirect($request->input('url', 'https://metager.de')); } + + public function newBlacklist(Request $request) + { + $fokus = $request->input('fokus', ''); + $url = $request->input('url', ''); + $blacklist = $request->input('blacklist'); + $path = \Request::path(); + $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5); + $cookies = Cookie::get(); + $cookieCounter = 0; + $noduplicate = true; + + if(!empty($cookies)){ + foreach ($cookies as $key => $value) { + if($value==$blacklist){ + $noduplicate = false; + break; + } + if(stripos($key, 'blpage') !== false) { + $cookieCounter++; + } + } + } + if($noduplicate){ + $cookieName= $fokus . '_blpage' . $cookieCounter; + Cookie::queue($cookieName, $blacklist, 0, $cookiePath, null, false, false); + } + + return redirect($request->input('url', 'https://metager.de')); + } + + public function deleteBlacklist(Request $request) + { + $fokus = $request->input('fokus', ''); + $url = $request->input('url', ''); + $path = \Request::path(); + $cookieKey = $request->input('cookieKey'); + $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5); + + Cookie::queue($cookieKey, "", 0, $cookiePath, null, false, false); + + return redirect($request->input('url', 'https://metager.de')); + } } diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 773ad441c6474e9195f5c961ef6df87548015433..6294d77397c9858e98572e82234db5b115953933 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -1,33 +1,38 @@ <?php return [ - "header.1" => "Sucheinstellungen", - "text.1" => "Hier können Sie dauerhafte Sucheinstellungen für Ihre MetaGer-Suche im Fokus :fokusName vornehmen. Sollten diese nicht dauerhaft gespeichert bleiben, überprüfen Sie bitte in Ihren Browsereinstellungen, ob dieser beim Beenden gespeicherte Cookies löscht.", + 'header.1' => 'Sucheinstellungen', + 'text.1' => 'Hier können Sie dauerhafte Sucheinstellungen für Ihre MetaGer-Suche im Fokus :fokusName vornehmen. Sollten diese nicht dauerhaft gespeichert bleiben, überprüfen Sie bitte in Ihren Browsereinstellungen, ob dieser beim Beenden gespeicherte Cookies löscht.', - "hint.header" => "Hinweis", - "hint.text" => "Um Ihre Sucheinstellungen zu speichern, verwenden wir nicht-personenbeziehbare Cookies. Diese werden im Klartext in Ihrem Browser gespeichert. Sie können sich eine Übersicht aller von Ihnen vorgenommenen Einstellungen und Cookies <a href=\":link\">anzeigen lassen</a>.", + 'hint.header' => 'Hinweis', + 'hint.text' => 'Um Ihre Sucheinstellungen zu speichern, verwenden wir nicht-personenbeziehbare Cookies. Diese werden im Klartext in Ihrem Browser gespeichert. Sie können sich eine Übersicht aller von Ihnen vorgenommenen Einstellungen und Cookies <a href=:link>anzeigen lassen</a>.', - "header.2" => "Verwendete Suchmaschinen", - "text.2" => "Nachfolgend sehen Sie alle für diesen Fokus verfügbaren Suchmaschinen. Mit einem Klick auf den Namen können Sie Ein-/Ausgeschaltet werden. Eingeschaltete Suchmaschinen sind in grün dargestellt. Ausgeschaltete in rot oder grau.", - "disabledByFilter" => "Durch Suchfilter deaktiviert:", + 'header.2' => 'Verwendete Suchmaschinen', + 'text.2' => 'Nachfolgend sehen Sie alle für diesen Fokus verfügbaren Suchmaschinen. Mit einem Klick auf den Namen können Sie Ein-/Ausgeschaltet werden. Eingeschaltete Suchmaschinen sind in grün dargestellt. Ausgeschaltete in rot oder grau.', + 'disabledByFilter' => 'Durch Suchfilter deaktiviert:', - "header.3" => "Suchfilter", - "text.3" => "An dieser Stelle können Sie Suchfilter dauerhaft setzen. Mit der Auswahl eines Suchfilters stehen nur noch Suchmaschinen zur Verfügung, welche diesen Filter unterstützen. Umgekehrt werden auch nur Suchfilter angezeigt, welche von der aktuellen Suchmaschinenauswahl unterstützt werden.", + 'header.3' => 'Suchfilter', + 'text.3' => 'An dieser Stelle können Sie Suchfilter dauerhaft setzen. Mit der Auswahl eines Suchfilters stehen nur noch Suchmaschinen zur Verfügung, welche diesen Filter unterstützen. Umgekehrt werden auch nur Suchfilter angezeigt, welche von der aktuellen Suchmaschinenauswahl unterstützt werden.', - "save" => "Speichern", - "reset" => "Alle Einstellungen löschen", - "back" => "Zurück zur letzten Seite", + 'header.4' => 'Blacklist', + 'text.4' => 'Hier können Sie Seiten eintragen, welche aus Ihrer Suche ausgeschlossen werden sollen.', + 'address' => 'Adresseingabe', + + 'save' => 'Speichern', + 'reset' => 'Alle Einstellungen löschen', + 'back' => 'Zurück zur letzten Seite', + 'add' => 'Hinzufügen', // Translations from the settings overview - 'noSettings' => "Aktuell sind keine Einstellungen gesetzt!", - 'allSettings.header' => "Auf :root gesetzte Einstellungen", - 'allSettings.text' => "Hier finden Sie eine Übersicht aller von Ihnen gesetzten Einstellungen und Cookies. Sie können einzelne Einträge löschen, oder alle entfernen. Bedenken Sie, dass die zugehörigen Einstellungen dann nicht mehr verwendet werden.", + 'noSettings' => 'Aktuell sind keine Einstellungen gesetzt!', + 'allSettings.header' => 'Auf :root gesetzte Einstellungen', + 'allSettings.text' => 'Hier finden Sie eine Übersicht aller von Ihnen gesetzten Einstellungen und Cookies. Sie können einzelne Einträge löschen, oder alle entfernen. Bedenken Sie, dass die zugehörigen Einstellungen dann nicht mehr verwendet werden.', - 'meaning' => "Bedeutung", - 'actions' => "Aktionen", + 'meaning' => 'Bedeutung', + 'actions' => 'Aktionen', - 'engineDisabled' => "Die Suchmaschine :engine wird im Fokus :focus nicht abgefragt.", - 'inFocus' => "im Fokus", - 'key' => "Ihr Schlüssel für die werbefreie Suche", - 'removeCookie' => "Diesen Cookie entfernen", + 'engineDisabled' => 'Die Suchmaschine :engine wird im Fokus :focus nicht abgefragt.', + 'inFocus' => 'im Fokus', + 'key' => 'Ihr Schlüssel für die werbefreie Suche', + 'removeCookie' => 'Diesen Cookie entfernen', ]; diff --git a/resources/views/settings/index.blade.php b/resources/views/settings/index.blade.php index dab66c36343b7f6fb6f6dc84a14f93a83e97e172..29b187f470c819ce7e61da3aa2b6086829bd0858 100644 --- a/resources/views/settings/index.blade.php +++ b/resources/views/settings/index.blade.php @@ -82,24 +82,54 @@ </div> <button type="submit" class="btn btn-default">@lang('settings.save')</button> </form> + </div> + <div class="card-light"> + <h2>@lang('settings.header.4')</h2> + <p>@lang('settings.text.4')</p> + <form id="blacklist" action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('newBlacklist', ["fokus" => $fokus, "url" => $url])) }}" method="post"> + <input type="hidden" name="url" value="{{ $url }}"> + <input type="hidden" name="fokus" value="{{ $fokus }}"> + <label for="blacklist">@lang('settings.address')</label> + <input id="blacklist" name="blacklist" type="text"> + <button type="submit" class="btn btn-default">@lang('settings.add')</button> <!--input field flex-grow:1;--> + </form> + @if(!empty(Cookie::get())) + <form id="deleteentry" action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route('deleteBlacklist', ["fokus" => $fokus, "url" => $url])) }}" method="post"> + <table> + @foreach(Cookie::get() as $key => $value) + @if(stripos($key, 'blpage') !== false) + <tr> + <td> + {{ $value }} + </td> + <td> + <button type="submit" name="cookieKey" value="{{ $key }}">>delete entry<</button> + </td> + </tr> + @endif + @endforeach + </table> + </form> + @endif </div> + @if(LaravelLocalization::getCurrentLocale() === "de") - <div class="card-light"> - <h2>Weitere Einstellungen</h2> - <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 }}"> - <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> - </select> + <div class="card-light"> + <h2>Weitere Einstellungen</h2> + <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 }}"> + <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> + </select> + </div> + <button type="submit" class="btn btn-default">@lang('settings.save')</button> + </form> </div> - <button type="submit" class="btn btn-default">@lang('settings.save')</button> - </form> - </div> @endif <div class="card-light" id="actions"> @if($settingActive) diff --git a/routes/cookie.php b/routes/cookie.php index 8ad3a67810e7f6ddaf5d0547e6c2ffe2bc9238b4..8e58bfeec08198491601fa5de207de5388bb1d1b 100644 --- a/routes/cookie.php +++ b/routes/cookie.php @@ -20,6 +20,8 @@ Route::group( Route::post('ef', 'SettingsController@enableFilter')->name('enableFilter'); Route::post('es', 'SettingsController@enableSetting')->name('enableSetting'); Route::post('ds', 'SettingsController@deleteSettings')->name('deleteSettings'); + Route::post('nb', 'SettingsController@newBlacklist')->name('newBlacklist'); + Route::post('db', 'SettingsController@deleteBlacklist')->name('deleteBlacklist'); # Route to show and delete all settings Route::get('all-settings', 'SettingsController@allSettingsIndex')->name('showAllSettings');