Rev 1031 | Rev 1055 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1031 | Rev 1050 | ||
---|---|---|---|
1 | <?php |
1 | <?php |
2 | 2 | ||
3 | /* |
3 | /* |
4 | * OIDplus 2.0 |
4 | * OIDplus 2.0 |
5 | * Copyright 2019 - 2022 Daniel Marschall, ViaThinkSoft |
5 | * Copyright 2019 - 2022 Daniel Marschall, ViaThinkSoft |
6 | * |
6 | * |
7 | * Licensed under the Apache License, Version 2.0 (the "License"); |
7 | * Licensed under the Apache License, Version 2.0 (the "License"); |
8 | * you may not use this file except in compliance with the License. |
8 | * you may not use this file except in compliance with the License. |
9 | * You may obtain a copy of the License at |
9 | * You may obtain a copy of the License at |
10 | * |
10 | * |
11 | * http://www.apache.org/licenses/LICENSE-2.0 |
11 | * http://www.apache.org/licenses/LICENSE-2.0 |
12 | * |
12 | * |
13 | * Unless required by applicable law or agreed to in writing, software |
13 | * Unless required by applicable law or agreed to in writing, software |
14 | * distributed under the License is distributed on an "AS IS" BASIS, |
14 | * distributed under the License is distributed on an "AS IS" BASIS, |
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
16 | * See the License for the specific language governing permissions and |
16 | * See the License for the specific language governing permissions and |
17 | * limitations under the License. |
17 | * limitations under the License. |
18 | */ |
18 | */ |
19 | 19 | ||
- | 20 | use ViaThinkSoft\OIDplus\OIDplus; |
|
- | 21 | use ViaThinkSoft\OIDplus\OIDplusDatabasePlugin; |
|
- | 22 | use ViaThinkSoft\OIDplus\OIDplusSqlSlangPlugin; |
|
- | 23 | use ViaThinkSoft\OIDplus\OIDplusCaptchaPlugin; |
|
- | 24 | ||
20 | require_once __DIR__ . '/../includes/oidplus.inc.php'; |
25 | require_once __DIR__ . '/../includes/oidplus.inc.php'; |
21 | 26 | ||
22 | define('BASECONFIG_FILE', 'userdata/baseconfig/config.inc.php'); |
27 | define('BASECONFIG_FILE', 'userdata/baseconfig/config.inc.php'); |
23 | $already_setup = file_exists(__DIR__.'/../'.BASECONFIG_FILE); |
28 | $already_setup = file_exists(__DIR__.'/../'.BASECONFIG_FILE); |
24 | 29 | ||
25 | OIDplus::handleLangArgument(); |
30 | OIDplus::handleLangArgument(); |
26 | 31 | ||
27 | echo '<!DOCTYPE html>'; |
32 | echo '<!DOCTYPE html>'; |
28 | echo '<html lang="'.substr(OIDplus::getCurrentLang(),0,2).'">'; |
33 | echo '<html lang="'.substr(OIDplus::getCurrentLang(),0,2).'">'; |
29 | 34 | ||
30 | echo '<head>'; |
35 | echo '<head>'; |
31 | echo ' <title>'._L('OIDplus Setup').'</title>'; |
36 | echo ' <title>'._L('OIDplus Setup').'</title>'; |
32 | echo ' <meta name="robots" content="noindex">'; |
37 | echo ' <meta name="robots" content="noindex">'; |
33 | echo ' <meta name="viewport" content="width=device-width, initial-scale=1.0">'; |
38 | echo ' <meta name="viewport" content="width=device-width, initial-scale=1.0">'; |
34 | echo ' <link rel="stylesheet" href="setup.min.css.php">'; |
39 | echo ' <link rel="stylesheet" href="setup.min.css.php">'; |
35 | echo ' <link rel="shortcut icon" type="image/x-icon" href="../favicon.ico.php">'; |
40 | echo ' <link rel="shortcut icon" type="image/x-icon" href="../favicon.ico.php">'; |
36 | echo ' <script src="setup.min.js.php" type="text/javascript"></script>'; |
41 | echo ' <script src="setup.min.js.php" type="text/javascript"></script>'; |
37 | echo '</head>'; |
42 | echo '</head>'; |
38 | 43 | ||
39 | echo '<body>'; |
44 | echo '<body>'; |
40 | 45 | ||
41 | echo '<h1>'._L('OIDplus Setup - Configuration File Generator').'</h1>'; |
46 | echo '<h1>'._L('OIDplus Setup - Configuration File Generator').'</h1>'; |
42 | 47 | ||
43 | echo '<noscript>'; |
48 | echo '<noscript>'; |
44 | echo '<h2>'._L('Please enable JavaScript in order to use setup!').'</h2>'; |
49 | echo '<h2>'._L('Please enable JavaScript in order to use setup!').'</h2>'; |
45 | echo '</noscript>'; |
50 | echo '</noscript>'; |
46 | 51 | ||
47 | echo '<span id="setupPageContent" style="display:None">'; |
52 | echo '<span id="setupPageContent" style="display:None">'; |
48 | 53 | ||
49 | echo OIDplus::gui()->getLanguageBox(null, false); |
54 | echo OIDplus::gui()->getLanguageBox(null, false); |
50 | 55 | ||
51 | echo '<p>'; |
56 | echo '<p>'; |
52 | if ($already_setup) { |
57 | if ($already_setup) { |
53 | echo _L('This assistant will help you updating the file <b>%1</b>.',BASECONFIG_FILE); |
58 | echo _L('This assistant will help you updating the file <b>%1</b>.',BASECONFIG_FILE); |
54 | } else { |
59 | } else { |
55 | echo _L('Thank you very much for choosing OIDplus!'); |
60 | echo _L('Thank you very much for choosing OIDplus!'); |
56 | echo ' '; |
61 | echo ' '; |
57 | echo _L('This setup assistant will help you creating the file <b>%1</b>.',BASECONFIG_FILE); |
62 | echo _L('This setup assistant will help you creating the file <b>%1</b>.',BASECONFIG_FILE); |
58 | } |
63 | } |
59 | echo ' '; |
64 | echo ' '; |
60 | echo _L('This assistant does not automatically write to this file. Instead, you need to copy-paste the contents into the file.'); |
65 | echo _L('This assistant does not automatically write to this file. Instead, you need to copy-paste the contents into the file.'); |
61 | echo ' '; |
66 | echo ' '; |
62 | if ($already_setup) { |
67 | if ($already_setup) { |
63 | echo _L('Later, you can change the config file by hand, or run this assistant again.'); |
68 | echo _L('Later, you can change the config file by hand, or run this assistant again.'); |
64 | } else { |
69 | } else { |
65 | echo _L('Once OIDplus setup is finished, you can change the config file by hand, or run this setup assistant again.'); |
70 | echo _L('Once OIDplus setup is finished, you can change the config file by hand, or run this setup assistant again.'); |
66 | } |
71 | } |
67 | echo '</p>'; |
72 | echo '</p>'; |
68 | 73 | ||
69 | echo '<h2 id="systemCheckCaption" style="display:none">'._L('System check').'</h2>'; |
74 | echo '<h2 id="systemCheckCaption" style="display:none">'._L('System check').'</h2>'; |
70 | echo '<div id="dirAccessWarning"></div>'; |
75 | echo '<div id="dirAccessWarning"></div>'; |
71 | 76 | ||
72 | echo '<div id="step1">'; |
77 | echo '<div id="step1">'; |
73 | echo '<h2>'._L('Step %1: Enter setup information',1).'</h2>'; |
78 | echo '<h2>'._L('Step %1: Enter setup information',1).'</h2>'; |
74 | 79 | ||
75 | // ---------------------------------------- |
80 | // ---------------------------------------- |
76 | 81 | ||
77 | echo '<h3>'._L('Administrator password').'</h3>'; |
82 | echo '<h3>'._L('Administrator password').'</h3>'; |
78 | 83 | ||
79 | echo '<form id="step1_form">'; |
84 | echo '<form id="step1_form">'; |
80 | echo '<p>'._L('Which admin password do you want?').'<br><input id="admin_password" type="password" autocomplete="new-password" onkeypress="rebuild()" onkeyup="rebuild()"> <span id="password_warn"></span></p>'; |
85 | echo '<p>'._L('Which admin password do you want?').'<br><input id="admin_password" type="password" autocomplete="new-password" onkeypress="rebuild()" onkeyup="rebuild()"> <span id="password_warn"></span></p>'; |
81 | echo '<p>'._L('Please repeat the password input:').'<br><input id="admin_password2" type="password" autocomplete="new-password" onkeypress="rebuild()" onkeyup="rebuild()"> <span id="password_warn2"></span></p>'; |
86 | echo '<p>'._L('Please repeat the password input:').'<br><input id="admin_password2" type="password" autocomplete="new-password" onkeypress="rebuild()" onkeyup="rebuild()"> <span id="password_warn2"></span></p>'; |
82 | 87 | ||
83 | // ---------------------------------------- |
88 | // ---------------------------------------- |
84 | 89 | ||
85 | echo '<h3>'._L('Database connectivity').'</h3>'; |
90 | echo '<h3>'._L('Database connectivity').'</h3>'; |
86 | 91 | ||
87 | if (file_exists(__DIR__ . '/../doc/database_connectivity_diagram.png')) { |
92 | if (file_exists(__DIR__ . '/../doc/database_connectivity_diagram.png')) { |
88 | echo '<p><a href="../doc/database_connectivity_diagram.png" target="_blank"><img src="../doc/database_connectivity_diagram.png" width="20%" alt="'._L('Database connectivity diagram').'" title="'._L('Database connectivity diagram').'"></a></p>'; |
93 | echo '<p><a href="../doc/database_connectivity_diagram.png" target="_blank"><img src="../doc/database_connectivity_diagram.png" width="20%" alt="'._L('Database connectivity diagram').'" title="'._L('Database connectivity diagram').'"></a></p>'; |
89 | } |
94 | } |
90 | 95 | ||
91 | echo _L('Database plugin').': <select name="db_plugin" onChange="dbplugin_changed()" id="db_plugin">'; |
96 | echo _L('Database plugin').': <select name="db_plugin" onChange="dbplugin_changed()" id="db_plugin">'; |
92 | 97 | ||
93 | OIDplus::registerAllPlugins('database', 'OIDplusDatabasePlugin', array('OIDplus','registerDatabasePlugin')); |
98 | OIDplus::registerAllPlugins('database', OIDplusDatabasePlugin::class, array(OIDplus::class,'registerDatabasePlugin')); |
94 | foreach (OIDplus::getDatabasePlugins() as $plugin) { |
99 | foreach (OIDplus::getDatabasePlugins() as $plugin) { |
95 | $selected = $plugin::id() == 'MySQL' ? ' selected="true"' : ''; |
100 | $selected = $plugin::id() == 'MySQL' ? ' selected="true"' : ''; |
96 | echo '<option value="'.htmlentities($plugin::id()).'"'.$selected.'>'.htmlentities($plugin::id()).'</option>'; |
101 | echo '<option value="'.htmlentities($plugin::id()).'"'.$selected.'>'.htmlentities($plugin::id()).'</option>'; |
97 | } |
102 | } |
98 | 103 | ||
99 | echo '</select>'; |
104 | echo '</select>'; |
100 | 105 | ||
101 | echo '<div style="margin-left:50px">'; |
106 | echo '<div style="margin-left:50px">'; |
102 | 107 | ||
103 | OIDplus::registerAllPlugins('sqlSlang', 'OIDplusSqlSlangPlugin', array('OIDplus','registerSqlSlangPlugin')); |
108 | OIDplus::registerAllPlugins('sqlSlang', OIDplusSqlSlangPlugin::class, array(OIDplus::class,'registerSqlSlangPlugin')); |
104 | $sql_slang_selection = array(); |
109 | $sql_slang_selection = array(); |
105 | foreach (OIDplus::getSqlSlangPlugins() as $plugin) { |
110 | foreach (OIDplus::getSqlSlangPlugins() as $plugin) { |
106 | $slang_id = $plugin::id(); |
111 | $slang_id = $plugin::id(); |
107 | $pluginManifest = $plugin->getManifest(); |
112 | $pluginManifest = $plugin->getManifest(); |
108 | $human_friendly_name = empty($pluginManifest->getName()) ? get_class($plugin) : $pluginManifest->getName(); |
113 | $human_friendly_name = empty($pluginManifest->getName()) ? get_class($plugin) : $pluginManifest->getName(); |
109 | $sql_slang_selection[] = '<option value="'.$slang_id.'">'.$human_friendly_name.'</option>'; |
114 | $sql_slang_selection[] = '<option value="'.$slang_id.'">'.$human_friendly_name.'</option>'; |
110 | } |
115 | } |
111 | $sql_slang_selection = implode("\n", $sql_slang_selection); |
116 | $sql_slang_selection = implode("\n", $sql_slang_selection); |
112 | 117 | ||
113 | $found_db_plugins = 0; |
118 | $found_db_plugins = 0; |
114 | //OIDplus::registerAllPlugins('database', 'OIDplusDatabasePlugin', array('OIDplus','registerDatabasePlugin')); |
119 | //OIDplus::registerAllPlugins('database', OIDplusDatabasePlugin::class, array(OIDplus::class,'registerDatabasePlugin')); |
115 | foreach (OIDplus::getDatabasePlugins() as $plugin) { |
120 | foreach (OIDplus::getDatabasePlugins() as $plugin) { |
116 | $found_db_plugins++; |
121 | $found_db_plugins++; |
117 | $cont = $plugin->setupHTML(); |
122 | $cont = $plugin->setupHTML(); |
118 | $cont = str_replace('<!-- %SQL_SLANG_SELECTION% -->', $sql_slang_selection, $cont); |
123 | $cont = str_replace('<!-- %SQL_SLANG_SELECTION% -->', $sql_slang_selection, $cont); |
119 | echo $cont; |
124 | echo $cont; |
120 | } |
125 | } |
121 | 126 | ||
122 | if ($found_db_plugins == 0) { |
127 | if ($found_db_plugins == 0) { |
123 | echo '<p><font color="red">'._L('ERROR: No database plugins were found! You CANNOT use OIDplus without database connection.').'</font></p>'; |
128 | echo '<p><font color="red">'._L('ERROR: No database plugins were found! You CANNOT use OIDplus without database connection.').'</font></p>'; |
124 | } |
129 | } |
125 | 130 | ||
126 | echo '</div>'; |
131 | echo '</div>'; |
127 | 132 | ||
128 | echo '<p>'._L('Table name prefix (e.g. <b>oidplus_</b>)').':<br><input id="tablename_prefix" type="text" value="oidplus_" onkeypress="rebuild()" onkeyup="rebuild()"></p>'; |
133 | echo '<p>'._L('Table name prefix (e.g. <b>oidplus_</b>)').':<br><input id="tablename_prefix" type="text" value="oidplus_" onkeypress="rebuild()" onkeyup="rebuild()"></p>'; |
129 | 134 | ||
130 | // ---------------------------------------- |
135 | // ---------------------------------------- |
131 | 136 | ||
132 | echo '<h3>'._L('CAPTCHA').'</h3>'; |
137 | echo '<h3>'._L('CAPTCHA').'</h3>'; |
133 | 138 | ||
134 | // TODO: Add a small explanation here, in case somebody does not know what CAPTCHA is |
139 | // TODO: Add a small explanation here, in case somebody does not know what CAPTCHA is |
135 | 140 | ||
136 | echo _L('CAPTCHA plugin').': <select name="captcha_plugin" onChange="captchaplugin_changed()" id="captcha_plugin">'; |
141 | echo _L('CAPTCHA plugin').': <select name="captcha_plugin" onChange="captchaplugin_changed()" id="captcha_plugin">'; |
137 | 142 | ||
138 | OIDplus::registerAllPlugins('captcha', 'OIDplusCaptchaPlugin', array('OIDplus','registerCaptchaPlugin')); |
143 | OIDplus::registerAllPlugins('captcha', OIDplusCaptchaPlugin::class, array(OIDplus::class,'registerCaptchaPlugin')); |
139 | foreach (OIDplus::getCaptchaPlugins() as $plugin) { |
144 | foreach (OIDplus::getCaptchaPlugins() as $plugin) { |
140 | $selected = strtolower($plugin::id()) === strtolower('None') ? ' selected="true"' : ''; // select "None" by default |
145 | $selected = strtolower($plugin::id()) === strtolower('None') ? ' selected="true"' : ''; // select "None" by default |
141 | echo '<option value="'.htmlentities($plugin::id()).'"'.$selected.'>'.htmlentities($plugin::id()).'</option>'; |
146 | echo '<option value="'.htmlentities($plugin::id()).'"'.$selected.'>'.htmlentities($plugin::id()).'</option>'; |
142 | } |
147 | } |
143 | 148 | ||
144 | echo '</select>'; |
149 | echo '</select>'; |
145 | 150 | ||
146 | echo '<div style="margin-left:50px">'; |
151 | echo '<div style="margin-left:50px">'; |
147 | 152 | ||
148 | $found_captcha_plugins = 0; |
153 | $found_captcha_plugins = 0; |
149 | foreach (OIDplus::getCaptchaPlugins() as $plugin) { |
154 | foreach (OIDplus::getCaptchaPlugins() as $plugin) { |
150 | $found_captcha_plugins++; |
155 | $found_captcha_plugins++; |
151 | $cont = $plugin->setupHTML(); |
156 | $cont = $plugin->setupHTML(); |
152 | echo $cont; |
157 | echo $cont; |
153 | } |
158 | } |
154 | 159 | ||
155 | if ($found_captcha_plugins == 0) { |
160 | if ($found_captcha_plugins == 0) { |
156 | echo '<p><font color="red">'._L('ERROR: No CAPTCHA plugins were found! You CANNOT use OIDplus without the "%1" CAPTCHA plugin.','None').'</font></p>'; |
161 | echo '<p><font color="red">'._L('ERROR: No CAPTCHA plugins were found! You CANNOT use OIDplus without the "%1" CAPTCHA plugin.','None').'</font></p>'; |
157 | } |
162 | } |
158 | 163 | ||
159 | echo '</div>'; |
164 | echo '</div>'; |
160 | 165 | ||
161 | // ---------------------------------------- |
166 | // ---------------------------------------- |
162 | 167 | ||
163 | $is_ssl = OIDplus::isSSL(); |
168 | $is_ssl = OIDplus::isSSL(); |
164 | echo '<h3>'._L('Secure connection (HTTPS)').'</h3>'; |
169 | echo '<h3>'._L('Secure connection (HTTPS)').'</h3>'; |
165 | echo '<p>'._L('Enforcement of a secure connection:').'<br><select name="enforce_ssl" id="enforce_ssl" onchange="rebuild()">'; |
170 | echo '<p>'._L('Enforcement of a secure connection:').'<br><select name="enforce_ssl" id="enforce_ssl" onchange="rebuild()">'; |
166 | echo '<option value="OIDplus::ENFORCE_SSL_NO">'._L('No SSL available (don\'t redirect)').'</option>'; |
171 | echo '<option value="OIDplus::ENFORCE_SSL_NO">'._L('No SSL available (don\'t redirect)').'</option>'; |
167 | echo '<option value="OIDplus::ENFORCE_SSL_YES"'.($is_ssl ? ' selected' : '').'>'._L('Enforce SSL (always redirect)').'</option>'; |
172 | echo '<option value="OIDplus::ENFORCE_SSL_YES"'.($is_ssl ? ' selected' : '').'>'._L('Enforce SSL (always redirect)').'</option>'; |
168 | echo '<option value="OIDplus::ENFORCE_SSL_AUTO"'.(!$is_ssl ? ' selected' : '').'>'._L('Intelligent SSL detection (redirect if port 443 is open)').'</option>'; |
173 | echo '<option value="OIDplus::ENFORCE_SSL_AUTO"'.(!$is_ssl ? ' selected' : '').'>'._L('Intelligent SSL detection (redirect if port 443 is open)').'</option>'; |
169 | echo '</select></p>'; |
174 | echo '</select></p>'; |
170 | 175 | ||
171 | // ---------------------------------------- |
176 | // ---------------------------------------- |
172 | 177 | ||
173 | echo '<h3>'._L('Public URL of this system (Canonical URL)').'</h3>'; |
178 | echo '<h3>'._L('Public URL of this system (Canonical URL)').'</h3>'; |
174 | 179 | ||
175 | echo '<p><input id="canonical_url" type="text" value="'.htmlentities(OIDplus::webpath(null,OIDplus::PATH_ABSOLUTE_CANONICAL)).'" onkeypress="rebuild()" onkeyup="rebuild()" style="width:550px"></p>'; |
180 | echo '<p><input id="canonical_url" type="text" value="'.htmlentities(OIDplus::webpath(null,OIDplus::PATH_ABSOLUTE_CANONICAL)).'" onkeypress="rebuild()" onkeyup="rebuild()" style="width:550px"></p>'; |
176 | 181 | ||
177 | // ---------------------------------------- |
182 | // ---------------------------------------- |
178 | 183 | ||
179 | echo '</form>'; |
184 | echo '</form>'; |
180 | echo '</div>'; |
185 | echo '</div>'; |
181 | 186 | ||
182 | echo '<div id="step2">'; |
187 | echo '<div id="step2">'; |
183 | echo '<h2>'._L('Step %1: Initialize database',2).'</h2>'; |
188 | echo '<h2>'._L('Step %1: Initialize database',2).'</h2>'; |
184 | if ($already_setup) { |
189 | if ($already_setup) { |
185 | echo '<p><input type="checkbox" id="step2_enable"> <label for="step2_enable"><font color="red">'._L('Re-Install database (all data will be deleted)').'</font></label></p>'; |
190 | echo '<p><input type="checkbox" id="step2_enable"> <label for="step2_enable"><font color="red">'._L('Re-Install database (all data will be deleted)').'</font></label></p>'; |
186 | } |
191 | } |
187 | echo '<div id="step2_inner">'; |
192 | echo '<div id="step2_inner">'; |
188 | echo '<p>'._L('Please import one of the following SQL dumps in your database:').'</p>'; |
193 | echo '<p>'._L('Please import one of the following SQL dumps in your database:').'</p>'; |
189 | echo '<p><ul>'; |
194 | echo '<p><ul>'; |
190 | echo ' <li><a href="struct_empty.sql.php" id="struct_1" target="_blank">'._L('Empty OIDplus database without example data').'</a><span id="struct_cli_1"></span><br><br></li>'; |
195 | echo ' <li><a href="struct_empty.sql.php" id="struct_1" target="_blank">'._L('Empty OIDplus database without example data').'</a><span id="struct_cli_1"></span><br><br></li>'; |
191 | echo ' <li><a href="struct_with_examples.sql.php" id="struct_2" target="_blank">'._L('OIDplus database with example data').'</a><span id="struct_cli_2"></span><br><br></li>'; |
196 | echo ' <li><a href="struct_with_examples.sql.php" id="struct_2" target="_blank">'._L('OIDplus database with example data').'</a><span id="struct_cli_2"></span><br><br></li>'; |
192 | echo '</ul></p>'; |
197 | echo '</ul></p>'; |
193 | echo '<p><font color="red">'._L('Warning: Existing OIDplus data will be deleted during the initialization of the database.').'</font></p>'; |
198 | echo '<p><font color="red">'._L('Warning: Existing OIDplus data will be deleted during the initialization of the database.').'</font></p>'; |
194 | echo '</div>'; |
199 | echo '</div>'; |
195 | if ($already_setup) { |
200 | if ($already_setup) { |
196 | echo '<script>'; |
201 | echo '<script>'; |
197 | echo '$("#step2_enable").click(function() {'; |
202 | echo '$("#step2_enable").click(function() {'; |
198 | echo ' if ($(this).is(":checked")) {'; |
203 | echo ' if ($(this).is(":checked")) {'; |
199 | echo ' $("#step2_inner").show();'; |
204 | echo ' $("#step2_inner").show();'; |
200 | echo ' } else {'; |
205 | echo ' } else {'; |
201 | echo ' $("#step2_inner").hide();'; |
206 | echo ' $("#step2_inner").hide();'; |
202 | echo ' }'; |
207 | echo ' }'; |
203 | echo '});'; |
208 | echo '});'; |
204 | echo '$("#step2_inner").hide();'; |
209 | echo '$("#step2_inner").hide();'; |
205 | echo '</script>'; |
210 | echo '</script>'; |
206 | } |
211 | } |
207 | echo '</div>'; |
212 | echo '</div>'; |
208 | 213 | ||
209 | // ---------------------------------------- |
214 | // ---------------------------------------- |
210 | 215 | ||
211 | echo '<div id="step3">'; |
216 | echo '<div id="step3">'; |
212 | echo '<h2>'._L('Step %1: Save %2 file',3,BASECONFIG_FILE).'</h2>'; |
217 | echo '<h2>'._L('Step %1: Save %2 file',3,BASECONFIG_FILE).'</h2>'; |
213 | echo '<p>'._L('Save following contents into the file <b>%1</b>',BASECONFIG_FILE).'</p>'; |
218 | echo '<p>'._L('Save following contents into the file <b>%1</b>',BASECONFIG_FILE).'</p>'; |
214 | echo '<code><font color="darkblue"><div id="config"></div></font></code>'; |
219 | echo '<code><font color="darkblue"><div id="config"></div></font></code>'; |
215 | echo '<p><input type="button" value="'._L('Copy to clipboard').'" onClick="copyToClipboard(config)"></p>'; |
220 | echo '<p><input type="button" value="'._L('Copy to clipboard').'" onClick="copyToClipboard(config)"></p>'; |
216 | echo '</div>'; |
221 | echo '</div>'; |
217 | 222 | ||
218 | // ---------------------------------------- |
223 | // ---------------------------------------- |
219 | 224 | ||
220 | echo '<div id="step4">'; |
225 | echo '<div id="step4">'; |
221 | if ($already_setup) { |
226 | if ($already_setup) { |
222 | echo '<h2>'._L('Step %1: Start OIDplus',4).'</h2>'; |
227 | echo '<h2>'._L('Step %1: Start OIDplus',4).'</h2>'; |
223 | } else { |
228 | } else { |
224 | echo '<h2>'._L('Step %1: Continue to next step',4).'</h2>'; |
229 | echo '<h2>'._L('Step %1: Continue to next step',4).'</h2>'; |
225 | } |
230 | } |
226 | echo '<p><input type="button" onclick="window.location.href=\'../\'" value="'._L('Continue').'"></p>'; |
231 | echo '<p><input type="button" onclick="window.location.href=\'../\'" value="'._L('Continue').'"></p>'; |
227 | echo '</div>'; |
232 | echo '</div>'; |
228 | 233 | ||
229 | echo '<br><br><br>'; // because of iPhone Safari |
234 | echo '<br><br><br>'; // because of iPhone Safari |
230 | 235 | ||
231 | echo '</span>'; |
236 | echo '</span>'; |
232 | echo '<script> $("#setupPageContent")[0].style.display = "Block"; </script>'; |
237 | echo '<script> $("#setupPageContent")[0].style.display = "Block"; </script>'; |
233 | 238 | ||
234 | echo '</body>'; |
239 | echo '</body>'; |
235 | echo '</html>'; |
240 | echo '</html>'; |
236 | 241 |