summaryrefslogtreecommitdiff
path: root/resources/views
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2017-11-05 19:18:41 +0000
committerGreg Roach <fisharebest@gmail.com>2017-11-05 19:19:00 +0000
commit5c4e0741d1a96c6d1d19cb42e327e99a8eac671a (patch)
tree9e69e7c25704de07f20caab4840b3c19afacf910 /resources/views
parent8d75cb09413e35f542072dd24a6b795b2f475805 (diff)
downloadwebtrees-5c4e0741d1a96c6d1d19cb42e327e99a8eac671a.tar.gz
webtrees-5c4e0741d1a96c6d1d19cb42e327e99a8eac671a.tar.bz2
webtrees-5c4e0741d1a96c6d1d19cb42e327e99a8eac671a.zip
Refactor setup wizard to use MVC and front-controller
Diffstat (limited to 'resources/views')
-rw-r--r--resources/views/admin/control-panel.php4
-rw-r--r--resources/views/admin/module-components.php2
-rw-r--r--resources/views/admin/modules.php4
-rw-r--r--resources/views/layouts/setup.php21
-rw-r--r--resources/views/setup/step-1-language.php37
-rw-r--r--resources/views/setup/step-2-server-checks.php71
-rw-r--r--resources/views/setup/step-3-database-connection.php89
-rw-r--r--resources/views/setup/step-4-database-name.php63
-rw-r--r--resources/views/setup/step-5-administrator.php83
-rw-r--r--resources/views/setup/step-6-failed.php13
10 files changed, 382 insertions, 5 deletions
diff --git a/resources/views/admin/control-panel.php b/resources/views/admin/control-panel.php
index 3509541877..c1c97f9ac0 100644
--- a/resources/views/admin/control-panel.php
+++ b/resources/views/admin/control-panel.php
@@ -280,8 +280,8 @@
<h2 class="mb-0">
<?= I18N::translate('Modules') ?>
<span class="badge badge-secondary">
- <?= I18N::number(count($all_modules)) ?>
- </span>
+ <?= I18N::number(count($all_modules)) ?>
+ </span>
</h2>
</div>
<div class="card-body">
diff --git a/resources/views/admin/module-components.php b/resources/views/admin/module-components.php
index fd759509b7..07ae235957 100644
--- a/resources/views/admin/module-components.php
+++ b/resources/views/admin/module-components.php
@@ -12,7 +12,7 @@
<h1><?= $page_title ?></h1>
<form action="admin.php" method="post">
- <input type="hidden" name="route" value="update-module-access">
+ <input type="hidden" name="route" value="admin-update-module-access">
<input type="hidden" name="component" value="<?= Html::escape($component) ?>">
<?= Filter::getCsrf() ?>
<table class="table table-bordered" class="row">
diff --git a/resources/views/admin/modules.php b/resources/views/admin/modules.php
index 3c88c81bfe..56731aa0b3 100644
--- a/resources/views/admin/modules.php
+++ b/resources/views/admin/modules.php
@@ -21,7 +21,7 @@
<div class="alert alert-warning" role="alert">
<form action="admin.php" class="form-inline" method="POST">
<?= Filter::getCsrf() ?>
- <input type="hidden" name="route" value="delete-module-settings">
+ <input type="hidden" name="route" value="admin-delete-module-settings">
<input type="hidden" name="module_name" value="<?= $module_name ?>">
<?= I18N::translate('Preferences exist for the module “%s”, but this module no longer exists.', $module_name) ?>
<button type="submit" class="btn btn-secondary text-wrap">
@@ -32,7 +32,7 @@
<?php endforeach ?>
<form action="admin.php" method="POST">
- <input type="hidden" name="route" value="update-module-status">
+ <input type="hidden" name="route" value="admin-update-module-status">
<?= Filter::getCsrf() ?>
<table class="table table-bordered table-hover table-sm table-module-administration" data-info="false" data-paging="false" data-state-save="true">
<caption class="sr-only">
diff --git a/resources/views/layouts/setup.php b/resources/views/layouts/setup.php
new file mode 100644
index 0000000000..19de717569
--- /dev/null
+++ b/resources/views/layouts/setup.php
@@ -0,0 +1,21 @@
+<?php use Fisharebest\Webtrees\I18N; ?>
+<!DOCTYPE html>
+<html <?= I18N::htmlAttributes() ?>>
+ <head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <title><?= I18N::translate('Setup wizard for webtrees') ?></title>
+
+ <link rel="icon" href="favicon.ico" type="image/x-icon">
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
+ </head>
+
+ <body class="container">
+ <h1 class="text-info">
+ <?= I18N::translate('Setup wizard for webtrees') ?>
+ </h1>
+
+ <?= $content ?>
+ </body>
+</html>
diff --git a/resources/views/setup/step-1-language.php b/resources/views/setup/step-1-language.php
new file mode 100644
index 0000000000..d155e7282b
--- /dev/null
+++ b/resources/views/setup/step-1-language.php
@@ -0,0 +1,37 @@
+<?php use Fisharebest\Webtrees\Html; ?>
+<?php use Fisharebest\Webtrees\I18N; ?>
+
+<form method="POST" autocomplete="off">
+ <input name="route" type="hidden" value="setup">
+ <input name="dbhost" type="hidden" value="<?= Html::escape($dbhost) ?>">
+ <input name="dbport" type="hidden" value="<?= Html::escape($dbport) ?>">
+ <input name="dbuser" type="hidden" value="<?= Html::escape($dbuser) ?>">
+ <input name="dbpass" type="hidden" value="<?= Html::escape($dbpass) ?>">
+ <input name="dbname" type="hidden" value="<?= Html::escape($dbname) ?>">
+ <input name="tblpfx" type="hidden" value="<?= Html::escape($tblpfx) ?>">
+ <input name="wtname" type="hidden" value="<?= Html::escape($wtname) ?>">
+ <input name="wtuser" type="hidden" value="<?= Html::escape($wtuser) ?>">
+ <input name="wtpass" type="hidden" value="<?= Html::escape($wtpass) ?>">
+ <input name="wtemail" type="hidden" value="<?= Html::escape($wtemail) ?>">
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="lang">
+ <?= I18N::translate('Language') ?>
+ </label>
+ <div class="col-sm-9">
+ <select class="form-control" id="lang" name="lang">
+ <?php foreach ($locales as $locale): ?>
+ <option value="<?= $locale->languageTag() ?>" <?= $lang === $locale->languageTag() ? 'selected' : '' ?>>
+ <?= $locale->endonym() ?>
+ </option>
+ <?php endforeach ?>
+ </select>
+ </div>
+ </div>
+
+ <hr>
+
+ <button class="btn btn-primary" name="step" type="submit" value="2">
+ <?= I18N::translate('next') ?>
+ </button>
+</form>
diff --git a/resources/views/setup/step-2-server-checks.php b/resources/views/setup/step-2-server-checks.php
new file mode 100644
index 0000000000..12431f085f
--- /dev/null
+++ b/resources/views/setup/step-2-server-checks.php
@@ -0,0 +1,71 @@
+<?php use Fisharebest\Webtrees\Html; ?>
+<?php use Fisharebest\Webtrees\I18N; ?>
+
+<form method="POST" autocomplete="off">
+ <input name="route" type="hidden" value="setup">
+ <input name="lang" type="hidden" value="<?= Html::escape($lang) ?>">
+ <input name="dbhost" type="hidden" value="<?= Html::escape($dbhost) ?>">
+ <input name="dbport" type="hidden" value="<?= Html::escape($dbport) ?>">
+ <input name="dbuser" type="hidden" value="<?= Html::escape($dbuser) ?>">
+ <input name="dbpass" type="hidden" value="<?= Html::escape($dbpass) ?>">
+ <input name="dbname" type="hidden" value="<?= Html::escape($dbname) ?>">
+ <input name="tblpfx" type="hidden" value="<?= Html::escape($tblpfx) ?>">
+ <input name="wtname" type="hidden" value="<?= Html::escape($wtname) ?>">
+ <input name="wtuser" type="hidden" value="<?= Html::escape($wtuser) ?>">
+ <input name="wtpass" type="hidden" value="<?= Html::escape($wtpass) ?>">
+ <input name="wtemail" type="hidden" value="<?= Html::escape($wtemail) ?>">
+
+ <h2><?= I18N::translate('Checking server configuration') ?></h2>
+
+ <?php foreach ($errors as $error): ?>
+ <p class="alert alert-danger"><?= $error ?></p>
+ <?php endforeach ?>
+
+ <?php foreach ($warnings as $warning): ?>
+ <p class="alert alert-warning"><?= $warning ?></p>
+ <?php endforeach ?>
+
+ <?php if (empty($errors) && empty($warnings)): ?>
+ <p>
+ <?= I18N::translate('The server configuration is OK.') ?>
+ </p>
+ <?php endif ?>
+
+ <h2><?= I18N::translate('Checking server capacity') ?></h2>
+
+ <p>
+ <?= I18N::translate('The memory and CPU time requirements depend on the number of individuals in your family tree.') ?>
+ </p>
+ <p>
+ <?= I18N::translate('The following list shows typical requirements.') ?>
+ </p>
+ <p>
+ <?= I18N::translate('Small systems (500 individuals): 16–32 MB, 10–20 seconds') ?>
+ <br>
+ <?= I18N::translate('Medium systems (5,000 individuals): 32–64 MB, 20–40 seconds') ?>
+ <br>
+ <?= I18N::translate('Large systems (50,000 individuals): 64–128 MB, 40–80 seconds') ?>
+ </p>
+
+ <p class="alert alert-<?= $memory_limit < 32 || $cpu_limit > 0 && $cpu_limit < 20 ? 'danger' : 'success' ?>">
+ <?= I18N::translate('This server’s memory limit is %s MB and its CPU time limit is %s seconds.', I18N::number($memory_limit), I18N::number($cpu_limit)) ?>
+ </p>
+
+ <p>
+ <?= I18N::translate('If you try to exceed these limits, you may experience server time-outs and blank pages.') ?>
+ </p>
+
+ <p>
+ <?= I18N::translate('If your server’s security policy permits it, you will be able to request increased memory or CPU time using the webtrees administration page. Otherwise, you will need to contact your server’s administrator.') ?>
+ </p>
+
+ <hr>
+
+ <button class="btn btn-primary" name="step" type="submit" value="3">
+ <?= I18N::translate('next') ?>
+ </button>
+
+ <button class="btn btn-link" name="step" type="submit" value="1">
+ <?= I18N::translate('previous') ?>
+ </button>
+</form>
diff --git a/resources/views/setup/step-3-database-connection.php b/resources/views/setup/step-3-database-connection.php
new file mode 100644
index 0000000000..34e2a9eba3
--- /dev/null
+++ b/resources/views/setup/step-3-database-connection.php
@@ -0,0 +1,89 @@
+<?php use Fisharebest\Webtrees\Html; ?>
+<?php use Fisharebest\Webtrees\I18N; ?>
+
+<form method="POST" autocomplete="off">
+ <input name="route" type="hidden" value="setup">
+ <input name="lang" type="hidden" value="<?= Html::escape($lang) ?>">
+ <input name="dbname" type="hidden" value="<?= Html::escape($dbname) ?>">
+ <input name="tblpfx" type="hidden" value="<?= Html::escape($tblpfx) ?>">
+ <input name="wtname" type="hidden" value="<?= Html::escape($wtname) ?>">
+ <input name="wtuser" type="hidden" value="<?= Html::escape($wtuser) ?>">
+ <input name="wtpass" type="hidden" value="<?= Html::escape($wtpass) ?>">
+ <input name="wtemail" type="hidden" value="<?= Html::escape($wtemail) ?>">
+
+ <h2><?= I18N::translate('Connection to database server') ?></h2>
+
+ <p>
+ <?= I18N::translate('webtrees needs a MySQL database, version %s or later.', '5') ?>
+ </p>
+
+ <p>
+ <?= I18N::translate('Your server’s administrator will provide you with the connection details.') ?>
+ </p>
+
+ <h3><?= I18N::translate('Database connection') ?></h3>
+
+ <?php if ($db_conn_error): ?>
+ <p class="alert alert-danger">
+ <?= $db_error ?>
+ </p>
+ <?php endif ?>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="dbhost">
+ <?= I18N::translate('Server name') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" id="dbhost" name="dbhost" type="text" value="<?= Html::escape($dbhost) ?>" dir="ltr" required>
+ <p class="small text-muted">
+ <?= I18N::translate('Most sites are configured to use localhost. This means that your database runs on the same computer as your web server.') ?>
+ </p>
+ </div>
+ </div>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="dbport">
+ <?= I18N::translate('Port number') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" id="dbport" name="dbport" pattern="\d+" type="text" value="<?= Html::escape($dbport) ?>" dir="ltr" required>
+ <p class="small text-muted">
+ <?= I18N::translate('Most sites are configured to use the default value of 3306.') ?>
+ </p>
+ </div>
+ </div>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="dbuser">
+ <?= I18N::translate('Database user account') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" id="dbuser" name="dbuser" type="text" value="<?= Html::escape($dbuser) ?>" dir="ltr" required>
+ <p class="small text-muted">
+ <?= I18N::translate('This is case sensitive.') ?>
+ </p>
+ </div>
+ </div>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="dbpass">
+ <?= I18N::translate('Database password') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" id="dbpass" name="dbpass" type="password" value="<?= Html::escape($dbpass) ?>" dir="ltr">
+ <p class="small text-muted">
+ <?= I18N::translate('This is case sensitive.') ?>
+ </p>
+ </div>
+ </div>
+
+ <hr>
+
+ <button class="btn btn-primary" name="step" type="submit" value="4">
+ <?= I18N::translate('next') ?>
+ </button>
+
+ <button class="btn btn-link" name="step" type="submit" value="2">
+ <?= I18N::translate('previous') ?>
+ </button>
+</form>
diff --git a/resources/views/setup/step-4-database-name.php b/resources/views/setup/step-4-database-name.php
new file mode 100644
index 0000000000..64ef71e9a4
--- /dev/null
+++ b/resources/views/setup/step-4-database-name.php
@@ -0,0 +1,63 @@
+<?php use Fisharebest\Webtrees\Html; ?>
+<?php use Fisharebest\Webtrees\I18N; ?>
+
+<form method="POST" autocomplete="off">
+ <input name="route" type="hidden" value="setup">
+ <input name="lang" type="hidden" value="<?= Html::escape($lang) ?>">
+ <input name="dbhost" type="hidden" value="<?= Html::escape($dbhost) ?>">
+ <input name="dbport" type="hidden" value="<?= Html::escape($dbport) ?>">
+ <input name="dbuser" type="hidden" value="<?= Html::escape($dbuser) ?>">
+ <input name="dbpass" type="hidden" value="<?= Html::escape($dbpass) ?>">
+ <input name="wtname" type="hidden" value="<?= Html::escape($wtname) ?>">
+ <input name="wtuser" type="hidden" value="<?= Html::escape($wtuser) ?>">
+ <input name="wtpass" type="hidden" value="<?= Html::escape($wtpass) ?>">
+ <input name="wtemail" type="hidden" value="<?= Html::escape($wtemail) ?>">
+
+ <h2>
+ <?= I18N::translate('Database and table names') ?>
+ </h2>
+
+ <p>
+ <?= I18N::translate('A database server can store many separate databases. You need to select an existing database (created by your server’s administrator) or create a new one (if your database user account has sufficient privileges).') ?>
+ </p>
+
+ <?php if ($db_conn_error): ?>
+ <p class="alert alert-danger">
+ <?= $db_error ?>
+ </p>
+ <?php endif ?>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="dbname">
+ <?= I18N::translate('Database name') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" dir="ltr" id="dbname" name="dbname" pattern="^[^`]+$" required type="text" value="<?= Html::escape($dbname) ?>">
+ <p class="small text-muted">
+ <?= I18N::translate('This is case sensitive. If a database with this name does not already exist webtrees will attempt to create one for you. Success will depend on permissions set for your web server, but you will be notified if this fails.') ?>
+ </p>
+ </div>
+ </div>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="tblpfx">
+ <?= I18N::translate('Table prefix') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" dir="ltr" id="tblpfx" name="tblpfx" pattern="^[^`]*$" type="text" value="<?= Html::escape($tblpfx) ?>">
+ <p class="small text-muted">
+ <?= I18N::translate('The prefix is optional, but recommended. By giving the table names a unique prefix you can let several different applications share the same database. “wt_” is suggested, but can be anything you want.') ?>
+ </p>
+ </div>
+ </div>
+
+ <hr>
+
+ <button class="btn btn-primary" name="step" type="submit" value="5">
+ <?= I18N::translate('next') ?>
+ </button>
+
+ <button class="btn btn-link" name="step" type="submit" value="3">
+ <?= I18N::translate('previous') ?>
+ </button>
+</form>
diff --git a/resources/views/setup/step-5-administrator.php b/resources/views/setup/step-5-administrator.php
new file mode 100644
index 0000000000..a9dd3a8c79
--- /dev/null
+++ b/resources/views/setup/step-5-administrator.php
@@ -0,0 +1,83 @@
+<?php use Fisharebest\Webtrees\Html; ?>
+<?php use Fisharebest\Webtrees\I18N; ?>
+
+<form method="POST" autocomplete="off">
+ <input name="route" type="hidden" value="setup">
+ <input name="lang" type="hidden" value="<?= Html::escape($lang) ?>">
+ <input name="dbhost" type="hidden" value="<?= Html::escape($dbhost) ?>">
+ <input name="dbport" type="hidden" value="<?= Html::escape($dbport) ?>">
+ <input name="dbuser" type="hidden" value="<?= Html::escape($dbuser) ?>">
+ <input name="dbpass" type="hidden" value="<?= Html::escape($dbpass) ?>">
+ <input name="dbname" type="hidden" value="<?= Html::escape($dbname) ?>">
+ <input name="tblpfx" type="hidden" value="<?= Html::escape($tblpfx) ?>">
+
+ <h2><?= I18N::translate('Administrator account') ?></h2>
+
+ <p>
+ <?= I18N::translate('You need to set up an administrator account. This account can control all aspects of this webtrees installation. Please choose a strong password.') ?>
+ </p>
+
+ <?php if ($wt_user_error): ?>
+ <p class="alert alert-danger">
+ <?= $wt_user_error ?>
+ </p>
+ <?php endif ?>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="wtname">
+ <?= I18N::translate('Your name') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" dir="ltr" id="wtname" name="wtname" required type="text" value="<?= Html::escape($wtname) ?>">
+ <p class="small text-muted">
+ <?= I18N::translate('This is your real name, as you would like it displayed on screen.') ?>
+ </p>
+ </div>
+ </div>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="wtuser">
+ <?= I18N::translate('Username') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" dir="ltr" id="wtuser" name="wtuser" required type="text" value="<?= Html::escape($wtuser) ?>">
+ <p class="small text-muted">
+ <?= I18N::translate('You will use this to sign in to webtrees.') ?>
+ </p>
+ </div>
+ </div>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="wtpass">
+ <?= I18N::translate('Password') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" dir="ltr" id="wtpass" name="wtpass" pattern=".{6,}" required type="password" value="<?= Html::escape($wtpass) ?>">
+ <p class="small text-muted">
+ <?= I18N::translate('This must be at least six characters long. It is case-sensitive.') ?>
+ </p>
+ </div>
+ </div>
+
+ <div class="row form-group">
+ <label class="col-form-label col-sm-3" for="wtemail">
+ <?= I18N::translate('Email address') ?>
+ </label>
+ <div class="col-sm-9">
+ <input class="form-control" dir="ltr" id="wtemail" name="wtemail" required type="email" value="<?= Html::escape($wtemail) ?>">
+ <p class="small text-muted">
+ <?= I18N::translate('This email address will be used to send password reminders, website notifications, and messages from other family members who are registered on the website.') ?>
+ </p>
+ </div>
+ </div>
+
+ <hr>
+
+ <button class="btn btn-primary" name="step" type="submit" value="6">
+ <?= I18N::translate('next') ?>
+ </button>
+
+ <button class="btn btn-link" name="step" type="submit" value="4">
+ <?= I18N::translate('previous') ?>
+ </button>
+</form>
diff --git a/resources/views/setup/step-6-failed.php b/resources/views/setup/step-6-failed.php
new file mode 100644
index 0000000000..3adf65c035
--- /dev/null
+++ b/resources/views/setup/step-6-failed.php
@@ -0,0 +1,13 @@
+<?php use Fisharebest\Webtrees\I18N; ?>
+
+<p>
+ <?= I18N::translate('An unexpected database error occurred.') ?>
+</p>
+
+<pre>
+ <?= $error ?>
+</pre>
+
+<p>
+ <?= I18N::translate('The webtrees developers would be very interested to learn about this error. If you contact them, they will help you resolve the problem.') ?>
+</p>