1beefaa8eSGreg Roach<?php 2beefaa8eSGreg Roach 310e06497SGreg Roachdeclare(strict_types=1); 410e06497SGreg Roach 5*bfd5083cSGreg Roachuse Fisharebest\Webtrees\Contracts\TimestampInterface; 6e381f98dSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\BroadcastPage; 7*bfd5083cSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\CheckForNewVersionNow; 8fd6c003fSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\CleanDataFolder; 9b1a54200SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ControlPanel; 105afbc57aSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\CreateTreePage; 1164d12f7bSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\EmailPreferencesPage; 124b3ef6caSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\FixLevel0MediaPage; 138ce3bd73SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ManageMediaPage; 146fd01894SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ManageTrees; 1594e35917SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\MapDataList; 166fd01894SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\MergeTreesPage; 1741170634SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesAllPage; 189f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesAnalyticsPage; 199f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesBlocksPage; 209f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesChartsPage; 219f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesDataFixesPage; 229f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesFootersPage; 239f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesHistoricEventsPage; 249f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesLanguagesPage; 259f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesListsPage; 26c9c6f2ecSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesMapAutocompletePage; 27c9c6f2ecSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesMapGeoLocationsPage; 2836779af1SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesMapLinksPage; 29c9c6f2ecSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesMapProvidersPage; 309f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesMenusPage; 319f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesReportsPage; 32853f2b8aSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesSharesPage; 339f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesSidebarsPage; 349f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesTabsPage; 359f667ff2SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ModulesThemesPage; 3622e73debSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\PendingChanges; 37b1a54200SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\PhpInformation; 3857bfa969SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\SiteLogsPage; 39c7aa856bSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\SitePreferencesPage; 40c7aa856bSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\SiteRegistrationPage; 41c8183f29SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\SiteTagsPage; 4236779af1SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\TreePageDefaultEdit; 434b3ef6caSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\UpgradeWizardPage; 448ce3bd73SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\UploadMediaPage; 454c3563c0SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\UserAddPage; 464c3563c0SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\UserEditPage; 474c3563c0SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\UserListPage; 488e0e1b25SGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\UserPageDefaultEdit; 492474349cSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\UsersCleanupPage; 50beefaa8eSGreg Roachuse Fisharebest\Webtrees\I18N; 51b1a54200SGreg Roachuse Fisharebest\Webtrees\Module\FamilyListModule; 52b1a54200SGreg Roachuse Fisharebest\Webtrees\Module\IndividualListModule; 53b1a54200SGreg Roachuse Fisharebest\Webtrees\Module\MediaListModule; 5441170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleAnalyticsInterface; 5541170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleBlockInterface; 5641170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleChartInterface; 57beefaa8eSGreg Roachuse Fisharebest\Webtrees\Module\ModuleConfigInterface; 58beefaa8eSGreg Roachuse Fisharebest\Webtrees\Module\ModuleCustomInterface; 5941170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleDataFixInterface; 6041170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleFooterInterface; 6141170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleHistoricEventsInterface; 6241170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleInterface; 6341170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleLanguageInterface; 6441170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleListInterface; 65c9c6f2ecSGreg Roachuse Fisharebest\Webtrees\Module\ModuleMapAutocompleteInterface; 66c9c6f2ecSGreg Roachuse Fisharebest\Webtrees\Module\ModuleMapGeoLocationInterface; 67e3544cb2SGreg Roachuse Fisharebest\Webtrees\Module\ModuleMapLinkInterface; 68c9c6f2ecSGreg Roachuse Fisharebest\Webtrees\Module\ModuleMapProviderInterface; 6941170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleMenuInterface; 7041170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleReportInterface; 71853f2b8aSGreg Roachuse Fisharebest\Webtrees\Module\ModuleShareInterface; 7241170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleSidebarInterface; 7341170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleTabInterface; 7441170634SGreg Roachuse Fisharebest\Webtrees\Module\ModuleThemeInterface; 75b1a54200SGreg Roachuse Fisharebest\Webtrees\Module\NoteListModule; 76b1a54200SGreg Roachuse Fisharebest\Webtrees\Module\RepositoryListModule; 77b1a54200SGreg Roachuse Fisharebest\Webtrees\Module\SourceListModule; 78e72c24d6SGreg Roachuse Fisharebest\Webtrees\Module\SubmitterListModule; 7941170634SGreg Roachuse Fisharebest\Webtrees\Tree; 8041170634SGreg Roachuse Fisharebest\Webtrees\User; 81beefaa8eSGreg Roachuse Fisharebest\Webtrees\Webtrees; 82beefaa8eSGreg Roachuse Illuminate\Support\Collection; 83beefaa8eSGreg Roach 84beefaa8eSGreg Roach/** 8536779af1SGreg Roach * @var Collection<int,User> $administrators 8636779af1SGreg Roach * @var Collection<int,ModuleInterface> $all_modules_disabled 8736779af1SGreg Roach * @var Collection<int,ModuleInterface> $all_modules_enabled 8836779af1SGreg Roach * @var Collection<int,Tree> $all_trees 8936779af1SGreg Roach * @var Collection<int,User> $all_users 9036779af1SGreg Roach * @var Collection<int,ModuleAnalyticsInterface> $analytics_modules_disabled 9136779af1SGreg Roach * @var Collection<int,ModuleAnalyticsInterface> $analytics_modules_enabled 9236779af1SGreg Roach * @var Collection<int,ModuleBlockInterface> $block_modules_disabled 9336779af1SGreg Roach * @var Collection<int,ModuleBlockInterface> $block_modules_enabled 9441170634SGreg Roach * @var array<string,int> $changes 9536779af1SGreg Roach * @var Collection<int,ModuleChartInterface> $chart_modules_disabled 9636779af1SGreg Roach * @var Collection<int,ModuleChartInterface> $chart_modules_enabled 9736779af1SGreg Roach * @var Collection<int,ModuleCustomInterface> $custom_updates 9836779af1SGreg Roach * @var Collection<int,ModuleDataFixInterface> $data_fix_modules_disabled 9936779af1SGreg Roach * @var Collection<int,ModuleDataFixInterface> $data_fix_modules_enabled 10036779af1SGreg Roach * @var Collection<array-key,int> $families 10141170634SGreg Roach * @var FamilyListModule|null $family_list_module 10236779af1SGreg Roach * @var Collection<int,ModuleFooterInterface> $footer_modules_disabled 10336779af1SGreg Roach * @var Collection<int,ModuleFooterInterface> $footer_modules_enabled 10436779af1SGreg Roach * @var Collection<int,ModuleHistoricEventsInterface> $history_modules_disabled 10536779af1SGreg Roach * @var Collection<int,ModuleHistoricEventsInterface> $history_modules_enabled 10636779af1SGreg Roach * @var Collection<array-key,int> $individuals 10741170634SGreg Roach * @var IndividualListModule|null $individual_list_module 10836779af1SGreg Roach * @var Collection<int,ModuleLanguageInterface> $language_modules_disabled 10936779af1SGreg Roach * @var Collection<int,ModuleLanguageInterface> $language_modules_enabled 110beefaa8eSGreg Roach * @var string $latest_version 111*bfd5083cSGreg Roach * @var string $latest_version_error 112*bfd5083cSGreg Roach * @var TimestampInterface $latest_version_timestamp 11336779af1SGreg Roach * @var Collection<int,ModuleListInterface> $list_modules_disabled 11436779af1SGreg Roach * @var Collection<int,ModuleListInterface> $list_modules_enabled 11536779af1SGreg Roach * @var Collection<int,ModuleMapLinkInterface> $map_link_modules_disabled 11636779af1SGreg Roach * @var Collection<int,ModuleMapLinkInterface> $map_link_modules_enabled 11736779af1SGreg Roach * @var Collection<int,ModuleMapAutocompleteInterface> $map_autocomplete_modules_disabled 11836779af1SGreg Roach * @var Collection<int,ModuleMapAutocompleteInterface> $map_autocomplete_modules_enabled 11936779af1SGreg Roach * @var Collection<int,ModuleMapProviderInterface> $map_provider_modules_disabled 12036779af1SGreg Roach * @var Collection<int,ModuleMapProviderInterface> $map_provider_modules_enabled 12136779af1SGreg Roach * @var Collection<int,ModuleMapGeoLocationInterface> $map_search_modules_disabled 12236779af1SGreg Roach * @var Collection<int,ModuleMapGeoLocationInterface> $map_search_modules_enabled 12336779af1SGreg Roach * @var Collection<int,User> $managers 12436779af1SGreg Roach * @var Collection<array-key,int> $media 12541170634SGreg Roach * @var MediaListModule|null $media_list_module 12636779af1SGreg Roach * @var Collection<int,ModuleMenuInterface> $menu_modules_disabled 12736779af1SGreg Roach * @var Collection<int,ModuleMenuInterface> $menu_modules_enabled 12836779af1SGreg Roach * @var Collection<int,User> $moderators 12936779af1SGreg Roach * @var Collection<array-key,int> $notes 13041170634SGreg Roach * @var NoteListModule|null $note_list_module 13136779af1SGreg Roach * @var Collection<int,ModuleInterface> $other_modules 132a46dd5a6SGreg Roach * @var array<string,string> $recipients 13336779af1SGreg Roach * @var Collection<int,ModuleReportInterface> $report_modules_disabled 13436779af1SGreg Roach * @var Collection<int,ModuleReportInterface> $report_modules_enabled 13536779af1SGreg Roach * @var Collection<array-key,int> $repositories 13641170634SGreg Roach * @var RepositoryListModule|null $repository_list_module 13736779af1SGreg Roach * @var Collection<int,string> $server_errors 13836779af1SGreg Roach * @var Collection<int,string> $server_warnings 1396fd01894SGreg Roach * @var bool $show_synchronize 14036779af1SGreg Roach * @var Collection<int,ModuleShareInterface> $share_modules_disabled 14136779af1SGreg Roach * @var Collection<int,ModuleShareInterface> $share_modules_enabled 14236779af1SGreg Roach * @var Collection<int,ModuleSidebarInterface> $sidebar_modules_disabled 14336779af1SGreg Roach * @var Collection<int,ModuleSidebarInterface> $sidebar_modules_enabled 14436779af1SGreg Roach * @var Collection<array-key,int> $sources 14541170634SGreg Roach * @var SourceListModule|null $source_list_module 14636779af1SGreg Roach * @var Collection<array-key,int> $submitters 14741170634SGreg Roach * @var SubmitterListModule|null $submitter_list_module 14836779af1SGreg Roach * @var Collection<int,ModuleTabInterface> $tab_modules_disabled 14936779af1SGreg Roach * @var Collection<int,ModuleTabInterface> $tab_modules_enabled 15036779af1SGreg Roach * @var Collection<int,ModuleThemeInterface> $theme_modules_disabled 15136779af1SGreg Roach * @var Collection<int,ModuleThemeInterface> $theme_modules_enabled 15241170634SGreg Roach * @var string $title 15336779af1SGreg Roach * @var Collection<int,User> $unapproved 15436779af1SGreg Roach * @var Collection<int,User> $unverified 155beefaa8eSGreg Roach */ 156beefaa8eSGreg Roach 157beefaa8eSGreg Roach?> 158dd6b2bfcSGreg Roach 159dd6b2bfcSGreg Roach<h1><?= $title ?></h1> 160dd6b2bfcSGreg Roach 161dd6b2bfcSGreg Roach<!-- WEBSITE / WEBTREES --> 162dd6b2bfcSGreg Roach<div class="card mb-4"> 163dd6b2bfcSGreg Roach <div class="card-header"> 164dd6b2bfcSGreg Roach <h2 class="mb-0"> 165dd6b2bfcSGreg Roach <?= I18N::translate('Website') ?> 1664ab569c4SGreg Roach <span class="badge bg-secondary" dir="ltr"> 1678d0ebef0SGreg Roach <?= e(Webtrees::VERSION) ?> 168dd6b2bfcSGreg Roach </span> 169dd6b2bfcSGreg Roach </h2> 170dd6b2bfcSGreg Roach </div> 171dd6b2bfcSGreg Roach <div class="card-body"> 172b7059dccSGreg Roach <?php foreach ($server_errors as $server_error) : ?> 173b7059dccSGreg Roach <p class="alert alert-danger"><?= $server_error ?></p> 174b7059dccSGreg Roach <?php endforeach ?> 175b7059dccSGreg Roach 176dd6b2bfcSGreg Roach <?php foreach ($server_warnings as $server_warning) : ?> 177dd6b2bfcSGreg Roach <p class="alert alert-warning"><?= $server_warning ?></p> 178dd6b2bfcSGreg Roach <?php endforeach ?> 179dd6b2bfcSGreg Roach 180dd6b2bfcSGreg Roach <p class="card-text"> 181dd6b2bfcSGreg Roach <?= /* I18N: %s is a URL/link to the project website */ 182dd6b2bfcSGreg Roach I18N::translate('Support and documentation can be found at %s.', '<a href="https://webtrees.net/">webtrees.net</a>') ?> 183dd6b2bfcSGreg Roach </p> 1846f1992b4SGreg Roach 185*bfd5083cSGreg Roach <?php if ($latest_version_error !== '') : ?> 186*bfd5083cSGreg Roach <p class="alert alert-danger"> 187*bfd5083cSGreg Roach <?= I18N::translate('There was an error checking for a new version.') ?> 188*bfd5083cSGreg Roach <br> 189*bfd5083cSGreg Roach <?= $latest_version_error ?> 190*bfd5083cSGreg Roach <br> 191*bfd5083cSGreg Roach <?= /* I18N: Last checked X hours ago. */ I18N::translate('Last checked %s.', $latest_version_timestamp->diffForHumans()) ?> 192*bfd5083cSGreg Roach <a href="#" class="btn btn-primary" data-wt-post-url="<?= e(route(CheckForNewVersionNow::class)) ?>"> 193*bfd5083cSGreg Roach <?= /* I18N: button label */ I18N::translate('check now') ?> 194*bfd5083cSGreg Roach </a> 195*bfd5083cSGreg Roach </p> 196*bfd5083cSGreg Roach <?php elseif ($latest_version === '') : ?> 1976f1992b4SGreg Roach <p class="card-text"> 198dd6b2bfcSGreg Roach <?= I18N::translate('No upgrade information is available.') ?> 1996f1992b4SGreg Roach </p> 2008d0ebef0SGreg Roach <?php elseif (version_compare(Webtrees::VERSION, $latest_version) < 0) : ?> 2016f1992b4SGreg Roach <p class="card-text alert alert-info"> 202dd6b2bfcSGreg Roach <?= I18N::translate('A new version of webtrees is available.') ?> 2034b3ef6caSGreg Roach <a href="<?= e(route(UpgradeWizardPage::class)) ?>" class="alert-link"> 204dd6b2bfcSGreg Roach <?= /* I18N: %s is a version number */ 205dd6b2bfcSGreg Roach I18N::translate('Upgrade to webtrees %s.', e($latest_version)) ?> 206dd6b2bfcSGreg Roach </a> 207dd6b2bfcSGreg Roach </p> 2086f1992b4SGreg Roach <?php else : ?> 2096f1992b4SGreg Roach <p class="card-text"> 2106f1992b4SGreg Roach <?= I18N::translate('This is the latest version of webtrees. No upgrade is available.') ?> 211*bfd5083cSGreg Roach <?= /* I18N: Last checked X hours ago. */ I18N::translate('Last checked %s.', $latest_version_timestamp->diffForHumans()) ?> 212*bfd5083cSGreg Roach <?php if ($latest_version_timestamp->timestamp() + 60 < time()) : ?> 213*bfd5083cSGreg Roach <a href="#" class="btn btn-primary" data-wt-post-url="<?= e(route(CheckForNewVersionNow::class)) ?>"> 214*bfd5083cSGreg Roach <?= /* I18N: button label */ I18N::translate('check now') ?> 215*bfd5083cSGreg Roach </a> 216*bfd5083cSGreg Roach <?php endif ?> 2176f1992b4SGreg Roach </p> 2186f1992b4SGreg Roach <?php endif ?> 219dd6b2bfcSGreg Roach 22064d12f7bSGreg Roach <?php foreach ($custom_updates as $module) : ?> 22164d12f7bSGreg Roach <div class="alert alert-info"> 22264d12f7bSGreg Roach <?= view('icons/information') ?> 22364d12f7bSGreg Roach <?= I18N::translate('An upgrade is available.') ?> 22464d12f7bSGreg Roach <br> 22564d12f7bSGreg Roach <?= $module->title() ?> — <?= e($module->customModuleVersion()) ?> — <?= e($module->customModuleLatestVersion()) ?> 226a2f808d2SGreg Roach <?php if ($module->customModuleSupportUrl() !== '') : ?> 227a2f808d2SGreg Roach <br> 228a2f808d2SGreg Roach <?= I18N::translate('For more information, see %s.', '<a href="' . e($module->customModuleSupportUrl()) . '">' . e($module->customModuleSupportUrl()) . '</a>') ?> 229a2f808d2SGreg Roach <?php endif ?> 23064d12f7bSGreg Roach </div> 23164d12f7bSGreg Roach <?php endforeach ?> 23264d12f7bSGreg Roach 233dd6b2bfcSGreg Roach <div class="row"> 234c8183f29SGreg Roach <div class="col-sm"> 235315eb316SGreg Roach <ul class="fa-ul mx-0"> 236dd6b2bfcSGreg Roach <li> 237dd6b2bfcSGreg Roach <span class="fa-li"><?= view('icons/preferences') ?></span> 238c7aa856bSGreg Roach <a href="<?= e(route(SitePreferencesPage::class)) ?>"> 239dd6b2bfcSGreg Roach <?= I18N::translate('Website preferences') ?> 240dd6b2bfcSGreg Roach </a> 241dd6b2bfcSGreg Roach </li> 242dd6b2bfcSGreg Roach <li> 243a24f7142SGreg Roach <span class="fa-li"><?= view('icons/email') ?></span> 244b4144a6dSGreg Roach <a href="<?= e(route(EmailPreferencesPage::class)) ?>"> 245dd6b2bfcSGreg Roach <?= I18N::translate('Sending email') ?> 246dd6b2bfcSGreg Roach </a> 247dd6b2bfcSGreg Roach </li> 248dd6b2bfcSGreg Roach <li> 249a24f7142SGreg Roach <span class="fa-li"><?= view('icons/user') ?></span> 250c7aa856bSGreg Roach <a href="<?= e(route(SiteRegistrationPage::class)) ?>"> 251dd6b2bfcSGreg Roach <?= I18N::translate('Sign-in and registration') ?> 252dd6b2bfcSGreg Roach </a> 253dd6b2bfcSGreg Roach </li> 254dd6b2bfcSGreg Roach </ul> 255dd6b2bfcSGreg Roach </div> 256c8183f29SGreg Roach <div class="col-sm"> 257315eb316SGreg Roach <ul class="fa-ul mx-0"> 258dd6b2bfcSGreg Roach <li> 259a24f7142SGreg Roach <span class="fa-li"><?= view('icons/list') ?></span> 26057bfa969SGreg Roach <a href="<?= e(route(SiteLogsPage::class)) ?>"> 261dd6b2bfcSGreg Roach <?= I18N::translate('Website logs') ?> 262dd6b2bfcSGreg Roach </a> 263dd6b2bfcSGreg Roach </li> 264dd6b2bfcSGreg Roach <li> 265a24f7142SGreg Roach <span class="fa-li"><?= view('icons/delete') ?></span> 266fd6c003fSGreg Roach <a href="<?= e(route(CleanDataFolder::class)) ?>"> 267dd6b2bfcSGreg Roach <?= I18N::translate('Clean up data folder') ?> 268dd6b2bfcSGreg Roach </a> 269dd6b2bfcSGreg Roach </li> 270dd6b2bfcSGreg Roach <li> 27128281361SGreg Roach <span class="fa-li"><?= view('icons/server') ?></span> 272b1a54200SGreg Roach <a href="<?= e(route(PhpInformation::class)) ?>"> 273dd6b2bfcSGreg Roach <?= I18N::translate('Server information') ?> 274dd6b2bfcSGreg Roach </a> 275dd6b2bfcSGreg Roach </li> 276dd6b2bfcSGreg Roach </ul> 277dd6b2bfcSGreg Roach </div> 278c8183f29SGreg Roach <div class="col-sm"> 279315eb316SGreg Roach <ul class="fa-ul mx-0"> 280c8183f29SGreg Roach <li> 281c8183f29SGreg Roach <span class="fa-li"><?= view('icons/tag') ?></span> 282c8183f29SGreg Roach <a href="<?= e(route(SiteTagsPage::class)) ?>"> 283c8183f29SGreg Roach <?= I18N::translate('GEDCOM tags') ?> 284c8183f29SGreg Roach </a> 285c8183f29SGreg Roach </li> 286c8183f29SGreg Roach </ul> 287c8183f29SGreg Roach </div> 288dd6b2bfcSGreg Roach </div> 289dd6b2bfcSGreg Roach </div> 290dd6b2bfcSGreg Roach</div> 291dd6b2bfcSGreg Roach 292dd6b2bfcSGreg Roach<!-- FAMILY TREES --> 2934e73f0bdSGreg Roach<div class="card mb-4 <?= array_sum($changes) ? 'card-outline-danger' : '' ?>"> 294dd6b2bfcSGreg Roach <div class="card-header"> 295dd6b2bfcSGreg Roach <h2 class="mb-0"> 296dd6b2bfcSGreg Roach <?= I18N::translate('Family trees') ?> 2974ab569c4SGreg Roach <span class="badge bg-secondary"> 29841170634SGreg Roach <?= I18N::number($all_trees->count()) ?> 299dd6b2bfcSGreg Roach </span> 300dd6b2bfcSGreg Roach </h2> 301dd6b2bfcSGreg Roach </div> 3026fd01894SGreg Roach 303dd6b2bfcSGreg Roach <div class="card-body"> 304e218f363SGreg Roach <?php if ($all_trees->isEmpty()) : ?> 305e218f363SGreg Roach <p class="alert alert-info"> 306e218f363SGreg Roach <?= I18N::translate('You need to create a family tree.') ?> 307e218f363SGreg Roach </p> 308e218f363SGreg Roach <?php endif ?> 309e218f363SGreg Roach 310315eb316SGreg Roach <ul class="fa-ul mx-0"> 3115afbc57aSGreg Roach <li> 3125afbc57aSGreg Roach <span class="fa-li"><?= view('icons/add') ?></span> 3135afbc57aSGreg Roach <a href="<?= e(route(CreateTreePage::class)) ?>"> 3145afbc57aSGreg Roach <?= I18N::translate('Create a family tree') ?> 3155afbc57aSGreg Roach </a> 3165afbc57aSGreg Roach </li> 3175afbc57aSGreg Roach <li> 3185afbc57aSGreg Roach <span class="fa-li"><?= view('icons/block') ?></span> 3198e0e1b25SGreg Roach <a href="<?= e(route(TreePageDefaultEdit::class)) ?>"> 3205afbc57aSGreg Roach <?= I18N::translate('Set the default blocks for new family trees') ?> 3215afbc57aSGreg Roach </a> 3225afbc57aSGreg Roach </li> 3235afbc57aSGreg Roach <?php if (count($all_trees) > 1) : ?> 3245afbc57aSGreg Roach <li> 3255afbc57aSGreg Roach <span class="fa-li"><?= view('icons/merge') ?></span> 3266fd01894SGreg Roach <a href="<?= e(route(MergeTreesPage::class)) ?>"> 3275afbc57aSGreg Roach <?= I18N::translate('Merge family trees') ?> 3285afbc57aSGreg Roach </a> 3295afbc57aSGreg Roach </li> 3305afbc57aSGreg Roach <?php endif ?> 3315afbc57aSGreg Roach </ul> 3325afbc57aSGreg Roach 333dd6b2bfcSGreg Roach <table class="table table-sm"> 334315eb316SGreg Roach <caption class="visually-hidden"> 335dd6b2bfcSGreg Roach <?= I18N::translate('Family trees') ?> 336dd6b2bfcSGreg Roach </caption> 3377039fd97SGreg Roach 338dd6b2bfcSGreg Roach <thead> 339dd6b2bfcSGreg Roach <tr> 340dd6b2bfcSGreg Roach <th><?= I18N::translate('Family tree') ?></th> 341e72c24d6SGreg Roach <th class="align-digits"><?= I18N::translate('Pending changes') ?></th> 342e72c24d6SGreg Roach <th class="d-none d-sm-table-cell align-digits"><?= I18N::translate('Individuals') ?></th> 343e72c24d6SGreg Roach <th class="d-none d-lg-table-cell align-digits"><?= I18N::translate('Families') ?></th> 344e72c24d6SGreg Roach <th class="d-none d-sm-table-cell align-digits"><?= I18N::translate('Sources') ?></th> 345e72c24d6SGreg Roach <th class="d-none d-lg-table-cell align-digits"><?= I18N::translate('Repositories') ?></th> 346e72c24d6SGreg Roach <th class="d-none d-sm-table-cell align-digits"><?= I18N::translate('Media') ?></th> 347e72c24d6SGreg Roach <th class="d-none d-lg-table-cell align-digits"><?= I18N::translate('Notes') ?></th> 348e72c24d6SGreg Roach <th class="d-none d-lg-table-cell align-digits"><?= I18N::translate('Submitters') ?></th> 349dd6b2bfcSGreg Roach </tr> 350dd6b2bfcSGreg Roach </thead> 3517039fd97SGreg Roach 352dd6b2bfcSGreg Roach <tbody> 353b1a54200SGreg Roach <?php foreach ($all_trees as $tree) : ?> 354b1a54200SGreg Roach <tr class="<?= $changes[$tree->id()] ? 'danger' : '' ?>"> 355b1a54200SGreg Roach <th scope="row"> 356b1a54200SGreg Roach <?= view('icons/preferences') ?> 3576fd01894SGreg Roach <a href="<?= e(route(ManageTrees::class, ['tree' => $tree->name()])) ?>"> 358b1a54200SGreg Roach <?= e($tree->name()) ?> 359b1a54200SGreg Roach - 360b1a54200SGreg Roach <?= e($tree->title()) ?> 361b1a54200SGreg Roach </a> 362b1a54200SGreg Roach </th> 363b1a54200SGreg Roach <td style="text-align: right;"> 364b1a54200SGreg Roach <?php if ($changes[$tree->id()]) : ?> 36522e73debSGreg Roach <a href="<?= e(route(PendingChanges::class, ['tree' => $tree->name(), 'url' => route(ControlPanel::class)])) ?>"> 366b1a54200SGreg Roach <?= I18N::number($changes[$tree->id()]) ?> 367315eb316SGreg Roach <span class="visually-hidden"><?= I18N::translate('Pending changes') ?> <?= e($tree->title()) ?></span> 368b1a54200SGreg Roach </a> 369b1a54200SGreg Roach <?php else : ?> 370b1a54200SGreg Roach - 371b1a54200SGreg Roach <?php endif ?> 372b1a54200SGreg Roach </td> 373b1a54200SGreg Roach <td class="d-none d-sm-table-cell align-digits"> 374b1a54200SGreg Roach <?php if ($individuals[$tree->id()] > 0) : ?> 375b1a54200SGreg Roach <?php if ($individual_list_module instanceof IndividualListModule) : ?> 376b1a54200SGreg Roach <a href="<?= e($individual_list_module->listUrl($tree)) ?>"><?= I18N::number($individuals[$tree->id()]) ?></a> 377b1a54200SGreg Roach <?php else : ?> 378b1a54200SGreg Roach <?= I18N::number($individuals[$tree->id()]) ?> 379b1a54200SGreg Roach <?php endif ?> 380b1a54200SGreg Roach <?php else : ?> 381b1a54200SGreg Roach - 382b1a54200SGreg Roach <?php endif ?> 383b1a54200SGreg Roach </td> 384b1a54200SGreg Roach <td class="d-none d-lg-table-cell align-digits"> 385b1a54200SGreg Roach <?php if ($families[$tree->id()] > 0) : ?> 386b1a54200SGreg Roach <?php if ($family_list_module instanceof FamilyListModule) : ?> 387b1a54200SGreg Roach <a href="<?= e($family_list_module->listUrl($tree)) ?>"><?= I18N::number($families[$tree->id()]) ?></a> 388b1a54200SGreg Roach <?php else : ?> 389b1a54200SGreg Roach <?= I18N::number($families[$tree->id()]) ?> 390b1a54200SGreg Roach <?php endif ?> 391b1a54200SGreg Roach <?php else : ?> 392b1a54200SGreg Roach - 393b1a54200SGreg Roach <?php endif ?> 394b1a54200SGreg Roach </td> 395b1a54200SGreg Roach <td class="d-none d-sm-table-cell align-digits"> 396b1a54200SGreg Roach <?php if ($sources[$tree->id()] > 0) : ?> 397b1a54200SGreg Roach <?php if ($source_list_module instanceof SourceListModule) : ?> 398b1a54200SGreg Roach <a href="<?= e($source_list_module->listUrl($tree)) ?>"><?= I18N::number($sources[$tree->id()]) ?></a> 399b1a54200SGreg Roach <?php else : ?> 400b1a54200SGreg Roach <?= I18N::number($sources[$tree->id()]) ?> 401b1a54200SGreg Roach <?php endif ?> 402b1a54200SGreg Roach <?php else : ?> 403b1a54200SGreg Roach - 404b1a54200SGreg Roach <?php endif ?> 405b1a54200SGreg Roach </td> 406b1a54200SGreg Roach <td class="d-none d-lg-table-cell align-digits"> 407b1a54200SGreg Roach <?php if ($repositories[$tree->id()] > 0) : ?> 408b1a54200SGreg Roach <?php if ($repository_list_module instanceof RepositoryListModule) : ?> 409b1a54200SGreg Roach <a href="<?= e($repository_list_module->listUrl($tree)) ?>"><?= I18N::number($repositories[$tree->id()]) ?></a> 410b1a54200SGreg Roach <?php else : ?> 411b1a54200SGreg Roach <?= I18N::number($repositories[$tree->id()]) ?> 412b1a54200SGreg Roach <?php endif ?> 413b1a54200SGreg Roach <?php else : ?> 414b1a54200SGreg Roach - 415b1a54200SGreg Roach <?php endif ?> 416b1a54200SGreg Roach </td> 417b1a54200SGreg Roach <td class="d-none d-sm-table-cell align-digits"> 418b1a54200SGreg Roach <?php if ($media[$tree->id()] > 0) : ?> 419b1a54200SGreg Roach <?php if ($media_list_module instanceof MediaListModule) : ?> 420b1a54200SGreg Roach <a href="<?= e($media_list_module->listUrl($tree)) ?>"><?= I18N::number($media[$tree->id()]) ?></a> 421b1a54200SGreg Roach <?php else : ?> 422b1a54200SGreg Roach <?= I18N::number($media[$tree->id()]) ?> 423b1a54200SGreg Roach <?php endif ?> 424b1a54200SGreg Roach <?php else : ?> 425b1a54200SGreg Roach - 426b1a54200SGreg Roach <?php endif ?> 427b1a54200SGreg Roach </td> 428b1a54200SGreg Roach <td class="d-none d-lg-table-cell align-digits"> 429b1a54200SGreg Roach <?php if ($notes[$tree->id()] > 0) : ?> 430b1a54200SGreg Roach <?php if ($note_list_module instanceof NoteListModule) : ?> 431b1a54200SGreg Roach <a href="<?= e($note_list_module->listUrl($tree)) ?>"><?= I18N::number($notes[$tree->id()]) ?></a> 432b1a54200SGreg Roach <?php else : ?> 433b1a54200SGreg Roach <?= I18N::number($notes[$tree->id()]) ?> 434b1a54200SGreg Roach <?php endif ?> 435b1a54200SGreg Roach <?php else : ?> 436b1a54200SGreg Roach - 437b1a54200SGreg Roach <?php endif ?> 438b1a54200SGreg Roach </td> 439e72c24d6SGreg Roach <td class="d-none d-lg-table-cell align-digits"> 440e72c24d6SGreg Roach <?php if ($submitters[$tree->id()] > 0) : ?> 441e72c24d6SGreg Roach <?php if ($submitter_list_module instanceof SubmitterListModule) : ?> 442e72c24d6SGreg Roach <a href="<?= e($submitter_list_module->listUrl($tree)) ?>"><?= I18N::number($submitters[$tree->id()]) ?></a> 443e72c24d6SGreg Roach <?php else : ?> 444e72c24d6SGreg Roach <?= I18N::number($submitters[$tree->id()]) ?> 445e72c24d6SGreg Roach <?php endif ?> 446e72c24d6SGreg Roach <?php else : ?> 447e72c24d6SGreg Roach - 448e72c24d6SGreg Roach <?php endif ?> 449e72c24d6SGreg Roach </td> 450b1a54200SGreg Roach </tr> 451ce42304aSGreg Roach <?php endforeach ?> 452ce42304aSGreg Roach </tbody> 4537039fd97SGreg Roach 454dd6b2bfcSGreg Roach <tfoot> 455dd6b2bfcSGreg Roach <tr> 456dd6b2bfcSGreg Roach <th scope="row"> 457dd6b2bfcSGreg Roach <?= I18N::translate('Total') ?> 458dd6b2bfcSGreg Roach </th> 459dbffae50SGreg Roach <td class="align-digits"> 460dd6b2bfcSGreg Roach <?= I18N::number(array_sum($changes)) ?> 461dd6b2bfcSGreg Roach </td> 462dbffae50SGreg Roach <td class="d-none d-sm-table-cell align-digits"> 4632078eafaSGreg Roach <?= I18N::number($individuals->sum()) ?> 464dd6b2bfcSGreg Roach </td> 465dbffae50SGreg Roach <td class="d-none d-lg-table-cell align-digits"> 4662078eafaSGreg Roach <?= I18N::number($families->sum()) ?> 467dd6b2bfcSGreg Roach </td> 468dbffae50SGreg Roach <td class="d-none d-sm-table-cell align-digits"> 4692078eafaSGreg Roach <?= I18N::number($sources->sum()) ?> 470dd6b2bfcSGreg Roach </td> 471dbffae50SGreg Roach <td class="d-none d-lg-table-cell align-digits"> 4722078eafaSGreg Roach <?= I18N::number($repositories->sum()) ?> 473dd6b2bfcSGreg Roach </td> 474dbffae50SGreg Roach <td class="d-none d-sm-table-cell align-digits"> 4752078eafaSGreg Roach <?= I18N::number($media->sum()) ?> 476dd6b2bfcSGreg Roach </td> 477dbffae50SGreg Roach <td class="d-none d-lg-table-cell align-digits"> 4782078eafaSGreg Roach <?= I18N::number($notes->sum()) ?> 479dd6b2bfcSGreg Roach </td> 480c194657aSGreg Roach <td class="d-none d-lg-table-cell align-digits"> 481c194657aSGreg Roach <?= I18N::number($submitters->sum()) ?> 482c194657aSGreg Roach </td> 483dd6b2bfcSGreg Roach </tr> 484dd6b2bfcSGreg Roach </tfoot> 485dd6b2bfcSGreg Roach </table> 486dd6b2bfcSGreg Roach </div> 487dd6b2bfcSGreg Roach</div> 488dd6b2bfcSGreg Roach 4896fd01894SGreg Roach<?php if ($show_synchronize) : ?> 4906fd01894SGreg Roach <?= view('admin/synchronize-trees') ?> 4916fd01894SGreg Roach<?php endif ?> 4926fd01894SGreg Roach 493dd6b2bfcSGreg Roach<!-- USERS --> 494dd6b2bfcSGreg Roach<div class="card mb-4 <?= $unapproved || $unverified ? 'card-outline-danger' : '' ?>"> 495dd6b2bfcSGreg Roach <div class="card-header"> 496dd6b2bfcSGreg Roach <h2 class="mb-0"> 497dd6b2bfcSGreg Roach <?= I18N::translate('Users') ?> 4984ab569c4SGreg Roach <span class="badge bg-secondary"> 499dd6b2bfcSGreg Roach <?= I18N::number(count($all_users)) ?> 500dd6b2bfcSGreg Roach </span> 501dd6b2bfcSGreg Roach </h2> 502dd6b2bfcSGreg Roach </div> 503dd6b2bfcSGreg Roach <div class="card-body"> 504dd6b2bfcSGreg Roach <dl class="row"> 505dd6b2bfcSGreg 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) : ?> 506040e7dbaSGreg Roach <dt class="col-sm-6"> 507dd6b2bfcSGreg Roach <?= $label ?> 508dd6b2bfcSGreg Roach </dt> 509040e7dbaSGreg Roach <dd class="col-sm-6"> 510dd6b2bfcSGreg Roach <?php foreach ($list as $n => $user) : ?> 511dd6b2bfcSGreg Roach <?= $n ? I18N::$list_separator : '' ?> 5124c3563c0SGreg Roach <a href="<?= e(route(UserEditPage::class, ['user_id' => $user->id()])) ?>" dir="auto"> 513e5a6b4d4SGreg Roach <?= e($user->realName()) ?> 514dd6b2bfcSGreg Roach </a> 515dd6b2bfcSGreg Roach <?php endforeach ?> 516040e7dbaSGreg Roach <?php if ($list->isEmpty()) : ?> 517040e7dbaSGreg Roach — 518040e7dbaSGreg Roach <?php endif ?> 519dd6b2bfcSGreg Roach </dd> 520dd6b2bfcSGreg Roach <?php endforeach ?> 521dd6b2bfcSGreg Roach </dl> 522dd6b2bfcSGreg Roach 523dd6b2bfcSGreg Roach <div class="row"> 524dd6b2bfcSGreg Roach <div class="col-sm-6"> 525315eb316SGreg Roach <ul class="fa-ul mx-0"> 526dd6b2bfcSGreg Roach <li> 527dd6b2bfcSGreg Roach <span class="fa-li"><?= view('icons/preferences') ?></span> 5284c3563c0SGreg Roach <a href="<?= e(route(UserListPage::class)) ?>"> 529dd6b2bfcSGreg Roach <?= I18N::translate('User administration') ?> 530dd6b2bfcSGreg Roach </a> 531dd6b2bfcSGreg Roach </li> 532dd6b2bfcSGreg Roach <li> 533a24f7142SGreg Roach <span class="fa-li"><?= view('icons/add') ?></span> 5344c3563c0SGreg Roach <a href="<?= e(route(UserAddPage::class)) ?>"> 535dd6b2bfcSGreg Roach <?= I18N::translate('Add a user') ?> 536dd6b2bfcSGreg Roach </a> 537dd6b2bfcSGreg Roach </li> 538dd6b2bfcSGreg Roach <li> 539a24f7142SGreg Roach <span class="fa-li"><?= view('icons/delete') ?></span> 5402474349cSGreg Roach <a href="<?= e(route(UsersCleanupPage::class)) ?>"> 541dd6b2bfcSGreg Roach <?= I18N::translate('Delete inactive users') ?> 542dd6b2bfcSGreg Roach </a> 543dd6b2bfcSGreg Roach </li> 544dd6b2bfcSGreg Roach <li> 545a24f7142SGreg Roach <span class="fa-li"><?= view('icons/block') ?></span> 5468e0e1b25SGreg Roach <a href="<?= e(route(UserPageDefaultEdit::class)) ?>"> 547dd6b2bfcSGreg Roach <?= I18N::translate('Set the default blocks for new users') ?> 548dd6b2bfcSGreg Roach </a> 549dd6b2bfcSGreg Roach </li> 550dd6b2bfcSGreg Roach </ul> 551dd6b2bfcSGreg Roach </div> 552dd6b2bfcSGreg Roach <div class="col-sm-6"> 553315eb316SGreg Roach <ul class="fa-ul mx-0"> 554a46dd5a6SGreg Roach <?php foreach ($recipients as $to => $recipient) : ?> 555dd6b2bfcSGreg Roach <li> 556dd6b2bfcSGreg Roach <span class="fa-li"><?= view('icons/email') ?></span> 557a46dd5a6SGreg Roach <a href="<?= e(route(BroadcastPage::class, ['to' => $to])) ?>"> 558a46dd5a6SGreg Roach <?= $recipient ?> 559dd6b2bfcSGreg Roach </a> 560dd6b2bfcSGreg Roach </li> 561a46dd5a6SGreg Roach <?php endforeach ?> 562dd6b2bfcSGreg Roach </ul> 563dd6b2bfcSGreg Roach </div> 564dd6b2bfcSGreg Roach </div> 565dd6b2bfcSGreg Roach </div> 566dd6b2bfcSGreg Roach</div> 567dd6b2bfcSGreg Roach 568dd6b2bfcSGreg Roach<!-- MODULES --> 569dd6b2bfcSGreg Roach<div class="card mb-4"> 570dd6b2bfcSGreg Roach <div class="card-header"> 571dd6b2bfcSGreg Roach <h2 class="mb-0"> 572dd6b2bfcSGreg Roach <?= I18N::translate('Modules') ?> 5739d627a9eSGreg Roach <?= view('components/badge', ['count' => $all_modules_enabled->count(), 'total' => $all_modules_disabled->count(), 'context' => 'secondary']) ?> 574dd6b2bfcSGreg Roach </h2> 575dd6b2bfcSGreg Roach </div> 5760cb66f86SGreg Roach 577dd6b2bfcSGreg Roach <div class="card-body"> 578315eb316SGreg Roach <ul class="fa-ul mx-0"> 5790cb66f86SGreg Roach <li> 5809d627a9eSGreg Roach <span class="fa-li"><?= view('icons/module') ?></span> 5819f667ff2SGreg Roach <a href="<?= e(route(ModulesAllPage::class)) ?>"> 5829d627a9eSGreg Roach <?= I18N::translate('All modules') ?> 5830cb66f86SGreg Roach </a> 5849d627a9eSGreg Roach <?= view('components/badge', ['count' => $all_modules_enabled->count(), 'total' => $all_modules_disabled->count(), 'context' => 'primary']) ?> 5850cb66f86SGreg Roach </li> 5860cb66f86SGreg Roach </ul> 5870cb66f86SGreg Roach 588dd6b2bfcSGreg Roach <div class="row"> 589abafa13cSGreg Roach <div class="col-sm-4"> 5909d627a9eSGreg Roach <h3> 591c9c6f2ecSGreg Roach <?= I18N::translate('Website') ?> 592c9c6f2ecSGreg Roach </h3> 593c9c6f2ecSGreg Roach 594315eb316SGreg Roach <ul class="fa-ul mx-0"> 595c9c6f2ecSGreg Roach <li> 596c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/footer') ?></span> 597c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesFootersPage::class)) ?>"> 598c9c6f2ecSGreg Roach <?= I18N::translate('Footers') ?> 599c9c6f2ecSGreg Roach </a> 600c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $footer_modules_enabled->count(), 'total' => $footer_modules_disabled->count(), 'context' => 'primary']) ?> 601c9c6f2ecSGreg Roach </li> 602c9c6f2ecSGreg Roach <li> 603c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/analytics') ?></span> 604c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesAnalyticsPage::class)) ?>"> 605c9c6f2ecSGreg Roach <?= I18N::translate('Tracking and analytics') ?> 606c9c6f2ecSGreg Roach </a> 607c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $analytics_modules_enabled->count(), 'total' => $analytics_modules_disabled->count(), 'context' => 'primary']) ?> 608c9c6f2ecSGreg Roach </li> 609c9c6f2ecSGreg Roach <li> 610c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/theme') ?></span> 611c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesThemesPage::class)) ?>"> 612c9c6f2ecSGreg Roach <?= I18N::translate('Themes') ?> 613c9c6f2ecSGreg Roach </a> 614c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $theme_modules_enabled->count(), 'total' => $theme_modules_disabled->count(), 'context' => 'primary']) ?> 615c9c6f2ecSGreg Roach </li> 616c9c6f2ecSGreg Roach <li> 617c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/language') ?></span> 618c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesLanguagesPage::class)) ?>"> 619c9c6f2ecSGreg Roach <?= I18N::translate('Languages') ?> 620c9c6f2ecSGreg Roach </a> 621c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $language_modules_enabled->count(), 'total' => $language_modules_disabled->count(), 'context' => 'primary']) ?> 622c9c6f2ecSGreg Roach </li> 623c9c6f2ecSGreg Roach </ul> 624c9c6f2ecSGreg Roach 625c9c6f2ecSGreg Roach <h3> 626c9c6f2ecSGreg Roach <?= I18N::translate('Home page') ?> 627c9c6f2ecSGreg Roach </h3> 628c9c6f2ecSGreg Roach 629315eb316SGreg Roach <ul class="fa-ul mx-0"> 630c9c6f2ecSGreg Roach <li> 631c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/block') ?></span> 632c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesBlocksPage::class)) ?>"> 633c9c6f2ecSGreg Roach <?= I18N::translate('Blocks') ?> 634c9c6f2ecSGreg Roach </a> 635c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $block_modules_enabled->count(), 'total' => $block_modules_disabled->count(), 'context' => 'primary']) ?> 636c9c6f2ecSGreg Roach </li> 637c9c6f2ecSGreg Roach </ul> 638c9c6f2ecSGreg Roach 639c9c6f2ecSGreg Roach <h3> 640c9c6f2ecSGreg Roach <?= I18N::translate('Geographic data') ?> 641c9c6f2ecSGreg Roach </h3> 642c9c6f2ecSGreg Roach 643315eb316SGreg Roach <ul class="fa-ul mx-0"> 644c9c6f2ecSGreg Roach <li> 645c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/search') ?></span> 646c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesMapAutocompletePage::class)) ?>"> 6475b71d802SGreg Roach <?= /* I18N: Automatic suggestions when you type */ I18N::translate('Autocomplete') ?> 648c9c6f2ecSGreg Roach </a> 649c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $map_autocomplete_modules_enabled->count(), 'total' => $map_autocomplete_modules_disabled->count(), 'context' => 'primary']) ?> 650c9c6f2ecSGreg Roach </li> 651c9c6f2ecSGreg Roach <li> 652c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/search-location') ?></span> 653c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesMapGeoLocationsPage::class)) ?>"> 6549fb58c9eSGreg Roach <?= /* I18N: find latitude/longitude for a place */ I18N::translate('Geolocation') ?> 655c9c6f2ecSGreg Roach </a> 656c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $map_search_modules_enabled->count(), 'total' => $map_search_modules_disabled->count(), 'context' => 'primary']) ?> 657c9c6f2ecSGreg Roach </li> 658c9c6f2ecSGreg Roach <li> 659c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/location') ?></span> 660c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesMapLinksPage::class)) ?>"> 6615b71d802SGreg Roach <?= /* I18N: Links to maps */ I18N::translate('Map links') ?> 662c9c6f2ecSGreg Roach </a> 663c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $map_link_modules_enabled->count(), 'total' => $map_link_modules_disabled->count(), 'context' => 'primary']) ?> 664c9c6f2ecSGreg Roach </li> 665c9c6f2ecSGreg Roach <li> 666c9c6f2ecSGreg Roach <span class="fa-li"><?= view('icons/map') ?></span> 667c9c6f2ecSGreg Roach <a href="<?= e(route(ModulesMapProvidersPage::class)) ?>"> 6689fb58c9eSGreg Roach <?= I18N::translate('Map providers') ?> 669c9c6f2ecSGreg Roach </a> 670c9c6f2ecSGreg Roach <?= view('components/badge', ['count' => $map_provider_modules_enabled->count(), 'total' => $map_provider_modules_disabled->count(), 'context' => 'primary']) ?> 671c9c6f2ecSGreg Roach </li> 672c9c6f2ecSGreg Roach </ul> 673c9c6f2ecSGreg Roach </div> 674c9c6f2ecSGreg Roach 675c9c6f2ecSGreg Roach <div class="col-sm-4"> 676c9c6f2ecSGreg Roach <h3> 6779d627a9eSGreg Roach <?= I18N::translate('Genealogy') ?> 6789d627a9eSGreg Roach </h3> 67909fbf3e5SGreg Roach 680315eb316SGreg Roach <ul class="fa-ul mx-0"> 681dd6b2bfcSGreg Roach <li> 682dd6b2bfcSGreg Roach <span class="fa-li"><?= view('icons/menu') ?></span> 6839f667ff2SGreg Roach <a href="<?= e(route(ModulesMenusPage::class)) ?>"> 684dd6b2bfcSGreg Roach <?= I18N::translate('Menus') ?> 685dd6b2bfcSGreg Roach </a> 6869d627a9eSGreg Roach <?= view('components/badge', ['count' => $menu_modules_enabled->count(), 'total' => $menu_modules_disabled->count(), 'context' => 'primary']) ?> 687dd6b2bfcSGreg Roach </li> 688dd6b2bfcSGreg Roach <li> 689dd6b2bfcSGreg Roach <span class="fa-li"><?= view('icons/chart') ?></span> 6909f667ff2SGreg Roach <a href="<?= e(route(ModulesChartsPage::class)) ?>"> 691dd6b2bfcSGreg Roach <?= I18N::translate('Charts') ?> 692dd6b2bfcSGreg Roach </a> 6939d627a9eSGreg Roach <?= view('components/badge', ['count' => $chart_modules_enabled->count(), 'total' => $chart_modules_disabled->count(), 'context' => 'primary']) ?> 694dd6b2bfcSGreg Roach </li> 695dd6b2bfcSGreg Roach <li> 69667992b6aSRichard Cissee <span class="fa-li"><?= view('icons/list') ?></span> 6979f667ff2SGreg Roach <a href="<?= e(route(ModulesListsPage::class)) ?>"> 69867992b6aSRichard Cissee <?= I18N::translate('Lists') ?> 69967992b6aSRichard Cissee </a> 7009d627a9eSGreg Roach <?= view('components/badge', ['count' => $list_modules_enabled->count(), 'total' => $list_modules_disabled->count(), 'context' => 'primary']) ?> 70167992b6aSRichard Cissee </li> 70267992b6aSRichard Cissee <li> 703dd6b2bfcSGreg Roach <span class="fa-li"><?= view('icons/report') ?></span> 7049f667ff2SGreg Roach <a href="<?= e(route(ModulesReportsPage::class)) ?>"> 705dd6b2bfcSGreg Roach <?= I18N::translate('Reports') ?> 706dd6b2bfcSGreg Roach </a> 7079d627a9eSGreg Roach <?= view('components/badge', ['count' => $report_modules_enabled->count(), 'total' => $report_modules_disabled->count(), 'context' => 'primary']) ?> 708dd6b2bfcSGreg Roach </li> 709ce42304aSGreg Roach <li> 710ce42304aSGreg Roach <span class="fa-li"><?= view('icons/data-fix') ?></span> 7119f667ff2SGreg Roach <a href="<?= e(route(ModulesDataFixesPage::class)) ?>"> 712ce42304aSGreg Roach <?= I18N::translate('Data fixes') ?> 713ce42304aSGreg Roach </a> 714ce42304aSGreg Roach <?= view('components/badge', ['count' => $data_fix_modules_enabled->count(), 'total' => $data_fix_modules_disabled->count(), 'context' => 'primary']) ?> 715ce42304aSGreg Roach </li> 7169d627a9eSGreg Roach </ul> 71709fbf3e5SGreg Roach 7189d627a9eSGreg Roach <h3> 7199d627a9eSGreg Roach <?= I18N::translate('Individual page') ?> 7209d627a9eSGreg Roach </h3> 72109fbf3e5SGreg Roach 722315eb316SGreg Roach <ul class="fa-ul mx-0"> 7239d627a9eSGreg Roach <li> 7249d627a9eSGreg Roach <span class="fa-li"><?= view('icons/tab') ?></span> 7259f667ff2SGreg Roach <a href="<?= e(route(ModulesTabsPage::class)) ?>"> 7269d627a9eSGreg Roach <?= I18N::translate('Tabs') ?> 7279d627a9eSGreg Roach <?= view('components/badge', ['count' => $tab_modules_enabled->count(), 'total' => $tab_modules_disabled->count(), 'context' => 'primary']) ?> 7289d627a9eSGreg Roach </a> 7299d627a9eSGreg Roach </li> 7309d627a9eSGreg Roach <li> 7319d627a9eSGreg Roach <span class="fa-li"><?= view('icons/sidebar') ?></span> 7329f667ff2SGreg Roach <a href="<?= e(route(ModulesSidebarsPage::class)) ?>"> 7339d627a9eSGreg Roach <?= I18N::translate('Sidebars') ?> 7349d627a9eSGreg Roach </a> 7359d627a9eSGreg Roach <?= view('components/badge', ['count' => $sidebar_modules_enabled->count(), 'total' => $sidebar_modules_disabled->count(), 'context' => 'primary']) ?> 7369d627a9eSGreg Roach </li> 7379d627a9eSGreg Roach <li> 7389d627a9eSGreg Roach <span class="fa-li"><?= view('icons/history') ?></span> 7399f667ff2SGreg Roach <a href="<?= e(route(ModulesHistoricEventsPage::class)) ?>"> 7409d627a9eSGreg Roach <?= I18N::translate('Historic events') ?> 7419d627a9eSGreg Roach </a> 7429d627a9eSGreg Roach <?= view('components/badge', ['count' => $history_modules_enabled->count(), 'total' => $history_modules_disabled->count(), 'context' => 'primary']) ?> 7439d627a9eSGreg Roach </li> 744853f2b8aSGreg Roach <li> 745853f2b8aSGreg Roach <span class="fa-li"><?= view('icons/share') ?></span> 746853f2b8aSGreg Roach <a href="<?= e(route(ModulesSharesPage::class)) ?>"> 747853f2b8aSGreg Roach <?= /* I18N: plural noun - things that can be shared */ I18N::translate('Shares') ?> 748853f2b8aSGreg Roach </a> 749853f2b8aSGreg Roach <?= view('components/badge', ['count' => $share_modules_enabled->count(), 'total' => $share_modules_disabled->count(), 'context' => 'primary']) ?> 750853f2b8aSGreg Roach </li> 75135a8a96dSGreg Roach </ul> 752abafa13cSGreg Roach </div> 753abafa13cSGreg Roach 754abafa13cSGreg Roach <div class="col-sm-4"> 755abafa13cSGreg Roach 7569d627a9eSGreg Roach <h3> 7579d627a9eSGreg Roach <?= I18N::translate('Other') ?> 7589d627a9eSGreg Roach </h3> 75909fbf3e5SGreg Roach 760315eb316SGreg Roach <ul class="fa-ul mx-0"> 76109fbf3e5SGreg Roach <?php foreach ($other_modules as $module) : ?> 762dd6b2bfcSGreg Roach <li> 7638d6560c4SGreg Roach <?php if ($module->isEnabled()) : ?> 76409f65a51SGreg Roach <span class="fa-li"><?= view('icons/module') ?></span> 7658d6560c4SGreg Roach <?php if ($module instanceof ModuleConfigInterface) : ?> 766dd6b2bfcSGreg Roach <a href="<?= e($module->getConfigLink()) ?>"> 76749a243cbSGreg Roach <?= $module->title() ?> 768852bddbeSGreg Roach <?= view('icons/preferences') ?> 769dd6b2bfcSGreg Roach </a> 77009fbf3e5SGreg Roach <?php else : ?> 7718d6560c4SGreg Roach <?= $module->title() ?> 77209fbf3e5SGreg Roach <?php endif ?> 7738d6560c4SGreg Roach <?php else : ?> 7748d6560c4SGreg Roach <span class="text-muted"> 77509f65a51SGreg Roach <span class="fa-li"><?= view('icons/module') ?></span> 7768d6560c4SGreg Roach <?= $module->title() ?> 7778d6560c4SGreg Roach <?php if ($module instanceof ModuleConfigInterface) : ?> 778852bddbeSGreg Roach <?= view('icons/preferences') ?> 7798d6560c4SGreg Roach <?php endif ?> 7808d6560c4SGreg Roach </span> 7818d6560c4SGreg Roach <?php endif ?> 7828d6560c4SGreg Roach 783beefaa8eSGreg Roach <?php if ($module instanceof ModuleCustomInterface) : ?> 784beefaa8eSGreg Roach <?= view('admin/custom-module-info', ['module' => $module]) ?> 785beefaa8eSGreg Roach <?php endif ?> 786dd6b2bfcSGreg Roach </li> 787dd6b2bfcSGreg Roach <?php endforeach ?> 788dd6b2bfcSGreg Roach </ul> 789dd6b2bfcSGreg Roach </div> 790dd6b2bfcSGreg Roach </div> 791dd6b2bfcSGreg Roach </div> 792dd6b2bfcSGreg Roach</div> 793dd6b2bfcSGreg Roach 794dd6b2bfcSGreg Roach<!-- MEDIA --> 795dd6b2bfcSGreg Roach<div class="card mb-4"> 796dd6b2bfcSGreg Roach <div class="card-header"> 797dd6b2bfcSGreg Roach <h2 class="mb-0"> 798dd6b2bfcSGreg Roach <?= I18N::translate('Media') ?> 799dd6b2bfcSGreg Roach </h2> 800dd6b2bfcSGreg Roach </div> 801dd6b2bfcSGreg Roach <div class="card-body"> 802315eb316SGreg Roach <ul class="fa-ul mx-0"> 803dd6b2bfcSGreg Roach <li> 804dd6b2bfcSGreg Roach <span class="fa-li"><?= view('icons/preferences') ?></span> 8058ce3bd73SGreg Roach <a href="<?= e(route(ManageMediaPage::class)) ?>"> 806dd6b2bfcSGreg Roach <?= I18N::translate('Manage media') ?> 807dd6b2bfcSGreg Roach </a> 808dd6b2bfcSGreg Roach </li> 809dd6b2bfcSGreg Roach <li> 810a24f7142SGreg Roach <span class="fa-li"><?= view('icons/upload') ?></span> 8118ce3bd73SGreg Roach <a href="<?= e(route(UploadMediaPage::class)) ?>"> 812dd6b2bfcSGreg Roach <?= I18N::translate('Upload media files') ?> 813dd6b2bfcSGreg Roach </a> 814dd6b2bfcSGreg Roach </li> 815dd6b2bfcSGreg Roach <li> 816a24f7142SGreg Roach <span class="fa-li"><?= view('icons/link') ?></span> 8174b3ef6caSGreg Roach <a href="<?= e(route(FixLevel0MediaPage::class)) ?>"> 818dd6b2bfcSGreg Roach <?= I18N::translate('Link media objects to facts and events') ?> 819dd6b2bfcSGreg Roach </a> 820dd6b2bfcSGreg Roach </li> 821dd6b2bfcSGreg Roach </ul> 822dd6b2bfcSGreg Roach </div> 823dd6b2bfcSGreg Roach</div> 824dd6b2bfcSGreg Roach 825dd6b2bfcSGreg Roach<!-- MAPS --> 826dd6b2bfcSGreg Roach<div class="card mb-4"> 827dd6b2bfcSGreg Roach <div class="card-header"> 828dd6b2bfcSGreg Roach <h2 class="mb-0"> 829dd6b2bfcSGreg Roach <?= I18N::translate('Map') ?> 830dd6b2bfcSGreg Roach </h2> 831dd6b2bfcSGreg Roach </div> 832dd6b2bfcSGreg Roach <div class="card-body"> 833dd6b2bfcSGreg Roach <div class="row"> 834c9c6f2ecSGreg Roach <div class="col-sm-12"> 835315eb316SGreg Roach <ul class="fa-ul mx-0"> 836dd6b2bfcSGreg Roach <li> 837dd6b2bfcSGreg Roach <span class="fa-li"><?= view('icons/location') ?></span> 83894e35917SGreg Roach <a href="<?= e(route(MapDataList::class)) ?>"> 839dd6b2bfcSGreg Roach <?= I18N::translate('Geographic data') ?> 840dd6b2bfcSGreg Roach </a> 841dd6b2bfcSGreg Roach </li> 842dd6b2bfcSGreg Roach </ul> 843dd6b2bfcSGreg Roach </div> 844dd6b2bfcSGreg Roach </div> 845dd6b2bfcSGreg Roach </div> 846dd6b2bfcSGreg Roach</div> 847dd6b2bfcSGreg Roach 848dd6b2bfcSGreg Roach<!-- OLD FILES --> 849dd6b2bfcSGreg Roach<?php if (!empty($files_to_delete)) : ?> 850dd6b2bfcSGreg Roach <div class="card mb-4 card-outline-danger"> 851dd6b2bfcSGreg Roach <div class="card-header"> 852dd6b2bfcSGreg Roach <h2 class="mb-0"> 853dd6b2bfcSGreg Roach <?= I18N::translate('Old files found') ?> 854dd6b2bfcSGreg Roach </h2> 855dd6b2bfcSGreg Roach </div> 856dd6b2bfcSGreg Roach <div class="card-body"> 857dd6b2bfcSGreg Roach <p> 858dd6b2bfcSGreg 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.') ?> 859dd6b2bfcSGreg Roach </p> 860dd6b2bfcSGreg Roach <ul class="list-unstyled"> 861dd6b2bfcSGreg Roach <?php foreach ($files_to_delete as $file_to_delete) : ?> 862beefaa8eSGreg Roach <li dir="ltr"> 863beefaa8eSGreg Roach <code><?= e($file_to_delete) ?></code> 864beefaa8eSGreg Roach </li> 865dd6b2bfcSGreg Roach <?php endforeach ?> 866dd6b2bfcSGreg Roach </ul> 867dd6b2bfcSGreg Roach </div> 868dd6b2bfcSGreg Roach </div> 869dd6b2bfcSGreg Roach<?php endif ?> 870