diff options
Diffstat (limited to 'app/Http')
| -rw-r--r-- | app/Http/Middleware/RegisterGedcomTags.php (renamed from app/Http/RequestHandlers/ModulesCustomTagsAction.php) | 40 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/ControlPanel.php | 3 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/ModulesCustomTagsPage.php | 47 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/SiteTagsAction.php | 14 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/SiteTagsPage.php | 31 | ||||
| -rw-r--r-- | app/Http/Routes/WebRoutes.php | 4 |
6 files changed, 64 insertions, 75 deletions
diff --git a/app/Http/RequestHandlers/ModulesCustomTagsAction.php b/app/Http/Middleware/RegisterGedcomTags.php index 5dc6912529..9fae18595e 100644 --- a/app/Http/RequestHandlers/ModulesCustomTagsAction.php +++ b/app/Http/Middleware/RegisterGedcomTags.php @@ -17,34 +17,42 @@ declare(strict_types=1); -namespace Fisharebest\Webtrees\Http\RequestHandlers; +namespace Fisharebest\Webtrees\Http\Middleware; -use Fisharebest\Webtrees\FlashMessages; -use Fisharebest\Webtrees\I18N; -use Fisharebest\Webtrees\Module\ModuleCustomTagsInterface; +use Fisharebest\Webtrees\Gedcom; +use Fisharebest\Webtrees\Module\ModuleThemeInterface; +use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Services\ModuleService; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; - -use function redirect; -use function route; +use Psr\Http\Server\MiddlewareInterface; +use Psr\Http\Server\RequestHandlerInterface; /** - * Update a list of modules. + * Middleware to register GEDCOM tags. */ -class ModulesCustomTagsAction extends AbstractModuleComponentAction +class RegisterGedcomTags implements MiddlewareInterface { + private Gedcom $gedcom; + + /** + * @param Gedcom $gedcom + */ + public function __construct(Gedcom $gedcom) + { + $this->gedcom = $gedcom; + } + /** - * @param ServerRequestInterface $request + * @param ServerRequestInterface $request + * @param RequestHandlerInterface $handler * * @return ResponseInterface */ - public function handle(ServerRequestInterface $request): ResponseInterface + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { - $this->updateStatus(ModuleCustomTagsInterface::class, $request); - $this->updateAccessLevel(ModuleCustomTagsInterface::class, $request); - - FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success'); + $this->gedcom->registerTags(); - return redirect(route(ModulesCustomTagsPage::class)); + return $handler->handle($request); } } diff --git a/app/Http/RequestHandlers/ControlPanel.php b/app/Http/RequestHandlers/ControlPanel.php index 02e8c944f2..1814fb2e02 100644 --- a/app/Http/RequestHandlers/ControlPanel.php +++ b/app/Http/RequestHandlers/ControlPanel.php @@ -28,7 +28,6 @@ use Fisharebest\Webtrees\Module\ModuleAnalyticsInterface; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Module\ModuleChartInterface; use Fisharebest\Webtrees\Module\ModuleCustomInterface; -use Fisharebest\Webtrees\Module\ModuleCustomTagsInterface; use Fisharebest\Webtrees\Module\ModuleDataFixInterface; use Fisharebest\Webtrees\Module\ModuleFooterInterface; use Fisharebest\Webtrees\Module\ModuleHistoricEventsInterface; @@ -186,8 +185,6 @@ class ControlPanel implements RequestHandlerInterface 'chart_modules_disabled' => $this->module_service->findByInterface(ModuleChartInterface::class, true), 'chart_modules_enabled' => $this->module_service->findByInterface(ModuleChartInterface::class), 'custom_updates' => $custom_updates, - 'custom_tags_modules_disabled' => $this->module_service->findByInterface(ModuleCustomTagsInterface::class, true), - 'custom_tags_modules_enabled' => $this->module_service->findByInterface(ModuleCustomTagsInterface::class), 'data_fix_modules_disabled' => $this->module_service->findByInterface(ModuleDataFixInterface::class, true), 'data_fix_modules_enabled' => $this->module_service->findByInterface(ModuleDataFixInterface::class), 'other_modules' => $this->module_service->otherModules(true), diff --git a/app/Http/RequestHandlers/ModulesCustomTagsPage.php b/app/Http/RequestHandlers/ModulesCustomTagsPage.php deleted file mode 100644 index 3c77a259cd..0000000000 --- a/app/Http/RequestHandlers/ModulesCustomTagsPage.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -/** - * webtrees: online genealogy - * Copyright (C) 2022 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 <https://www.gnu.org/licenses/>. - */ - -declare(strict_types=1); - -namespace Fisharebest\Webtrees\Http\RequestHandlers; - -use Fisharebest\Webtrees\I18N; -use Fisharebest\Webtrees\Module\ModuleCustomTagsInterface; -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface; - -use function view; - -/** - * Show a list of modules. - */ -class ModulesCustomTagsPage extends AbstractModuleComponentPage -{ - /** - * @param ServerRequestInterface $request - * - * @return ResponseInterface - */ - public function handle(ServerRequestInterface $request): ResponseInterface - { - return $this->listComponents( - ModuleCustomTagsInterface::class, - view('icons/chart') . ' ' . I18N::translate('Custom GEDCOM tags'), - '' - ); - } -} diff --git a/app/Http/RequestHandlers/SiteTagsAction.php b/app/Http/RequestHandlers/SiteTagsAction.php index 8e6fac07b3..85ee2efc3e 100644 --- a/app/Http/RequestHandlers/SiteTagsAction.php +++ b/app/Http/RequestHandlers/SiteTagsAction.php @@ -23,11 +23,13 @@ use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\Gedcom; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Site; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function array_keys; +use function implode; use function redirect; use function route; @@ -43,13 +45,19 @@ class SiteTagsAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $params = (array) $request->getParsedBody(); - foreach (array_keys(Gedcom::HIDDEN_TAGS) as $setting) { - $value = (bool) ($params['HIDE_' . $setting] ?? false); + $value = Validator::parsedBody($request)->boolean('HIDE_' . $setting, false); Site::setPreference('HIDE_' . $setting, (string) $value); } + $custom_family_tags = Validator::parsedBody($request)->array('custom_family_tags'); + $custom_individual_tags = Validator::parsedBody($request)->array('custom_individual_tags'); + $custom_gedcom_l_tags = Validator::parsedBody($request)->boolean('custom_gedcom_l_tags', false); + + Site::setPreference('CUSTOM_FAMILY_TAGS', implode(',', $custom_family_tags)); + Site::setPreference('CUSTOM_INDIVIDUAL_TAGS', implode(',', $custom_individual_tags)); + Site::setPreference('CUSTOM_GEDCOM_L_TAGS', (string) $custom_gedcom_l_tags); + FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success'); return redirect(route(ControlPanel::class)); diff --git a/app/Http/RequestHandlers/SiteTagsPage.php b/app/Http/RequestHandlers/SiteTagsPage.php index 0b55704e2c..5e5d19d1cd 100644 --- a/app/Http/RequestHandlers/SiteTagsPage.php +++ b/app/Http/RequestHandlers/SiteTagsPage.php @@ -19,13 +19,18 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; +use Fisharebest\Webtrees\Gedcom; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Site; +use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; +use function explode; + /** * Edit the tree preferences. */ @@ -42,9 +47,31 @@ class SiteTagsPage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; + $custom_family_tags = explode(',', Site::getPreference('CUSTOM_FAMILY_TAGS')); + $custom_individual_tags = explode(',', Site::getPreference('CUSTOM_INDIVIDUAL_TAGS')); + + $all_family_tags = new Collection(Gedcom::CUSTOM_FAMILY_TAGS); + $all_individual_tags = new Collection(Gedcom::CUSTOM_INDIVIDUAL_TAGS); + + $all_family_tags = $all_family_tags->mapWithKeys( + static fn (string $tag): array => [$tag => Registry::elementFactory()->make('FAM:' . $tag)->label() . ' - ' . $tag] + ); + + $all_individual_tags = $all_individual_tags->mapWithKeys( + static fn (string $tag): array => [$tag => Registry::elementFactory()->make('INDI:' . $tag)->label(). ' - ' . $tag] + ); + + $custom_gedcom_l_tags = (bool) Site::getPreference('CUSTOM_GEDCOM_L_TAGS'); + + return $this->viewResponse('admin/tags', [ - 'element_factory' => Registry::elementFactory(), - 'title' => I18N::translate('GEDCOM tags'), + 'all_family_tags' => $all_family_tags->sort()->all(), + 'all_individual_tags' => $all_individual_tags->sort()->all(), + 'custom_family_tags' => $custom_family_tags, + 'custom_gedcom_l_tags' => $custom_gedcom_l_tags, + 'custom_individual_tags' => $custom_individual_tags, + 'element_factory' => Registry::elementFactory(), + 'title' => I18N::translate('GEDCOM tags'), ]); } } diff --git a/app/Http/Routes/WebRoutes.php b/app/Http/Routes/WebRoutes.php index 2c5aa8033d..5aba4434ff 100644 --- a/app/Http/Routes/WebRoutes.php +++ b/app/Http/Routes/WebRoutes.php @@ -181,8 +181,6 @@ use Fisharebest\Webtrees\Http\RequestHandlers\ModulesBlocksAction; use Fisharebest\Webtrees\Http\RequestHandlers\ModulesBlocksPage; use Fisharebest\Webtrees\Http\RequestHandlers\ModulesChartsAction; use Fisharebest\Webtrees\Http\RequestHandlers\ModulesChartsPage; -use Fisharebest\Webtrees\Http\RequestHandlers\ModulesCustomTagsAction; -use Fisharebest\Webtrees\Http\RequestHandlers\ModulesCustomTagsPage; use Fisharebest\Webtrees\Http\RequestHandlers\ModulesDataFixesAction; use Fisharebest\Webtrees\Http\RequestHandlers\ModulesDataFixesPage; use Fisharebest\Webtrees\Http\RequestHandlers\ModulesFootersAction; @@ -401,8 +399,6 @@ class WebRoutes $router->post(ModulesBlocksAction::class, '/blocks'); $router->get(ModulesChartsPage::class, '/charts'); $router->post(ModulesChartsAction::class, '/charts'); - $router->get(ModulesCustomTagsPage::class, '/custom-tags'); - $router->post(ModulesCustomTagsAction::class, '/custom-tags'); $router->get(ModulesDataFixesPage::class, '/data-fixes'); $router->post(ModulesDataFixesAction::class, '/data-fixes'); $router->get(ModulesFootersPage::class, '/footers'); |
