summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGreg Roach <greg@subaqua.co.uk>2021-06-21 08:51:41 +0100
committerGreg Roach <greg@subaqua.co.uk>2021-06-21 08:51:41 +0100
commit148eeb524efcef0eac2c63e4cbe93809f9cd7155 (patch)
treeb9f69f1eecb5c40b0e712209f24c59051622ca3d /app
parente22e42f733f4ab630c81dc26a61e9a5470ca33de (diff)
downloadwebtrees-148eeb524efcef0eac2c63e4cbe93809f9cd7155.tar.gz
webtrees-148eeb524efcef0eac2c63e4cbe93809f9cd7155.tar.bz2
webtrees-148eeb524efcef0eac2c63e4cbe93809f9cd7155.zip
Option to show hidden GEDCOM tags
Diffstat (limited to 'app')
-rw-r--r--app/Http/RequestHandlers/AddNewFact.php22
-rw-r--r--app/Http/RequestHandlers/EditFactPage.php29
2 files changed, 38 insertions, 13 deletions
diff --git a/app/Http/RequestHandlers/AddNewFact.php b/app/Http/RequestHandlers/AddNewFact.php
index bf746cf19f..9e38a21e73 100644
--- a/app/Http/RequestHandlers/AddNewFact.php
+++ b/app/Http/RequestHandlers/AddNewFact.php
@@ -31,6 +31,7 @@ use Psr\Http\Server\RequestHandlerInterface;
use function assert;
use function is_string;
+use function route;
use function trim;
/**
@@ -65,7 +66,7 @@ class AddNewFact implements RequestHandlerInterface
$xref = $request->getAttribute('xref');
assert(is_string($xref));
- $subtag = $request->getAttribute('fact');
+ $subtag = $request->getAttribute('fact');
$include_hidden = (bool) ($request->getQueryParams()['include_hidden'] ?? false);
@@ -74,14 +75,29 @@ class AddNewFact implements RequestHandlerInterface
$element = Registry::elementFactory()->make($record->tag() . ':' . $subtag);
$title = $record->fullName() . ' - ' . $element->label();
$fact = new Fact(trim('1 ' . $subtag . ' ' . $element->default($tree)), $record, 'new');
+ $gedcom = $this->gedcom_edit_service->insertMissingSubtags($fact, $include_hidden);
+ $hidden = $this->gedcom_edit_service->insertMissingSubtags($fact, true);
+ $url = $record->url();
+
+ if ($gedcom === $hidden) {
+ $hidden_url = '';
+ } else {
+ $hidden_url = route(self::class, [
+ 'fact' => $subtag,
+ 'include_hidden' => true,
+ 'tree' => $tree->name(),
+ 'xref' => $xref,
+ ]);
+ }
return $this->viewResponse('edit/edit-fact', [
'can_edit_raw' => false,
'fact' => $fact,
- 'gedcom' => $this->gedcom_edit_service->insertMissingSubtags($fact, $include_hidden),
+ 'gedcom' => $gedcom,
+ 'hidden_url' => $hidden_url,
'title' => $title,
'tree' => $tree,
- 'url' => $record->url(),
+ 'url' => $url,
]);
}
}
diff --git a/app/Http/RequestHandlers/EditFactPage.php b/app/Http/RequestHandlers/EditFactPage.php
index 713e9d483b..f8c304f434 100644
--- a/app/Http/RequestHandlers/EditFactPage.php
+++ b/app/Http/RequestHandlers/EditFactPage.php
@@ -74,10 +74,7 @@ class EditFactPage implements RequestHandlerInterface
$record = Auth::checkRecordAccess($record, true);
// Find the fact to edit
- $fact = $record->facts()
- ->first(static function (Fact $fact) use ($fact_id): bool {
- return $fact->id() === $fact_id && $fact->canEdit();
- });
+ $fact = $record->facts()->first(fn (Fact $fact): bool => $fact->id() === $fact_id && $fact->canEdit());
if ($fact === null) {
return redirect($record->url());
@@ -85,20 +82,32 @@ class EditFactPage implements RequestHandlerInterface
$can_edit_raw = Auth::isAdmin() || $tree->getPreference('SHOW_GEDCOM_RECORD');
- $tmp1 = $this->gedcom_edit_service->insertMissingSubtags($fact, $include_hidden);
- $tmp2 = $this->gedcom_edit_service->insertMissingSubtags($fact, true);
+ $gedcom = $this->gedcom_edit_service->insertMissingSubtags($fact, $include_hidden);
+ $hidden = $this->gedcom_edit_service->insertMissingSubtags($fact, true);
+ $url = $request->getQueryParams()['url'] ?? $record->url();
- $allow_include_hidden = $tmp1 !== $tmp2;
+ if ($gedcom === $hidden) {
+ $hidden_url = '';
+ } else {
+ $hidden_url = route(self::class, [
+ 'fact_id' => $fact_id,
+ 'include_hidden' => true,
+ 'tree' => $tree->name(),
+ 'url' => $url,
+ 'xref' => $xref,
+ ]);
+ }
- $title = $record->fullName() . ' - ' . $fact->label();
+ $title = $record->fullName() . ' - ' . $fact->label();
return $this->viewResponse('edit/edit-fact', [
'can_edit_raw' => $can_edit_raw,
'fact' => $fact,
- 'gedcom' => $this->gedcom_edit_service->insertMissingSubtags($fact, $include_hidden),
+ 'gedcom' => $gedcom,
+ 'hidden_url' => $hidden_url,
'title' => $title,
'tree' => $tree,
- 'url' => $request->getQueryParams()['url'] ?? $record->url(),
+ 'url' => $url,
]);
}
}