From a637829a8eb8fe6d4a69268f10ada9c0d6acc3e9 Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@suma-ev.de> Date: Fri, 19 Jul 2024 13:29:05 +0200 Subject: [PATCH] add setting to disable tiles on startpage --- metager/app/Http/Controllers/SettingsController.php | 10 ++++++++++ metager/app/Http/Controllers/TilesController.php | 3 +++ metager/app/SearchSettings.php | 5 +++++ metager/lang/de/settings.php | 3 +++ metager/lang/en/settings.php | 3 +++ metager/resources/js/startpage/tiles.js | 2 +- .../resources/less/metager/pages/startpage/tiles.less | 1 + metager/resources/views/settings/index.blade.php | 10 ++++++++++ 8 files changed, 36 insertions(+), 1 deletion(-) diff --git a/metager/app/Http/Controllers/SettingsController.php b/metager/app/Http/Controllers/SettingsController.php index 5b20e5842..2636109a5 100644 --- a/metager/app/Http/Controllers/SettingsController.php +++ b/metager/app/Http/Controllers/SettingsController.php @@ -298,6 +298,15 @@ class SettingsController extends Controller } } + $tiles_startpage = $request->input('tiles_startpage', ''); + if (!empty($tiles_startpage)) { + if ($tiles_startpage === "off") { + Cookie::queue(Cookie::forever('tiles_startpage', 'off', '/', null, $secure, false)); + } elseif ($tiles_startpage === "on") { + Cookie::queue(Cookie::forget("tiles_startpage", "/")); + } + } + $quotes = $request->input('zitate', ''); if (!empty($quotes)) { if ($quotes === "off") { @@ -349,6 +358,7 @@ class SettingsController extends Controller "new_tab", "zitate", "self_advertisements", + "tiles_startpage", "suggestions", ]; diff --git a/metager/app/Http/Controllers/TilesController.php b/metager/app/Http/Controllers/TilesController.php index 042efe00a..9cef7309b 100644 --- a/metager/app/Http/Controllers/TilesController.php +++ b/metager/app/Http/Controllers/TilesController.php @@ -38,6 +38,9 @@ class TilesController extends Controller */ public static function TILES(string $ckey): array { + // Check if the user has disabled tiles + if (!app(SearchSettings::class)->tiles_startpage) + return []; $tiles = self::STATIC_TILES(); $tiles = array_merge($tiles, self::SUMA_TILES()); return $tiles; diff --git a/metager/app/SearchSettings.php b/metager/app/SearchSettings.php index 1bd7ef1ad..43086cc01 100644 --- a/metager/app/SearchSettings.php +++ b/metager/app/SearchSettings.php @@ -30,6 +30,8 @@ class SearchSettings public $enableQuotes = true; /** @var bool */ public $self_advertisements; + /** @var bool */ + public $tiles_startpage; /** @var string */ public $suggestions = "bing"; public $external_image_search = "metager"; @@ -75,6 +77,9 @@ class SearchSettings $this->self_advertisements = $this->getSettingValue("self_advertisements", true); $this->self_advertisements = $this->self_advertisements !== "off" ? true : false; + $this->tiles_startpage = $this->getSettingValue("tiles_startpage", true); + $this->tiles_startpage = $this->tiles_startpage !== "off" ? true : false; + $suggestions = $this->getSettingValue("suggestions", "bing"); if ($suggestions === "off") { $this->suggestions = "off"; diff --git a/metager/lang/de/settings.php b/metager/lang/de/settings.php index 46d875fb9..d8a7e0a8c 100644 --- a/metager/lang/de/settings.php +++ b/metager/lang/de/settings.php @@ -88,4 +88,7 @@ return [ 'self_advertisements' => [ 'label' => "Subtile Werbung für unseren eigenen Service", ], + 'tiles_startpage' => [ + 'label' => "Zeige Kacheln auf der Startseite", + ], ]; diff --git a/metager/lang/en/settings.php b/metager/lang/en/settings.php index 5f8aaea50..ec48e3f69 100644 --- a/metager/lang/en/settings.php +++ b/metager/lang/en/settings.php @@ -37,6 +37,9 @@ return [ 'self_advertisements' => [ "label" => "Subtle advertisements for our own service", ], + 'tiles_startpage' => [ + 'label' => "Show tiles on the startpage", + ], 'system' => 'System Default', 'dark' => 'Dark', 'light' => 'Light', diff --git a/metager/resources/js/startpage/tiles.js b/metager/resources/js/startpage/tiles.js index e96d12b9d..9838eb2dd 100644 --- a/metager/resources/js/startpage/tiles.js +++ b/metager/resources/js/startpage/tiles.js @@ -49,7 +49,7 @@ let native_tile_count = getRegularTileCount(); let min_advertisements = 2; - let tile_width = parseFloat(window.getComputedStyle(document.querySelector("#tiles > a")).width.replace("px", "")); + let tile_width = parseFloat(window.getComputedStyle(document.querySelector("#tiles")).getPropertyValue("--tile-width").replace("px", "")); let tile_gap = parseFloat(window.getComputedStyle(document.querySelector("#tiles"))["column-gap"].replace("px", "")); let client_width = document.querySelector("html").clientWidth; let client_height = document.querySelector("html").clientHeight; diff --git a/metager/resources/less/metager/pages/startpage/tiles.less b/metager/resources/less/metager/pages/startpage/tiles.less index 4c0fb83ab..61bd30fbb 100644 --- a/metager/resources/less/metager/pages/startpage/tiles.less +++ b/metager/resources/less/metager/pages/startpage/tiles.less @@ -8,6 +8,7 @@ div#tiles-container { flex-grow: 0; width: 100%; @tile_width: 115px; + --tile-width: @tile_width; // Variable is used by JS @tile_gap: 16px; @nine_row_width: calc(calc(9 * @tile_width) + calc(8 * @tile_gap)); diff --git a/metager/resources/views/settings/index.blade.php b/metager/resources/views/settings/index.blade.php index bc17de0b7..c361b8bb3 100644 --- a/metager/resources/views/settings/index.blade.php +++ b/metager/resources/views/settings/index.blade.php @@ -225,6 +225,16 @@ @lang('settings.suggestions.on')</option> </select> </div> + <div class="form-group"> + <label for="tiles_startpage">@lang('settings.tiles_startpage.label')</label> + <select name="tiles_startpage" id="tiles_startpage" class="form-control"> + <option value="off" + {{ app(App\SearchSettings::class)->tiles_startpage === false ? 'disabled selected' : '' }}> + @lang('settings.suggestions.off')</option> + <option value="on" {{ app(App\SearchSettings::class)->tiles_startpage === true ? 'disabled selected' : '' }}> + @lang('settings.suggestions.on')</option> + </select> + </div> <div class="form-group"> <label for="dm">@lang('settings.darkmode')</label> <select name="dm" id="dm" class="form-control"> -- GitLab