xref: /webtrees/resources/views/admin/control-panel.phtml (revision 09fbf3e5f9dc85ceb2f640d1e44009ba64ba2b8d)
1dd6b2bfcSGreg Roach<?php use Fisharebest\Webtrees\I18N; ?>
2*09fbf3e5SGreg Roach<?php use Fisharebest\Webtrees\Module\ModuleConfigInterface;
3*09fbf3e5SGreg Roachuse Fisharebest\Webtrees\Webtrees; ?>
4dd6b2bfcSGreg Roach
5dd6b2bfcSGreg Roach<h1><?= $title ?></h1>
6dd6b2bfcSGreg Roach
7dd6b2bfcSGreg Roach<!-- WEBSITE / WEBTREES -->
8dd6b2bfcSGreg Roach<div class="card mb-4">
9dd6b2bfcSGreg Roach    <div class="card-header">
10dd6b2bfcSGreg Roach        <h2 class="mb-0">
11dd6b2bfcSGreg Roach            <?= I18N::translate('Website') ?>
12dd6b2bfcSGreg Roach            <span class="badge badge-secondary">
138d0ebef0SGreg Roach                <?= e(Webtrees::VERSION) ?>
14dd6b2bfcSGreg Roach            </span>
15dd6b2bfcSGreg Roach        </h2>
16dd6b2bfcSGreg Roach    </div>
17dd6b2bfcSGreg Roach    <div class="card-body">
18b7059dccSGreg Roach        <?php foreach ($server_errors as $server_error) : ?>
19b7059dccSGreg Roach            <p class="alert alert-danger"><?= $server_error ?></p>
20b7059dccSGreg Roach        <?php endforeach ?>
21b7059dccSGreg Roach
22dd6b2bfcSGreg Roach        <?php foreach ($server_warnings as $server_warning) : ?>
23dd6b2bfcSGreg Roach            <p class="alert alert-warning"><?= $server_warning ?></p>
24dd6b2bfcSGreg Roach        <?php endforeach ?>
25dd6b2bfcSGreg Roach
26dd6b2bfcSGreg Roach        <p class="card-text">
27dd6b2bfcSGreg Roach            <?= /* I18N: %s is a URL/link to the project website */
28dd6b2bfcSGreg Roach            I18N::translate('Support and documentation can be found at %s.', '<a href="https://webtrees.net/">webtrees.net</a>') ?>
29dd6b2bfcSGreg Roach        </p>
30dd6b2bfcSGreg Roach        <p class="card-text ">
31dd6b2bfcSGreg Roach            <?php if ($latest_version === '') : ?>
32dd6b2bfcSGreg Roach                <?= I18N::translate('No upgrade information is available.') ?>
338d0ebef0SGreg Roach            <?php elseif (version_compare(Webtrees::VERSION, $latest_version) < 0) : ?>
34dd6b2bfcSGreg Roach                <?= I18N::translate('A new version of webtrees is available.') ?>
35dd6b2bfcSGreg Roach                <a href="<?= e(route('upgrade')) ?>" class="error">
36dd6b2bfcSGreg Roach                    <?= /* I18N: %s is a version number */
37dd6b2bfcSGreg Roach                    I18N::translate('Upgrade to webtrees %s.', e($latest_version)) ?>
38dd6b2bfcSGreg Roach                </a>
39dd6b2bfcSGreg Roach            <?php else : ?>
40dd6b2bfcSGreg Roach                <?= I18N::translate('This is the latest version of webtrees. No upgrade is available.') ?>
41dd6b2bfcSGreg Roach            <?php endif ?>
42dd6b2bfcSGreg Roach        </p>
43dd6b2bfcSGreg Roach
44dd6b2bfcSGreg Roach        <div class="row">
45dd6b2bfcSGreg Roach            <div class="col-sm-6">
46dd6b2bfcSGreg Roach                <ul class="fa-ul">
47dd6b2bfcSGreg Roach                    <li>
48dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
49dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-preferences')) ?>">
50dd6b2bfcSGreg Roach                            <?= I18N::translate('Website preferences') ?>
51dd6b2bfcSGreg Roach                        </a>
52dd6b2bfcSGreg Roach                    </li>
53dd6b2bfcSGreg Roach                    <li>
54dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
55dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-mail')) ?>">
56dd6b2bfcSGreg Roach                            <?= I18N::translate('Sending email') ?>
57dd6b2bfcSGreg Roach                        </a>
58dd6b2bfcSGreg Roach                    </li>
59dd6b2bfcSGreg Roach                    <li>
60dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
61dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-registration')) ?>">
62dd6b2bfcSGreg Roach                            <?= I18N::translate('Sign-in and registration') ?>
63dd6b2bfcSGreg Roach                        </a>
64dd6b2bfcSGreg Roach                    </li>
65dd6b2bfcSGreg Roach                    <li>
66dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
67dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-languages')) ?>">
68dd6b2bfcSGreg Roach                            <?= I18N::translate('Languages') ?>
69dd6b2bfcSGreg Roach                        </a>
70dd6b2bfcSGreg Roach                    </li>
71dd6b2bfcSGreg Roach                </ul>
72dd6b2bfcSGreg Roach            </div>
73dd6b2bfcSGreg Roach            <div class="col-sm-6">
74dd6b2bfcSGreg Roach                <ul class="fa-ul">
75dd6b2bfcSGreg Roach                    <li>
76dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
77dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-logs')) ?>">
78dd6b2bfcSGreg Roach                            <?= I18N::translate('Website logs') ?>
79dd6b2bfcSGreg Roach                        </a>
80dd6b2bfcSGreg Roach                    </li>
81dd6b2bfcSGreg Roach                    <li>
82dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
83dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-clean-data')) ?>">
84dd6b2bfcSGreg Roach                            <?= I18N::translate('Clean up data folder') ?>
85dd6b2bfcSGreg Roach                        </a>
86dd6b2bfcSGreg Roach                    </li>
87dd6b2bfcSGreg Roach                    <li>
88dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
89dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-information')) ?>">
90dd6b2bfcSGreg Roach                            <?= I18N::translate('Server information') ?>
91dd6b2bfcSGreg Roach                        </a>
92dd6b2bfcSGreg Roach                    </li>
93dd6b2bfcSGreg Roach                </ul>
94dd6b2bfcSGreg Roach            </div>
95dd6b2bfcSGreg Roach        </div>
96dd6b2bfcSGreg Roach    </div>
97dd6b2bfcSGreg Roach</div>
98dd6b2bfcSGreg Roach
99dd6b2bfcSGreg Roach<!-- FAMILY TREES -->
1004e73f0bdSGreg Roach<div class="card mb-4 <?= array_sum($changes) ? 'card-outline-danger' : '' ?>">
101dd6b2bfcSGreg Roach    <div class="card-header">
102dd6b2bfcSGreg Roach        <h2 class="mb-0">
103dd6b2bfcSGreg Roach            <?= I18N::translate('Family trees') ?>
104dd6b2bfcSGreg Roach            <span class="badge badge-secondary">
105dd6b2bfcSGreg Roach                    <?= I18N::number(count($all_trees)) ?>
106dd6b2bfcSGreg Roach                </span>
107dd6b2bfcSGreg Roach        </h2>
108dd6b2bfcSGreg Roach    </div>
109dd6b2bfcSGreg Roach    <div class="card-body">
110dd6b2bfcSGreg Roach        <table class="table table-sm">
111dd6b2bfcSGreg Roach            <caption class="sr-only">
112dd6b2bfcSGreg Roach                <?= I18N::translate('Family trees') ?>
113dd6b2bfcSGreg Roach            </caption>
114dd6b2bfcSGreg Roach            <thead>
115dd6b2bfcSGreg Roach                <tr>
116dd6b2bfcSGreg Roach                    <th><?= I18N::translate('Family tree') ?></th>
117dd6b2bfcSGreg Roach                    <th><span class="sr-only"><?= I18N::translate('Manage family trees') ?></span></th>
118dd6b2bfcSGreg Roach                    <th class="text-right"><?= I18N::translate('Pending changes') ?></th>
119dd6b2bfcSGreg Roach                    <th class="d-none d-sm-table-cell text-right"><?= I18N::translate('Individuals') ?></th>
120dd6b2bfcSGreg Roach                    <th class="d-none d-lg-table-cell text-right"><?= I18N::translate('Families') ?></th>
121dd6b2bfcSGreg Roach                    <th class="d-none d-sm-table-cell text-right"><?= I18N::translate('Sources') ?></th>
122dd6b2bfcSGreg Roach                    <th class="d-none d-lg-table-cell text-right"><?= I18N::translate('Repositories') ?></th>
123dd6b2bfcSGreg Roach                    <th class="d-none d-sm-table-cell text-right"><?= I18N::translate('Media') ?></th>
124dd6b2bfcSGreg Roach                    <th class="d-none d-lg-table-cell text-right"><?= I18N::translate('Notes') ?></th>
125dd6b2bfcSGreg Roach                </tr>
126dd6b2bfcSGreg Roach            </thead>
127dd6b2bfcSGreg Roach            <tbody>
128dd6b2bfcSGreg Roach                <?= view('admin/control-panel-tree-list', [
129dd6b2bfcSGreg Roach                    'all_trees'    => $all_trees,
130dd6b2bfcSGreg Roach                    'changes'      => $changes,
131dd6b2bfcSGreg Roach                    'individuals'  => $individuals,
132dd6b2bfcSGreg Roach                    'families'     => $families,
133dd6b2bfcSGreg Roach                    'sources'      => $sources,
134dd6b2bfcSGreg Roach                    'repositories' => $repositories,
135dd6b2bfcSGreg Roach                    'media'        => $media,
136dd6b2bfcSGreg Roach                    'notes'        => $notes,
137dd6b2bfcSGreg Roach                ]); ?>
138dd6b2bfcSGreg Roach            </tbody>
139dd6b2bfcSGreg Roach            <tfoot>
140dd6b2bfcSGreg Roach                <tr>
141dd6b2bfcSGreg Roach                    <th scope="row">
142dd6b2bfcSGreg Roach                        <?= I18N::translate('Total') ?>
143dd6b2bfcSGreg Roach                    </th>
144dd6b2bfcSGreg Roach                    <td></td>
145dd6b2bfcSGreg Roach                    <td class="text-right">
146dd6b2bfcSGreg Roach                        <?= I18N::number(array_sum($changes)) ?>
147dd6b2bfcSGreg Roach                    </td>
148dd6b2bfcSGreg Roach                    <td class="d-none d-sm-table-cell text-right">
1492078eafaSGreg Roach                        <?= I18N::number($individuals->sum()) ?>
150dd6b2bfcSGreg Roach                    </td>
151dd6b2bfcSGreg Roach                    <td class="d-none d-lg-table-cell text-right">
1522078eafaSGreg Roach                        <?= I18N::number($families->sum()) ?>
153dd6b2bfcSGreg Roach                    </td>
154dd6b2bfcSGreg Roach                    <td class="d-none d-sm-table-cell text-right">
1552078eafaSGreg Roach                        <?= I18N::number($sources->sum()) ?>
156dd6b2bfcSGreg Roach                    </td>
157dd6b2bfcSGreg Roach                    <td class="d-none d-lg-table-cell text-right">
1582078eafaSGreg Roach                        <?= I18N::number($repositories->sum()) ?>
159dd6b2bfcSGreg Roach                    </td>
160dd6b2bfcSGreg Roach                    <td class="d-none d-sm-table-cell text-right">
1612078eafaSGreg Roach                        <?= I18N::number($media->sum()) ?>
162dd6b2bfcSGreg Roach                    </td>
163dd6b2bfcSGreg Roach                    <td class="d-none d-lg-table-cell text-right">
1642078eafaSGreg Roach                        <?= I18N::number($notes->sum()) ?>
165dd6b2bfcSGreg Roach                    </td>
166dd6b2bfcSGreg Roach                </tr>
167dd6b2bfcSGreg Roach            </tfoot>
168dd6b2bfcSGreg Roach        </table>
169dd6b2bfcSGreg Roach
170dd6b2bfcSGreg Roach        <ul class="fa-ul">
171dd6b2bfcSGreg Roach            <li>
172dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
173bf57b580SGreg Roach                <a href="<?= e(route('admin-trees')) ?>">
174dd6b2bfcSGreg Roach                    <?= I18N::translate('Manage family trees') ?>
175dd6b2bfcSGreg Roach                </a>
176dd6b2bfcSGreg Roach            </li>
177dd6b2bfcSGreg Roach            <li>
178dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
179dd6b2bfcSGreg Roach                <a href="<?= e(route('tree-page-default-edit')) ?>">
180dd6b2bfcSGreg Roach                    <?= I18N::translate('Set the default blocks for new family trees') ?>
181dd6b2bfcSGreg Roach                </a>
182dd6b2bfcSGreg Roach            </li>
183dd6b2bfcSGreg Roach            <?php if (count($all_trees) > 1) : ?>
184dd6b2bfcSGreg Roach                <li>
185dd6b2bfcSGreg Roach                    <span class="fa-li"><?= view('icons/preferences') ?></span>
186dd6b2bfcSGreg Roach                    <a href="<?= e(route('admin-trees-merge')) ?>">
187dd6b2bfcSGreg Roach                        <?= I18N::translate('Merge family trees') ?>
188dd6b2bfcSGreg Roach                    </a>
189dd6b2bfcSGreg Roach                </li>
190dd6b2bfcSGreg Roach            <?php endif ?>
191dd6b2bfcSGreg Roach        </ul>
192dd6b2bfcSGreg Roach    </div>
193dd6b2bfcSGreg Roach</div>
194dd6b2bfcSGreg Roach
195dd6b2bfcSGreg Roach<!-- USERS -->
196dd6b2bfcSGreg Roach<div class="card mb-4 <?= $unapproved || $unverified ? 'card-outline-danger' : '' ?>">
197dd6b2bfcSGreg Roach    <div class="card-header">
198dd6b2bfcSGreg Roach        <h2 class="mb-0">
199dd6b2bfcSGreg Roach            <?= I18N::translate('Users') ?>
200dd6b2bfcSGreg Roach            <span class="badge badge-secondary">
201dd6b2bfcSGreg Roach                    <?= I18N::number(count($all_users)) ?>
202dd6b2bfcSGreg Roach                </span>
203dd6b2bfcSGreg Roach        </h2>
204dd6b2bfcSGreg Roach    </div>
205dd6b2bfcSGreg Roach    <div class="card-body">
206dd6b2bfcSGreg Roach        <dl class="row">
207dd6b2bfcSGreg Roach            <?php foreach ([I18N::translate('Administrators') => $administrators, I18N::translate('Managers') => $managers, I18N::translate('Moderators') => $moderators, I18N::translate('Not verified by the user') => $unverified, I18N::translate('Not approved by an administrator') => $unapproved] as $label => $list) : ?>
208dd6b2bfcSGreg Roach                <?php if (!empty($list)) : ?>
209dd6b2bfcSGreg Roach                    <dt class="col-sm-3">
210dd6b2bfcSGreg Roach                        <?= $label ?>
211dd6b2bfcSGreg Roach                    </dt>
212dd6b2bfcSGreg Roach                    <dd class="col-sm-9">
213dd6b2bfcSGreg Roach                        <?php foreach ($list as $n => $user) : ?>
214dd6b2bfcSGreg Roach                            <?= $n ? I18N::$list_separator : '' ?>
215895230eeSGreg Roach                            <a href="<?= e(route('admin-users-edit', ['user_id' => $user->id()])) ?>" dir="auto">
216e5a6b4d4SGreg Roach                                <?= e($user->realName()) ?>
217dd6b2bfcSGreg Roach                            </a>
218dd6b2bfcSGreg Roach                        <?php endforeach ?>
219dd6b2bfcSGreg Roach                    </dd>
220dd6b2bfcSGreg Roach                <?php endif ?>
221dd6b2bfcSGreg Roach            <?php endforeach ?>
222dd6b2bfcSGreg Roach        </dl>
223dd6b2bfcSGreg Roach
224dd6b2bfcSGreg Roach        <div class="row">
225dd6b2bfcSGreg Roach            <div class="col-sm-6">
226dd6b2bfcSGreg Roach                <ul class="fa-ul">
227dd6b2bfcSGreg Roach                    <li>
228dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
229bf57b580SGreg Roach                        <a href="<?= e(route('admin-users')) ?>">
230dd6b2bfcSGreg Roach                            <?= I18N::translate('User administration') ?>
231dd6b2bfcSGreg Roach                        </a>
232dd6b2bfcSGreg Roach                    </li>
233dd6b2bfcSGreg Roach                    <li>
234dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
235bf57b580SGreg Roach                        <a href="<?= e(route('admin-users-create')) ?>">
236dd6b2bfcSGreg Roach                            <?= I18N::translate('Add a user') ?>
237dd6b2bfcSGreg Roach                        </a>
238dd6b2bfcSGreg Roach                    </li>
239dd6b2bfcSGreg Roach                    <li>
240dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
241dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-users-cleanup')) ?>">
242dd6b2bfcSGreg Roach                            <?= I18N::translate('Delete inactive users') ?>
243dd6b2bfcSGreg Roach                        </a>
244dd6b2bfcSGreg Roach                    </li>
245dd6b2bfcSGreg Roach                    <li>
246dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
247dd6b2bfcSGreg Roach                        <a href="<?= e(route('user-page-default-edit')) ?>">
248dd6b2bfcSGreg Roach                            <?= I18N::translate('Set the default blocks for new users') ?>
249dd6b2bfcSGreg Roach                        </a>
250dd6b2bfcSGreg Roach                    </li>
251dd6b2bfcSGreg Roach                </ul>
252dd6b2bfcSGreg Roach            </div>
253dd6b2bfcSGreg Roach            <div class="col-sm-6">
254dd6b2bfcSGreg Roach                <ul class="fa-ul">
255dd6b2bfcSGreg Roach                    <li>
256dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/email') ?></span>
257dd6b2bfcSGreg Roach                        <a href="<?= e(route('broadcast', ['to' => 'all'])) ?>">
258dd6b2bfcSGreg Roach                            <?= I18N::translate('Send a message to all users') ?>
259dd6b2bfcSGreg Roach                        </a>
260dd6b2bfcSGreg Roach                    </li>
261dd6b2bfcSGreg Roach                    <li>
262dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/email') ?></span>
263dd6b2bfcSGreg Roach                        <a href="<?= e(route('broadcast', ['to' => 'never_logged'])) ?>">
264dd6b2bfcSGreg Roach                            <?= I18N::translate('Send a message to users who have never signed in') ?>
265dd6b2bfcSGreg Roach                        </a>
266dd6b2bfcSGreg Roach                    </li>
267dd6b2bfcSGreg Roach                    <li>
268dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/email') ?></span>
269dd6b2bfcSGreg Roach                        <a href="<?= e(route('broadcast', ['to' => 'last_6mo'])) ?>">
270dd6b2bfcSGreg Roach                            <?= I18N::translate('Send a message to users who have not signed in for 6 months') ?>
271dd6b2bfcSGreg Roach                        </a>
272dd6b2bfcSGreg Roach                    </li>
273dd6b2bfcSGreg Roach                </ul>
274dd6b2bfcSGreg Roach            </div>
275dd6b2bfcSGreg Roach        </div>
276dd6b2bfcSGreg Roach    </div>
277dd6b2bfcSGreg Roach</div>
278dd6b2bfcSGreg Roach
279dd6b2bfcSGreg Roach<!-- MODULES -->
280dd6b2bfcSGreg Roach<div class="card mb-4">
281dd6b2bfcSGreg Roach    <div class="card-header">
282dd6b2bfcSGreg Roach        <h2 class="mb-0">
283dd6b2bfcSGreg Roach            <?= I18N::translate('Modules') ?>
2849d627a9eSGreg Roach            <?= view('components/badge', ['count' => $all_modules_enabled->count(), 'total' => $all_modules_disabled->count(), 'context' => 'secondary']) ?>
285dd6b2bfcSGreg Roach        </h2>
286dd6b2bfcSGreg Roach    </div>
2870cb66f86SGreg Roach
288dd6b2bfcSGreg Roach    <div class="card-body">
2890cb66f86SGreg Roach        <ul class="fa-ul">
2900cb66f86SGreg Roach            <li>
2919d627a9eSGreg Roach                <span class="fa-li"><?= view('icons/module') ?></span>
2920cb66f86SGreg Roach                <a href="<?= e(route('modules')) ?>">
2939d627a9eSGreg Roach                    <?= I18N::translate('All modules') ?>
2940cb66f86SGreg Roach                </a>
2959d627a9eSGreg Roach                <?= view('components/badge', ['count' => $all_modules_enabled->count(), 'total' => $all_modules_disabled->count(), 'context' => 'primary']) ?>
2960cb66f86SGreg Roach            </li>
2970cb66f86SGreg Roach        </ul>
2980cb66f86SGreg Roach
299dd6b2bfcSGreg Roach        <div class="row">
300dd6b2bfcSGreg Roach            <div class="col-sm-6">
3019d627a9eSGreg Roach                <h3>
3029d627a9eSGreg Roach                    <?= I18N::translate('Genealogy') ?>
3039d627a9eSGreg Roach                </h3>
304*09fbf3e5SGreg Roach
305dd6b2bfcSGreg Roach                <ul class="fa-ul">
306dd6b2bfcSGreg Roach                    <li>
307dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/menu') ?></span>
3080cb66f86SGreg Roach                        <a href="<?= e(route('menus')) ?>">
309dd6b2bfcSGreg Roach                            <?= I18N::translate('Menus') ?>
310dd6b2bfcSGreg Roach                        </a>
3119d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $menu_modules_enabled->count(), 'total' => $menu_modules_disabled->count(), 'context' => 'primary']) ?>
312dd6b2bfcSGreg Roach                    </li>
313dd6b2bfcSGreg Roach                    <li>
314dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/chart') ?></span>
3150cb66f86SGreg Roach                        <a href="<?= e(route('charts')) ?>">
316dd6b2bfcSGreg Roach                            <?= I18N::translate('Charts') ?>
317dd6b2bfcSGreg Roach                        </a>
3189d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $chart_modules_enabled->count(), 'total' => $chart_modules_disabled->count(), 'context' => 'primary']) ?>
319dd6b2bfcSGreg Roach                    </li>
320dd6b2bfcSGreg Roach                    <li>
32167992b6aSRichard Cissee                        <span class="fa-li"><?= view('icons/list') ?></span>
32267992b6aSRichard Cissee                        <a href="<?= e(route('lists')) ?>">
32367992b6aSRichard Cissee                            <?= I18N::translate('Lists') ?>
32467992b6aSRichard Cissee                        </a>
3259d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $list_modules_enabled->count(), 'total' => $list_modules_disabled->count(), 'context' => 'primary']) ?>
32667992b6aSRichard Cissee                    </li>
32767992b6aSRichard Cissee                    <li>
328dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/report') ?></span>
3290cb66f86SGreg Roach                        <a href="<?= e(route('reports')) ?>">
330dd6b2bfcSGreg Roach                            <?= I18N::translate('Reports') ?>
331dd6b2bfcSGreg Roach                        </a>
3329d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $report_modules_enabled->count(), 'total' => $report_modules_disabled->count(), 'context' => 'primary']) ?>
333dd6b2bfcSGreg Roach                    </li>
3349d627a9eSGreg Roach                </ul>
335*09fbf3e5SGreg Roach
3369d627a9eSGreg Roach                <h3>
3379d627a9eSGreg Roach                    <?= I18N::translate('Website') ?>
3389d627a9eSGreg Roach                </h3>
339*09fbf3e5SGreg Roach
3409d627a9eSGreg Roach                <ul class="fa-ul">
34133c34396SGreg Roach                    <li>
34233c34396SGreg Roach                        <span class="fa-li"><?= view('icons/footer') ?></span>
34333c34396SGreg Roach                        <a href="<?= e(route('footers')) ?>">
34433c34396SGreg Roach                            <?= I18N::translate('Footers') ?>
34533c34396SGreg Roach                        </a>
3469d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $footer_modules_enabled->count(), 'total' => $footer_modules_disabled->count(), 'context' => 'primary']) ?>
3478e5c5efeSGreg Roach                    </li>
3488e5c5efeSGreg Roach                    <li>
3498e5c5efeSGreg Roach                        <span class="fa-li"><?= view('icons/analytics') ?></span>
3508e5c5efeSGreg Roach                        <a href="<?= e(route('analytics')) ?>">
3518e5c5efeSGreg Roach                            <?= I18N::translate('Tracking and analytics') ?>
3528e5c5efeSGreg Roach                        </a>
3539d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $analytics_modules_enabled->count(), 'total' => $analytics_modules_disabled->count(), 'context' => 'primary']) ?>
35433c34396SGreg Roach                    </li>
35511eb8581SGreg Roach                    <li>
35611eb8581SGreg Roach                        <span class="fa-li"><?= view('icons/theme') ?></span>
35711eb8581SGreg Roach                        <a href="<?= e(route('themes')) ?>">
35811eb8581SGreg Roach                            <?= I18N::translate('Themes') ?>
35911eb8581SGreg Roach                        </a>
3609d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $theme_modules_enabled->count(), 'total' => $theme_modules_disabled->count(), 'context' => 'primary']) ?>
36111eb8581SGreg Roach                    </li>
36211eb8581SGreg Roach                    <li>
36311eb8581SGreg Roach                        <span class="fa-li"><?= view('icons/language') ?></span>
36411eb8581SGreg Roach                        <a href="<?= e(route('languages')) ?>">
36511eb8581SGreg Roach                            <?= I18N::translate('Languages') ?>
36611eb8581SGreg Roach                        </a>
3679d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $language_modules_enabled->count(), 'total' => $language_modules_disabled->count(), 'context' => 'primary']) ?>
36811eb8581SGreg Roach                    </li>
369dd6b2bfcSGreg Roach                </ul>
370*09fbf3e5SGreg Roach
371*09fbf3e5SGreg Roach                <h3>
372*09fbf3e5SGreg Roach                    <?= I18N::translate('Home page') ?>
373*09fbf3e5SGreg Roach                </h3>
374*09fbf3e5SGreg Roach
375*09fbf3e5SGreg Roach                <ul class="fa-ul">
376*09fbf3e5SGreg Roach                    <li>
377*09fbf3e5SGreg Roach                        <span class="fa-li"><?= view('icons/block') ?></span>
378*09fbf3e5SGreg Roach                        <a href="<?= e(route('blocks')) ?>">
379*09fbf3e5SGreg Roach                            <?= I18N::translate('Blocks') ?>
380*09fbf3e5SGreg Roach                        </a>
381*09fbf3e5SGreg Roach                        <?= view('components/badge', ['count' => $block_modules_enabled->count(), 'total' => $block_modules_disabled->count(), 'context' => 'primary']) ?>
382*09fbf3e5SGreg Roach                    </li>
383*09fbf3e5SGreg Roach                </ul>
384dd6b2bfcSGreg Roach            </div>
385*09fbf3e5SGreg Roach
386dd6b2bfcSGreg Roach            <div class="col-sm-6">
3879d627a9eSGreg Roach                <h3>
3889d627a9eSGreg Roach                    <?= I18N::translate('Individual page') ?>
3899d627a9eSGreg Roach                </h3>
390*09fbf3e5SGreg Roach
3919d627a9eSGreg Roach                <ul class="fa-ul">
3929d627a9eSGreg Roach                    <li>
3939d627a9eSGreg Roach                        <span class="fa-li"><?= view('icons/tab') ?></span>
3949d627a9eSGreg Roach                        <a href="<?= e(route('tabs')) ?>">
3959d627a9eSGreg Roach                            <?= I18N::translate('Tabs') ?>
3969d627a9eSGreg Roach                            <?= view('components/badge', ['count' => $tab_modules_enabled->count(), 'total' => $tab_modules_disabled->count(), 'context' => 'primary']) ?>
3979d627a9eSGreg Roach                        </a>
3989d627a9eSGreg Roach                    </li>
3999d627a9eSGreg Roach                    <li>
4009d627a9eSGreg Roach                        <span class="fa-li"><?= view('icons/sidebar') ?></span>
4019d627a9eSGreg Roach                        <a href="<?= e(route('sidebars')) ?>">
4029d627a9eSGreg Roach                            <?= I18N::translate('Sidebars') ?>
4039d627a9eSGreg Roach                        </a>
4049d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $sidebar_modules_enabled->count(), 'total' => $sidebar_modules_disabled->count(), 'context' => 'primary']) ?>
4059d627a9eSGreg Roach                    </li>
4069d627a9eSGreg Roach                    <li>
4079d627a9eSGreg Roach                        <span class="fa-li"><?= view('icons/history') ?></span>
4089d627a9eSGreg Roach                        <a href="<?= e(route('history')) ?>">
4099d627a9eSGreg Roach                            <?= I18N::translate('Historic events') ?>
4109d627a9eSGreg Roach                        </a>
4119d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $history_modules_enabled->count(), 'total' => $history_modules_disabled->count(), 'context' => 'primary']) ?>
4129d627a9eSGreg Roach                    </li>
4139d627a9eSGreg Roach                </ul>
414*09fbf3e5SGreg Roach
4159d627a9eSGreg Roach                <h3>
4169d627a9eSGreg Roach                    <?= I18N::translate('Other') ?>
4179d627a9eSGreg Roach                </h3>
418*09fbf3e5SGreg Roach
419dd6b2bfcSGreg Roach                <ul class="fa-ul">
420*09fbf3e5SGreg Roach                    <?php foreach ($other_modules as $module) : ?>
421dd6b2bfcSGreg Roach                        <li>
422*09fbf3e5SGreg Roach                            <span class="fa-li"><?= view('icons/module') ?></span>
423*09fbf3e5SGreg Roach                            <?php if ($module->isEnabled() && $module instanceof ModuleConfigInterface): ?>
424dd6b2bfcSGreg Roach                                <a href="<?= e($module->getConfigLink()) ?>">
42549a243cbSGreg Roach                                    <?= $module->title() ?>
426*09fbf3e5SGreg Roach                                    <span class="fa"><?= view('icons/preferences') ?></span>
427dd6b2bfcSGreg Roach                                </a>
428*09fbf3e5SGreg Roach                            <?php elseif ($module->isEnabled()) :?>
429*09fbf3e5SGreg Roach                                <?= $module->title() ?>
430*09fbf3e5SGreg Roach                            <?php else :?>
431*09fbf3e5SGreg Roach                                <del class="text-muted"><?= $module->title() ?></del>
432*09fbf3e5SGreg Roach                            <?php endif ?>
433dd6b2bfcSGreg Roach                        </li>
434dd6b2bfcSGreg Roach                    <?php endforeach ?>
435dd6b2bfcSGreg Roach                </ul>
436dd6b2bfcSGreg Roach            </div>
437dd6b2bfcSGreg Roach        </div>
438dd6b2bfcSGreg Roach    </div>
439dd6b2bfcSGreg Roach</div>
440dd6b2bfcSGreg Roach
441dd6b2bfcSGreg Roach<!-- MEDIA -->
442dd6b2bfcSGreg Roach<div class="card mb-4">
443dd6b2bfcSGreg Roach    <div class="card-header">
444dd6b2bfcSGreg Roach        <h2 class="mb-0">
445dd6b2bfcSGreg Roach            <?= I18N::translate('Media') ?>
446dd6b2bfcSGreg Roach        </h2>
447dd6b2bfcSGreg Roach    </div>
448dd6b2bfcSGreg Roach    <div class="card-body">
449dd6b2bfcSGreg Roach        <ul class="fa-ul">
450dd6b2bfcSGreg Roach            <li>
451dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
452dd6b2bfcSGreg Roach                <a href="<?= e(route('admin-media')) ?>">
453dd6b2bfcSGreg Roach                    <?= I18N::translate('Manage media') ?>
454dd6b2bfcSGreg Roach                </a>
455dd6b2bfcSGreg Roach            </li>
456dd6b2bfcSGreg Roach            <li>
457dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
458dd6b2bfcSGreg Roach                <a href="<?= e(route('admin-media-upload')) ?>">
459dd6b2bfcSGreg Roach                    <?= I18N::translate('Upload media files') ?>
460dd6b2bfcSGreg Roach                </a>
461dd6b2bfcSGreg Roach            </li>
462dd6b2bfcSGreg Roach            <li>
463dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
464dd6b2bfcSGreg Roach                <a href="<?= e(route('admin-fix-level-0-media')) ?>">
465dd6b2bfcSGreg Roach                    <?= I18N::translate('Link media objects to facts and events') ?>
466dd6b2bfcSGreg Roach                </a>
467dd6b2bfcSGreg Roach            </li>
468dd6b2bfcSGreg Roach            <li>
469dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
470dd6b2bfcSGreg Roach                <a href="<?= e(route('admin-webtrees1-thumbs')) ?>">
471dd6b2bfcSGreg Roach                    <?= I18N::translate('Import custom thumbnails from webtrees version 1') ?>
472dd6b2bfcSGreg Roach                </a>
473dd6b2bfcSGreg Roach            </li>
474dd6b2bfcSGreg Roach        </ul>
475dd6b2bfcSGreg Roach    </div>
476dd6b2bfcSGreg Roach</div>
477dd6b2bfcSGreg Roach
478dd6b2bfcSGreg Roach<!-- MAPS -->
479dd6b2bfcSGreg Roach<div class="card mb-4">
480dd6b2bfcSGreg Roach    <div class="card-header">
481dd6b2bfcSGreg Roach        <h2 class="mb-0">
482dd6b2bfcSGreg Roach            <?= I18N::translate('Map') ?>
483dd6b2bfcSGreg Roach        </h2>
484dd6b2bfcSGreg Roach    </div>
485dd6b2bfcSGreg Roach    <div class="card-body">
486dd6b2bfcSGreg Roach        <div class="row">
487dd6b2bfcSGreg Roach            <div class="col-sm-6">
488dd6b2bfcSGreg Roach                <ul class="fa-ul">
489dd6b2bfcSGreg Roach                    <li>
490dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/location') ?></span>
491dd6b2bfcSGreg Roach                        <a href="<?= e(route('map-data')) ?>">
492dd6b2bfcSGreg Roach                            <?= I18N::translate('Geographic data') ?>
493dd6b2bfcSGreg Roach                        </a>
494dd6b2bfcSGreg Roach                    </li>
495dd6b2bfcSGreg Roach                </ul>
496dd6b2bfcSGreg Roach            </div>
497dd6b2bfcSGreg Roach            <div class="col-sm-6">
498dd6b2bfcSGreg Roach                <ul class="fa-ul">
499dd6b2bfcSGreg Roach                    <li>
500dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/map') ?></span>
501dd6b2bfcSGreg Roach                        <a href="<?= e(route('map-provider')) ?>">
502dd6b2bfcSGreg Roach                            <?= I18N::translate('Map provider') ?>
503dd6b2bfcSGreg Roach                        </a>
504dd6b2bfcSGreg Roach                    </li>
505dd6b2bfcSGreg Roach                </ul>
506dd6b2bfcSGreg Roach            </div>
507dd6b2bfcSGreg Roach        </div>
508dd6b2bfcSGreg Roach    </div>
509dd6b2bfcSGreg Roach</div>
510dd6b2bfcSGreg Roach
511dd6b2bfcSGreg Roach<!-- OLD FILES -->
512dd6b2bfcSGreg Roach<?php if (!empty($files_to_delete)) : ?>
513dd6b2bfcSGreg Roach    <div class="card mb-4 card-outline-danger">
514dd6b2bfcSGreg Roach        <div class="card-header">
515dd6b2bfcSGreg Roach            <h2 class="mb-0">
516dd6b2bfcSGreg Roach                <?= I18N::translate('Old files found') ?>
517dd6b2bfcSGreg Roach            </h2>
518dd6b2bfcSGreg Roach        </div>
519dd6b2bfcSGreg Roach        <div class="card-body">
520dd6b2bfcSGreg Roach            <p>
521dd6b2bfcSGreg Roach                <?= I18N::translate('Files have been found from a previous version of webtrees. Old files can sometimes be a security risk. You should delete them.') ?>
522dd6b2bfcSGreg Roach            </p>
523dd6b2bfcSGreg Roach            <ul class="list-unstyled">
524dd6b2bfcSGreg Roach                <?php foreach ($files_to_delete as $file_to_delete) : ?>
525dd6b2bfcSGreg Roach                    <li dir="ltr"><code><?= e($file_to_delete) ?></code></li>
526dd6b2bfcSGreg Roach                <?php endforeach ?>
527dd6b2bfcSGreg Roach            </ul>
528dd6b2bfcSGreg Roach        </div>
529dd6b2bfcSGreg Roach    </div>
530dd6b2bfcSGreg Roach<?php endif ?>
531