diff options
27 files changed, 331 insertions, 196 deletions
diff --git a/app/Functions/FunctionsPrintFacts.php b/app/Functions/FunctionsPrintFacts.php index f1bd16dfeb..f91a90e919 100644 --- a/app/Functions/FunctionsPrintFacts.php +++ b/app/Functions/FunctionsPrintFacts.php @@ -30,6 +30,7 @@ use Fisharebest\Webtrees\GedcomCode\GedcomCodeQuay; use Fisharebest\Webtrees\GedcomCode\GedcomCodeRela; use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\GedcomTag; +use Fisharebest\Webtrees\Http\RequestHandlers\EditFact; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Media; @@ -773,7 +774,7 @@ class FunctionsPrintFacts echo GedcomTag::getLabel($factname, $parent); } } elseif ($can_edit) { - echo '<a href="' . e(route('edit-fact', [ + echo '<a href="' . e(route(EditFact::class, [ 'xref' => $parent->xref(), 'fact_id' => $fact->id(), 'tree' => $tree->name(), diff --git a/app/Http/Controllers/EditGedcomRecordController.php b/app/Http/Controllers/EditGedcomRecordController.php index e9d395c4af..86ed0030f2 100644 --- a/app/Http/Controllers/EditGedcomRecordController.php +++ b/app/Http/Controllers/EditGedcomRecordController.php @@ -55,79 +55,12 @@ class EditGedcomRecordController extends AbstractEditController * * @return ResponseInterface */ - public function addFact(ServerRequestInterface $request): ResponseInterface - { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getQueryParams()['xref']; - $fact = $request->getQueryParams()['fact']; - - $record = GedcomRecord::getInstance($xref, $tree); - Auth::checkRecordAccess($record, true); - - $title = $record->fullName() . ' - ' . GedcomTag::getLabel($fact, $record); - - return $this->viewResponse('edit/add-fact', [ - 'fact' => $fact, - 'record' => $record, - 'title' => $title, - 'tree' => $tree, - ]); - } - - /** - * @param ServerRequestInterface $request - * - * @return ResponseInterface - */ - public function editFact(ServerRequestInterface $request): ResponseInterface - { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getQueryParams()['xref']; - $fact_id = $request->getQueryParams()['fact_id']; - - $record = GedcomRecord::getInstance($xref, $tree); - Auth::checkRecordAccess($record, true); - - // Find the fact to edit - $edit_fact = null; - foreach ($record->facts() as $fact) { - if ($fact->id() === $fact_id && $fact->canEdit()) { - $edit_fact = $fact; - break; - } - } - if ($edit_fact === null) { - throw new NotFoundHttpException(); - } - - $can_edit_raw = Auth::isAdmin() || $tree->getPreference('SHOW_GEDCOM_RECORD'); - - $title = $record->fullName() . ' - ' . GedcomTag::getLabel($edit_fact->getTag()); - - return $this->viewResponse('edit/edit-fact', [ - 'can_edit_raw' => $can_edit_raw, - 'edit_fact' => $edit_fact, - 'record' => $record, - 'title' => $title, - 'tree' => $tree, - ]); - } - - /** - * @param ServerRequestInterface $request - * - * @return ResponseInterface - */ public function updateFact(ServerRequestInterface $request): ResponseInterface { $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); - $xref = $request->getParsedBody()['xref']; + $xref = $request->getAttribute('xref'); $fact_id = $request->getParsedBody()['fact_id'] ?? ''; $record = GedcomRecord::getInstance($xref, $tree); diff --git a/app/Http/Controllers/EditIndividualController.php b/app/Http/Controllers/EditIndividualController.php index 8b613b622e..c3f1abdead 100644 --- a/app/Http/Controllers/EditIndividualController.php +++ b/app/Http/Controllers/EditIndividualController.php @@ -402,8 +402,8 @@ class EditIndividualController extends AbstractEditController public function editName(ServerRequestInterface $request): ResponseInterface { $tree = $request->getAttribute('tree'); - $fact_id = $request->getQueryParams()['fact_id']; - $xref = $request->getQueryParams()['xref']; + $xref = $request->getAttribute('xref'); + $fact_id = $request->getAttribute('fact_id') ?? ''; $individual = Individual::getInstance($xref, $tree); @@ -436,13 +436,6 @@ class EditIndividualController extends AbstractEditController public function editNameAction(ServerRequestInterface $request): ResponseInterface { $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getParsedBody()['xref']; - - $individual = Individual::getInstance($xref, $tree); - - Auth::checkIndividualAccess($individual, true); // @TODO - Move the name-specific code to this function? return app(EditGedcomRecordController::class)->updateFact($request, $tree); @@ -490,12 +483,6 @@ class EditIndividualController extends AbstractEditController $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); - $xref = $request->getParsedBody()['xref']; - - $individual = Individual::getInstance($xref, $tree); - - Auth::checkIndividualAccess($individual, true); - // @TODO - Move the name-specific code to this function? return app(EditGedcomRecordController::class)->updateFact($request, $tree); diff --git a/app/Http/Controllers/IndividualController.php b/app/Http/Controllers/IndividualController.php index 041adbd4cd..2268fd4b1a 100644 --- a/app/Http/Controllers/IndividualController.php +++ b/app/Http/Controllers/IndividualController.php @@ -28,6 +28,7 @@ use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; use Fisharebest\Webtrees\GedcomCode\GedcomCodeName; use Fisharebest\Webtrees\GedcomTag; use Fisharebest\Webtrees\Http\RequestHandlers\DeleteFact; +use Fisharebest\Webtrees\Http\RequestHandlers\EditFact; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Media; @@ -347,7 +348,7 @@ class IndividualController extends AbstractBaseController } if ($individual->canEdit()) { - $edit_links = '<a class="btn btn-link" href="' . e(route('edit-fact', ['xref' => $individual->xref(), 'fact_id' => $fact->id(), 'tree' => $individual->tree()->name()])) . '" title="' . I18N::translate('Edit the gender') . '">' . view('icons/edit') . '<span class="sr-only">' . I18N::translate('Edit the gender') . '</span></a>'; + $edit_links = '<a class="btn btn-link" href="' . e(route(EditFact::class, ['xref' => $individual->xref(), 'fact_id' => $fact->id(), 'tree' => $individual->tree()->name()])) . '" title="' . I18N::translate('Edit the gender') . '">' . view('icons/edit') . '<span class="sr-only">' . I18N::translate('Edit the gender') . '</span></a>'; } else { $edit_links = ''; } diff --git a/app/Http/RequestHandlers/AddNewFact.php b/app/Http/RequestHandlers/AddNewFact.php new file mode 100644 index 0000000000..8785c97047 --- /dev/null +++ b/app/Http/RequestHandlers/AddNewFact.php @@ -0,0 +1,65 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 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/>. + */ + +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\RequestHandlers; + +use Fisharebest\Webtrees\Auth; +use Fisharebest\Webtrees\GedcomRecord; +use Fisharebest\Webtrees\GedcomTag; +use Fisharebest\Webtrees\Http\ViewResponseTrait; +use Fisharebest\Webtrees\Tree; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; + +use function assert; + +/** + * Add a new fact. + */ +class AddNewFact implements RequestHandlerInterface +{ + use ViewResponseTrait; + + /** + * @param ServerRequestInterface $request + * + * @return ResponseInterface + */ + public function handle(ServerRequestInterface $request): ResponseInterface + { + $tree = $request->getAttribute('tree'); + assert($tree instanceof Tree); + + $xref = $request->getAttribute('xref'); + $fact = $request->getAttribute('fact'); + + $record = GedcomRecord::getInstance($xref, $tree); + Auth::checkRecordAccess($record, true); + + $title = $record->fullName() . ' - ' . GedcomTag::getLabel($fact, $record); + + return $this->viewResponse('edit/add-fact', [ + 'fact' => $fact, + 'record' => $record, + 'title' => $title, + 'tree' => $tree, + ]); + } +} diff --git a/app/Http/RequestHandlers/CopyFact.php b/app/Http/RequestHandlers/CopyFact.php index ac4cc02ddc..e382b647b2 100644 --- a/app/Http/RequestHandlers/CopyFact.php +++ b/app/Http/RequestHandlers/CopyFact.php @@ -41,7 +41,7 @@ class CopyFact implements RequestHandlerInterface private $clipboard_service; /** - * EditGedcomRecordController constructor. + * CopyFact constructor. * * @param ClipboardService $clipboard_service */ diff --git a/app/Http/RequestHandlers/EditFact.php b/app/Http/RequestHandlers/EditFact.php new file mode 100644 index 0000000000..a48e1293c2 --- /dev/null +++ b/app/Http/RequestHandlers/EditFact.php @@ -0,0 +1,81 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 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/>. + */ + +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\RequestHandlers; + +use Fisharebest\Webtrees\Auth; +use Fisharebest\Webtrees\GedcomRecord; +use Fisharebest\Webtrees\GedcomTag; +use Fisharebest\Webtrees\Http\ViewResponseTrait; +use Fisharebest\Webtrees\Tree; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; + +use function assert; + +/** + * Edit a fact. + */ +class EditFact implements RequestHandlerInterface +{ + use ViewResponseTrait; + + /** + * @param ServerRequestInterface $request + * + * @return ResponseInterface + */ + public function handle(ServerRequestInterface $request): ResponseInterface + { + $tree = $request->getAttribute('tree'); + assert($tree instanceof Tree); + + $xref = $request->getQueryParams()['xref']; + $fact_id = $request->getQueryParams()['fact_id']; + + $record = GedcomRecord::getInstance($xref, $tree); + Auth::checkRecordAccess($record, true); + + // Find the fact to edit + $edit_fact = null; + foreach ($record->facts() as $fact) { + if ($fact->id() === $fact_id && $fact->canEdit()) { + $edit_fact = $fact; + break; + } + } + if ($edit_fact === null) { + throw new NotFoundHttpException(); + } + + $can_edit_raw = Auth::isAdmin() || $tree->getPreference('SHOW_GEDCOM_RECORD'); + + $title = $record->fullName() . ' - ' . GedcomTag::getLabel($edit_fact->getTag()); + + return $this->viewResponse('edit/edit-fact', [ + 'can_edit_raw' => $can_edit_raw, + 'edit_fact' => $edit_fact, + 'record' => $record, + 'title' => $title, + 'tree' => $tree, + ]); + } +} diff --git a/app/Http/RequestHandlers/EditRawFactAction.php b/app/Http/RequestHandlers/EditRawFactAction.php index 11da0edfaa..adbc01c0d9 100644 --- a/app/Http/RequestHandlers/EditRawFactAction.php +++ b/app/Http/RequestHandlers/EditRawFactAction.php @@ -37,19 +37,6 @@ use function trim; */ class EditRawFactAction implements RequestHandlerInterface { - /** @var ModuleService */ - private $module_service; - - /** - * EditGedcomRecordController constructor. - * - * @param ModuleService $module_service - */ - public function __construct(ModuleService $module_service) - { - $this->module_service = $module_service; - } - /** * @param ServerRequestInterface $request * diff --git a/app/Http/RequestHandlers/EditRawRecordAction.php b/app/Http/RequestHandlers/EditRawRecordAction.php index 0e73bd5446..015ea3dbcc 100644 --- a/app/Http/RequestHandlers/EditRawRecordAction.php +++ b/app/Http/RequestHandlers/EditRawRecordAction.php @@ -21,16 +21,10 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\GedcomRecord; -use Fisharebest\Webtrees\GedcomTag; -use Fisharebest\Webtrees\I18N; -use Fisharebest\Webtrees\Individual; -use Fisharebest\Webtrees\Module\CensusAssistantModule; -use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Tree; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use function assert; @@ -49,13 +43,14 @@ class EditRawRecordAction implements RequestHandlerInterface $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); - $xref = $request->getParsedBody()['xref']; - $facts = $request->getParsedBody()['fact'] ?? []; - $fact_ids = $request->getParsedBody()['fact_id'] ?? []; - $record = GedcomRecord::getInstance($xref, $tree); + $xref = $request->getAttribute('xref'); + $record = GedcomRecord::getInstance($xref, $tree); Auth::checkRecordAccess($record, true); + $facts = $request->getParsedBody()['fact'] ?? []; + $fact_ids = $request->getParsedBody()['fact_id'] ?? []; + $gedcom = '0 @' . $record->xref() . '@ ' . $record::RECORD_TYPE; // Retain any private facts diff --git a/app/Http/RequestHandlers/EditRawRecordPage.php b/app/Http/RequestHandlers/EditRawRecordPage.php index d8ba6788d6..2217783ae1 100644 --- a/app/Http/RequestHandlers/EditRawRecordPage.php +++ b/app/Http/RequestHandlers/EditRawRecordPage.php @@ -47,7 +47,7 @@ class EditRawRecordPage implements RequestHandlerInterface $tree = $request->getAttribute('tree'); assert($tree instanceof Tree); - $xref = $request->getQueryParams()['xref']; + $xref = $request->getAttribute('xref'); $record = GedcomRecord::getInstance($xref, $tree); Auth::checkRecordAccess($record, true); diff --git a/app/Http/RequestHandlers/PasteFact.php b/app/Http/RequestHandlers/PasteFact.php index b37a18645a..aa55658086 100644 --- a/app/Http/RequestHandlers/PasteFact.php +++ b/app/Http/RequestHandlers/PasteFact.php @@ -39,7 +39,7 @@ class PasteFact implements RequestHandlerInterface private $clipboard_service; /** - * EditGedcomRecordController constructor. + * PasteFact constructor. * * @param ClipboardService $clipboard_service */ diff --git a/app/Http/RequestHandlers/SelectNewFact.php b/app/Http/RequestHandlers/SelectNewFact.php new file mode 100644 index 0000000000..96496905d4 --- /dev/null +++ b/app/Http/RequestHandlers/SelectNewFact.php @@ -0,0 +1,54 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 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/>. + */ + +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\RequestHandlers; + +use Fisharebest\Webtrees\Tree; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; + +use function assert; +use function redirect; + +/** + * Select a new fact to add. + */ +class SelectNewFact implements RequestHandlerInterface +{ + /** + * @param ServerRequestInterface $request + * + * @return ResponseInterface + */ + public function handle(ServerRequestInterface $request): ResponseInterface + { + $tree = $request->getAttribute('tree'); + assert($tree instanceof Tree); + + $xref = $request->getAttribute('xref'); + $fact = $request->getParsedBody()['fact']; + + return redirect(route(AddNewFact::class, [ + 'tree' => $tree->name(), + 'xref' => $xref, + 'fact' => $fact, + ])); + } +} diff --git a/resources/views/edit/add-fact-row.phtml b/resources/views/edit/add-fact-row.phtml index e049157e59..67171769c3 100644 --- a/resources/views/edit/add-fact-row.phtml +++ b/resources/views/edit/add-fact-row.phtml @@ -1,5 +1,11 @@ -<?php use Fisharebest\Webtrees\GedcomTag; ?> -<?php use Fisharebest\Webtrees\I18N; ?> +<?php + +use Fisharebest\Webtrees\GedcomTag; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; +use Fisharebest\Webtrees\Http\RequestHandlers\SelectNewFact; +use Fisharebest\Webtrees\I18N; + +?> <tr> <th scope="row"> @@ -8,10 +14,9 @@ </label> </th> <td> - <form method="get" action="<?= e(route('add-fact')) ?>" onsubmit="if ($('#add-fact').val() === null) {event.preventDefault();}"> - <input type="hidden" name="route" value="<?= e(route('add-fact')) ?>"> - <input type="hidden" name="xref" value="<?= e($record->xref()) ?>"> - <input type="hidden" name="tree" value="<?= e($record->tree()->name()) ?>"> + <form method="post" action="<?= e(route(SelectNewFact::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) ?>" onsubmit="if ($('#add-fact').val() === null) {event.preventDefault();}"> + <?= csrf_field() ?> + <div class="input-group"> <select class="custom-select" id="add-fact" name="fact"> <option value="" disabled selected> @@ -39,7 +44,7 @@ <div class="wt-quick-facts"> <?php foreach ($quick_facts as $fact) : ?> - <a class="btn btn-link btn-sm wt-quick-fact" href="<?= e(route('add-fact', [ + <a class="btn btn-link btn-sm wt-quick-fact" href="<?= e(route(AddNewFact::class, [ 'fact' => $fact, 'xref' => $record->xref(), 'tree' => $tree->name(), diff --git a/resources/views/edit/add-fact.phtml b/resources/views/edit/add-fact.phtml index cd1d944b86..fbd4fc4061 100644 --- a/resources/views/edit/add-fact.phtml +++ b/resources/views/edit/add-fact.phtml @@ -1,16 +1,18 @@ -<?php use Fisharebest\Webtrees\Auth; ?> -<?php use Fisharebest\Webtrees\Config; ?> -<?php use Fisharebest\Webtrees\Functions\FunctionsEdit; ?> -<?php use Fisharebest\Webtrees\GedcomTag; ?> -<?php use Fisharebest\Webtrees\I18N; ?> -<?php use Ramsey\Uuid\Uuid; ?> +<?php + +use Fisharebest\Webtrees\Auth; +use Fisharebest\Webtrees\Config; +use Fisharebest\Webtrees\Functions\FunctionsEdit; +use Fisharebest\Webtrees\GedcomTag; +use Fisharebest\Webtrees\I18N; +use Ramsey\Uuid\Uuid; + +?> <h2 class="wt-page-title"><?= $title ?></h2> -<form method="post" action="<?= e(route('update-fact', ['tree' => $tree->name()])) ?>" class="wt-page-content"> +<form method="post" action="<?= e(route('update-fact', ['tree' => $tree->name(), 'xref' => $record->xref()])) ?>" class="wt-page-content"> <?= csrf_field() ?> - <input type="hidden" name="tree" value="<?= e($tree->name()) ?>"> - <input type="hidden" name="xref" value="<?= e($record->xref()) ?>"> <?php FunctionsEdit::createAddForm($tree, $fact) ?> diff --git a/resources/views/edit/edit-fact.phtml b/resources/views/edit/edit-fact.phtml index 0c8448a305..16d0262507 100644 --- a/resources/views/edit/edit-fact.phtml +++ b/resources/views/edit/edit-fact.phtml @@ -12,10 +12,8 @@ use Ramsey\Uuid\Uuid; <h2 class="wt-page-title"><?= $title ?></h2> -<form method="post" action="<?= e(route('update-fact', ['tree' => $tree->name()])) ?>" class="wt-page-content"> +<form method="post" action="<?= e(route('update-fact', ['tree' => $tree->name(), 'xref' => $record->xref()])) ?>" class="wt-page-content"> <?= csrf_field() ?> - <input type="hidden" name="tree" value="<?= e($tree->name()) ?>"> - <input type="hidden" name="xref" value="<?= e($record->xref()) ?>"> <input type="hidden" name="fact_id" value="<?= e($edit_fact->id()) ?>"> <?php FunctionsEdit::createEditForm($edit_fact) ?> diff --git a/resources/views/edit/icon-fact-edit.phtml b/resources/views/edit/icon-fact-edit.phtml index 39d03d2fe5..40b60f43ff 100644 --- a/resources/views/edit/icon-fact-edit.phtml +++ b/resources/views/edit/icon-fact-edit.phtml @@ -1,6 +1,11 @@ -<?php use Fisharebest\Webtrees\I18N; ?> +<?php -<a class="btn btn-link btn-sm" href="<?= e(route('edit-fact', ['xref' => $fact->record()->xref(), 'fact_id' => $fact->id(), 'tree' => $fact->record()->tree()->name()])) ?>" title="<?= I18N::translate('Edit') ?>"> +use Fisharebest\Webtrees\Http\RequestHandlers\EditFact; +use Fisharebest\Webtrees\I18N; + +?> + +<a class="btn btn-link btn-sm" href="<?= e(route(EditFact::class, ['xref' => $fact->record()->xref(), 'fact_id' => $fact->id(), 'tree' => $fact->record()->tree()->name()])) ?>" title="<?= I18N::translate('Edit') ?>"> <?= view('icons/edit') ?> <span class="sr-only"><?= I18N::translate('Edit') ?></span> </a> diff --git a/resources/views/edit/new-individual.phtml b/resources/views/edit/new-individual.phtml index dcda5bb43a..0f210e14f3 100644 --- a/resources/views/edit/new-individual.phtml +++ b/resources/views/edit/new-individual.phtml @@ -127,10 +127,8 @@ $bdm = ''; // used to copy '1 SOUR' to '2 SOUR' for BIRT DEAT MARR ?> <h2 class="wt-page-title"><?= $title ?></h2> -<form method="post" action="<?= e(route($next_action, ['tree' => $tree->name()])) ?>" onsubmit="return checkform();"> - <input type="hidden" name="tree" value="<?= e($tree->name()) ?>"> +<form method="post" action="<?= e(route($next_action, ['tree' => $tree->name(), 'xref' => $xref])) ?>" onsubmit="return checkform();"> <input type="hidden" name="fact_id" value="<?= e($name_fact_id) ?>"> - <input type="hidden" name="xref" value="<?= e($xref) ?>"> <input type="hidden" name="famtag" value="<?= e($famtag) ?>"> <input type="hidden" name="gender" value="<?= $gender ?>"> <?= csrf_field() ?> diff --git a/resources/views/edit/raw-gedcom-record.phtml b/resources/views/edit/raw-gedcom-record.phtml index ba357b7737..900145ab25 100644 --- a/resources/views/edit/raw-gedcom-record.phtml +++ b/resources/views/edit/raw-gedcom-record.phtml @@ -1,6 +1,6 @@ <?php -use Fisharebest\Webtrees\Http\RequestHandlerInterface\EditRawRecordAction; +use Fisharebest\Webtrees\Http\RequestHandlers\EditRawRecordAction; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\View; @@ -8,10 +8,8 @@ use Fisharebest\Webtrees\View; <h2 class="wt-page-title"><?= $title ?></h2> -<form method="post" action="<?= e(route(EditRawRecordAction::class, ['tree' => $tree->name()])) ?>" class="wt-page-content"> +<form method="post" action="<?= e(route(EditRawRecordAction::class, ['tree' => $tree->name(), 'xref' => $record->xref()])) ?>" class="wt-page-content"> <?= csrf_field() ?> - <input type="hidden" name="tree" value="<?= e($tree->name()) ?>"> - <input type="hidden" name="xref" value="<?= e($record->xref()) ?>"> <p class="text-muted small"> <?= I18N::translate('This page allows you to bypass the usual forms, and edit the underlying data directly. It is an advanced option, and you should not use it unless you understand the GEDCOM format. If you make a mistake here, it can be difficult to fix.') ?> diff --git a/resources/views/family-page.phtml b/resources/views/family-page.phtml index 572c36d5c3..c04804d9c0 100644 --- a/resources/views/family-page.phtml +++ b/resources/views/family-page.phtml @@ -3,6 +3,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Functions\FunctionsPrint; use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord; use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord; use Fisharebest\Webtrees\I18N; @@ -70,7 +71,7 @@ use Fisharebest\Webtrees\View; <?= I18N::translate('Note') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $record->tree()->name(), 'xref' => $record->xref(), 'fact' => 'NOTE'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref(), 'fact' => 'NOTE'])) ?>"> <?= I18N::translate('Add a note') ?> </a> </td> @@ -81,7 +82,7 @@ use Fisharebest\Webtrees\View; <?= I18N::translate('Shared note') ?> </th> <td class="optionbox"> - <a href="<?= e(route('add-fact', ['tree' => $record->tree()->name(), 'xref' => $record->xref(), 'fact' => 'SHARED_NOTE'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref(), 'fact' => 'SHARED_NOTE'])) ?>"> <?= I18N::translate('Add a shared note') ?> </a> </td> @@ -93,7 +94,7 @@ use Fisharebest\Webtrees\View; <?= I18N::translate('Media object') ?> </th> <td class="optionbox"> - <a href="<?= e(route('add-fact', ['tree' => $record->tree()->name(), 'xref' => $record->xref(), 'fact' => 'OBJE'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref(), 'fact' => 'OBJE'])) ?>"> <?= I18N::translate('Add a media object') ?> </a> </td> @@ -105,7 +106,7 @@ use Fisharebest\Webtrees\View; <?= I18N::translate('Source') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $record->tree()->name(), 'xref' => $record->xref(), 'fact' => 'SOUR'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref(), 'fact' => 'SOUR'])) ?>"> <?= I18N::translate('Add a source citation') ?> </a> </td> diff --git a/resources/views/individual-page-menu.phtml b/resources/views/individual-page-menu.phtml index 2c1b32889d..945688b00f 100644 --- a/resources/views/individual-page-menu.phtml +++ b/resources/views/individual-page-menu.phtml @@ -1,7 +1,9 @@ <?php use Fisharebest\Webtrees\Auth; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; use Fisharebest\Webtrees\Http\RequestHandlers\DeleteRecord; +use Fisharebest\Webtrees\Http\RequestHandlers\EditFact; use Fisharebest\Webtrees\Http\RequestHandlers\EditRawRecordPage; use Fisharebest\Webtrees\Http\RequestHandlers\ReorderMediaPage; use Fisharebest\Webtrees\Http\RequestHandlers\ReorderNamesPage; @@ -37,7 +39,7 @@ use Fisharebest\Webtrees\I18N; <div class="dropdown-divider"></div> <?php if ($count_sex === 0) : ?> - <a class="dropdown-item" href="<?= e(route('add-fact', ['fact' => 'SEX', 'tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) ?>"> + <a class="dropdown-item" href="<?= e(route(AddNewFact::class, ['fact' => 'SEX', 'tree' => $individual->tree()->name(), 'xref' => $individual->xref()])) ?>"> <?= view('icons/edit') ?> <?= I18N::translate('Edit the gender') ?> </a> @@ -45,7 +47,7 @@ use Fisharebest\Webtrees\I18N; <?php foreach ($individual->facts(['SEX']) as $fact) : ?> <?php if ($fact->canEdit()) : ?> - <a class="dropdown-item" href="<?= e(route('edit-fact', ['xref' => $individual->xref(), 'fact_id' => $fact->id(), 'tree' => $individual->tree()->name()])) ?>"> + <a class="dropdown-item" href="<?= e(route(EditFact::class, ['xref' => $individual->xref(), 'fact_id' => $fact->id(), 'tree' => $individual->tree()->name()])) ?>"> <?= view('icons/edit') ?> <?= I18N::translate('Edit the gender') ?> </a> @@ -68,7 +70,7 @@ use Fisharebest\Webtrees\I18N; <div class="dropdown-divider"></div> - <a class="dropdown-item" href="<?= e(route('add-fact', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'OBJE'])) ?>"> + <a class="dropdown-item" href="<?= e(route(AddNewFact::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'OBJE'])) ?>"> <?= view('icons/add') ?> <?= I18N::translate('Add a media object') ?> </a> diff --git a/resources/views/individual-page.phtml b/resources/views/individual-page.phtml index ea6260d51e..88c2aaa454 100644 --- a/resources/views/individual-page.phtml +++ b/resources/views/individual-page.phtml @@ -1,6 +1,7 @@ <?php use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Functions\FunctionsPrint; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord; use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord; use Fisharebest\Webtrees\I18N; @@ -83,7 +84,7 @@ use Illuminate\Support\Collection; <?php if (Auth::isEditor($individual->tree())) : ?> <div class="text-center"> - <a href="<?= e(route('add-fact', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'OBJE'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'OBJE'])) ?>"> <?= I18N::translate('Add a media object') ?> </a> </div> diff --git a/resources/views/media-page.phtml b/resources/views/media-page.phtml index b5ddaf2caa..a7e8ca8164 100644 --- a/resources/views/media-page.phtml +++ b/resources/views/media-page.phtml @@ -4,6 +4,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Functions\FunctionsPrint; use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; use Fisharebest\Webtrees\GedcomTag; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; use Fisharebest\Webtrees\Http\RequestHandlers\DeleteFact; use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord; use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord; @@ -152,7 +153,7 @@ use Illuminate\Support\Collection; <?= I18N::translate('Source') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $media->tree()->name(), 'xref' => $media->xref(), 'fact' => 'SOUR'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $media->tree()->name(), 'xref' => $media->xref(), 'fact' => 'SOUR'])) ?>"> <?= I18N::translate('Add a source citation') ?> </a> </td> @@ -162,7 +163,7 @@ use Illuminate\Support\Collection; <?= I18N::translate('Shared note') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $media->tree()->name(), 'xref' => $media->xref(), 'fact' => 'SHARED_NOTE'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $media->tree()->name(), 'xref' => $media->xref(), 'fact' => 'SHARED_NOTE'])) ?>"> <?= I18N::translate('Add a shared note') ?> </a> </td> @@ -172,7 +173,7 @@ use Illuminate\Support\Collection; <?= I18N::translate('Restriction') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $media->tree()->name(), 'xref' => $media->xref(), 'fact' => 'RESN'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $media->tree()->name(), 'xref' => $media->xref(), 'fact' => 'RESN'])) ?>"> <?= I18N::translate('Add a restriction') ?> </a> </td> diff --git a/resources/views/modules/notes/tab.phtml b/resources/views/modules/notes/tab.phtml index 583a673637..5ee1ebb3cf 100644 --- a/resources/views/modules/notes/tab.phtml +++ b/resources/views/modules/notes/tab.phtml @@ -1,6 +1,11 @@ -<?php use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; ?> -<?php use Fisharebest\Webtrees\I18N; ?> -<?php use Fisharebest\Webtrees\View; ?> +<?php + +use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; +use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\View; + +?> <div class="wt-tan-notes py-4"> <table class="table wt-facts-table"> @@ -36,7 +41,7 @@ <?= I18N::translate('Note') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'NOTE'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'NOTE'])) ?>"> <?= I18N::translate('Add a note') ?> </a> </td> @@ -46,7 +51,7 @@ <?= I18N::translate('Shared note') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'SHARED_NOTE'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'SHARED_NOTE'])) ?>"> <?= I18N::translate('Add a shared note') ?> </a> </td> diff --git a/resources/views/modules/relatives/family.phtml b/resources/views/modules/relatives/family.phtml index bc04d916cd..18a6f6cdbe 100644 --- a/resources/views/modules/relatives/family.phtml +++ b/resources/views/modules/relatives/family.phtml @@ -2,7 +2,8 @@ <?php use Fisharebest\Webtrees\Functions\Functions; ?> <?php use Fisharebest\Webtrees\Gedcom; ?> <?php use Fisharebest\Webtrees\GedcomTag; ?> -<?php use Fisharebest\Webtrees\Http\RequestHandlers\ReorderChildrenPage; +<?php use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; +use Fisharebest\Webtrees\Http\RequestHandlers\ReorderChildrenPage; use Fisharebest\Webtrees\I18N; ?> <?php use Fisharebest\Webtrees\Individual; ?> @@ -123,7 +124,7 @@ use Fisharebest\Webtrees\I18N; ?> <th scope="row"> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $family->tree()->name(), 'xref' => $family->xref(), 'fact' => 'MARR'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $family->tree()->name(), 'xref' => $family->xref(), 'fact' => 'MARR'])) ?>"> <?= I18N::translate('Add marriage details') ?> </a> </td> diff --git a/resources/views/modules/sources_tab/tab.phtml b/resources/views/modules/sources_tab/tab.phtml index 9da1592873..360183ef6e 100644 --- a/resources/views/modules/sources_tab/tab.phtml +++ b/resources/views/modules/sources_tab/tab.phtml @@ -1,6 +1,11 @@ -<?php use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; ?> -<?php use Fisharebest\Webtrees\I18N; ?> -<?php use Fisharebest\Webtrees\View; ?> +<?php + +use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; +use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\View; + +?> <div class="wt-tab-sources py-4"> <table class="table wt-facts-table"> @@ -34,7 +39,7 @@ <?= I18N::translate('Source') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'SOUR'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $individual->tree()->name(), 'xref' => $individual->xref(), 'fact' => 'SOUR'])) ?>"> <?= I18N::translate('Add a source citation') ?> </a> </td> diff --git a/resources/views/source-page.phtml b/resources/views/source-page.phtml index aef4c5114c..0d730d6737 100644 --- a/resources/views/source-page.phtml +++ b/resources/views/source-page.phtml @@ -1,9 +1,14 @@ -<?php use Fisharebest\Webtrees\Auth; ?> -<?php use Fisharebest\Webtrees\Functions\FunctionsPrint; ?> -<?php use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; ?> -<?php use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord; +<?php + +use Fisharebest\Webtrees\Auth; +use Fisharebest\Webtrees\Functions\FunctionsPrint; +use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; +use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord; use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord; -use Fisharebest\Webtrees\I18N; ?> +use Fisharebest\Webtrees\I18N; + +?> <?php if ($source->isPendingDeletion()) : ?> <?php if (Auth::isModerator($source->tree())) : ?> @@ -79,7 +84,7 @@ use Fisharebest\Webtrees\I18N; ?> <?= I18N::translate('Media object') ?> </th> <td> - <a href="<?= e(route('add-fact', ['tree' => $source->tree()->name(), 'xref' => $source->xref(), 'fact' => 'OBJE'])) ?>"> + <a href="<?= e(route(AddNewFact::class, ['tree' => $source->tree()->name(), 'xref' => $source->xref(), 'fact' => 'OBJE'])) ?>"> <?= I18N::translate('Add a media object') ?> </a> </td> diff --git a/routes/web.php b/routes/web.php index b1284510fc..8732a9178e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -30,6 +30,7 @@ use Fisharebest\Webtrees\Http\Middleware\AuthManager; use Fisharebest\Webtrees\Http\Middleware\AuthMember; use Fisharebest\Webtrees\Http\Middleware\AuthModerator; use Fisharebest\Webtrees\Http\Middleware\AuthVisitor; +use Fisharebest\Webtrees\Http\RequestHandlers\AddNewFact; use Fisharebest\Webtrees\Http\RequestHandlers\EditRawRecordAction; use Fisharebest\Webtrees\Http\RequestHandlers\AccountDelete; use Fisharebest\Webtrees\Http\RequestHandlers\AccountEdit; @@ -44,6 +45,7 @@ use Fisharebest\Webtrees\Http\RequestHandlers\DeletePath; use Fisharebest\Webtrees\Http\RequestHandlers\DeleteRecord; use Fisharebest\Webtrees\Http\RequestHandlers\DeleteTreeAction; use Fisharebest\Webtrees\Http\RequestHandlers\DeleteUser; +use Fisharebest\Webtrees\Http\RequestHandlers\EditFact; use Fisharebest\Webtrees\Http\RequestHandlers\EditRawFactAction; use Fisharebest\Webtrees\Http\RequestHandlers\EditRawFactPage; use Fisharebest\Webtrees\Http\RequestHandlers\EditRawRecordPage; @@ -108,6 +110,7 @@ use Fisharebest\Webtrees\Http\RequestHandlers\SearchReplaceAction; use Fisharebest\Webtrees\Http\RequestHandlers\SearchReplacePage; use Fisharebest\Webtrees\Http\RequestHandlers\SelectDefaultTree; use Fisharebest\Webtrees\Http\RequestHandlers\SelectLanguage; +use Fisharebest\Webtrees\Http\RequestHandlers\SelectNewFact; use Fisharebest\Webtrees\Http\RequestHandlers\SelectTheme; use Fisharebest\Webtrees\Http\RequestHandlers\SiteLogsAction; use Fisharebest\Webtrees\Http\RequestHandlers\SiteLogsData; @@ -286,27 +289,46 @@ $router->attach('', '/tree/{tree}', static function (Map $router) { 'middleware' => [AuthEditor::class] ]); + $router->get('add-child-to-family', '/add-child-to-family', 'EditFamilyController::addChild'); + $router->post('add-child-to-family-action', '/add-child-to-family', 'EditFamilyController::addChildAction'); + $router->get(AddNewFact::class, '/add-fact/{xref}/{fact}', AddNewFact::class); + $router->post(SelectNewFact::class, '/add-fact/{xref}', SelectNewFact::class); $router->get('add-media-file', '/add-media-file', 'EditMediaController::addMediaFile'); $router->post('add-media-file-update', '/add-media-file', 'EditMediaController::addMediaFileAction'); - $router->get('edit-media-file', '/edit-media-file', 'EditMediaController::editMediaFile'); - $router->post('edit-media-file-update', '/edit-media-file', 'EditMediaController::editMediaFileAction'); + $router->get('add-name', '/add-name', 'EditIndividualController::addName'); + $router->post('add-name-action', '/add-name-update/{xref}', 'EditIndividualController::addNameAction'); + $router->get('add-spouse-to-family', '/add-spouse-to-family', 'EditFamilyController::addSpouse'); + $router->post('add-spouse-to-family-action', '/add-spouse-to-family', 'EditFamilyController::addSpouseAction'); + $router->get('change-family-members', '/change-family-members', 'EditFamilyController::changeFamilyMembers'); + $router->post('change-family-members-action', '/change-family-members', 'EditFamilyController::changeFamilyMembersAction'); $router->get('create-media-object', '/create-media-object', 'EditMediaController::createMediaObject'); $router->post('create-media-object-update', '/create-media-object', 'EditMediaController::createMediaObjectAction'); $router->post('create-media-from-file', '/create-media-from-file', 'EditMediaController::createMediaObjectFromFileAction'); - $router->get('link-media-to-individual', '/link-media-to-individual', 'EditMediaController::linkMediaToIndividual'); - $router->get('link-media-to-family', '/link-media-to-family', 'EditMediaController::linkMediaToFamily'); - $router->get('link-media-to-source', '/link-media-to-source', 'EditMediaController::linkMediaToSource'); - $router->post('link-media-to-record', '/link-media-to-record', 'EditMediaController::linkMediaToRecordAction'); + $router->post(CopyFact::class, '/copy/{xref}/{fact_id}', CopyFact::class); $router->get('create-note-object', '/create-note-object', 'EditNoteController::createNoteObject'); $router->post('create-note-object-action', '/create-note-object', 'EditNoteController::createNoteObjectAction'); - $router->get('edit-note-object', '/edit-note-object', 'EditNoteController::editNoteObject'); - $router->post('edit-note-object-action', '/edit-note-object', 'EditNoteController::updateNoteObject'); $router->get('create-repository', '/create-repository', 'EditRepositoryController::createRepository'); $router->post('create-repository-action', '/create-repository', 'EditRepositoryController::createRepositoryAction'); $router->get('create-source', '/create-source', 'EditSourceController::createSource'); $router->post('create-source-action', '/create-source', 'EditSourceController::createSourceAction'); $router->get('create-submitter', '/create-submitter', 'EditSubmitterController::createSubmitter'); $router->post('create-submitter-action', '/create-submitter', 'EditSubmitterController::createSubmitterAction'); + $router->post(DeleteRecord::class, '/delete/{xref}', DeleteRecord::class); + $router->post(DeleteFact::class, '/delete/{xref}/{fact_id}', DeleteFact::class); + $router->get(EditFact::class, '/edit-fact', EditFact::class); + $router->get('edit-media-file', '/edit-media-file', 'EditMediaController::editMediaFile'); + $router->post('edit-media-file-update', '/edit-media-file', 'EditMediaController::editMediaFileAction'); + $router->get('edit-note-object', '/edit-note-object', 'EditNoteController::editNoteObject'); + $router->post('edit-note-object-action', '/edit-note-object', 'EditNoteController::updateNoteObject'); + $router->get(EditRawFactPage::class, '/edit-raw/{xref}/{fact_id}', EditRawFactPage::class); + $router->post(EditRawFactAction::class, '/edit-raw/{xref}/{fact_id}', EditRawFactAction::class); + $router->get(EditRawRecordPage::class, '/edit-raw/{xref}', EditRawRecordPage::class); + $router->post(EditRawRecordAction::class, '/edit-raw/{xref}', EditRawRecordAction::class); + $router->get('link-media-to-individual', '/link-media-to-individual', 'EditMediaController::linkMediaToIndividual'); + $router->get('link-media-to-family', '/link-media-to-family', 'EditMediaController::linkMediaToFamily'); + $router->get('link-media-to-source', '/link-media-to-source', 'EditMediaController::linkMediaToSource'); + $router->post('link-media-to-record', '/link-media-to-record', 'EditMediaController::linkMediaToRecordAction'); + $router->post(PasteFact::class, '/paste-fact/{xref}', PasteFact::class); $router->get(ReorderChildrenPage::class, '/reorder-children/{xref}', ReorderChildrenPage::class); $router->post(ReorderChildrenAction::class, '/reorder-children/{xref}', ReorderChildrenAction::class); $router->get(ReorderMediaPage::class, '/reorder-media/{xref}', ReorderMediaPage::class); @@ -315,25 +337,8 @@ $router->attach('', '/tree/{tree}', static function (Map $router) { $router->post(ReorderNamesAction::class, '/reorder-names/{xref}', ReorderNamesAction::class); $router->get(ReorderSpousesPage::class, '/reorder-spouses/{xref}', ReorderSpousesPage::class); $router->post(ReorderSpousesAction::class, '/reorder-spouses/{xref}', ReorderSpousesAction::class); - $router->post(CopyFact::class, '/copy-fact/{xref}/{fact_id}', CopyFact::class); - $router->post(DeleteRecord::class, '/delete-record/{xref}', DeleteRecord::class); - $router->post(DeleteFact::class, '/delete-fact/{xref}/{fact_id}', DeleteFact::class); - $router->get(EditRawFactPage::class, '/edit-raw-fact/{xref}/{fact_id}', EditRawFactPage::class); - $router->post(EditRawFactAction::class, '/edit-raw-fact/{xref}/{fact_id}', EditRawFactAction::class); - $router->get(EditRawRecordPage::class, '/edit-raw-record', EditRawRecordPage::class); - $router->post(EditRawRecordAction::class, '/edit-raw-record', EditRawRecordAction::class); - $router->post(PasteFact::class, '/paste-fact/{xref}', PasteFact::class); - $router->get('add-fact', '/add-fact', 'EditGedcomRecordController::addFact'); - $router->get('edit-fact', '/edit-fact', 'EditGedcomRecordController::editFact'); - $router->post('update-fact', '/update-fact', 'EditGedcomRecordController::updateFact'); $router->get(SearchReplacePage::class, '/search-replace', SearchReplacePage::class); $router->post(SearchReplaceAction::class, '/search-replace', SearchReplaceAction::class); - $router->get('add-child-to-family', '/add-child-to-family', 'EditFamilyController::addChild'); - $router->post('add-child-to-family-action', '/add-child-to-family', 'EditFamilyController::addChildAction'); - $router->get('add-spouse-to-family', '/add-spouse-to-family', 'EditFamilyController::addSpouse'); - $router->post('add-spouse-to-family-action', '/add-spouse-to-family', 'EditFamilyController::addSpouseAction'); - $router->get('change-family-members', '/change-family-members', 'EditFamilyController::changeFamilyMembers'); - $router->post('change-family-members-action', '/change-family-members', 'EditFamilyController::changeFamilyMembersAction'); $router->get('add-child-to-individual', '/add-child-to-individual', 'EditIndividualController::addChild'); $router->post('add-child-to-individual-action', '/add-child-to-individual', 'EditIndividualController::addChildAction'); $router->get('add-parent-to-individual', '/add-parent-to-individual', 'EditIndividualController::addParent'); @@ -346,10 +351,9 @@ $router->attach('', '/tree/{tree}', static function (Map $router) { $router->post('link-child-to-family-action', '/link-child-to-family', 'EditIndividualController::linkChildToFamilyAction'); $router->get('link-spouse-to-individual', '/link-spouse-to-individual', 'EditIndividualController::linkSpouseToIndividual'); $router->post('link-spouse-to-individual-action', '/link-spouse-to-individual', 'EditIndividualController::linkSpouseToIndividualAction'); - $router->get('edit-name', '/edit-name', 'EditIndividualController::editName'); - $router->post('edit-name-action', '/edit-name-update', 'EditIndividualController::editNameAction'); - $router->get('add-name', '/add-name', 'EditIndividualController::addName'); - $router->post('add-name-action', '/add-name-update', 'EditIndividualController::addNameAction'); + $router->get('edit-name', '/edit-name/{xref}/{fact_id}', 'EditIndividualController::editName'); + $router->post('edit-name-action', '/edit-name-update/{xref}/{fact_id}', 'EditIndividualController::editNameAction'); + $router->post('update-fact', '/update-fact/{xref}{/fact_id}', 'EditGedcomRecordController::updateFact'); }); // Member routes. |
