xref: /webtrees/resources/views/admin/control-panel.phtml (revision 4ebbf4ab91d79576e8ebdc761df5c39dec8019a3)
1beefaa8eSGreg Roach<?php
2beefaa8eSGreg Roach
3beefaa8eSGreg Roachuse Fisharebest\Webtrees\I18N;
4beefaa8eSGreg Roachuse Fisharebest\Webtrees\Module\ModuleConfigInterface;
5beefaa8eSGreg Roachuse Fisharebest\Webtrees\Module\ModuleCustomInterface;
6beefaa8eSGreg Roachuse Fisharebest\Webtrees\Webtrees;
7beefaa8eSGreg Roachuse Illuminate\Support\Collection;
8beefaa8eSGreg Roach
9beefaa8eSGreg Roach/**
10beefaa8eSGreg Roach * @var string     $latest_version
11beefaa8eSGreg Roach * @var string     $title
12beefaa8eSGreg Roach * @var Collection $server_errors
13beefaa8eSGreg Roach * @var Collection $server_warnings
14beefaa8eSGreg Roach */
15beefaa8eSGreg Roach
16beefaa8eSGreg Roach?>
17dd6b2bfcSGreg Roach
18dd6b2bfcSGreg Roach<h1><?= $title ?></h1>
19dd6b2bfcSGreg Roach
20dd6b2bfcSGreg Roach<!-- WEBSITE / WEBTREES -->
21dd6b2bfcSGreg Roach<div class="card mb-4">
22dd6b2bfcSGreg Roach    <div class="card-header">
23dd6b2bfcSGreg Roach        <h2 class="mb-0">
24dd6b2bfcSGreg Roach            <?= I18N::translate('Website') ?>
25*4ebbf4abSGreg Roach            <span class="badge badge-secondary" dir="ltr">
268d0ebef0SGreg Roach                <?= e(Webtrees::VERSION) ?>
27dd6b2bfcSGreg Roach            </span>
28dd6b2bfcSGreg Roach        </h2>
29dd6b2bfcSGreg Roach    </div>
30dd6b2bfcSGreg Roach    <div class="card-body">
31b7059dccSGreg Roach        <?php foreach ($server_errors as $server_error) : ?>
32b7059dccSGreg Roach            <p class="alert alert-danger"><?= $server_error ?></p>
33b7059dccSGreg Roach        <?php endforeach ?>
34b7059dccSGreg Roach
35dd6b2bfcSGreg Roach        <?php foreach ($server_warnings as $server_warning) : ?>
36dd6b2bfcSGreg Roach            <p class="alert alert-warning"><?= $server_warning ?></p>
37dd6b2bfcSGreg Roach        <?php endforeach ?>
38dd6b2bfcSGreg Roach
39dd6b2bfcSGreg Roach        <p class="card-text">
40dd6b2bfcSGreg Roach            <?= /* I18N: %s is a URL/link to the project website */
41dd6b2bfcSGreg Roach            I18N::translate('Support and documentation can be found at %s.', '<a href="https://webtrees.net/">webtrees.net</a>') ?>
42dd6b2bfcSGreg Roach        </p>
43dd6b2bfcSGreg Roach        <p class="card-text ">
44dd6b2bfcSGreg Roach            <?php if ($latest_version === '') : ?>
45dd6b2bfcSGreg Roach                <?= I18N::translate('No upgrade information is available.') ?>
468d0ebef0SGreg Roach            <?php elseif (version_compare(Webtrees::VERSION, $latest_version) < 0) : ?>
47dd6b2bfcSGreg Roach                <?= I18N::translate('A new version of webtrees is available.') ?>
48dd6b2bfcSGreg Roach                <a href="<?= e(route('upgrade')) ?>" class="error">
49dd6b2bfcSGreg Roach                    <?= /* I18N: %s is a version number */
50dd6b2bfcSGreg Roach                    I18N::translate('Upgrade to webtrees %s.', e($latest_version)) ?>
51dd6b2bfcSGreg Roach                </a>
52dd6b2bfcSGreg Roach            <?php else : ?>
53dd6b2bfcSGreg Roach                <?= I18N::translate('This is the latest version of webtrees. No upgrade is available.') ?>
54dd6b2bfcSGreg Roach            <?php endif ?>
55dd6b2bfcSGreg Roach        </p>
56dd6b2bfcSGreg Roach
57dd6b2bfcSGreg Roach        <div class="row">
58dd6b2bfcSGreg Roach            <div class="col-sm-6">
59dd6b2bfcSGreg Roach                <ul class="fa-ul">
60dd6b2bfcSGreg Roach                    <li>
61dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
62dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-preferences')) ?>">
63dd6b2bfcSGreg Roach                            <?= I18N::translate('Website preferences') ?>
64dd6b2bfcSGreg Roach                        </a>
65dd6b2bfcSGreg Roach                    </li>
66dd6b2bfcSGreg Roach                    <li>
67dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
68dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-mail')) ?>">
69dd6b2bfcSGreg Roach                            <?= I18N::translate('Sending email') ?>
70dd6b2bfcSGreg Roach                        </a>
71dd6b2bfcSGreg Roach                    </li>
72dd6b2bfcSGreg Roach                    <li>
73dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
74dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-registration')) ?>">
75dd6b2bfcSGreg Roach                            <?= I18N::translate('Sign-in and registration') ?>
76dd6b2bfcSGreg Roach                        </a>
77dd6b2bfcSGreg Roach                    </li>
78dd6b2bfcSGreg Roach                </ul>
79dd6b2bfcSGreg Roach            </div>
80dd6b2bfcSGreg Roach            <div class="col-sm-6">
81dd6b2bfcSGreg Roach                <ul class="fa-ul">
82dd6b2bfcSGreg Roach                    <li>
83dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
84dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-logs')) ?>">
85dd6b2bfcSGreg Roach                            <?= I18N::translate('Website logs') ?>
86dd6b2bfcSGreg Roach                        </a>
87dd6b2bfcSGreg Roach                    </li>
88dd6b2bfcSGreg Roach                    <li>
89dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
90dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-clean-data')) ?>">
91dd6b2bfcSGreg Roach                            <?= I18N::translate('Clean up data folder') ?>
92dd6b2bfcSGreg Roach                        </a>
93dd6b2bfcSGreg Roach                    </li>
94dd6b2bfcSGreg Roach                    <li>
95dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
96dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-site-information')) ?>">
97dd6b2bfcSGreg Roach                            <?= I18N::translate('Server information') ?>
98dd6b2bfcSGreg Roach                        </a>
99dd6b2bfcSGreg Roach                    </li>
100dd6b2bfcSGreg Roach                </ul>
101dd6b2bfcSGreg Roach            </div>
102dd6b2bfcSGreg Roach        </div>
103dd6b2bfcSGreg Roach    </div>
104dd6b2bfcSGreg Roach</div>
105dd6b2bfcSGreg Roach
106dd6b2bfcSGreg Roach<!-- FAMILY TREES -->
1074e73f0bdSGreg Roach<div class="card mb-4 <?= array_sum($changes) ? 'card-outline-danger' : '' ?>">
108dd6b2bfcSGreg Roach    <div class="card-header">
109dd6b2bfcSGreg Roach        <h2 class="mb-0">
110dd6b2bfcSGreg Roach            <?= I18N::translate('Family trees') ?>
111dd6b2bfcSGreg Roach            <span class="badge badge-secondary">
112dd6b2bfcSGreg Roach                    <?= I18N::number(count($all_trees)) ?>
113dd6b2bfcSGreg Roach                </span>
114dd6b2bfcSGreg Roach        </h2>
115dd6b2bfcSGreg Roach    </div>
116dd6b2bfcSGreg Roach    <div class="card-body">
117dd6b2bfcSGreg Roach        <table class="table table-sm">
118dd6b2bfcSGreg Roach            <caption class="sr-only">
119dd6b2bfcSGreg Roach                <?= I18N::translate('Family trees') ?>
120dd6b2bfcSGreg Roach            </caption>
121dd6b2bfcSGreg Roach            <thead>
122dd6b2bfcSGreg Roach                <tr>
123dd6b2bfcSGreg Roach                    <th><?= I18N::translate('Family tree') ?></th>
124beefaa8eSGreg Roach                    <th>
125beefaa8eSGreg Roach                        <span class="sr-only"><?= I18N::translate('Manage family trees') ?></span>
126beefaa8eSGreg Roach                    </th>
127dd6b2bfcSGreg Roach                    <th class="text-right"><?= I18N::translate('Pending changes') ?></th>
128dd6b2bfcSGreg Roach                    <th class="d-none d-sm-table-cell text-right"><?= I18N::translate('Individuals') ?></th>
129dd6b2bfcSGreg Roach                    <th class="d-none d-lg-table-cell text-right"><?= I18N::translate('Families') ?></th>
130dd6b2bfcSGreg Roach                    <th class="d-none d-sm-table-cell text-right"><?= I18N::translate('Sources') ?></th>
131dd6b2bfcSGreg Roach                    <th class="d-none d-lg-table-cell text-right"><?= I18N::translate('Repositories') ?></th>
132dd6b2bfcSGreg Roach                    <th class="d-none d-sm-table-cell text-right"><?= I18N::translate('Media') ?></th>
133dd6b2bfcSGreg Roach                    <th class="d-none d-lg-table-cell text-right"><?= I18N::translate('Notes') ?></th>
134dd6b2bfcSGreg Roach                </tr>
135dd6b2bfcSGreg Roach            </thead>
136dd6b2bfcSGreg Roach            <tbody>
137dd6b2bfcSGreg Roach                <?= view('admin/control-panel-tree-list', [
138dd6b2bfcSGreg Roach                    'all_trees'              => $all_trees,
139dd6b2bfcSGreg Roach                    'changes'                => $changes,
140dd6b2bfcSGreg Roach                    'families'               => $families,
141376123c4SGreg Roach                    'individuals'            => $individuals,
142dd6b2bfcSGreg Roach                    'media'                  => $media,
143dd6b2bfcSGreg Roach                    'notes'                  => $notes,
144376123c4SGreg Roach                    'repositories'           => $repositories,
145376123c4SGreg Roach                    'sources'                => $sources,
146376123c4SGreg Roach                    'family_list_module'     => $family_list_module,
147376123c4SGreg Roach                    'individual_list_module' => $individual_list_module,
148376123c4SGreg Roach                    'media_list_module'      => $media_list_module,
149376123c4SGreg Roach                    'note_list_module'       => $note_list_module,
150376123c4SGreg Roach                    'repository_list_module' => $repository_list_module,
151376123c4SGreg Roach                    'source_list_module'     => $source_list_module,
15239c990acSGreg Roach                ]) ?>
153dd6b2bfcSGreg Roach            </tbody>
154dd6b2bfcSGreg Roach            <tfoot>
155dd6b2bfcSGreg Roach                <tr>
156dd6b2bfcSGreg Roach                    <th scope="row">
157dd6b2bfcSGreg Roach                        <?= I18N::translate('Total') ?>
158dd6b2bfcSGreg Roach                    </th>
159dd6b2bfcSGreg Roach                    <td></td>
160dd6b2bfcSGreg Roach                    <td class="text-right">
161dd6b2bfcSGreg Roach                        <?= I18N::number(array_sum($changes)) ?>
162dd6b2bfcSGreg Roach                    </td>
163dd6b2bfcSGreg Roach                    <td class="d-none d-sm-table-cell text-right">
1642078eafaSGreg Roach                        <?= I18N::number($individuals->sum()) ?>
165dd6b2bfcSGreg Roach                    </td>
166dd6b2bfcSGreg Roach                    <td class="d-none d-lg-table-cell text-right">
1672078eafaSGreg Roach                        <?= I18N::number($families->sum()) ?>
168dd6b2bfcSGreg Roach                    </td>
169dd6b2bfcSGreg Roach                    <td class="d-none d-sm-table-cell text-right">
1702078eafaSGreg Roach                        <?= I18N::number($sources->sum()) ?>
171dd6b2bfcSGreg Roach                    </td>
172dd6b2bfcSGreg Roach                    <td class="d-none d-lg-table-cell text-right">
1732078eafaSGreg Roach                        <?= I18N::number($repositories->sum()) ?>
174dd6b2bfcSGreg Roach                    </td>
175dd6b2bfcSGreg Roach                    <td class="d-none d-sm-table-cell text-right">
1762078eafaSGreg Roach                        <?= I18N::number($media->sum()) ?>
177dd6b2bfcSGreg Roach                    </td>
178dd6b2bfcSGreg Roach                    <td class="d-none d-lg-table-cell text-right">
1792078eafaSGreg Roach                        <?= I18N::number($notes->sum()) ?>
180dd6b2bfcSGreg Roach                    </td>
181dd6b2bfcSGreg Roach                </tr>
182dd6b2bfcSGreg Roach            </tfoot>
183dd6b2bfcSGreg Roach        </table>
184dd6b2bfcSGreg Roach
185dd6b2bfcSGreg Roach        <ul class="fa-ul">
186dd6b2bfcSGreg Roach            <li>
187dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
188bf57b580SGreg Roach                <a href="<?= e(route('admin-trees')) ?>">
189dd6b2bfcSGreg Roach                    <?= I18N::translate('Manage family trees') ?>
190dd6b2bfcSGreg Roach                </a>
191dd6b2bfcSGreg Roach            </li>
192dd6b2bfcSGreg Roach            <li>
193dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
194dd6b2bfcSGreg Roach                <a href="<?= e(route('tree-page-default-edit')) ?>">
195dd6b2bfcSGreg Roach                    <?= I18N::translate('Set the default blocks for new family trees') ?>
196dd6b2bfcSGreg Roach                </a>
197dd6b2bfcSGreg Roach            </li>
198dd6b2bfcSGreg Roach            <?php if (count($all_trees) > 1) : ?>
199dd6b2bfcSGreg Roach                <li>
200dd6b2bfcSGreg Roach                    <span class="fa-li"><?= view('icons/preferences') ?></span>
201dd6b2bfcSGreg Roach                    <a href="<?= e(route('admin-trees-merge')) ?>">
202dd6b2bfcSGreg Roach                        <?= I18N::translate('Merge family trees') ?>
203dd6b2bfcSGreg Roach                    </a>
204dd6b2bfcSGreg Roach                </li>
205dd6b2bfcSGreg Roach            <?php endif ?>
206dd6b2bfcSGreg Roach        </ul>
207dd6b2bfcSGreg Roach    </div>
208dd6b2bfcSGreg Roach</div>
209dd6b2bfcSGreg Roach
210dd6b2bfcSGreg Roach<!-- USERS -->
211dd6b2bfcSGreg Roach<div class="card mb-4 <?= $unapproved || $unverified ? 'card-outline-danger' : '' ?>">
212dd6b2bfcSGreg Roach    <div class="card-header">
213dd6b2bfcSGreg Roach        <h2 class="mb-0">
214dd6b2bfcSGreg Roach            <?= I18N::translate('Users') ?>
215dd6b2bfcSGreg Roach            <span class="badge badge-secondary">
216dd6b2bfcSGreg Roach                    <?= I18N::number(count($all_users)) ?>
217dd6b2bfcSGreg Roach                </span>
218dd6b2bfcSGreg Roach        </h2>
219dd6b2bfcSGreg Roach    </div>
220dd6b2bfcSGreg Roach    <div class="card-body">
221dd6b2bfcSGreg Roach        <dl class="row">
222dd6b2bfcSGreg 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) : ?>
223dd6b2bfcSGreg Roach                <?php if (!empty($list)) : ?>
224dd6b2bfcSGreg Roach                    <dt class="col-sm-3">
225dd6b2bfcSGreg Roach                        <?= $label ?>
226dd6b2bfcSGreg Roach                    </dt>
227dd6b2bfcSGreg Roach                    <dd class="col-sm-9">
228dd6b2bfcSGreg Roach                        <?php foreach ($list as $n => $user) : ?>
229dd6b2bfcSGreg Roach                            <?= $n ? I18N::$list_separator : '' ?>
230895230eeSGreg Roach                            <a href="<?= e(route('admin-users-edit', ['user_id' => $user->id()])) ?>" dir="auto">
231e5a6b4d4SGreg Roach                                <?= e($user->realName()) ?>
232dd6b2bfcSGreg Roach                            </a>
233dd6b2bfcSGreg Roach                        <?php endforeach ?>
234dd6b2bfcSGreg Roach                    </dd>
235dd6b2bfcSGreg Roach                <?php endif ?>
236dd6b2bfcSGreg Roach            <?php endforeach ?>
237dd6b2bfcSGreg Roach        </dl>
238dd6b2bfcSGreg Roach
239dd6b2bfcSGreg Roach        <div class="row">
240dd6b2bfcSGreg Roach            <div class="col-sm-6">
241dd6b2bfcSGreg Roach                <ul class="fa-ul">
242dd6b2bfcSGreg Roach                    <li>
243dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
244bf57b580SGreg Roach                        <a href="<?= e(route('admin-users')) ?>">
245dd6b2bfcSGreg Roach                            <?= I18N::translate('User administration') ?>
246dd6b2bfcSGreg Roach                        </a>
247dd6b2bfcSGreg Roach                    </li>
248dd6b2bfcSGreg Roach                    <li>
249dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
250bf57b580SGreg Roach                        <a href="<?= e(route('admin-users-create')) ?>">
251dd6b2bfcSGreg Roach                            <?= I18N::translate('Add a user') ?>
252dd6b2bfcSGreg Roach                        </a>
253dd6b2bfcSGreg Roach                    </li>
254dd6b2bfcSGreg Roach                    <li>
255dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
256dd6b2bfcSGreg Roach                        <a href="<?= e(route('admin-users-cleanup')) ?>">
257dd6b2bfcSGreg Roach                            <?= I18N::translate('Delete inactive users') ?>
258dd6b2bfcSGreg Roach                        </a>
259dd6b2bfcSGreg Roach                    </li>
260dd6b2bfcSGreg Roach                    <li>
261dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/preferences') ?></span>
262dd6b2bfcSGreg Roach                        <a href="<?= e(route('user-page-default-edit')) ?>">
263dd6b2bfcSGreg Roach                            <?= I18N::translate('Set the default blocks for new users') ?>
264dd6b2bfcSGreg Roach                        </a>
265dd6b2bfcSGreg Roach                    </li>
266dd6b2bfcSGreg Roach                </ul>
267dd6b2bfcSGreg Roach            </div>
268dd6b2bfcSGreg Roach            <div class="col-sm-6">
269dd6b2bfcSGreg Roach                <ul class="fa-ul">
270dd6b2bfcSGreg Roach                    <li>
271dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/email') ?></span>
272dd6b2bfcSGreg Roach                        <a href="<?= e(route('broadcast', ['to' => 'all'])) ?>">
273dd6b2bfcSGreg Roach                            <?= I18N::translate('Send a message to all users') ?>
274dd6b2bfcSGreg Roach                        </a>
275dd6b2bfcSGreg Roach                    </li>
276dd6b2bfcSGreg Roach                    <li>
277dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/email') ?></span>
278dd6b2bfcSGreg Roach                        <a href="<?= e(route('broadcast', ['to' => 'never_logged'])) ?>">
279dd6b2bfcSGreg Roach                            <?= I18N::translate('Send a message to users who have never signed in') ?>
280dd6b2bfcSGreg Roach                        </a>
281dd6b2bfcSGreg Roach                    </li>
282dd6b2bfcSGreg Roach                    <li>
283dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/email') ?></span>
284dd6b2bfcSGreg Roach                        <a href="<?= e(route('broadcast', ['to' => 'last_6mo'])) ?>">
285dd6b2bfcSGreg Roach                            <?= I18N::translate('Send a message to users who have not signed in for 6 months') ?>
286dd6b2bfcSGreg Roach                        </a>
287dd6b2bfcSGreg Roach                    </li>
288dd6b2bfcSGreg Roach                </ul>
289dd6b2bfcSGreg Roach            </div>
290dd6b2bfcSGreg Roach        </div>
291dd6b2bfcSGreg Roach    </div>
292dd6b2bfcSGreg Roach</div>
293dd6b2bfcSGreg Roach
294dd6b2bfcSGreg Roach<!-- MODULES -->
295dd6b2bfcSGreg Roach<div class="card mb-4">
296dd6b2bfcSGreg Roach    <div class="card-header">
297dd6b2bfcSGreg Roach        <h2 class="mb-0">
298dd6b2bfcSGreg Roach            <?= I18N::translate('Modules') ?>
2999d627a9eSGreg Roach            <?= view('components/badge', ['count' => $all_modules_enabled->count(), 'total' => $all_modules_disabled->count(), 'context' => 'secondary']) ?>
300dd6b2bfcSGreg Roach        </h2>
301dd6b2bfcSGreg Roach    </div>
3020cb66f86SGreg Roach
303dd6b2bfcSGreg Roach    <div class="card-body">
3040cb66f86SGreg Roach        <ul class="fa-ul">
3050cb66f86SGreg Roach            <li>
3069d627a9eSGreg Roach                <span class="fa-li"><?= view('icons/module') ?></span>
3070cb66f86SGreg Roach                <a href="<?= e(route('modules')) ?>">
3089d627a9eSGreg Roach                    <?= I18N::translate('All modules') ?>
3090cb66f86SGreg Roach                </a>
3109d627a9eSGreg Roach                <?= view('components/badge', ['count' => $all_modules_enabled->count(), 'total' => $all_modules_disabled->count(), 'context' => 'primary']) ?>
3110cb66f86SGreg Roach            </li>
3120cb66f86SGreg Roach        </ul>
3130cb66f86SGreg Roach
314dd6b2bfcSGreg Roach        <div class="row">
315abafa13cSGreg Roach            <div class="col-sm-4">
3169d627a9eSGreg Roach                <h3>
3179d627a9eSGreg Roach                    <?= I18N::translate('Genealogy') ?>
3189d627a9eSGreg Roach                </h3>
31909fbf3e5SGreg Roach
320dd6b2bfcSGreg Roach                <ul class="fa-ul">
321dd6b2bfcSGreg Roach                    <li>
322dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/menu') ?></span>
3230cb66f86SGreg Roach                        <a href="<?= e(route('menus')) ?>">
324dd6b2bfcSGreg Roach                            <?= I18N::translate('Menus') ?>
325dd6b2bfcSGreg Roach                        </a>
3269d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $menu_modules_enabled->count(), 'total' => $menu_modules_disabled->count(), 'context' => 'primary']) ?>
327dd6b2bfcSGreg Roach                    </li>
328dd6b2bfcSGreg Roach                    <li>
329dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/chart') ?></span>
3300cb66f86SGreg Roach                        <a href="<?= e(route('charts')) ?>">
331dd6b2bfcSGreg Roach                            <?= I18N::translate('Charts') ?>
332dd6b2bfcSGreg Roach                        </a>
3339d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $chart_modules_enabled->count(), 'total' => $chart_modules_disabled->count(), 'context' => 'primary']) ?>
334dd6b2bfcSGreg Roach                    </li>
335dd6b2bfcSGreg Roach                    <li>
33667992b6aSRichard Cissee                        <span class="fa-li"><?= view('icons/list') ?></span>
33767992b6aSRichard Cissee                        <a href="<?= e(route('lists')) ?>">
33867992b6aSRichard Cissee                            <?= I18N::translate('Lists') ?>
33967992b6aSRichard Cissee                        </a>
3409d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $list_modules_enabled->count(), 'total' => $list_modules_disabled->count(), 'context' => 'primary']) ?>
34167992b6aSRichard Cissee                    </li>
34267992b6aSRichard Cissee                    <li>
343dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/report') ?></span>
3440cb66f86SGreg Roach                        <a href="<?= e(route('reports')) ?>">
345dd6b2bfcSGreg Roach                            <?= I18N::translate('Reports') ?>
346dd6b2bfcSGreg Roach                        </a>
3479d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $report_modules_enabled->count(), 'total' => $report_modules_disabled->count(), 'context' => 'primary']) ?>
348dd6b2bfcSGreg Roach                    </li>
3499d627a9eSGreg Roach                </ul>
35009fbf3e5SGreg Roach
3519d627a9eSGreg Roach                <h3>
3529d627a9eSGreg Roach                    <?= I18N::translate('Website') ?>
3539d627a9eSGreg Roach                </h3>
35409fbf3e5SGreg Roach
3559d627a9eSGreg Roach                <ul class="fa-ul">
35633c34396SGreg Roach                    <li>
35733c34396SGreg Roach                        <span class="fa-li"><?= view('icons/footer') ?></span>
35833c34396SGreg Roach                        <a href="<?= e(route('footers')) ?>">
35933c34396SGreg Roach                            <?= I18N::translate('Footers') ?>
36033c34396SGreg Roach                        </a>
3619d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $footer_modules_enabled->count(), 'total' => $footer_modules_disabled->count(), 'context' => 'primary']) ?>
3628e5c5efeSGreg Roach                    </li>
3638e5c5efeSGreg Roach                    <li>
3648e5c5efeSGreg Roach                        <span class="fa-li"><?= view('icons/analytics') ?></span>
3658e5c5efeSGreg Roach                        <a href="<?= e(route('analytics')) ?>">
3668e5c5efeSGreg Roach                            <?= I18N::translate('Tracking and analytics') ?>
3678e5c5efeSGreg Roach                        </a>
3689d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $analytics_modules_enabled->count(), 'total' => $analytics_modules_disabled->count(), 'context' => 'primary']) ?>
36933c34396SGreg Roach                    </li>
37011eb8581SGreg Roach                    <li>
37111eb8581SGreg Roach                        <span class="fa-li"><?= view('icons/theme') ?></span>
37211eb8581SGreg Roach                        <a href="<?= e(route('themes')) ?>">
37311eb8581SGreg Roach                            <?= I18N::translate('Themes') ?>
37411eb8581SGreg Roach                        </a>
3759d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $theme_modules_enabled->count(), 'total' => $theme_modules_disabled->count(), 'context' => 'primary']) ?>
37611eb8581SGreg Roach                    </li>
37711eb8581SGreg Roach                    <li>
37811eb8581SGreg Roach                        <span class="fa-li"><?= view('icons/language') ?></span>
37911eb8581SGreg Roach                        <a href="<?= e(route('languages')) ?>">
38011eb8581SGreg Roach                            <?= I18N::translate('Languages') ?>
38111eb8581SGreg Roach                        </a>
3829d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $language_modules_enabled->count(), 'total' => $language_modules_disabled->count(), 'context' => 'primary']) ?>
38311eb8581SGreg Roach                    </li>
384dd6b2bfcSGreg Roach                </ul>
38509fbf3e5SGreg Roach
386abafa13cSGreg Roach            </div>
387abafa13cSGreg Roach
388abafa13cSGreg Roach            <div class="col-sm-4">
389abafa13cSGreg Roach
39009fbf3e5SGreg Roach                <h3>
39109fbf3e5SGreg Roach                    <?= I18N::translate('Home page') ?>
39209fbf3e5SGreg Roach                </h3>
39309fbf3e5SGreg Roach
39409fbf3e5SGreg Roach                <ul class="fa-ul">
39509fbf3e5SGreg Roach                    <li>
39609fbf3e5SGreg Roach                        <span class="fa-li"><?= view('icons/block') ?></span>
39709fbf3e5SGreg Roach                        <a href="<?= e(route('blocks')) ?>">
39809fbf3e5SGreg Roach                            <?= I18N::translate('Blocks') ?>
39909fbf3e5SGreg Roach                        </a>
40009fbf3e5SGreg Roach                        <?= view('components/badge', ['count' => $block_modules_enabled->count(), 'total' => $block_modules_disabled->count(), 'context' => 'primary']) ?>
40109fbf3e5SGreg Roach                    </li>
40209fbf3e5SGreg Roach                </ul>
40309fbf3e5SGreg Roach
4049d627a9eSGreg Roach                <h3>
4059d627a9eSGreg Roach                    <?= I18N::translate('Individual page') ?>
4069d627a9eSGreg Roach                </h3>
40709fbf3e5SGreg Roach
4089d627a9eSGreg Roach                <ul class="fa-ul">
4099d627a9eSGreg Roach                    <li>
4109d627a9eSGreg Roach                        <span class="fa-li"><?= view('icons/tab') ?></span>
4119d627a9eSGreg Roach                        <a href="<?= e(route('tabs')) ?>">
4129d627a9eSGreg Roach                            <?= I18N::translate('Tabs') ?>
4139d627a9eSGreg Roach                            <?= view('components/badge', ['count' => $tab_modules_enabled->count(), 'total' => $tab_modules_disabled->count(), 'context' => 'primary']) ?>
4149d627a9eSGreg Roach                        </a>
4159d627a9eSGreg Roach                    </li>
4169d627a9eSGreg Roach                    <li>
4179d627a9eSGreg Roach                        <span class="fa-li"><?= view('icons/sidebar') ?></span>
4189d627a9eSGreg Roach                        <a href="<?= e(route('sidebars')) ?>">
4199d627a9eSGreg Roach                            <?= I18N::translate('Sidebars') ?>
4209d627a9eSGreg Roach                        </a>
4219d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $sidebar_modules_enabled->count(), 'total' => $sidebar_modules_disabled->count(), 'context' => 'primary']) ?>
4229d627a9eSGreg Roach                    </li>
4239d627a9eSGreg Roach                    <li>
4249d627a9eSGreg Roach                        <span class="fa-li"><?= view('icons/history') ?></span>
4259d627a9eSGreg Roach                        <a href="<?= e(route('history')) ?>">
4269d627a9eSGreg Roach                            <?= I18N::translate('Historic events') ?>
4279d627a9eSGreg Roach                        </a>
4289d627a9eSGreg Roach                        <?= view('components/badge', ['count' => $history_modules_enabled->count(), 'total' => $history_modules_disabled->count(), 'context' => 'primary']) ?>
4299d627a9eSGreg Roach                    </li>
4309d627a9eSGreg Roach                </ul>
43109fbf3e5SGreg Roach
432abafa13cSGreg Roach            </div>
433abafa13cSGreg Roach
434abafa13cSGreg Roach            <div class="col-sm-4">
435abafa13cSGreg Roach
4369d627a9eSGreg Roach                <h3>
4379d627a9eSGreg Roach                    <?= I18N::translate('Other') ?>
4389d627a9eSGreg Roach                </h3>
43909fbf3e5SGreg Roach
440dd6b2bfcSGreg Roach                <ul class="fa-ul">
44109fbf3e5SGreg Roach                    <?php foreach ($other_modules as $module) : ?>
442dd6b2bfcSGreg Roach                        <li>
44309fbf3e5SGreg Roach                            <span class="fa-li"><?= view('icons/module') ?></span>
4448d6560c4SGreg Roach
4458d6560c4SGreg Roach                            <?php if ($module->isEnabled()): ?>
4468d6560c4SGreg Roach                                <?php if ($module instanceof ModuleConfigInterface): ?>
447dd6b2bfcSGreg Roach                                    <a href="<?= e($module->getConfigLink()) ?>">
44849a243cbSGreg Roach                                    <?= $module->title() ?>
44909fbf3e5SGreg Roach                                    <span class="fa"><?= view('icons/preferences') ?></span>
450dd6b2bfcSGreg Roach                                    </a>
45109fbf3e5SGreg Roach                                <?php else : ?>
4528d6560c4SGreg Roach                                    <?= $module->title() ?>
45309fbf3e5SGreg Roach                                <?php endif ?>
4548d6560c4SGreg Roach                            <?php else : ?>
4558d6560c4SGreg Roach                                <span class="text-muted">
4568d6560c4SGreg Roach                                    <span class="fa-li"><?= view('icons/module') ?></span>
4578d6560c4SGreg Roach                                     <?= $module->title() ?>
4588d6560c4SGreg Roach                                    <?php if ($module instanceof ModuleConfigInterface): ?>
4598d6560c4SGreg Roach                                        <span class="fa"><?= view('icons/preferences') ?></span>
4608d6560c4SGreg Roach                                    <?php endif ?>
4618d6560c4SGreg Roach                                    </span>
4628d6560c4SGreg Roach                                </span>
4638d6560c4SGreg Roach                            <?php endif ?>
4648d6560c4SGreg Roach
465beefaa8eSGreg Roach                            <?php if ($module instanceof ModuleCustomInterface): ?>
466beefaa8eSGreg Roach                                <?= view('admin/custom-module-info', ['module' => $module]) ?>
467beefaa8eSGreg Roach                            <?php endif ?>
468dd6b2bfcSGreg Roach                        </li>
469dd6b2bfcSGreg Roach                    <?php endforeach ?>
470dd6b2bfcSGreg Roach                </ul>
471dd6b2bfcSGreg Roach            </div>
472dd6b2bfcSGreg Roach        </div>
473dd6b2bfcSGreg Roach    </div>
474dd6b2bfcSGreg Roach</div>
475dd6b2bfcSGreg Roach
476dd6b2bfcSGreg Roach<!-- MEDIA -->
477dd6b2bfcSGreg Roach<div class="card mb-4">
478dd6b2bfcSGreg Roach    <div class="card-header">
479dd6b2bfcSGreg Roach        <h2 class="mb-0">
480dd6b2bfcSGreg Roach            <?= I18N::translate('Media') ?>
481dd6b2bfcSGreg Roach        </h2>
482dd6b2bfcSGreg Roach    </div>
483dd6b2bfcSGreg Roach    <div class="card-body">
484dd6b2bfcSGreg Roach        <ul class="fa-ul">
485dd6b2bfcSGreg Roach            <li>
486dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
487dd6b2bfcSGreg Roach                <a href="<?= e(route('admin-media')) ?>">
488dd6b2bfcSGreg Roach                    <?= I18N::translate('Manage media') ?>
489dd6b2bfcSGreg Roach                </a>
490dd6b2bfcSGreg Roach            </li>
491dd6b2bfcSGreg Roach            <li>
492dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
493dd6b2bfcSGreg Roach                <a href="<?= e(route('admin-media-upload')) ?>">
494dd6b2bfcSGreg Roach                    <?= I18N::translate('Upload media files') ?>
495dd6b2bfcSGreg Roach                </a>
496dd6b2bfcSGreg Roach            </li>
497dd6b2bfcSGreg Roach            <li>
498dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
499dd6b2bfcSGreg Roach                <a href="<?= e(route('admin-fix-level-0-media')) ?>">
500dd6b2bfcSGreg Roach                    <?= I18N::translate('Link media objects to facts and events') ?>
501dd6b2bfcSGreg Roach                </a>
502dd6b2bfcSGreg Roach            </li>
503dd6b2bfcSGreg Roach            <li>
504dd6b2bfcSGreg Roach                <span class="fa-li"><?= view('icons/preferences') ?></span>
505dd6b2bfcSGreg Roach                <a href="<?= e(route('admin-webtrees1-thumbs')) ?>">
506dd6b2bfcSGreg Roach                    <?= I18N::translate('Import custom thumbnails from webtrees version 1') ?>
507dd6b2bfcSGreg Roach                </a>
508dd6b2bfcSGreg Roach            </li>
509dd6b2bfcSGreg Roach        </ul>
510dd6b2bfcSGreg Roach    </div>
511dd6b2bfcSGreg Roach</div>
512dd6b2bfcSGreg Roach
513dd6b2bfcSGreg Roach<!-- MAPS -->
514dd6b2bfcSGreg Roach<div class="card mb-4">
515dd6b2bfcSGreg Roach    <div class="card-header">
516dd6b2bfcSGreg Roach        <h2 class="mb-0">
517dd6b2bfcSGreg Roach            <?= I18N::translate('Map') ?>
518dd6b2bfcSGreg Roach        </h2>
519dd6b2bfcSGreg Roach    </div>
520dd6b2bfcSGreg Roach    <div class="card-body">
521dd6b2bfcSGreg Roach        <div class="row">
522dd6b2bfcSGreg Roach            <div class="col-sm-6">
523dd6b2bfcSGreg Roach                <ul class="fa-ul">
524dd6b2bfcSGreg Roach                    <li>
525dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/location') ?></span>
526dd6b2bfcSGreg Roach                        <a href="<?= e(route('map-data')) ?>">
527dd6b2bfcSGreg Roach                            <?= I18N::translate('Geographic data') ?>
528dd6b2bfcSGreg Roach                        </a>
529dd6b2bfcSGreg Roach                    </li>
530dd6b2bfcSGreg Roach                </ul>
531dd6b2bfcSGreg Roach            </div>
532dd6b2bfcSGreg Roach            <div class="col-sm-6">
533dd6b2bfcSGreg Roach                <ul class="fa-ul">
534dd6b2bfcSGreg Roach                    <li>
535dd6b2bfcSGreg Roach                        <span class="fa-li"><?= view('icons/map') ?></span>
536dd6b2bfcSGreg Roach                        <a href="<?= e(route('map-provider')) ?>">
537dd6b2bfcSGreg Roach                            <?= I18N::translate('Map provider') ?>
538dd6b2bfcSGreg Roach                        </a>
539dd6b2bfcSGreg Roach                    </li>
540dd6b2bfcSGreg Roach                </ul>
541dd6b2bfcSGreg Roach            </div>
542dd6b2bfcSGreg Roach        </div>
543dd6b2bfcSGreg Roach    </div>
544dd6b2bfcSGreg Roach</div>
545dd6b2bfcSGreg Roach
546dd6b2bfcSGreg Roach<!-- OLD FILES -->
547dd6b2bfcSGreg Roach<?php if (!empty($files_to_delete)) : ?>
548dd6b2bfcSGreg Roach    <div class="card mb-4 card-outline-danger">
549dd6b2bfcSGreg Roach        <div class="card-header">
550dd6b2bfcSGreg Roach            <h2 class="mb-0">
551dd6b2bfcSGreg Roach                <?= I18N::translate('Old files found') ?>
552dd6b2bfcSGreg Roach            </h2>
553dd6b2bfcSGreg Roach        </div>
554dd6b2bfcSGreg Roach        <div class="card-body">
555dd6b2bfcSGreg Roach            <p>
556dd6b2bfcSGreg 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.') ?>
557dd6b2bfcSGreg Roach            </p>
558dd6b2bfcSGreg Roach            <ul class="list-unstyled">
559dd6b2bfcSGreg Roach                <?php foreach ($files_to_delete as $file_to_delete) : ?>
560beefaa8eSGreg Roach                    <li dir="ltr">
561beefaa8eSGreg Roach                        <code><?= e($file_to_delete) ?></code>
562beefaa8eSGreg Roach                    </li>
563dd6b2bfcSGreg Roach                <?php endforeach ?>
564dd6b2bfcSGreg Roach            </ul>
565dd6b2bfcSGreg Roach        </div>
566dd6b2bfcSGreg Roach    </div>
567dd6b2bfcSGreg Roach<?php endif ?>
568