diff --git a/module/install/control.php b/module/install/control.php index 0db1e384e3..0c03bed939 100644 --- a/module/install/control.php +++ b/module/install/control.php @@ -120,13 +120,13 @@ class install extends control { if(!empty($_POST)) { - - $myConfig = ''; - foreach($_POST as $key => $value) $myConfig .= ",{$key}={$value}"; - $myConfig = urlencode(trim($myConfig, ',')); - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => inlink('step3', "myConfig={$myConfig}"))); $return = $this->install->checkConfig(); if($return->result != 'ok') return $this->send(array('result' => 'fail', 'callback' => "zui.Modal.alert({icon: 'icon-exclamation-sign', size: 'sm', iconClass: 'text-4xl text-warning', message: '" . str_replace("'", '"', $return->error) . "'})")); + + $myConfig = array(); + foreach($_POST as $key => $value) $myConfig[$key] = $value; + $this->session->set('myConfig', $myConfig); + return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => inlink('step3'))); } $dbHost = $dbPort = $dbName = $dbUser = $dbPassword = ''; @@ -153,12 +153,13 @@ class install extends control * @access public * @return void */ - public function step3($myConfig = '') + public function step3() { - $myConfig = urldecode($myConfig); - $myConfig = str_replace(array(',', ' '), array('&', ''), $myConfig); - parse_str($myConfig, $myConfigOutput); - + if(!empty($_POST)) + { + if(!isset($this->config->installed) || !$this->config->installed) return $this->send(array('result' => 'fail', 'message' => $this->lang->install->errorNotSaveConfig)); + return $this->send(array('result' => 'success', 'message' => '', 'load' => inlink('step4'))); + } /* Set the session save path when the session save path is null. */ $customSession = false; $checkSession = ini_get('session.save_handler') == 'files'; @@ -189,7 +190,7 @@ class install extends control $this->view->config = $this->config; $this->view->title = $this->lang->install->saveConfig; $this->view->customSession = $customSession; - $this->view->myConfig = $myConfigOutput; + $this->view->myConfig = $this->session->myConfig; $this->display(); } @@ -205,10 +206,11 @@ class install extends control { $this->loadModel('setting')->setItem('system.common.global.mode', $this->post->mode); // Update mode. $this->loadModel('custom')->disableFeaturesByMode($this->post->mode); - return $this->send(array('load' => inlink('step5'))); + return $this->send(array('result' => 'success', 'load' => inlink('step5'))); } - if(!isset($this->config->installed) or !$this->config->installed) + $this->view->title = $this->lang->install->selectMode; + if(!isset($this->config->installed) || !$this->config->installed) { $this->view->error = $this->lang->install->errorNotSaveConfig; $this->display(); @@ -219,7 +221,6 @@ class install extends control list($disabledFeatures, $enabledScrumFeatures, $disabledScrumFeatures) = $this->loadModel('custom')->computeFeatures(); - $this->view->title = $this->lang->install->selectMode; $this->view->edition = $this->config->edition; $this->view->disabledFeatures = $disabledFeatures; $this->view->enabledScrumFeatures = $enabledScrumFeatures; diff --git a/module/install/lang/de.php b/module/install/lang/de.php index 88c8ef5bdc..1e674633c1 100644 --- a/module/install/lang/de.php +++ b/module/install/lang/de.php @@ -158,6 +158,7 @@ $lang->install->saveConfig = 'Konfiguration speichern'; $lang->install->save2File = '
Kopieren Sie den Inhalt aus der Textbox und speichern Sie diesen als " %s ". Sie können die Konfiguration später ändern.
'; $lang->install->saved2File = 'Die Konfigurationsdatei wurde gespeichert unter " %s ". Sie können die Konfiguration später ändern.'; $lang->install->errorNotSaveConfig = 'Die Konfigurationsdatei wurde nicht gespeichert.'; +$lang->install->errorNotInitConfig = 'The configuration has not been created.'; global $app; $lang->install->CSRFNotice = "CSRF defense has been enabled in the system. If you don't need it, contact the administrator to disable it manually in the {$app->basePath}config/config.php file."; diff --git a/module/install/lang/en.php b/module/install/lang/en.php index 206ecc4673..263eeb67a2 100644 --- a/module/install/lang/en.php +++ b/module/install/lang/en.php @@ -158,6 +158,7 @@ $lang->install->saveConfig = 'Save config file'; $lang->install->save2File = '
Copy the content in the text box above and save it to " %s ". You can change this configuration file later.
'; $lang->install->saved2File = 'The configuration file has been saved to " %s ". You can change this file later.'; $lang->install->errorNotSaveConfig = 'The configuration file is not saved.'; +$lang->install->errorNotInitConfig = 'The configuration has not been created.'; global $app; $lang->install->CSRFNotice = "CSRF defense has been enabled in the system. If you don't need it, contact the administrator to disable it manually in the {$app->basePath}config/config.php file."; diff --git a/module/install/lang/fr.php b/module/install/lang/fr.php index 8bdf8e6e04..fdaad82cc6 100644 --- a/module/install/lang/fr.php +++ b/module/install/lang/fr.php @@ -158,6 +158,7 @@ $lang->install->saveConfig = 'Sauver config'; $lang->install->save2File = '
Copiez le contenu dans la zone de texte ci-dessus et enregistrez-le dans " %s ". Vous pourrez modifier ce fichier de configuration ultérieurement.
'; $lang->install->saved2File = 'Le fichier de configuration a été enregistré dans " %s ". Vous pouvez modifier ce fichier ultérieurement.'; $lang->install->errorNotSaveConfig = "Le fichier de configuration n'est pas enregistré."; +$lang->install->errorNotInitConfig = 'The configuration has not been created.'; global $app; $lang->install->CSRFNotice = "CSRF defense has been enabled in the system. If you don't need it, contact the administrator to disable it manually in the {$app->basePath}config/config.php file."; diff --git a/module/install/lang/zh-cn.php b/module/install/lang/zh-cn.php index c17d9ebfe4..c1120dcaf5 100644 --- a/module/install/lang/zh-cn.php +++ b/module/install/lang/zh-cn.php @@ -158,6 +158,7 @@ $lang->install->saveConfig = '保存配置文件'; $lang->install->save2File = '
拷贝上面文本框中的内容,将其保存到 " %s "中。您以后还可继续修改此配置文件。
'; $lang->install->saved2File = '配置信息已经成功保存到" %s "中。您后面还可继续修改此文件。'; $lang->install->errorNotSaveConfig = '还没有保存配置文件'; +$lang->install->errorNotInitConfig = '还没有生成配置文件'; global $app; $lang->install->CSRFNotice = "系统已开启了CSRF的防御,如需关闭,请联系管理员到{$app->basePath}config/config.php文件中手动关闭。"; diff --git a/module/install/ui/step3.html.php b/module/install/ui/step3.html.php index f3f12a0920..0d2e9ed5e1 100644 --- a/module/install/ui/step3.html.php +++ b/module/install/ui/step3.html.php @@ -11,6 +11,14 @@ declare(strict_types=1); namespace zin; set::zui(true); + +if(empty($myConfig)) +{ + h::js("zui.Modal.alert('{$lang->install->errorNotInitConfig}').then((res) => {openUrl('" . inlink('step2') . "')});"); + render('pagebase'); + return; +} + $configContent = <<installed = true; @@ -73,13 +81,22 @@ div cell ( setClass('text-center'), - btn + form ( - setClass('px-6'), - set::url(inlink('step4')), - set::type('primary'), - $lang->install->next, - ), + set::actions(array()), + input + ( + set::name('hidden'), + set::type('hidden'), + ), + btn + ( + setClass('px-6'), + set::type('primary'), + set::btnType('submit'), + $lang->install->next, + ), + ) ), ), ), diff --git a/module/install/ui/step4.html.php b/module/install/ui/step4.html.php index ed5a1dc5cc..c1a46c6ddb 100644 --- a/module/install/ui/step4.html.php +++ b/module/install/ui/step4.html.php @@ -10,6 +10,15 @@ declare(strict_types=1); */ namespace zin; +set::zui(true); + +if(isset($error)) +{ + h::js("zui.Modal.alert('{$lang->install->errorNotSaveConfig}').then((res) => {openUrl('" . inlink('step3') . "')});"); + render('pagebase'); + return; +} + $trs = array(); foreach($disabledFeatures as $feature) { @@ -68,7 +77,6 @@ foreach($config->custom->allFeatures as $feature) ); } -set::zui(true); div ( set::id('main'),