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'),