summaryrefslogtreecommitdiff
path: root/resources
diff options
context:
space:
mode:
authorGreg Roach <greg@subaqua.co.uk>2021-02-01 16:50:30 +0000
committerGreg Roach <greg@subaqua.co.uk>2021-02-02 16:52:32 +0000
commitc2ed51d13a57743094c11c8fe84befd9d4f158cd (patch)
tree4f2d541fed3550f5d64f9754e9d37f5e9b9ce447 /resources
parent4d2b9c53c95ad846160295dd8f4136a5b53f9f7b (diff)
downloadwebtrees-c2ed51d13a57743094c11c8fe84befd9d4f158cd.tar.gz
webtrees-c2ed51d13a57743094c11c8fe84befd9d4f158cd.tar.bz2
webtrees-c2ed51d13a57743094c11c8fe84befd9d4f158cd.zip
Merge GEDCOM element code from 2.1 branch
Diffstat (limited to 'resources')
-rw-r--r--resources/views/admin/clean-data.phtml7
-rw-r--r--resources/views/components/select-location.phtml42
-rw-r--r--resources/views/components/select-submission.phtml42
-rw-r--r--resources/views/components/select-submitter.phtml6
-rw-r--r--resources/views/edit/edit-gedcom-fields.phtml38
-rw-r--r--resources/views/edit/edit-record.phtml65
-rw-r--r--resources/views/edit/reorder-families.phtml16
-rw-r--r--resources/views/edit/reorder-names.phtml5
-rw-r--r--resources/views/gedcom-record-page-menu.phtml15
-rw-r--r--resources/views/gedcom-record-page.phtml5
-rw-r--r--resources/views/icons/tag.phtml1
-rw-r--r--resources/views/lists/families-table.phtml4
-rw-r--r--resources/views/lists/individuals-table.phtml3
-rw-r--r--resources/views/modals/create-location.phtml64
-rw-r--r--resources/views/modals/create-submission.phtml64
-rw-r--r--resources/views/modals/location-fields.phtml12
-rw-r--r--resources/views/modals/submission-fields.phtml14
-rw-r--r--resources/views/selects/location.phtml1
-rw-r--r--resources/views/selects/submission.phtml1
-rw-r--r--resources/views/submitter-page-menu.phtml15
-rw-r--r--resources/views/submitter-page.phtml6
21 files changed, 385 insertions, 41 deletions
diff --git a/resources/views/admin/clean-data.phtml b/resources/views/admin/clean-data.phtml
index fa95170891..d9866524ef 100644
--- a/resources/views/admin/clean-data.phtml
+++ b/resources/views/admin/clean-data.phtml
@@ -30,7 +30,12 @@ use Fisharebest\Webtrees\I18N;
<?php if (in_array($entry, $protected, true)) : ?>
<?= view('icons/ban') ?>
<?php else : ?>
- <a href="#" data-post-url="<?= e(route(DeletePath::class, ['path' => $entry])) ?>" class="btn btn-sm btn-link">
+ <a
+ href="#"
+ data-confirm="<?= I18N::translate('Are you sure you want to delete “%s”?', e($entry)) ?>"
+ data-post-url="<?= e(route(DeletePath::class, ['path' => $entry])) ?>"
+ class="btn btn-sm btn-link"
+ >
<?= view('icons/delete') ?>
</a>
<?php endif ?>
diff --git a/resources/views/components/select-location.phtml b/resources/views/components/select-location.phtml
new file mode 100644
index 0000000000..9d6e064e3e
--- /dev/null
+++ b/resources/views/components/select-location.phtml
@@ -0,0 +1,42 @@
+<?php
+
+use Fisharebest\Webtrees\Http\RequestHandlers\Select2Location;
+use Fisharebest\Webtrees\Location;
+use Fisharebest\Webtrees\Tree;
+
+/**
+ * @var string $at "@" or "" (or unset).
+ * @var Location|null $location
+ * @var string|null $class
+ * @var string|null $id
+ * @var string $name
+ * @var Tree $tree
+ */
+
+$at = $at ?? '';
+
+?>
+
+<select
+ autocomplete="off"
+ class="form-control select2 <?= $class ?? '' ?>"
+ data-ajax--delay="<?= e(Select2Location::AJAX_DELAY) ?>"
+ data-minimum-input-length="<?= e(Select2Location::MINIMUM_INPUT_LENGTH) ?>"
+ data-ajax--type="POST"
+ data-ajax--url="<?= e(route(Select2Location::class, ['tree' => $tree->name(), 'at' => $at])) ?>"
+ data-allow-clear="true"
+ data-placeholder=""
+ id="<?= e($id ?? $name) ?>"
+ name="<?= e($name) ?>"
+ <?= ($disabled ?? false) ? 'disabled' : '' ?>
+ <?= ($required ?? false) ? 'required' : '' ?>
+ style="width:100%"
+>
+ <?php if (($location ?? null) instanceof Location) : ?>
+ <option value="<?= e($at . $location->xref() . $at) ?>">
+ <?= view('selects/location', ['location' => $location]) ?>
+ </option>
+ <?php else : ?>
+ <option value="">&nbsp;</option>
+ <?php endif ?>
+</select>
diff --git a/resources/views/components/select-submission.phtml b/resources/views/components/select-submission.phtml
new file mode 100644
index 0000000000..85f2555cb0
--- /dev/null
+++ b/resources/views/components/select-submission.phtml
@@ -0,0 +1,42 @@
+<?php
+
+use Fisharebest\Webtrees\Http\RequestHandlers\Select2Submission;
+use Fisharebest\Webtrees\Submission;
+use Fisharebest\Webtrees\Tree;
+
+/**
+ * @var string $at "@" or "" (or unset).
+ * @var Submission|null $submission
+ * @var string|null $class
+ * @var string|null $id
+ * @var string $name
+ * @var Tree $tree
+ */
+
+$at = $at ?? '';
+
+?>
+
+<select
+ autocomplete="off"
+ class="form-control select2 <?= $class ?? '' ?>"
+ data-ajax--delay="<?= e(Select2Submission::AJAX_DELAY) ?>"
+ data-minimum-input-length="<?= e(Select2Submission::MINIMUM_INPUT_LENGTH) ?>"
+ data-ajax--type="POST"
+ data-ajax--url="<?= e(route(Select2Submission::class, ['tree' => $tree->name(), 'at' => $at])) ?>"
+ data-allow-clear="true"
+ data-placeholder=""
+ id="<?= e($id ?? $name) ?>"
+ name="<?= e($name) ?>"
+ <?= ($disabled ?? false) ? 'disabled' : '' ?>
+ <?= ($required ?? false) ? 'required' : '' ?>
+ style="width:100%"
+>
+ <?php if (($submission ?? null) instanceof Submission) : ?>
+ <option value="<?= e($at . $submission->xref() . $at) ?>">
+ <?= view('selects/submission', ['submission' => $submission]) ?>
+ </option>
+ <?php else : ?>
+ <option value="">&nbsp;</option>
+ <?php endif ?>
+</select>
diff --git a/resources/views/components/select-submitter.phtml b/resources/views/components/select-submitter.phtml
index d9b5edd52c..fc5aea3005 100644
--- a/resources/views/components/select-submitter.phtml
+++ b/resources/views/components/select-submitter.phtml
@@ -1,12 +1,12 @@
<?php
-use Fisharebest\Webtrees\GedcomRecord;
+use Fisharebest\Webtrees\Submitter;
use Fisharebest\Webtrees\Http\RequestHandlers\Select2Submitter;
use Fisharebest\Webtrees\Tree;
/**
* @var string $at "@" or "" (or unset).
- * @var GedcomRecord|null $submitter
+ * @var Submitter|null $submitter
* @var string|null $class
* @var string|null $id
* @var string $name
@@ -32,7 +32,7 @@ $at = $at ?? '';
<?= ($required ?? false) ? 'required' : '' ?>
style="width:100%"
>
- <?php if (($submitter ?? null) instanceof GedcomRecord) : ?>
+ <?php if (($submitter ?? null) instanceof Submitter) : ?>
<option value="<?= e($at . $submitter->xref() . $at) ?>">
<?= view('selects/submitter', ['submitter' => $submitter]) ?>
</option>
diff --git a/resources/views/edit/edit-gedcom-fields.phtml b/resources/views/edit/edit-gedcom-fields.phtml
new file mode 100644
index 0000000000..4c6fafbb07
--- /dev/null
+++ b/resources/views/edit/edit-gedcom-fields.phtml
@@ -0,0 +1,38 @@
+<?php
+
+use Fisharebest\Webtrees\Registry;
+use Fisharebest\Webtrees\Tree;
+use Ramsey\Uuid\Uuid;
+
+/**
+ * @var string $gedcom
+ * @var array<string> $hierarchy
+ * @var string $prefix
+ * @var Tree $tree
+ */
+
+$gedcom = preg_replace('/\n\d CONT ?/', "\r", $gedcom);
+?>
+
+<?php foreach (explode("\n", $gedcom) as $line) : ?>
+ <?php
+ preg_match('/^(\d+) (\w+) ?(.*)/', $line, $match);
+ [, $level, $tag, $value] = $match;
+ $hierarchy[$level] = $tag;
+ $full_tag = implode(':', array_slice($hierarchy, 0, 1 + (int) $level));
+ $element = Registry::elementFactory()->make($full_tag);
+ $id = Uuid::uuid4()->toString() . '-' . $full_tag;
+ ?>
+
+ <div class="form-group row">
+ <label class="col-sm-3 col-form-label" for="<?= e($id) ?>">
+ <?= $element->label() ?>
+ </label>
+
+ <div class="col-sm-9">
+ <input type="hidden" name="<?= e($prefix) ?>levels[]" value="<?= e($level) ?>">
+ <input type="hidden" name="<?= e($prefix) ?>tags[]" value="<?= e($tag) ?>">
+ <?= $element->edit($id, $prefix . 'values[]', strtr($value, ["\r" => "\n"]), $tree) ?>
+ </div>
+ </div>
+<?php endforeach ?>
diff --git a/resources/views/edit/edit-record.phtml b/resources/views/edit/edit-record.phtml
new file mode 100644
index 0000000000..bce7e89d26
--- /dev/null
+++ b/resources/views/edit/edit-record.phtml
@@ -0,0 +1,65 @@
+<?php
+
+use Fisharebest\Webtrees\GedcomRecord;
+use Fisharebest\Webtrees\Http\RequestHandlers\EditRawRecordPage;
+use Fisharebest\Webtrees\Http\RequestHandlers\EditRecordAction;
+use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Tree;
+
+/**
+ * @var bool $can_edit_raw
+ * @var GedcomRecord $record
+ * @var string $title
+ * @var Tree $tree
+ */
+
+?>
+
+<h2 class="wt-page-title"><?= $title ?></h2>
+
+<form method="post" action="<?= e(route(EditRecordAction::class, ['tree' => $tree->name(), 'xref' => $record->xref()])) ?>" class="wt-page-content">
+ <?= csrf_field() ?>
+
+ <?= view('edit/edit-gedcom-fields', ['gedcom' => $record->insertMissingSubtags(), 'hierarchy' => [$record->tag()], 'tree' => $tree, 'prefix' => '']) ?>
+
+ <div class="form-group row">
+ <label class="col-sm-3 col-form-label" for="keep_chan">
+ <?= I18N::translate('Last change') ?>
+ </label>
+ <div class="col-sm-9">
+ <?= view('components/checkbox-inline', ['label' => I18N::translate('Keep the existing “last change” information'), 'name' => 'keep_chan', 'checked' => (bool) $tree->getPreference('NO_UPDATE_CHAN')]) ?>
+ <div>
+ <?= I18N::translate('%1$s: %2$s', I18N::translate('Timestamp'), view('components/datetime', ['timestamp' => $record->lastChangeTimestamp()])) ?>
+ </div>
+ <div>
+ <?= I18N::translate('%1$s: %2$s', I18N::translate('Author of last change'), e($record->lastChangeUser())) ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="form-group row">
+ <div class="col-sm-3 wt-page-options-label">
+ </div>
+ <div class="col-sm-9 wt-page-options-value">
+ <button class="btn btn-primary" type="submit">
+ <?= view('icons/save') ?>
+ <?= /* I18N: A button label. */
+ I18N::translate('save') ?>
+ </button>
+ <a class="btn btn-secondary" href="<?= e($record->url()) ?>">
+ <?= view('icons/cancel') ?>
+ <?= /* I18N: A button label. */
+ I18N::translate('cancel') ?>
+ </a>
+ <?php if ($can_edit_raw) : ?>
+ <a class="btn btn-link" href="<?= e(route(EditRawRecordPage::class, ['xref' => $record->xref(), 'tree' => $tree->name()])) ?>">
+ <?= I18N::translate('Edit the raw GEDCOM') ?>
+ </a>
+ <?php endif; ?>
+ </div>
+ </div>
+</form>
+
+<?= view('modals/on-screen-keyboard') ?>
+<?= view('modals/ajax') ?>
+<?= view('edit/initialize-calendar-popup') ?>
diff --git a/resources/views/edit/reorder-families.phtml b/resources/views/edit/reorder-families.phtml
index c8af622a32..10a3364598 100644
--- a/resources/views/edit/reorder-families.phtml
+++ b/resources/views/edit/reorder-families.phtml
@@ -1,10 +1,22 @@
<?php
+use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Gedcom;
-use Fisharebest\Webtrees\GedcomCode\GedcomCodePedi;
use Fisharebest\Webtrees\Http\RequestHandlers\ReorderFamiliesAction;
use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Individual;
+use Fisharebest\Webtrees\Registry;
+use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\View;
+use Illuminate\Support\Collection;
+
+/**
+ * @var Collection<Fact> $famc_facts
+ * @var Collection<Fact> $fams_facts
+ * @var Individual $individual
+ * @var string $title
+ * @var Tree $tree
+ */
?>
@@ -70,7 +82,7 @@ use Fisharebest\Webtrees\View;
<div class="card my-2 wt-sortable-item" data-sortbydate="<?= $fact->target()->getMarriageDate()->julianDay() ?>">
<input type="hidden" name="order[]" value="<?= $fact->id() ?>">
<div class="card-header">
- <?= view('edit/reorder-card-header', ['title' => $fact->target()->fullName() . ($fact->attribute('PEDI') === '' ? '' : ' — ' . GedcomCodePedi::getValue($fact->attribute('PEDI'), $individual))]) ?>
+ <?= view('edit/reorder-card-header', ['title' => $fact->target()->fullName() . ($fact->attribute('PEDI') === '' ? '' : ' — ' . Registry::elementFactory()->make('INDI:FAMC:PEDI')->value($fact->attribute('PEDI'), $tree))]) ?>
</div>
<div class="card-body">
<?= $fact->target()->formatFirstMajorFact(Gedcom::MARRIAGE_EVENTS, 2) ?>
diff --git a/resources/views/edit/reorder-names.phtml b/resources/views/edit/reorder-names.phtml
index 3dbc8f0e40..afcf5c622a 100644
--- a/resources/views/edit/reorder-names.phtml
+++ b/resources/views/edit/reorder-names.phtml
@@ -1,10 +1,9 @@
<?php
-use Fisharebest\Webtrees\GedcomCode\GedcomCodeName;
-use Fisharebest\Webtrees\GedcomTag;
use Fisharebest\Webtrees\Http\RequestHandlers\ReorderNamesAction;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
+use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\View;
@@ -30,7 +29,7 @@ use Fisharebest\Webtrees\View;
</div>
<div class="card-body">
- <?= GedcomTag::getLabelValue('TYPE', GedcomCodeName::getValue($fact->attribute('TYPE'), $fact->record())) ?>
+ <?= Registry::elementFactory()->make('INDI:NAME:TYPE')->value($fact->attribute('TYPE'), $tree) ?>
</div>
</div>
<?php endforeach ?>
diff --git a/resources/views/gedcom-record-page-menu.phtml b/resources/views/gedcom-record-page-menu.phtml
index 7393b8cabc..c0aaa70eb5 100644
--- a/resources/views/gedcom-record-page-menu.phtml
+++ b/resources/views/gedcom-record-page-menu.phtml
@@ -1,8 +1,7 @@
<?php
-use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\RequestHandlers\DeleteRecord;
-use Fisharebest\Webtrees\Http\RequestHandlers\EditRawRecordPage;
+use Fisharebest\Webtrees\Http\RequestHandlers\EditRecordPage;
use Fisharebest\Webtrees\I18N;
?>
@@ -14,17 +13,15 @@ use Fisharebest\Webtrees\I18N;
</button>
<div class="dropdown-menu dropdown-menu-right wt-page-menu-items" aria-labelledby="page-menu">
+ <a class="dropdown-item" href="<?= route(EditRecordPage::class, ['xref' => $record->xref(), 'tree' => $record->tree()->name()]) ?>">
+ <?= view('icons/edit') ?>
+ <?= I18N::translate('Edit') ?>
+ </a>
+
<a class="dropdown-item" href="#" data-confirm="<?= I18N::translate('Are you sure you want to delete “%s”?', strip_tags($record->fullName())) ?>" data-post-url="<?= e(route(DeleteRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) ?>">
<?= view('icons/delete') ?>
<?= I18N::translate('Delete') ?>
</a>
-
- <?php if (Auth::isAdmin() || $record->tree()->getPreference('SHOW_GEDCOM_RECORD')) : ?>
- <a class="dropdown-item" href="<?= e(route(EditRawRecordPage::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) ?>">
- <?= view('icons/edit') ?>
- <?= I18N::translate('Edit the raw GEDCOM') ?>
- </a>
- <?php endif ?>
</div>
</div>
diff --git a/resources/views/gedcom-record-page.phtml b/resources/views/gedcom-record-page.phtml
index 516d28d507..450cb2d11d 100644
--- a/resources/views/gedcom-record-page.phtml
+++ b/resources/views/gedcom-record-page.phtml
@@ -3,7 +3,6 @@
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Family;
-use Fisharebest\Webtrees\Functions\FunctionsPrint;
use Fisharebest\Webtrees\Functions\FunctionsPrintFacts;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
@@ -112,10 +111,6 @@ use Illuminate\Support\Collection;
<?php foreach ($facts as $fact) : ?>
<?php FunctionsPrintFacts::printFact($fact, $record) ?>
<?php endforeach ?>
-
- <?php if ($record->canEdit()) : ?>
- <?php FunctionsPrint::printAddNewFact($record, $facts, $record->tag()) ?>
- <?php endif ?>
</table>
</div>
diff --git a/resources/views/icons/tag.phtml b/resources/views/icons/tag.phtml
new file mode 100644
index 0000000000..f68481f239
--- /dev/null
+++ b/resources/views/icons/tag.phtml
@@ -0,0 +1 @@
+<span class="wt-icon-tag"><i class="fas fa-tags fa-fw" aria-hidden="true"></i></span>
diff --git a/resources/views/lists/families-table.phtml b/resources/views/lists/families-table.phtml
index 7145edd2e2..3f667148ef 100644
--- a/resources/views/lists/families-table.phtml
+++ b/resources/views/lists/families-table.phtml
@@ -243,7 +243,7 @@ $marriageAgeData = [
<td colspan="2" data-sort="<?= e(str_replace([',', Individual::PRAENOMEN_NESCIO, Individual::NOMEN_NESCIO], 'AAAA', implode(',', array_reverse(explode(',', $husb->sortName()))))) ?>">
<?php foreach ($husb->getAllNames() as $num => $name) : ?>
<?php if ($name['type'] !== '_MARNM' || $num == $husb->getPrimaryName()) : ?>
- <a title="<?= $name['type'] === 'NAME' ? '' : strip_tags(GedcomTag::getLabel($name['type'])) ?>" href="<?= e($family->url()) ?>" class="<?= $num === $husb->getPrimaryName() ? 'name2' : '' ?>">
+ <a title="<?= $name['type'] === 'NAME' ? '' : Registry::elementFactory()->make('INDI:NAME:' . $name['type'])->label() ?>" href="<?= e($family->url()) ?>" class="<?= $num === $husb->getPrimaryName() ? 'name2' : '' ?>">
<?= $name['full'] ?>
</a>
<?php if ($num === $husb->getPrimaryName()) : ?>
@@ -278,7 +278,7 @@ $marriageAgeData = [
<td colspan="2" data-sort="<?= e(str_replace([',', Individual::PRAENOMEN_NESCIO, Individual::NOMEN_NESCIO], 'AAAA', implode(',', array_reverse(explode(',', $wife->sortName()))))) ?>">
<?php foreach ($wife->getAllNames() as $num => $name) : ?>
<?php if ($name['type'] !== '_MARNM' || $num == $wife->getPrimaryName()) : ?>
- <a title="<?= $name['type'] === 'NAME' ? '' : strip_tags(GedcomTag::getLabel($name['type'])) ?>" href="<?= e($family->url()) ?>" class="<?= $num === $wife->getPrimaryName() ? 'name2' : '' ?>">
+ <a title="<?= $name['type'] === 'NAME' ? '' : Registry::elementFactory()->make('INDI:NAME:' . $name['type'])->label() ?>" href="<?= e($family->url()) ?>" class="<?= $num === $wife->getPrimaryName() ? 'name2' : '' ?>">
<?= $name['full'] ?>
</a>
<?php if ($num === $wife->getPrimaryName()) : ?>
diff --git a/resources/views/lists/individuals-table.phtml b/resources/views/lists/individuals-table.phtml
index 65c6833577..144f262c9a 100644
--- a/resources/views/lists/individuals-table.phtml
+++ b/resources/views/lists/individuals-table.phtml
@@ -12,6 +12,7 @@ use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Module\ModuleChartInterface;
use Fisharebest\Webtrees\Module\ModuleInterface;
use Fisharebest\Webtrees\Module\RelationshipsChartModule;
+use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\ModuleService;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\View;
@@ -265,7 +266,7 @@ $deathAgeData = [
<tr class="<?= $individual->isPendingDeletion() ? 'wt-old' : ($individual->isPendingAddition() ? 'wt-new' : '') ?>">
<td colspan="2" data-sort="<?= e(str_replace([',', Individual::PRAENOMEN_NESCIO, Individual::NOMEN_NESCIO], 'AAAA', implode(',', array_reverse(explode(',', $individual->sortName()))))) ?>">
<?php foreach ($individual->getAllNames() as $num => $name) : ?>
- <a title="<?= $name['type'] === 'NAME' ? '' : strip_tags(GedcomTag::getLabel($name['type'])) ?>" href="<?= e($individual->url()) ?>" class="<?= $num === $individual->getPrimaryName() ? 'name2' : '' ?>">
+ <a title="<?= $name['type'] === 'NAME' ? '' : Registry::elementFactory()->make('INDI:NAME:' . $name['type'])->label() ?>" href="<?= e($individual->url()) ?>" class="<?= $num === $individual->getPrimaryName() ? 'name2' : '' ?>">
<?= $name['full'] ?>
</a>
<?php if ($num === $individual->getPrimaryName()) : ?>
diff --git a/resources/views/modals/create-location.phtml b/resources/views/modals/create-location.phtml
new file mode 100644
index 0000000000..001d229803
--- /dev/null
+++ b/resources/views/modals/create-location.phtml
@@ -0,0 +1,64 @@
+<?php
+
+use Fisharebest\Webtrees\Http\RequestHandlers\CreateLocationAction;
+use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Tree;
+
+/**
+ * @var Tree $tree
+ */
+
+?>
+
+<form method="post" action="<?= e(route(CreateLocationAction::class, ['tree' => $tree->name()])) ?>" id="wt-modal-form">
+ <?= csrf_field() ?>
+
+ <?= view('modals/header', ['title' => I18N::translate('Create a location')]) ?>
+
+ <div class="modal-body">
+ <?= view('modals/location-fields') ?>
+ </div>
+
+ <?= view('modals/footer-save-cancel') ?>
+</form>
+
+<script>
+ // Submit the modal form using AJAX
+ document.getElementById("wt-modal-form").addEventListener("submit", function (event) {
+ event.preventDefault();
+ let form = event.target;
+ let modal_content = document.querySelector("#wt-ajax-modal .modal-content");
+ let select = document.getElementById(modal_content.dataset.selectId);
+
+ $.ajax({
+ url: form.action,
+ type: form.method,
+ data: new FormData(form),
+ async: false,
+ cache: false,
+ contentType: false,
+ processData: false,
+ success: function (data) {
+ if (select) {
+ // If this modal was activated by the "new" button in a select2
+ // edit control, then insert the result and select it.
+ let option = new Option(data.text, data.id, true, true);
+ option.innerHTML = option.innerText;
+
+ $(select)
+ .select2({ escapeMarkup: (x) => x })
+ .empty()
+ .append(option)
+ .trigger("change");
+
+ $("#wt-ajax-modal").modal("hide");
+ } else {
+ modal_content.innerHTML = data.html;
+ }
+ },
+ failure: function (data) {
+ modal_content.innerHTML = data.html;
+ },
+ });
+ });
+</script>
diff --git a/resources/views/modals/create-submission.phtml b/resources/views/modals/create-submission.phtml
new file mode 100644
index 0000000000..ee27c3984d
--- /dev/null
+++ b/resources/views/modals/create-submission.phtml
@@ -0,0 +1,64 @@
+<?php
+
+use Fisharebest\Webtrees\Http\RequestHandlers\CreateSubmissionAction;
+use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Tree;
+
+/**
+ * @var Tree $tree
+ */
+
+?>
+
+<form method="post" action="<?= e(route(CreateSubmissionAction::class, ['tree' => $tree->name()])) ?>" id="wt-modal-form">
+ <?= csrf_field() ?>
+
+ <?= view('modals/header', ['title' => I18N::translate('Create a submission')]) ?>
+
+ <div class="modal-body">
+ <?= view('modals/submission-fields', ['tree' => $tree]) ?>
+ </div>
+
+ <?= view('modals/footer-save-cancel') ?>
+</form>
+
+<script>
+ // Submit the modal form using AJAX
+ document.getElementById("wt-modal-form").addEventListener("submit", function (event) {
+ event.preventDefault();
+ let form = event.target;
+ let modal_content = document.querySelector("#wt-ajax-modal .modal-content");
+ let select = document.getElementById(modal_content.dataset.selectId);
+
+ $.ajax({
+ url: form.action,
+ type: form.method,
+ data: new FormData(form),
+ async: false,
+ cache: false,
+ contentType: false,
+ processData: false,
+ success: function (data) {
+ if (select) {
+ // If this modal was activated by the "new" button in a select2
+ // edit control, then insert the result and select it.
+ let option = new Option(data.text, data.id, true, true);
+ option.innerHTML = option.innerText;
+
+ $(select)
+ .select2({ escapeMarkup: (x) => x })
+ .empty()
+ .append(option)
+ .trigger("change");
+
+ $("#wt-ajax-modal").modal("hide");
+ } else {
+ modal_content.innerHTML = data.html;
+ }
+ },
+ failure: function (data) {
+ modal_content.innerHTML = data.html;
+ },
+ });
+ });
+</script>
diff --git a/resources/views/modals/location-fields.phtml b/resources/views/modals/location-fields.phtml
new file mode 100644
index 0000000000..e92af35823
--- /dev/null
+++ b/resources/views/modals/location-fields.phtml
@@ -0,0 +1,12 @@
+<?php
+
+use Fisharebest\Webtrees\I18N;
+
+?>
+
+<div class="form-group">
+ <label class="col-form-label" for="location-name">
+ <?= I18N::translate('Name') ?>
+ </label>
+ <input class="form-control" type="text" id="location-name" name="location_name" required>
+</div>
diff --git a/resources/views/modals/submission-fields.phtml b/resources/views/modals/submission-fields.phtml
new file mode 100644
index 0000000000..62112aa3c9
--- /dev/null
+++ b/resources/views/modals/submission-fields.phtml
@@ -0,0 +1,14 @@
+<?php
+
+use Fisharebest\Webtrees\I18N;
+
+?>
+
+<div class="form-group row">
+ <label class="col-form-label col-sm-2" for="submitter">
+ <?= I18N::translate('Submitter') ?>
+ </label>
+ <div class="col-sm-10">
+ <?= view('components/select-submitter', ['name' => 'submitter', 'tree' => $tree, 'required' => true]) ?>
+ </div>
+</div>
diff --git a/resources/views/selects/location.phtml b/resources/views/selects/location.phtml
new file mode 100644
index 0000000000..83fd755db9
--- /dev/null
+++ b/resources/views/selects/location.phtml
@@ -0,0 +1 @@
+<?= $location->fullName() ?>
diff --git a/resources/views/selects/submission.phtml b/resources/views/selects/submission.phtml
new file mode 100644
index 0000000000..ba5d929991
--- /dev/null
+++ b/resources/views/selects/submission.phtml
@@ -0,0 +1 @@
+<?= $submission->fullName() ?>
diff --git a/resources/views/submitter-page-menu.phtml b/resources/views/submitter-page-menu.phtml
index c1c50fec93..5407c687df 100644
--- a/resources/views/submitter-page-menu.phtml
+++ b/resources/views/submitter-page-menu.phtml
@@ -1,8 +1,7 @@
<?php
-use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\RequestHandlers\DeleteRecord;
-use Fisharebest\Webtrees\Http\RequestHandlers\EditRawRecordPage;
+use Fisharebest\Webtrees\Http\RequestHandlers\EditRecordPage;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Submitter;
@@ -19,17 +18,15 @@ use Fisharebest\Webtrees\Submitter;
</button>
<div class="dropdown-menu dropdown-menu-right wt-page-menu-items" aria-labelledby="page-menu">
+ <a class="dropdown-item" href="<?= route(EditRecordPage::class, ['xref' => $record->xref(), 'tree' => $record->tree()->name()]) ?>">
+ <?= view('icons/edit') ?>
+ <?= I18N::translate('Edit') ?>
+ </a>
+
<a class="dropdown-item" href="#" data-confirm="<?= I18N::translate('Are you sure you want to delete “%s”?', strip_tags($record->fullName())) ?>" data-post-url="<?= e(route(DeleteRecord::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) ?>">
<?= view('icons/delete') ?>
<?= I18N::translate('Delete') ?>
</a>
-
- <?php if (Auth::isAdmin() || $record->tree()->getPreference('SHOW_GEDCOM_RECORD')) : ?>
- <a class="dropdown-item" href="<?= e(route(EditRawRecordPage::class, ['tree' => $record->tree()->name(), 'xref' => $record->xref()])) ?>">
- <?= view('icons/edit') ?>
- <?= I18N::translate('Edit the raw GEDCOM') ?>
- </a>
- <?php endif ?>
</div>
</div>
diff --git a/resources/views/submitter-page.phtml b/resources/views/submitter-page.phtml
index b1cc935fb4..666e4bffc4 100644
--- a/resources/views/submitter-page.phtml
+++ b/resources/views/submitter-page.phtml
@@ -1,12 +1,10 @@
<?php
use Fisharebest\Webtrees\Auth;
-use Fisharebest\Webtrees\Functions\FunctionsPrint;
use Fisharebest\Webtrees\Functions\FunctionsPrintFacts;
use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesAcceptRecord;
use Fisharebest\Webtrees\Http\RequestHandlers\PendingChangesRejectRecord;
use Fisharebest\Webtrees\I18N;
-use Fisharebest\Webtrees\Submitter;
?>
@@ -62,10 +60,6 @@ use Fisharebest\Webtrees\Submitter;
<?php foreach ($facts as $fact) : ?>
<?php FunctionsPrintFacts::printFact($fact, $submitter) ?>
<?php endforeach ?>
-
- <?php if ($submitter->canEdit()) : ?>
- <?php FunctionsPrint::printAddNewFact($submitter, $facts, Submitter::RECORD_TYPE) ?>
- <?php endif ?>
</table>
</div>