diff --git a/metager/app/Http/Controllers/SettingsController.php b/metager/app/Http/Controllers/SettingsController.php index 5b20e584282e79867777002990a05d1c6b2aa301..2636109a5f7a33217f6d6d158179371dad1e2a22 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 042efe00a20962d6973dbd1def8144d52d05156c..9cef7309bfea640afa088efb4a7790d7021256bd 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 1bd7ef1ad1131533fa4f98e2b7df641eb6580c84..43086cc014c6e00ad659c67660e145e18353405a 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 46d875fb93afbe521f94fc42fd1a1aae5d399327..d8a7e0a8cedb441214d9034e91d634c400f3eea0 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 5f8aaea5050d84550080f74f211d0ee47027529d..ec48e3f697e3535406a2e590ec3d42fc05c220aa 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 e96d12b9d7060890272c12155ac259692cbe54a0..9838eb2dd5f17936219b9c5c04cbd83860ff0982 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 4c0fb83abbfa10b7a0cf79fa3d5fa073ea893550..61bd30fbb20dc5b3441e12018ee865e764b57e23 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 bc17de0b7a9c7744dd4659e551d01644b9362de4..c361b8bb39a0279a1b6a337cd16ffc2a4e9e7073 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">