summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xadmin.php143
-rw-r--r--admin_media.php2
-rw-r--r--admin_media_upload.php2
-rw-r--r--admin_pgv_to_wt.php2
-rw-r--r--admin_site_config.php14
-rw-r--r--admin_site_logs.php2
-rw-r--r--admin_site_merge.php2
-rw-r--r--admin_trees_check.php2
-rw-r--r--admin_trees_config.php4
-rw-r--r--admin_trees_download.php2
-rw-r--r--admin_trees_duplicates.php2
-rwxr-xr-xadmin_trees_manage.php6
-rw-r--r--admin_trees_merge.php2
-rw-r--r--admin_trees_places.php2
-rw-r--r--admin_trees_unconnected.php2
-rw-r--r--admin_users.php6
-rw-r--r--admin_users_bulk.php2
-rw-r--r--app/Controller/AdminController.php8
-rw-r--r--app/Controller/HomePageController.php152
-rw-r--r--app/Helpers/functions.php47
-rw-r--r--app/Module/BatchUpdateModule.php4
-rw-r--r--app/Module/FrequentlyAskedQuestionsModule.php8
-rw-r--r--app/Module/GoogleMapsModule.php20
-rw-r--r--app/Module/RelationshipsChartModule.php4
-rw-r--r--app/Module/SiteMapModule.php4
-rw-r--r--app/Module/StoriesModule.php8
-rwxr-xr-xapp/Theme/AbstractTheme.php2
-rw-r--r--app/Theme/AdministrationTheme.php16
-rw-r--r--composer.json5
-rw-r--r--index.php21
-rw-r--r--index_edit.php4
-rw-r--r--resources/views/admin/changes-log.php7
-rw-r--r--resources/views/admin/clean-data.php2
-rw-r--r--resources/views/admin/control-panel-manager.php2
-rw-r--r--resources/views/admin/control-panel.php22
-rw-r--r--resources/views/admin/fix-level-0-media.php7
-rw-r--r--resources/views/admin/module-components.php6
-rw-r--r--resources/views/admin/modules.php18
-rw-r--r--resources/views/admin/server-information.php2
-rw-r--r--vendor/composer/autoload_files.php1
-rw-r--r--vendor/composer/autoload_static.php1
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": {
diff --git a/index.php b/index.php
index 1a107b9ed9..c72d52c2f9 100644
--- a/index.php
+++ b/index.php
@@ -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&amp;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 (