summaryrefslogtreecommitdiff
path: root/app/Http/RequestHandlers
diff options
context:
space:
mode:
Diffstat (limited to 'app/Http/RequestHandlers')
-rw-r--r--app/Http/RequestHandlers/ControlPanel.php3
-rw-r--r--app/Http/RequestHandlers/ModulesCustomTagsAction.php50
-rw-r--r--app/Http/RequestHandlers/ModulesCustomTagsPage.php47
-rw-r--r--app/Http/RequestHandlers/SiteTagsAction.php14
-rw-r--r--app/Http/RequestHandlers/SiteTagsPage.php31
5 files changed, 40 insertions, 105 deletions
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/ModulesCustomTagsAction.php b/app/Http/RequestHandlers/ModulesCustomTagsAction.php
deleted file mode 100644
index 5dc6912529..0000000000
--- a/app/Http/RequestHandlers/ModulesCustomTagsAction.php
+++ /dev/null
@@ -1,50 +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\FlashMessages;
-use Fisharebest\Webtrees\I18N;
-use Fisharebest\Webtrees\Module\ModuleCustomTagsInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-
-use function redirect;
-use function route;
-
-/**
- * Update a list of modules.
- */
-class ModulesCustomTagsAction extends AbstractModuleComponentAction
-{
- /**
- * @param ServerRequestInterface $request
- *
- * @return ResponseInterface
- */
- public function handle(ServerRequestInterface $request): ResponseInterface
- {
- $this->updateStatus(ModuleCustomTagsInterface::class, $request);
- $this->updateAccessLevel(ModuleCustomTagsInterface::class, $request);
-
- FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success');
-
- return redirect(route(ModulesCustomTagsPage::class));
- }
-}
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'),
]);
}
}