@reldens/cms 0.84.0 → 0.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/api-reference.md +172 -171
- package/.claude/architecture-guide.md +28 -1
- package/.claude/configuration-guide.md +128 -126
- package/.claude/installation-guide.md +225 -225
- package/.claude/password-management-guide.md +2 -2
- package/CLAUDE.md +1 -1
- package/README.md +1 -1
- package/bin/reldens-cms-generate-entities.js +19 -8
- package/bin/reldens-cms-update-password.js +16 -8
- package/bin/reldens-cms.js +145 -138
- package/install/index.html +132 -132
- package/lib/admin-manager/router-contents.js +854 -854
- package/lib/installer.js +673 -636
- package/lib/manager-config-loader.js +35 -33
- package/lib/manager-services-initializer.js +346 -323
- package/lib/manager.js +310 -306
- package/lib/mysql-installer.js +104 -104
- package/lib/prisma-subprocess-worker.js +9 -4
- package/package.json +4 -4
- package/templates/.env.dist +2 -0
- package/templates/index.js.dist +30 -30
package/bin/reldens-cms.js
CHANGED
|
@@ -1,138 +1,145 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* Reldens - CMS - CLI
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
const { Manager } = require('../index');
|
|
10
|
-
const {
|
|
11
|
-
const {
|
|
12
|
-
const {
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
let
|
|
18
|
-
let
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
let
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
Logger.info('
|
|
43
|
-
|
|
44
|
-
rl.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
execSync
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
Logger.error('
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
let
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* Reldens - CMS - CLI
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const { Manager } = require('../index');
|
|
10
|
+
const { ManagerConfigLoader } = require('../lib/manager-config-loader');
|
|
11
|
+
const { ManagerServicesInitializer } = require('../lib/manager-services-initializer');
|
|
12
|
+
const { Logger } = require('@reldens/utils');
|
|
13
|
+
const { FileHandler } = require('@reldens/server-utils');
|
|
14
|
+
const readline = require('readline/promises');
|
|
15
|
+
const dotenv = require('dotenv');
|
|
16
|
+
|
|
17
|
+
let args = process.argv.slice(2);
|
|
18
|
+
let projectRoot = args[0] || process.cwd();
|
|
19
|
+
let indexPath = FileHandler.joinPaths(projectRoot, 'index.js');
|
|
20
|
+
|
|
21
|
+
async function checkRequiredPackages(projectRoot, databaseConfig)
|
|
22
|
+
{
|
|
23
|
+
let requiredPackages = ['@reldens/cms'];
|
|
24
|
+
if('prisma' === databaseConfig.driver){
|
|
25
|
+
requiredPackages.push('prisma', '@prisma/client', databaseConfig.prismaAdapter);
|
|
26
|
+
}
|
|
27
|
+
let missingPackages = [];
|
|
28
|
+
for(let packageName of requiredPackages){
|
|
29
|
+
if(!FileHandler.exists(FileHandler.joinPaths(projectRoot, 'node_modules', packageName))){
|
|
30
|
+
missingPackages.push(packageName);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return missingPackages;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async function promptUserConfirmation(packages)
|
|
37
|
+
{
|
|
38
|
+
let rl = readline.createInterface({
|
|
39
|
+
input: process.stdin,
|
|
40
|
+
output: process.stdout
|
|
41
|
+
});
|
|
42
|
+
Logger.info('Missing required packages: '+packages.join(', '));
|
|
43
|
+
Logger.info('These packages are required for the CMS to function properly.');
|
|
44
|
+
let answer = await rl.question('Would you like to install them automatically? (y/N): ');
|
|
45
|
+
rl.close();
|
|
46
|
+
return 'y' === answer.toLowerCase() || 'yes' === answer.toLowerCase();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async function installPackages(packages, projectRoot)
|
|
50
|
+
{
|
|
51
|
+
try {
|
|
52
|
+
Logger.info('Installing packages: npm install '+packages.join(' '));
|
|
53
|
+
let {execSync} = require('child_process');
|
|
54
|
+
execSync('npm install '+packages.join(' '), {stdio: 'inherit', cwd: projectRoot});
|
|
55
|
+
Logger.info('Dependencies installed successfully.');
|
|
56
|
+
return true;
|
|
57
|
+
} catch(error) {
|
|
58
|
+
Logger.error('Failed to install dependencies: '+error.message);
|
|
59
|
+
Logger.error('Please run manually: npm install '+packages.join(' '));
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async function handlePackageInstallation(projectRoot, databaseConfig)
|
|
65
|
+
{
|
|
66
|
+
let missingPackages = await checkRequiredPackages(projectRoot, databaseConfig);
|
|
67
|
+
if(0 === missingPackages.length){
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
let userConfirmed = await promptUserConfirmation(missingPackages);
|
|
71
|
+
if(!userConfirmed){
|
|
72
|
+
Logger.info('Installation cancelled. Please install required packages manually and try again.');
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return await installPackages(missingPackages, projectRoot);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async function createPrismaClientIfNeeded(projectRoot, databaseConfig)
|
|
79
|
+
{
|
|
80
|
+
if('prisma' !== databaseConfig.driver){
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
let clientPath = FileHandler.joinPaths(projectRoot, 'prisma', 'client');
|
|
84
|
+
if(!FileHandler.exists(clientPath)){
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return ManagerServicesInitializer.loadPrismaModules(
|
|
88
|
+
projectRoot,
|
|
89
|
+
null,
|
|
90
|
+
null,
|
|
91
|
+
databaseConfig.prismaAdapter,
|
|
92
|
+
databaseConfig.prismaAdapterClass
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async function main()
|
|
97
|
+
{
|
|
98
|
+
if(FileHandler.exists(indexPath)){
|
|
99
|
+
require(indexPath);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
let envFilePath = FileHandler.joinPaths(projectRoot, '.env');
|
|
103
|
+
dotenv.config({path: envFilePath});
|
|
104
|
+
let databaseConfig = ManagerConfigLoader.loadFromEnv().database;
|
|
105
|
+
let packageInstallResult = await handlePackageInstallation(projectRoot, databaseConfig);
|
|
106
|
+
if(!packageInstallResult){
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
let managerConfig = {projectRoot};
|
|
110
|
+
let entitiesPath = FileHandler.joinPaths(
|
|
111
|
+
projectRoot,
|
|
112
|
+
'generated-entities',
|
|
113
|
+
'models',
|
|
114
|
+
databaseConfig.driver,
|
|
115
|
+
'registered-models-'+databaseConfig.driver+'.js'
|
|
116
|
+
);
|
|
117
|
+
if(FileHandler.exists(entitiesPath)){
|
|
118
|
+
let entitiesModule = require(entitiesPath);
|
|
119
|
+
managerConfig.rawRegisteredEntities = entitiesModule.rawRegisteredEntities;
|
|
120
|
+
managerConfig.entitiesConfig = entitiesModule.entitiesConfig;
|
|
121
|
+
managerConfig.entitiesTranslations = entitiesModule.entitiesTranslations;
|
|
122
|
+
}
|
|
123
|
+
let prismaModules = await createPrismaClientIfNeeded(projectRoot, databaseConfig);
|
|
124
|
+
if(prismaModules){
|
|
125
|
+
managerConfig.prismaModules = prismaModules;
|
|
126
|
+
}
|
|
127
|
+
let manager = new Manager(managerConfig);
|
|
128
|
+
Logger.debug('Reldens CMS Manager instance created.', {configuration: manager.config});
|
|
129
|
+
manager.start().then((result) => {
|
|
130
|
+
if(!result){
|
|
131
|
+
Logger.info('Reldens CMS started by command failed.');
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
Logger.info('Reldens CMS started by command.');
|
|
135
|
+
return true;
|
|
136
|
+
}).catch((error) => {
|
|
137
|
+
Logger.critical('Failed to start CMS:', error);
|
|
138
|
+
process.exit();
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
main().catch((error) => {
|
|
143
|
+
Logger.critical('Failed to handle package installation:', error);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
});
|
package/install/index.html
CHANGED
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>Reldens CMS - Installation</title>
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
6
|
-
<link rel="stylesheet" href="/install-assets/css/installer.css">
|
|
7
|
-
<script src="/install-assets/js/installer.js"></script>
|
|
8
|
-
</head>
|
|
9
|
-
<body>
|
|
10
|
-
<div class="wrapper">
|
|
11
|
-
<div class="header">
|
|
12
|
-
<h1 class="title">
|
|
13
|
-
<strong>Reldens CMS</strong> - Installation
|
|
14
|
-
</h1>
|
|
15
|
-
</div>
|
|
16
|
-
<div class="content">
|
|
17
|
-
<div class="forms-container">
|
|
18
|
-
<div class="row">
|
|
19
|
-
<form name="install-form" id="install-form" class="install-form" action="/install" method="post">
|
|
20
|
-
<h3 class="form-title">Server Configuration</h3>
|
|
21
|
-
<div class="input-box app-host">
|
|
22
|
-
<label for="app-host">Host</label>
|
|
23
|
-
<input type="text" name="app-host" id="app-host" value="{{app-host}}" class="required" required/>
|
|
24
|
-
</div>
|
|
25
|
-
<div class="input-box app-port">
|
|
26
|
-
<label for="app-port">Port</label>
|
|
27
|
-
<input type="text" name="app-port" id="app-port" value="{{app-port}}" class="required" required/>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="input-box app-public-url">
|
|
30
|
-
<label for="app-public-url">Public URL (for assets and links)</label>
|
|
31
|
-
<input type="text" name="app-public-url" id="app-public-url" value="{{app-public-url}}"/>
|
|
32
|
-
</div>
|
|
33
|
-
<div class="input-box app-admin-path">
|
|
34
|
-
<label for="app-admin-path">Admin Panel Path</label>
|
|
35
|
-
<input type="text" name="app-admin-path" id="app-admin-path" value="{{app-admin-path}}"/>
|
|
36
|
-
</div>
|
|
37
|
-
<div class="input-box app-admin-secret">
|
|
38
|
-
<label for="app-admin-secret">Admin Panel Secret</label>
|
|
39
|
-
<input type="text" name="app-admin-secret" id="app-admin-secret" value="{{app-admin-secret}}" required/>
|
|
40
|
-
</div>
|
|
41
|
-
<div class="input-box app-error">
|
|
42
|
-
<p class="error installation-process-failed">There was an error during the installation process.</p>
|
|
43
|
-
</div>
|
|
44
|
-
<h3 class="form-title">Database Configuration</h3>
|
|
45
|
-
<div class="input-box db-storage-driver">
|
|
46
|
-
<label for="db-storage-driver">Storage Driver</label>
|
|
47
|
-
<select name="db-storage-driver" id="db-storage-driver" class="required" required>
|
|
48
|
-
<option value="
|
|
49
|
-
<option value="objection-js">Objection JS</option>
|
|
50
|
-
</select>
|
|
51
|
-
</div>
|
|
52
|
-
<div class="input-box db-client">
|
|
53
|
-
<label for="db-client">Client</label>
|
|
54
|
-
<input type="text" name="db-client" id="db-client" value="{{db-client}}" class="required" required/>
|
|
55
|
-
</div>
|
|
56
|
-
<div class="input-box db-host">
|
|
57
|
-
<label for="db-host">Host</label>
|
|
58
|
-
<input type="text" name="db-host" id="db-host" value="{{db-host}}" class="required" required/>
|
|
59
|
-
</div>
|
|
60
|
-
<div class="input-box db-port">
|
|
61
|
-
<label for="db-port">Port</label>
|
|
62
|
-
<input type="text" name="db-port" id="db-port" value="{{db-port}}" class="required" required/>
|
|
63
|
-
</div>
|
|
64
|
-
<div class="input-box db-name">
|
|
65
|
-
<label for="db-name">Database Name</label>
|
|
66
|
-
<input type="text" name="db-name" id="db-name" value="{{db-name}}" class="required" required/>
|
|
67
|
-
</div>
|
|
68
|
-
<div class="input-box db-username">
|
|
69
|
-
<label for="db-username">Username</label>
|
|
70
|
-
<input type="text" name="db-username" id="db-username" value="{{db-username}}" class="required" required/>
|
|
71
|
-
</div>
|
|
72
|
-
<div class="input-box db-password">
|
|
73
|
-
<label for="db-password">Password</label>
|
|
74
|
-
<input type="password" name="db-password" id="db-password" value="{{db-password}}" class="required" required autocomplete="off"/>
|
|
75
|
-
</div>
|
|
76
|
-
<div class="input-box db-error">
|
|
77
|
-
<p class="error connection-failed">Connection failed, please check the database configuration.</p>
|
|
78
|
-
<p class="error invalid-driver">Invalid storage driver.</p>
|
|
79
|
-
<p class="error raw-query-not-found">Method "rawQuery" not found in the specified storage driver.</p>
|
|
80
|
-
<p class="error sql-file-not-found">SQL installation file not found.</p>
|
|
81
|
-
<p class="error db-installation-process-failed">There was an error during the installation process.</p>
|
|
82
|
-
</div>
|
|
83
|
-
<h3 class="form-title">Installation Options</h3>
|
|
84
|
-
<div class="input-box input-checkbox install-cms-tables">
|
|
85
|
-
<input type="checkbox" name="install-cms-tables" id="install-cms-tables" checked/>
|
|
86
|
-
<label for="install-cms-tables">Install default CMS pages tables</label>
|
|
87
|
-
</div>
|
|
88
|
-
<div class="input-box input-checkbox install-user-auth">
|
|
89
|
-
<input type="checkbox" name="install-user-auth" id="install-user-auth" checked/>
|
|
90
|
-
<label for="install-user-auth">Install users authentication</label>
|
|
91
|
-
</div>
|
|
92
|
-
<div class="input-box input-checkbox install-default-user">
|
|
93
|
-
<input type="checkbox" name="install-default-user" id="install-default-user" checked/>
|
|
94
|
-
<label for="install-default-user">Install default admin user (root@cms-admin.com / root)</label>
|
|
95
|
-
</div>
|
|
96
|
-
<div class="input-box input-checkbox install-default-homepage">
|
|
97
|
-
<input type="checkbox" name="install-default-homepage" id="install-default-homepage" checked/>
|
|
98
|
-
<label for="install-default-homepage">Install default homepage</label>
|
|
99
|
-
</div>
|
|
100
|
-
<div class="input-box input-checkbox install-default-blocks">
|
|
101
|
-
<input type="checkbox" name="install-default-blocks" id="install-default-blocks" checked/>
|
|
102
|
-
<label for="install-default-blocks">Install default content blocks</label>
|
|
103
|
-
</div>
|
|
104
|
-
<div class="input-box input-checkbox install-entity-access">
|
|
105
|
-
<input type="checkbox" name="install-entity-access" id="install-entity-access" checked/>
|
|
106
|
-
<label for="install-entity-access">Install entity access control rules</label>
|
|
107
|
-
</div>
|
|
108
|
-
<div class="input-box input-checkbox install-dynamic-forms">
|
|
109
|
-
<input type="checkbox" name="install-dynamic-forms" id="install-dynamic-forms" checked/>
|
|
110
|
-
<label for="install-dynamic-forms">Install dynamic forms system</label>
|
|
111
|
-
</div>
|
|
112
|
-
<div class="input-box input-checkbox install-seo-files">
|
|
113
|
-
<input type="checkbox" name="install-seo-files" id="install-seo-files" checked/>
|
|
114
|
-
<label for="install-seo-files">Install default robots.txt and sitemap.xml</label>
|
|
115
|
-
</div>
|
|
116
|
-
<div class="input-box submit-container">
|
|
117
|
-
<input id="install-submit-button" type="submit" value="Install"/>
|
|
118
|
-
<img class="install-loading hidden" src="/install-assets/img/loading.gif"/>
|
|
119
|
-
</div>
|
|
120
|
-
<div class="input-box response-error"></div>
|
|
121
|
-
</form>
|
|
122
|
-
</div>
|
|
123
|
-
</div>
|
|
124
|
-
</div>
|
|
125
|
-
<div class="footer">
|
|
126
|
-
<div class="copyright">
|
|
127
|
-
© 2025 Reldens CMS
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
|
-
</div>
|
|
131
|
-
</body>
|
|
132
|
-
</html>
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>Reldens CMS - Installation</title>
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
6
|
+
<link rel="stylesheet" href="/install-assets/css/installer.css">
|
|
7
|
+
<script src="/install-assets/js/installer.js"></script>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="wrapper">
|
|
11
|
+
<div class="header">
|
|
12
|
+
<h1 class="title">
|
|
13
|
+
<strong>Reldens CMS</strong> - Installation
|
|
14
|
+
</h1>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="content">
|
|
17
|
+
<div class="forms-container">
|
|
18
|
+
<div class="row">
|
|
19
|
+
<form name="install-form" id="install-form" class="install-form" action="/install" method="post">
|
|
20
|
+
<h3 class="form-title">Server Configuration</h3>
|
|
21
|
+
<div class="input-box app-host">
|
|
22
|
+
<label for="app-host">Host</label>
|
|
23
|
+
<input type="text" name="app-host" id="app-host" value="{{app-host}}" class="required" required/>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="input-box app-port">
|
|
26
|
+
<label for="app-port">Port</label>
|
|
27
|
+
<input type="text" name="app-port" id="app-port" value="{{app-port}}" class="required" required/>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="input-box app-public-url">
|
|
30
|
+
<label for="app-public-url">Public URL (for assets and links)</label>
|
|
31
|
+
<input type="text" name="app-public-url" id="app-public-url" value="{{app-public-url}}"/>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="input-box app-admin-path">
|
|
34
|
+
<label for="app-admin-path">Admin Panel Path</label>
|
|
35
|
+
<input type="text" name="app-admin-path" id="app-admin-path" value="{{app-admin-path}}"/>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="input-box app-admin-secret">
|
|
38
|
+
<label for="app-admin-secret">Admin Panel Secret</label>
|
|
39
|
+
<input type="text" name="app-admin-secret" id="app-admin-secret" value="{{app-admin-secret}}" required/>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="input-box app-error">
|
|
42
|
+
<p class="error installation-process-failed">There was an error during the installation process.</p>
|
|
43
|
+
</div>
|
|
44
|
+
<h3 class="form-title">Database Configuration</h3>
|
|
45
|
+
<div class="input-box db-storage-driver">
|
|
46
|
+
<label for="db-storage-driver">Storage Driver</label>
|
|
47
|
+
<select name="db-storage-driver" id="db-storage-driver" class="required" required>
|
|
48
|
+
<option value="mikro-orm" selected>Mikro ORM</option>
|
|
49
|
+
<option value="objection-js">Objection JS</option>
|
|
50
|
+
</select>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="input-box db-client">
|
|
53
|
+
<label for="db-client">Client</label>
|
|
54
|
+
<input type="text" name="db-client" id="db-client" value="{{db-client}}" class="required" required/>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="input-box db-host">
|
|
57
|
+
<label for="db-host">Host</label>
|
|
58
|
+
<input type="text" name="db-host" id="db-host" value="{{db-host}}" class="required" required/>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="input-box db-port">
|
|
61
|
+
<label for="db-port">Port</label>
|
|
62
|
+
<input type="text" name="db-port" id="db-port" value="{{db-port}}" class="required" required/>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="input-box db-name">
|
|
65
|
+
<label for="db-name">Database Name</label>
|
|
66
|
+
<input type="text" name="db-name" id="db-name" value="{{db-name}}" class="required" required/>
|
|
67
|
+
</div>
|
|
68
|
+
<div class="input-box db-username">
|
|
69
|
+
<label for="db-username">Username</label>
|
|
70
|
+
<input type="text" name="db-username" id="db-username" value="{{db-username}}" class="required" required/>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="input-box db-password">
|
|
73
|
+
<label for="db-password">Password</label>
|
|
74
|
+
<input type="password" name="db-password" id="db-password" value="{{db-password}}" class="required" required autocomplete="off"/>
|
|
75
|
+
</div>
|
|
76
|
+
<div class="input-box db-error">
|
|
77
|
+
<p class="error connection-failed">Connection failed, please check the database configuration.</p>
|
|
78
|
+
<p class="error invalid-driver">Invalid storage driver.</p>
|
|
79
|
+
<p class="error raw-query-not-found">Method "rawQuery" not found in the specified storage driver.</p>
|
|
80
|
+
<p class="error sql-file-not-found">SQL installation file not found.</p>
|
|
81
|
+
<p class="error db-installation-process-failed">There was an error during the installation process.</p>
|
|
82
|
+
</div>
|
|
83
|
+
<h3 class="form-title">Installation Options</h3>
|
|
84
|
+
<div class="input-box input-checkbox install-cms-tables">
|
|
85
|
+
<input type="checkbox" name="install-cms-tables" id="install-cms-tables" checked/>
|
|
86
|
+
<label for="install-cms-tables">Install default CMS pages tables</label>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="input-box input-checkbox install-user-auth">
|
|
89
|
+
<input type="checkbox" name="install-user-auth" id="install-user-auth" checked/>
|
|
90
|
+
<label for="install-user-auth">Install users authentication</label>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="input-box input-checkbox install-default-user">
|
|
93
|
+
<input type="checkbox" name="install-default-user" id="install-default-user" checked/>
|
|
94
|
+
<label for="install-default-user">Install default admin user (root@cms-admin.com / root)</label>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="input-box input-checkbox install-default-homepage">
|
|
97
|
+
<input type="checkbox" name="install-default-homepage" id="install-default-homepage" checked/>
|
|
98
|
+
<label for="install-default-homepage">Install default homepage</label>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="input-box input-checkbox install-default-blocks">
|
|
101
|
+
<input type="checkbox" name="install-default-blocks" id="install-default-blocks" checked/>
|
|
102
|
+
<label for="install-default-blocks">Install default content blocks</label>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="input-box input-checkbox install-entity-access">
|
|
105
|
+
<input type="checkbox" name="install-entity-access" id="install-entity-access" checked/>
|
|
106
|
+
<label for="install-entity-access">Install entity access control rules</label>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="input-box input-checkbox install-dynamic-forms">
|
|
109
|
+
<input type="checkbox" name="install-dynamic-forms" id="install-dynamic-forms" checked/>
|
|
110
|
+
<label for="install-dynamic-forms">Install dynamic forms system</label>
|
|
111
|
+
</div>
|
|
112
|
+
<div class="input-box input-checkbox install-seo-files">
|
|
113
|
+
<input type="checkbox" name="install-seo-files" id="install-seo-files" checked/>
|
|
114
|
+
<label for="install-seo-files">Install default robots.txt and sitemap.xml</label>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="input-box submit-container">
|
|
117
|
+
<input id="install-submit-button" type="submit" value="Install"/>
|
|
118
|
+
<img class="install-loading hidden" src="/install-assets/img/loading.gif"/>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="input-box response-error"></div>
|
|
121
|
+
</form>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
<div class="footer">
|
|
126
|
+
<div class="copyright">
|
|
127
|
+
© 2025 Reldens CMS
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</body>
|
|
132
|
+
</html>
|