From 623e3d2a1886798800adad4e7a973d2acc875a42 Mon Sep 17 00:00:00 2001 From: Davide <davide@suma-ev.de> Date: Tue, 13 Oct 2020 15:37:54 +0200 Subject: [PATCH] added controller functions for adding and deleting blacklist entries --- .gitignore | 4 +- app/Http/Controllers/SettingsController.php | 43 +++++++++++++++ resources/lang/de/settings.php | 47 +++++++++-------- resources/views/settings/index.blade.php | 58 ++++++++++++++++----- routes/cookie.php | 2 + 5 files changed, 118 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 5288b0f95..ce2c62fe0 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 9d1f2f484..932fff658 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 773ad441c..6294d7739 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 dab66c363..29b187f47 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 8ad3a6781..8e58bfeec 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'); -- GitLab