diff options
41 files changed, 322 insertions, 246 deletions
diff --git a/admin.php b/admin.php deleted file mode 100755 index 8821404a66..0000000000 --- a/admin.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php -/** - * webtrees: online genealogy - * Copyright (C) 2017 webtrees development team - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -namespace Fisharebest\Webtrees; - -use Fisharebest\Webtrees\Controller\AdminController; -use Symfony\Component\HttpFoundation\RedirectResponse; -use Symfony\Component\HttpFoundation\Request; - -require 'includes/session.php'; - -// The HTTP request. -$request = Request::createFromGlobals(); -$method = $request->getMethod(); -$route = $request->get('route'); - -// Default route -$response = new RedirectResponse(Html::url('index.php', [])); - -// POST request? Check the CSRF token. -if ($method === 'POST' && !Filter::checkCsrf()) { - $referer_url = $request->headers->get('referer', Html::url('index.php', [])); - - return (new RedirectResponse($referer_url))->prepare($request)->send(); -} - -// Admin routes. -if (Auth::isAdmin()) { - switch ($method . ':' . $route) { - default: - case 'GET:': - $url = Html::url('admin.php', ['route' => 'admin-control-panel']); - $response = new RedirectResponse($url); - break; - - case 'GET:admin-modules': - $response = ($controller = new AdminController)->modules(); - break; - - case 'GET:admin-blocks': - $response = ($controller = new AdminController)->blocks(); - break; - - case 'GET:admin-charts': - $response = ($controller = new AdminController)->charts(); - break; - - case 'GET:admin-clean-data': - $response = ($controller = new AdminController)->cleanData(); - break; - - case 'POST:admin-clean-data': - $response = ($controller = new AdminController)->cleanDataAction($request); - break; - - case 'GET:admin-fix-level-0-media': - $response = ($controller = new AdminController)->fixLevel0Media(); - break; - - case 'POST:admin-fix-level-0-media-action': - $response = ($controller = new AdminController)->fixLevel0MediaAction($request); - break; - - case 'GET:admin-fix-level-0-media-data': - $response = ($controller = new AdminController)->fixLevel0MediaData($request); - break; - - case 'GET:admin-menus': - $response = ($controller = new AdminController)->menus(); - break; - - case 'GET:admin-reports': - $response = ($controller = new AdminController)->reports(); - break; - - case 'GET:admin-server-information': - $response = ($controller = new AdminController)->serverInformation(); - break; - - case 'GET:admin-sidebars': - $response = ($controller = new AdminController)->sidebars(); - break; - - case 'GET:admin-tabs': - $response = ($controller = new AdminController)->tabs(); - break; - - case 'GET:admin-control-panel': - $response = ($controller = new AdminController)->controlPanel(); - break; - - case 'GET:admin-control-panel-manager': - $response = ($controller = new AdminController)->controlPanelManager(); - break; - - case 'POST:admin-delete-module-settings': - $response = ($controller = new AdminController)->deleteModuleSettings($request); - break; - - case 'POST:admin-update-module-access': - $response = ($controller = new AdminController)->updateModuleAccess($request); - break; - - case 'POST:admin-update-module-status': - $response = ($controller = new AdminController)->updateModuleStatus($request); - break; - } -} - -// Manager routes. -if (Auth::isManager(($controller = new AdminController)->tree())) { - switch ($method . ':' . $route) { - case 'GET:admin-control-panel-manager': - $response = ($controller = new AdminController)->controlPanelManager(); - break; - - case 'GET:admin-changes-log': - $response = ($controller = new AdminController)->changesLog($request); - break; - - case 'GET:admin-changes-log-data': - $response = ($controller = new AdminController)->changesLogData($request); - break; - - case 'GET:admin-changes-log-download': - $response = ($controller = new AdminController)->changesLogDownload($request); - break; - } -} - -$response->prepare($request)->send(); diff --git a/admin_media.php b/admin_media.php index 5a9684fa94..9df3baaf5c 100644 --- a/admin_media.php +++ b/admin_media.php @@ -578,7 +578,7 @@ $controller '); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), ], $controller->getPageTitle()); ?> diff --git a/admin_media_upload.php b/admin_media_upload.php index 9bc17426a6..033f41d448 100644 --- a/admin_media_upload.php +++ b/admin_media_upload.php @@ -171,7 +171,7 @@ if (empty($filesize)) { } echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), ], $controller->getPageTitle()); ?> diff --git a/admin_pgv_to_wt.php b/admin_pgv_to_wt.php index 1de36f75e1..3787dcb1f8 100644 --- a/admin_pgv_to_wt.php +++ b/admin_pgv_to_wt.php @@ -120,7 +120,7 @@ if ($PGV_PATH) { $controller->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_site_config.php b/admin_site_config.php index 98acbce4ff..f3d8cac153 100644 --- a/admin_site_config.php +++ b/admin_site_config.php @@ -44,7 +44,7 @@ case 'site': Site::setPreference('TIMEZONE', Filter::post('TIMEZONE')); FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success'); } - header('Location: admin.php'); + header('Location: ' + route('admin-control-panel')); return; @@ -63,7 +63,7 @@ case 'email': } FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success'); } - header('Location: admin.php'); + header('Location: ' + route('admin-control-panel')); return; case 'login': @@ -75,7 +75,7 @@ case 'login': Site::setPreference('SHOW_REGISTER_CAUTION', Filter::postBool('SHOW_REGISTER_CAUTION')); FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success'); } - header('Location: admin.php'); + header('Location: ' + route('admin-control-panel')); return; @@ -90,7 +90,7 @@ case 'tracking': Site::setPreference('STATCOUNTER_SECURITY_ID', Filter::post('STATCOUNTER_SECURITY_ID')); FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success'); } - header('Location: admin.php'); + header('Location: ' + route('admin-control-panel')); return; @@ -99,7 +99,7 @@ case 'languages': Site::setPreference('LANGUAGES', implode(',', Filter::postArray('LANGUAGES'))); FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success'); } - header('Location: admin.php'); + header('Location: ' + route('admin-control-panel')); return; } @@ -151,7 +151,7 @@ case 'languages': $controller->setPageTitle(I18N::translate('Languages')); break; default: - header('Location: admin.php'); + header('Location: ' + route('admin-control-panel')); return; } @@ -159,7 +159,7 @@ default: $controller->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), ], $controller->getPageTitle()); ?> diff --git a/admin_site_logs.php b/admin_site_logs.php index 22de8d42d8..80cca08ae4 100644 --- a/admin_site_logs.php +++ b/admin_site_logs.php @@ -224,7 +224,7 @@ foreach (User::all() as $tmp_user) { } echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), ], $controller->getPageTitle()); ?> diff --git a/admin_site_merge.php b/admin_site_merge.php index cb00c028b6..56c7f8f2d1 100644 --- a/admin_site_merge.php +++ b/admin_site_merge.php @@ -174,7 +174,7 @@ if ($rec1 && $rec2 && $rec1->getXref() !== $rec2->getXref() && $rec1::RECORD_TYP $controller->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_trees_check.php b/admin_trees_check.php index 62950276ac..99d2a42687 100644 --- a/admin_trees_check.php +++ b/admin_trees_check.php @@ -115,7 +115,7 @@ $RECORD_LINKS = [ $errors = false; echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_trees_config.php b/admin_trees_config.php index 1cbaf116f5..983bf6eb32 100644 --- a/admin_trees_config.php +++ b/admin_trees_config.php @@ -294,7 +294,7 @@ case 'general': $controller->setPageTitle($WT_TREE->getTitleHtml() . ' ā ' . I18N::translate('Preferences')); break; default: - header('Location: admin.php'); + header('Location: ' + route('admin-control-panel')); return; } @@ -304,7 +304,7 @@ $controller ->addExternalJavascript(WT_ADMIN_JS_URL); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_trees_download.php b/admin_trees_download.php index 446aff9b90..72d7a293b9 100644 --- a/admin_trees_download.php +++ b/admin_trees_download.php @@ -121,7 +121,7 @@ if ($action === 'download') { $controller->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_trees_duplicates.php b/admin_trees_duplicates.php index 3e4aee248d..9201f7769a 100644 --- a/admin_trees_duplicates.php +++ b/admin_trees_duplicates.php @@ -140,7 +140,7 @@ $all_duplicates = [ ]; echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_trees_manage.php b/admin_trees_manage.php index 4df8f42a95..ae0debdd11 100755 --- a/admin_trees_manage.php +++ b/admin_trees_manage.php @@ -173,7 +173,7 @@ case 'importform': ->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> @@ -330,7 +330,7 @@ if (count($all_trees) >= $multiple_tree_threshold) { // List the gedcoms available to this user echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), ], $controller->getPageTitle()); ?> @@ -514,7 +514,7 @@ echo Bootstrap4::breadcrumbs([ <!-- CHANGES --> <li> <i class="fa fa-li fa-th-list"></i> - <a href="<?= Html::url('admin.php', ['route' => 'admin-changes-log', 'ged' => $tree->getName()]) ?>"> + <a href="<?= route('admin-changes-log', ['ged' => $tree->getName()]) ?>"> <?= I18N::translate('Changes log') ?> <span class="sr-only"> <?= $tree->getTitleHtml() ?> diff --git a/admin_trees_merge.php b/admin_trees_merge.php index 429244876e..4315627d44 100644 --- a/admin_trees_merge.php +++ b/admin_trees_merge.php @@ -29,7 +29,7 @@ $controller ->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_trees_places.php b/admin_trees_places.php index 3470e882a2..600be3df4f 100644 --- a/admin_trees_places.php +++ b/admin_trees_places.php @@ -80,7 +80,7 @@ $controller ->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_trees_unconnected.php b/admin_trees_unconnected.php index bcbc5f9c3a..532cb87e3a 100644 --- a/admin_trees_unconnected.php +++ b/admin_trees_unconnected.php @@ -70,7 +70,7 @@ foreach ($components as $key => $component) { } echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), ], $controller->getPageTitle()); ?> diff --git a/admin_users.php b/admin_users.php index 95e4c97f9d..a473c48c61 100644 --- a/admin_users.php +++ b/admin_users.php @@ -299,7 +299,7 @@ case 'edit': '); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_users.php' => I18N::translate('User administration'), ], $controller->getPageTitle()); ?> @@ -669,7 +669,7 @@ case 'cleanup': ->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_users.php' => I18N::translate('User administration'), ], $controller->getPageTitle()); ?> @@ -832,7 +832,7 @@ default: ->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), ], $controller->getPageTitle()); ?> diff --git a/admin_users_bulk.php b/admin_users_bulk.php index 0250198514..4a93db1415 100644 --- a/admin_users_bulk.php +++ b/admin_users_bulk.php @@ -26,7 +26,7 @@ $controller ->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), + route('admin-control-panel') => I18N::translate('Control panel'), 'admin_users.php' => I18N::translate('User administration'), ], $controller->getPageTitle()); ?> diff --git a/app/Controller/AdminController.php b/app/Controller/AdminController.php index 03798029a3..48026317b2 100644 --- a/app/Controller/AdminController.php +++ b/app/Controller/AdminController.php @@ -581,7 +581,7 @@ class AdminController extends BaseController { } } - return $this->redirectResponse('admin.php', ['route' => 'admin-control-panel']); + return $this->redirectResponse(route('admin-control-panel')); } /** @@ -1062,7 +1062,7 @@ class AdminController extends BaseController { FlashMessages::addMessage(I18N::translate('The preferences for the module ā%sā have been deleted.', $module_name), 'success'); - return $this->redirectResponse('admin.php', ['route' => 'admin-modules']); + return $this->redirectResponse(route('admin-modules')); } /** @@ -1150,7 +1150,7 @@ class AdminController extends BaseController { } } - return $this->redirectResponse('admin.php', ['route' => 'admin-' . $component . 's']); + return $this->redirectResponse(route('admin-' . $component . 's')); } /** @@ -1182,7 +1182,7 @@ class AdminController extends BaseController { } } - return $this->redirectResponse('admin.php', ['route' => 'admin-modules']); + return $this->redirectResponse(route('admin-modules')); } /** diff --git a/app/Controller/HomePageController.php b/app/Controller/HomePageController.php new file mode 100644 index 0000000000..7d6bbc46ba --- /dev/null +++ b/app/Controller/HomePageController.php @@ -0,0 +1,152 @@ +<?php +/** + * webtrees: online genealogy + * Copyright (C) 2017 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +namespace Fisharebest\Webtrees\Controller; + +use Fisharebest\Webtrees\Auth; +use Fisharebest\Webtrees\Bootstrap4; +use Fisharebest\Webtrees\Config; +use Fisharebest\Webtrees\Family; +use Fisharebest\Webtrees\Filter; +use Fisharebest\Webtrees\FlashMessages; +use Fisharebest\Webtrees\Functions\FunctionsDb; +use Fisharebest\Webtrees\Functions\FunctionsPrintLists; +use Fisharebest\Webtrees\GedcomRecord; +use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\Individual; +use Fisharebest\Webtrees\Log; +use Fisharebest\Webtrees\Module; +use Fisharebest\Webtrees\Note; +use Fisharebest\Webtrees\Site; +use Fisharebest\Webtrees\Source; +use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\View; +use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; + +/** + * Controller for the user/tree's home page. + */ +class HomePageController extends PageController { + /** + * Load block asynchronously. + * + * @param Request $request + * + * @return Response + */ + public function loadBlock(Request $request): Response { + + } + + /** + * Show a tree's home page. + */ + public function treePage() { + $blocks = FunctionsDb::getTreeBlocks($this->tree()->getTreeId()); + $active_blocks = Module::getActiveBlocks($this->tree()); + + $main_blocks = array_filter($blocks['main'], function(string $block_name) use ($active_blocks) { + return array_key_exists($block_name, $active_blocks); + }); + $side_blocks = array_filter($blocks['side'], function(string $block_name) use ($active_blocks) { + return array_key_exists($block_name, $active_blocks); + }); + + $main_blocks = array_map(function($module_name) use ($active_blocks) { + return $active_blocks[$module_name]; + }, $main_blocks); + + $side_blocks = array_map(function($module_name) use ($active_blocks) { + return $active_blocks[$module_name]; + }, $side_blocks); + + $content = View::make('home-page', [ + 'main_blocks' => $main_blocks, + 'side_blocks' => $side_blocks + ]); + } + + /** + * Show a form to edit the blocks on the home page. + * + * @param Request $request + * + * @return Response + */ + public function treePageEdit(Request $request): Response { + + } + + /** + * Save updated hompe page blocks. + * + * @param Request $request + * + * @return RedirectResponse + */ + public function treePageUpdate(Request $request): RedirectResponse { + + } + + /** + * Show a users's home page. + */ + public function userPage() { + $blocks = FunctionsDb::getUserBlocks(Auth::id()); + $active_blocks = Module::getActiveBlocks($this->tree()); + + $main_blocks = array_filter($blocks['main'], function(string $block_name) use ($active_blocks) { + return array_key_exists($block_name, $active_blocks); + }); + $side_blocks = array_filter($blocks['side'], function(string $block_name) use ($active_blocks) { + return array_key_exists($block_name, $active_blocks); + }); + + $main_blocks = array_map(function($module_name) use ($active_blocks) { + return $active_blocks[$module_name]; + }, $main_blocks); + + $side_blocks = array_map(function($module_name) use ($active_blocks) { + return $active_blocks[$module_name]; + }, $side_blocks); + + $content = View::make('my-page', [ + 'main_blocks' => $main_blocks, + 'side_blocks' => $side_blocks + ]); + } + + /** + * Show a form to edit the blocks on the user's my page. + * + * @param Request $request + * + * @return Response + */ + public function userPageEdit(Request $request): Response { + + } + + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function userPageUpdate(Request $request): RedirectResponse { + + } +} diff --git a/app/Helpers/functions.php b/app/Helpers/functions.php new file mode 100644 index 0000000000..5a49868d6b --- /dev/null +++ b/app/Helpers/functions.php @@ -0,0 +1,47 @@ +<?php +/** + * webtrees: online genealogy + * Copyright (C) 2017 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +use Fisharebest\Webtrees\Html; + +/** + * Dump the passed variables and end the script. + * + * @param mixed + * + * @return void + */ +function dd(...$args): void +{ + foreach ($args as $x) { + var_dump($x); + } + + die(1); +} + +/** + * Generate a URL for a named route. + * + * @param string $route + * @param array $parameters + * + * @return string + */ +function route(string $route, array $parameters = []): string { + $parameters = ['route' => $route] + $parameters; + + return Html::url('index.php', $parameters); +} diff --git a/app/Module/BatchUpdateModule.php b/app/Module/BatchUpdateModule.php index b7983ca6fd..f665c587c2 100644 --- a/app/Module/BatchUpdateModule.php +++ b/app/Module/BatchUpdateModule.php @@ -188,8 +188,8 @@ class BatchUpdateModule extends AbstractModule implements ModuleConfigInterface echo $this->getJavascript(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), ], $controller->getPageTitle()); ?> <h1><?= $controller->getPageTitle() ?></h1> diff --git a/app/Module/FrequentlyAskedQuestionsModule.php b/app/Module/FrequentlyAskedQuestionsModule.php index 9da556ebb0..325b8563a0 100644 --- a/app/Module/FrequentlyAskedQuestionsModule.php +++ b/app/Module/FrequentlyAskedQuestionsModule.php @@ -162,8 +162,8 @@ class FrequentlyAskedQuestionsModule extends AbstractModule implements ModuleMen } echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), 'module.php?mod=' . $this->getName() . '&mod_action=admin_config' => $this->getTitle(), ], $controller->getPageTitle()); ?> @@ -437,8 +437,8 @@ class FrequentlyAskedQuestionsModule extends AbstractModule implements ModuleMen ])->fetchOne(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), ], $controller->getPageTitle()); ?> diff --git a/app/Module/GoogleMapsModule.php b/app/Module/GoogleMapsModule.php index 5733a66e0d..49dfa892aa 100644 --- a/app/Module/GoogleMapsModule.php +++ b/app/Module/GoogleMapsModule.php @@ -294,8 +294,8 @@ class GoogleMapsModule extends AbstractModule implements ModuleConfigInterface, $controller->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), ], $controller->getPageTitle()); ?> @@ -2130,8 +2130,8 @@ class GoogleMapsModule extends AbstractModule implements ModuleConfigInterface, ->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), $this->getConfigLink() => $this->getTitle(), 'module.php?mod=googlemap&mod_action=admin_places' => I18N::translate('Geographic data'), ], $controller->getPageTitle()); @@ -2589,9 +2589,9 @@ class GoogleMapsModule extends AbstractModule implements ModuleConfigInterface, $parent_url = 'module.php?mod=googlemap&mod_action=admin_places&parent_id=' . $parent_id . '&inactive=' . $inactive; $breadcrumbs = [ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), - $this->getConfigLink() => $this->getTitle(), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), + $this->getConfigLink() => $this->getTitle(), ]; $hierarchy = [0 => I18N::translate('Geographic data')] + @@ -3095,9 +3095,9 @@ class GoogleMapsModule extends AbstractModule implements ModuleConfigInterface, ->pageHeader(); $breadcrumbs = [ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), - $this->getConfigLink() => $this->getTitle(), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), + $this->getConfigLink() => $this->getTitle(), ]; $hierarchy = [0 => I18N::translate('Geographic data')] + diff --git a/app/Module/RelationshipsChartModule.php b/app/Module/RelationshipsChartModule.php index 047686aa95..6ce999e7b2 100644 --- a/app/Module/RelationshipsChartModule.php +++ b/app/Module/RelationshipsChartModule.php @@ -161,8 +161,8 @@ class RelationshipsChartModule extends AbstractModule implements ModuleConfigInt ->pageHeader(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), ], $controller->getPageTitle()); ?> diff --git a/app/Module/SiteMapModule.php b/app/Module/SiteMapModule.php index 810f573369..f6d7e31873 100644 --- a/app/Module/SiteMapModule.php +++ b/app/Module/SiteMapModule.php @@ -294,8 +294,8 @@ class SiteMapModule extends AbstractModule implements ModuleConfigInterface { $include_any = false; echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), ], $controller->getPageTitle()); ?> diff --git a/app/Module/StoriesModule.php b/app/Module/StoriesModule.php index bb3a26def4..335f30e6e4 100644 --- a/app/Module/StoriesModule.php +++ b/app/Module/StoriesModule.php @@ -209,8 +209,8 @@ class StoriesModule extends AbstractModule implements ModuleTabInterface, Module $individual = Individual::getInstance($xref, $WT_TREE); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), 'module.php?mod=' . $this->getName() . '&mod_action=admin_config' => $this->getTitle(), ], $controller->getPageTitle()); ?> @@ -337,8 +337,8 @@ class StoriesModule extends AbstractModule implements ModuleTabInterface, Module )->execute([$this->getName(), $WT_TREE->getTreeId()])->fetchAll(); echo Bootstrap4::breadcrumbs([ - 'admin.php' => I18N::translate('Control panel'), - Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Module administration'), + route('admin-control-panel') => I18N::translate('Control panel'), + route('admin-modules') => I18N::translate('Module administration'), ], $controller->getPageTitle()); ?> diff --git a/app/Theme/AbstractTheme.php b/app/Theme/AbstractTheme.php index 9687d77600..a4582d9bd8 100755 --- a/app/Theme/AbstractTheme.php +++ b/app/Theme/AbstractTheme.php @@ -1400,7 +1400,7 @@ abstract class AbstractTheme { */ protected function menuControlPanel() { if (Auth::isManager($this->tree)) { - return new Menu(I18N::translate('Control panel'), 'admin.php', 'menu-admin'); + return new Menu(I18N::translate('Control panel'), route('admin-control-panel'), 'menu-admin'); } else { return null; } diff --git a/app/Theme/AdministrationTheme.php b/app/Theme/AdministrationTheme.php index b35a99b037..59828bf0c4 100644 --- a/app/Theme/AdministrationTheme.php +++ b/app/Theme/AdministrationTheme.php @@ -154,13 +154,13 @@ class AdministrationTheme extends AbstractTheme implements ThemeInterface { */ protected function menuAdminModules() { return new Menu(/* I18N: Menu entry */ I18N::translate('Modules'), '#', '', [], [ - new Menu(/* I18N: Menu entry */ I18N::translate('Module administration'), Html::url('admin.php', ['route' => 'admin-modules'])), - new Menu(/* I18N: Menu entry */ I18N::translate('Menus'), Html::url('admin.php', ['route' => 'admin-menus'])), - new Menu(/* I18N: Menu entry */ I18N::translate('Tabs'), Html::url('admin.php', ['route' => 'admin-tabs'])), - new Menu(/* I18N: Menu entry */ I18N::translate('Blocks'), Html::url('admin.php', ['route' => 'admin-blocks'])), - new Menu(/* I18N: Menu entry */ I18N::translate('Sidebars'), Html::url('admin.php', ['route' => 'admin-sidebars'])), - new Menu(/* I18N: Menu entry */ I18N::translate('Charts'), Html::url('admin.php', ['route' => 'admin-charts'])), - new Menu(/* I18N: Menu entry */ I18N::translate('Reports'), Html::url('admin.php', ['route' => 'admin-reports'])), + new Menu(/* I18N: Menu entry */ I18N::translate('Module administration'), route('admin-modules')), + new Menu(/* I18N: Menu entry */ I18N::translate('Menus'), route('admin-menus')), + new Menu(/* I18N: Menu entry */ I18N::translate('Tabs'), route('admin-tabs')), + new Menu(/* I18N: Menu entry */ I18N::translate('Blocks'), route('admin-blocks')), + new Menu(/* I18N: Menu entry */ I18N::translate('Sidebars'), route('admin-sidebars')), + new Menu(/* I18N: Menu entry */ I18N::translate('Charts'), route('admin-charts')), + new Menu(/* I18N: Menu entry */ I18N::translate('Reports'), route('admin-reports')), ]); } @@ -195,7 +195,7 @@ class AdministrationTheme extends AbstractTheme implements ThemeInterface { protected function primaryMenuContainer(array $menus) { return '<nav class="col navbar navbar-expand-md navbar-light bg-light">' . - '<a class="navbar-brand" href="admin.php">' . I18N::translate('Control panel') . '</a>' . + '<a class="navbar-brand" href="' . Html::escape(route('admin-control-panel')) . '">' . I18N::translate('Control panel') . '</a>' . '<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#primary-navbar" aria-controls="primary-navbar" aria-expanded="false" aria-label="Toggle navigation">' . '<span class="navbar-toggler-icon"></span>' . '</button> ' . diff --git a/composer.json b/composer.json index 40442c964e..8eddbfecc2 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,10 @@ "autoload": { "psr-4": { "Fisharebest\\Webtrees\\": "app/" - } + }, + "files": [ + "app/Helpers/functions.php" + ] }, "config": { "platform": { @@ -19,12 +19,29 @@ use Fisharebest\Webtrees\Controller\AjaxController; use Fisharebest\Webtrees\Controller\PageController; use Fisharebest\Webtrees\Functions\Functions; use Fisharebest\Webtrees\Functions\FunctionsDb; +use Symfony\Component\HttpFoundation\Request; + +require 'includes/session.php'; + +// Extract the route from the the HTTP request. +$request = Request::createFromGlobals(); +$route = $request->get('route', ''); + +if ($route === '') { + // Legacy URLs: + // index.php?ctype=gedcom + // index.php?ctype=user +} else { + // Route the request to its controller action. + $response = require 'routes/web.php'; + + // Send the response back to the browser. + return $response->prepare($request)->send(); +} /** @global Tree $WT_TREE */ global $WT_TREE; -require 'includes/session.php'; - // The only option for action is "ajax" $ajax = (bool) Filter::get('ajax'); diff --git a/index_edit.php b/index_edit.php index 1be269c6d4..fd4c4c7c99 100644 --- a/index_edit.php +++ b/index_edit.php @@ -128,7 +128,7 @@ if ($action === 'update') { } } if ($user_id < 0 || $gedcom_id < 0 ) { - header('Location: admin.php'); + header('Location: ' + route('admin-control-panel')); } elseif ($user_id > 0) { header('Location: index.php?ctype=user&ged=' . $WT_TREE->getNameUrl()); } else { @@ -372,7 +372,7 @@ $controller->pageHeader(); <?= I18N::translate('save') ?> </button> <?php if ($user_id < 0 || $gedcom_id < 0 ): ?> - <a class="btn btn-secondary" href="admin.php"> + <a class="btn btn-secondary" href="<?= Html::escape(route('admin-control-panel')) ?>"> <?php elseif ($user_id > 0): ?> <a class="btn btn-secondary" href="index.php?ctype=user&ged=<?= $WT_TREE->getNameHtml() ?>"> <?php else: ?> diff --git a/resources/views/admin/changes-log.php b/resources/views/admin/changes-log.php index b0cf0c34e9..2bac84d0d1 100644 --- a/resources/views/admin/changes-log.php +++ b/resources/views/admin/changes-log.php @@ -4,12 +4,11 @@ <?php use Fisharebest\Webtrees\I18N; ?> <?php use Fisharebest\Webtrees\View; ?> -<?= View::make('admin/breadcrumbs', ['links' => ['admin.php' => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), $title]]) ?> +<?= View::make('admin/breadcrumbs', ['links' => [route('admin-control-panel') => I18N::translate('Control panel'), 'admin_trees_manage.php' => I18N::translate('Manage family trees'), $title]]) ?> <h1><?= $title ?></h1> -<form class="form" name="logs" action="admin.php"> - <input type="hidden" name="route" value="admin-changes-log"> +<form class="form" name="logs" action="<?= Html::escape(route('admin-changes-log')) ?>"> <input type="hidden" name="action" value="show"> <div class="row"> @@ -100,7 +99,7 @@ <?php if ($action === 'show'): ?> <table class="table table-bordered table-sm table-hover table-site-changes datatables" - data-ajax="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-changes-log-data', 'from' => $from, 'to' => $to, 'type' => $type, 'xref' => $xref, 'oldged' => $oldged, 'newged' => $newged, 'ged' => $ged, 'user' => $user])) ?>" + data-ajax="<?= route('admin-changes-log-data', ['from' => $from, 'to' => $to, 'type' => $type, 'xref' => $xref, 'oldged' => $oldged, 'newged' => $newged, 'ged' => $ged, 'user' => $user]) ?>" data-server-side="true" data-sorting="<?= Html::escape('[[ 0, "desc" ]]') ?>" > diff --git a/resources/views/admin/clean-data.php b/resources/views/admin/clean-data.php index e48309eeb8..bc038a3e3f 100644 --- a/resources/views/admin/clean-data.php +++ b/resources/views/admin/clean-data.php @@ -3,7 +3,7 @@ <?php use Fisharebest\Webtrees\Html; ?> <?php use Fisharebest\Webtrees\I18N; ?> -<?= Bootstrap4::breadcrumbs([Html::url('admin.php', ['route' => 'admin-control-panel']) => I18N::translate('Control panel')], $title) ?> +<?= Bootstrap4::breadcrumbs([route('admin-control-panel') => I18N::translate('Control panel')], $title) ?> <h1><?= $title ?></h1> diff --git a/resources/views/admin/control-panel-manager.php b/resources/views/admin/control-panel-manager.php index a9e1eb7d6b..7a758c871e 100644 --- a/resources/views/admin/control-panel-manager.php +++ b/resources/views/admin/control-panel-manager.php @@ -66,7 +66,7 @@ <?php if ($changes[$tree->getTreeId()]): ?> <a href="<?= Html::escape(Html::url('edit_changes.php', [ 'ged' => $tree->getName(), - 'url' => 'admin.php', + 'url' => route('admin-control-panel'), ])) ?>"> <?= I18N::number($changes[$tree->getTreeId()]) ?> <span class="sr-only"><?= I18N::translate('Pending changes') ?> <?= Html::escape($tree->getTitle()) ?></span> diff --git a/resources/views/admin/control-panel.php b/resources/views/admin/control-panel.php index dae635892c..86b5ace39e 100644 --- a/resources/views/admin/control-panel.php +++ b/resources/views/admin/control-panel.php @@ -56,10 +56,10 @@ <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(Html::url('admin_site_logs.php', [])) ?>"> <?= I18N::translate('Website logs') ?> </a> - <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-clean-data'])) ?>"> + <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(route('admin-clean-data')) ?>"> <?= I18N::translate('Clean up data folder') ?> </a> - <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-server-information'])) ?>"> + <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(route('admin-server-information')) ?>"> <?= I18N::translate('Server information') ?> </a> </p> @@ -111,7 +111,7 @@ <?php if ($changes[$tree->getTreeId()]): ?> <a href="<?= Html::escape(Html::url('edit_changes.php', [ 'ged' => $tree->getName(), - 'url' => 'admin.php', + 'url' => route('admin-control-panel'), ])) ?>"> <?= I18N::number($changes[$tree->getTreeId()]) ?> <span class="sr-only"><?= I18N::translate('Pending changes') ?> <?= Html::escape($tree->getTitle()) ?></span> @@ -287,44 +287,44 @@ <div class="row"> <div class="col-sm-6"> <p class="card-text"> - <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-modules'])) ?>"> + <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(route('admin-modules')) ?>"> <?= I18N::translate('Module administration') ?> </a> </p> <ul class="fa-ul"> <li> <?= FontAwesome::decorativeIcon('menu', ['class' => 'fa-li']) ?> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-menus'])) ?>"> + <a href="<?= Html::escape(route('admin-menus')) ?>"> <?= I18N::translate('Menus') ?> </a> </li> <li> <?= FontAwesome::decorativeIcon('tab', ['class' => 'fa-li']) ?> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-tabs'])) ?>"> + <a href="<?= Html::escape(route('admin-tabs')) ?>"> <?= I18N::translate('Tabs') ?> </a> </li> <li> <?= FontAwesome::decorativeIcon('block', ['class' => 'fa-li']) ?> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-blocks'])) ?>"> + <a href="<?= Html::escape(route('admin-blocks')) ?>"> <?= I18N::translate('Blocks') ?> </a> </li> <li> <?= FontAwesome::decorativeIcon('sidebar', ['class' => 'fa-li']) ?> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-sidebars'])) ?>"> + <a href="<?= Html::escape(route('admin-sidebars')) ?>"> <?= I18N::translate('Sidebars') ?> </a> </li> <li> <?= FontAwesome::decorativeIcon('chart', ['class' => 'fa-li']) ?> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-charts'])) ?>"> + <a href="<?= Html::escape(route('admin-charts')) ?>"> <?= I18N::translate('Charts') ?> </a> </li> <li> <?= FontAwesome::decorativeIcon('report', ['class' => 'fa-li']) ?> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-reports'])) ?>"> + <a href="<?= Html::escape(route('admin-reports')) ?>"> <?= I18N::translate('Reports') ?> </a> </li> @@ -367,7 +367,7 @@ <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(Html::url('admin_media_upload.php', [])) ?>"> <?= I18N::translate('Upload media files') ?> </a> - <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-fix-level-0-media'])) ?>"> + <a class="btn btn-sm btn-outline-primary mb-2" href="<?= Html::escape(route('admin-fix-level-0-media')) ?>"> <?= I18N::translate('MEDIA FIXUP') ?> </a> </p> diff --git a/resources/views/admin/fix-level-0-media.php b/resources/views/admin/fix-level-0-media.php index 074a7ca585..7c8f24a9cb 100644 --- a/resources/views/admin/fix-level-0-media.php +++ b/resources/views/admin/fix-level-0-media.php @@ -2,7 +2,7 @@ <?php use Fisharebest\Webtrees\Html; ?> <?php use Fisharebest\Webtrees\I18N; ?> -<?= Bootstrap4::breadcrumbs([Html::url('admin.php', ['route' => 'admin-control-panel']) => I18N::translate('Control panel')], $title) ?> +<?= Bootstrap4::breadcrumbs([route('admin-control-panel') => I18N::translate('Control panel')], $title) ?> <h1><?= $title ?></h1> @@ -10,7 +10,7 @@ <?= I18N::translate('If you have linked a media object to an individual, instead of linking it to one of the facts or events, then you can move it to the correct location.') ?> </p> -<table class="table table-bordered table-sm table-hover table-responsive datatables wt-fix-table" data-ajax="<?= HTML::escape(json_encode(['url' => Html::url('admin.php', ['route' => 'admin-fix-level-0-media-data'])])) ?>" data-state-save="true"> +<table class="table table-bordered table-sm table-hover table-responsive datatables wt-fix-table" data-ajax="<?= HTML::escape(json_encode(['url' => route('admin-fix-level-0-media-data')])) ?>" data-state-save="true"> <caption class="sr-only"> <?= I18N::translate('Media objects') ?> </caption> @@ -34,14 +34,13 @@ if (confirm(element.dataset.confirm)) { $.ajax({ data: { - "route": "admin-fix-level-0-media-action", "fact_id": element.dataset.factId, "indi_xref": element.dataset.individualXref, "obje_xref": element.dataset.mediaXref, "tree_id": element.dataset.treeId }, method: "POST", - url: "admin.php" + url: <?= json_encode(route('admin-fix-level-0-media-action')) ?> }).done(function () { $(".wt-fix-table").DataTable().ajax.reload(null, false); }); diff --git a/resources/views/admin/module-components.php b/resources/views/admin/module-components.php index 07ae235957..4d19e84a4b 100644 --- a/resources/views/admin/module-components.php +++ b/resources/views/admin/module-components.php @@ -7,11 +7,11 @@ <?php use Fisharebest\Webtrees\View; ?> <?php use Fisharebest\Webtrees\Module\ModuleConfigInterface; ?> -<?= View::make('admin/breadcrumbs', ['links' => ['admin.php' => I18N::translate('Control panel'), Html::url('admin.php', ['route' => 'admin-modules']) => I18N::translate('Modules'), $page_title]]) ?> +<?= View::make('admin/breadcrumbs', ['links' => [route('admin-control-panel') => I18N::translate('Control panel'), route('admin-modules') => I18N::translate('Modules'), $title]]) ?> -<h1><?= $page_title ?></h1> +<h1><?= $title ?></h1> -<form action="admin.php" method="post"> +<form action="<?= Html::escape(route('admin-control-panel')) ?>" method="post"> <input type="hidden" name="route" value="admin-update-module-access"> <input type="hidden" name="component" value="<?= Html::escape($component) ?>"> <?= Filter::getCsrf() ?> diff --git a/resources/views/admin/modules.php b/resources/views/admin/modules.php index 56731aa0b3..ce8d12b9fe 100644 --- a/resources/views/admin/modules.php +++ b/resources/views/admin/modules.php @@ -13,13 +13,13 @@ <?php use Fisharebest\Webtrees\Module\ModuleTabInterface; ?> <?php use Fisharebest\Webtrees\Module\ModuleThemeInterface; ?> -<?= View::make('admin/breadcrumbs', ['links' => ['admin.php' => I18N::translate('Control panel'), $title]]) ?> +<?= View::make('admin/breadcrumbs', ['links' => [route('admin-control-panel') => I18N::translate('Control panel'), $title]]) ?> <h1><?= $title ?></h1> <?php foreach ($deleted_modules as $module_name): ?> <div class="alert alert-warning" role="alert"> - <form action="admin.php" class="form-inline" method="POST"> + <form action="<?= Html::escape(route('admin-control-panel')) ?>" class="form-inline" method="POST"> <?= Filter::getCsrf() ?> <input type="hidden" name="route" value="admin-delete-module-settings"> <input type="hidden" name="module_name" value="<?= $module_name ?>"> @@ -31,7 +31,7 @@ </div> <?php endforeach ?> -<form action="admin.php" method="POST"> +<form action="<?= Html::escape(route('admin-control-panel')) ?>" method="POST"> <input type="hidden" name="route" value="admin-update-module-status"> <?= Filter::getCsrf() ?> <table class="table table-bordered table-hover table-sm table-module-administration" data-info="false" data-paging="false" data-state-save="true"> @@ -50,32 +50,32 @@ <?= I18N::translate('Description') ?> </th> <th class="d-none d-sm-table-cell"> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-menus'])) ?>"> + <a href="<?= Html::escape(route('admin-menus')) ?>"> <?= I18N::translate('Menus') ?> </a> </th> <th class="d-none d-sm-table-cell"> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-tabs'])) ?>"> + <a href="<?= Html::escape(route('admin-tabs')) ?>"> <?= I18N::translate('Tabs') ?> </a> </th> <th class="d-none d-sm-table-cell"> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-sidebars'])) ?>"> + <a href="<?= Html::escape(route('admin-sidebars')) ?>"> <?= I18N::translate('Sidebars') ?> </a> </th> <th class="d-none d-sm-table-cell"> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-blocks'])) ?>"> + <a href="<?= Html::escape(route('admin-blocks')) ?>"> <?= I18N::translate('Blocks') ?> </a> </th> <th class="d-none d-sm-table-cell"> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-charts'])) ?>"> + <a href="<?= Html::escape(route('admin-charts')) ?>"> <?= I18N::translate('Charts') ?> </a> </th> <th class="d-none d-sm-table-cell"> - <a href="<?= Html::escape(Html::url('admin.php', ['route' => 'admin-reports'])) ?>"> + <a href="<?= Html::escape(route('admin-reports')) ?>"> <?= I18N::translate('Reports') ?> </a> </th> diff --git a/resources/views/admin/server-information.php b/resources/views/admin/server-information.php index 8b2ae1397e..4ea2fbd735 100644 --- a/resources/views/admin/server-information.php +++ b/resources/views/admin/server-information.php @@ -2,7 +2,7 @@ <?php use Fisharebest\Webtrees\Html; ?> <?php use Fisharebest\Webtrees\I18N; ?> -<?= Bootstrap4::breadcrumbs([Html::url('admin.php', ['route' => 'admin-control-panel']) => I18N::translate('Control panel')], $title) ?> +<?= Bootstrap4::breadcrumbs([route('admin-control-panel') => I18N::translate('Control panel')], $title) ?> <h1><?= $title ?></h1> diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 08619b1b6b..9414f6fba7 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -15,4 +15,5 @@ return array( '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', 'e277be14c90068cf94faed2c43dbe6d8' => $vendorDir . '/symfony/polyfill-php71/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', + '68a364a398e4c810af7b33b66c1c5a1a' => $baseDir . '/app/Helpers/functions.php', ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 3cda12450d..5a6c040f25 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -16,6 +16,7 @@ class ComposerStaticInit88915787c0ca8762c9a45e08fa8b3022 '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', 'e277be14c90068cf94faed2c43dbe6d8' => __DIR__ . '/..' . '/symfony/polyfill-php71/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', + '68a364a398e4c810af7b33b66c1c5a1a' => __DIR__ . '/../..' . '/app/Helpers/functions.php', ); public static $prefixLengthsPsr4 = array ( |
