diff --git a/.github/tests-visual/setup--dark.png b/.github/tests-visual/setup--dark.png index ef3bc5bcb9..6e7515f245 100644 Binary files a/.github/tests-visual/setup--dark.png and b/.github/tests-visual/setup--dark.png differ diff --git a/.github/tests-visual/setup.png b/.github/tests-visual/setup.png index 4a4655922e..ef1d1e0bfb 100644 Binary files a/.github/tests-visual/setup.png and b/.github/tests-visual/setup.png differ diff --git a/.tools/bin/setup b/.tools/bin/setup index dde108dff8..858f97a29c 100644 --- a/.tools/bin/setup +++ b/.tools/bin/setup @@ -31,6 +31,7 @@ if (rex::isSetup()) { rex::setConfig('utf8mb4', $utf8mb4); $config['setup'] = false; + $config['lang'] = 'de_de'; if (rex_file::putConfig($configFile, $config)) { rex_delete_cache(); echo 'instance setup successfull', PHP_EOL; diff --git a/redaxo/src/core/backend.php b/redaxo/src/core/backend.php index 0b09af03d3..5dc10ac880 100644 --- a/redaxo/src/core/backend.php +++ b/redaxo/src/core/backend.php @@ -62,7 +62,7 @@ // ----------------- SETUP if (rex::isSetup()) { // ----------------- SET SETUP LANG - $requestLang = rex_request('lang', 'string'); + $requestLang = rex_request('lang', 'string', rex::getProperty('lang')); if (in_array($requestLang, rex_i18n::getLocales())) { rex::setProperty('lang', $requestLang); } else { diff --git a/redaxo/src/core/default.config.yml b/redaxo/src/core/default.config.yml index be9b53cff4..686141bde9 100644 --- a/redaxo/src/core/default.config.yml +++ b/redaxo/src/core/default.config.yml @@ -45,7 +45,7 @@ password_policy: # no_reuse_within: P6W # force_renew_after: P6W # block_account_after: P3M -lang: de_de +lang: en_gb lang_fallback: [en_gb, de_de] use_https: false use_hsts: false diff --git a/redaxo/src/core/lang/de_de.lang b/redaxo/src/core/lang/de_de.lang index fe310e12cb..1d2d55f4e6 100644 --- a/redaxo/src/core/lang/de_de.lang +++ b/redaxo/src/core/lang/de_de.lang @@ -174,7 +174,8 @@ setup_error2 = Leider konnte die config.yml nicht beschrieben werden. Bitte trag setup_100 = Setup: Schritt 1 von 6 / Sprache -setup_101 = bitte wähle eine Sprache +setup_101 = Sprache wählen +setup_110 = Weiter zu Schritt 2 setup_199 = 1 / Sprache setup_200 = Setup: Schritt 2 von 6 / Systemcheck diff --git a/redaxo/src/core/lang/en_gb.lang b/redaxo/src/core/lang/en_gb.lang index 141413fe12..7b130dae67 100644 --- a/redaxo/src/core/lang/en_gb.lang +++ b/redaxo/src/core/lang/en_gb.lang @@ -174,7 +174,8 @@ setup_error2 = Unfortunately, the configuration file could not be written to. Pl setup_100 = Setup: step 1 of 6 / Language -setup_101 = Please select a language +setup_101 = Select a language +setup_110 = Continue with step 2 setup_199 = 1 / Language setup_200 = Setup: step 2 of 6 / System check diff --git a/redaxo/src/core/lib/console/setup/run.php b/redaxo/src/core/lib/console/setup/run.php index f895d22489..b2d707b8b5 100644 --- a/redaxo/src/core/lib/console/setup/run.php +++ b/redaxo/src/core/lib/console/setup/run.php @@ -74,7 +74,7 @@ protected function execute(InputInterface $input, OutputInterface $output) ksort($langs); $config['lang'] = $this->getOptionOrAsk( - new ChoiceQuestion('Please select a language', $langs), + new ChoiceQuestion('Please select a language', $langs, $config['lang'] ?? null), 'lang', null, 'Language "%s" selected.', diff --git a/redaxo/src/core/lib/setup/setup.php b/redaxo/src/core/lib/setup/setup.php index d1171e25ba..ccd6b93b25 100644 --- a/redaxo/src/core/lib/setup/setup.php +++ b/redaxo/src/core/lib/setup/setup.php @@ -248,17 +248,24 @@ public static function checkDbSecurity() */ public static function isInitialSetup(): bool { + /** @var bool|null $initial */ + static $initial; + + if (null !== $initial) { + return $initial; + } + try { $userSql = rex_sql::factory(); $userSql->setQuery('select * from ' . rex::getTable('user') . ' LIMIT 1'); - return 0 == $userSql->getRows(); + return $initial = 0 == $userSql->getRows(); } catch (rex_sql_could_not_connect_exception $e) { - return true; + return $initial = true; } catch (rex_sql_exception $e) { $sql = $e->getSql(); if ($sql && rex_sql::ERRNO_TABLE_OR_VIEW_DOESNT_EXIST === $sql->getErrno()) { - return true; + return $initial = true; } throw $e; } diff --git a/redaxo/src/core/pages/setup.step1.php b/redaxo/src/core/pages/setup.step1.php index 463046d376..901ffa0c8e 100644 --- a/redaxo/src/core/pages/setup.step1.php +++ b/redaxo/src/core/pages/setup.step1.php @@ -5,10 +5,14 @@ rex_setup::init(); +$initial = rex_setup::isInitialSetup(); +$current = rex_i18n::getLocale(); + $langs = []; foreach (rex_i18n::getLocales() as $locale) { $label = rex_i18n::msgInLocale('lang', $locale); - $langs[$label] = '' . $label . ''; + $active = !$initial && $current === $locale ? ' active' : ''; + $langs[$label] = '' . $label . ''; } ksort($langs); echo rex_view::title(rex_i18n::msg('setup_100').$cancelSetupBtn); @@ -17,4 +21,11 @@ $fragment = new rex_fragment(); $fragment->setVar('heading', rex_i18n::msg('setup_101'), false); $fragment->setVar('content', $content, false); + +if (!$initial) { + $buttons = '' . rex_i18n::msg('setup_110') . ''; + + $fragment->setVar('buttons', $buttons, false); +} + echo $fragment->parse('core/page/section.php');