xref: /webtrees/resources/views/edit/edit-fact.phtml (revision b4a2f8851f56e7ca6fae19d0a51ff909996d7a30)
1<?php
2
3use Fisharebest\Webtrees\Auth;
4use Fisharebest\Webtrees\Config;
5use Fisharebest\Webtrees\Fact;
6use Fisharebest\Webtrees\Functions\FunctionsEdit;
7use Fisharebest\Webtrees\Http\RequestHandlers\EditFactAction;
8use Fisharebest\Webtrees\Http\RequestHandlers\EditRawFactPage;
9use Fisharebest\Webtrees\I18N;
10use Fisharebest\Webtrees\Tree;
11use Ramsey\Uuid\Uuid;
12
13/**
14 * @var bool        $can_edit_raw
15 * @var Fact        $fact
16 * @var string      $title
17 * @var Tree        $tree
18 * @var string|null $url
19 */
20
21?>
22
23<h2 class="wt-page-title"><?= $title ?></h2>
24
25<form method="post" action="<?= e(route(EditFactAction::class, ['tree' => $tree->name(), 'xref' => $fact->record()->xref(), 'fact_id' => $fact->id()])) ?>" class="wt-page-content">
26    <?= csrf_field() ?>
27    <input type="hidden" name="url" value="<?= e($url ?? $fact->record()->url()) ?>">
28
29    <?php FunctionsEdit::createEditForm($fact) ?>
30
31    <?php
32    $level1type = $fact->getTag();
33    switch ($fact->record()->tag()) {
34        case 'SOUR':
35            if ($level1type === 'DATA') {
36                // SOUR:DATA facts may take a NOTE (but the SOUR record may not).
37                echo view('cards/add-note', [
38                    'level' => 2,
39                    'tree' => $tree,
40                ]);
41                echo view('cards/add-shared-note', [
42                    'level' => 2,
43                    'tree' => $tree,
44                ]);
45                // SOUR:DATA facts may also take multiple EVEN.
46                echo view('cards/add-sour-data-even', [
47                    'tree' => $tree,
48                ]);
49            }
50            break;
51        case 'FAM':
52        case 'INDI':
53            // FAM and INDI records have real facts. They can take NOTE/SOUR/OBJE/etc.
54            if ($level1type !== 'SEX' && $level1type !== 'NOTE' && $level1type !== 'ALIA') {
55                if ($level1type !== 'SOUR') {
56                    echo view('cards/add-source-citation', [
57                        'level'          => 2,
58                        'full_citations' => $tree->getPreference('FULL_SOURCES'),
59                        'tree'           => $tree,
60                    ]);
61                }
62                if ($level1type !== 'OBJE') {
63                    if ($tree->getPreference('MEDIA_UPLOAD') >= Auth::accessLevel($tree)) {
64                        echo view('cards/add-media-object', [
65                            'level' => 2,
66                            'tree'  => $tree,
67                        ]);
68                    }
69                }
70                echo view('cards/add-note', [
71                    'level' => 2,
72                    'tree' => $tree,
73                ]);
74                echo view('cards/add-shared-note', [
75                    'level' => 2,
76                    'tree' => $tree,
77                ]);
78                if ($level1type !== 'ASSO' && $level1type !== 'NOTE' && $level1type !== 'SOUR') {
79                    echo view('cards/add-associate', [
80                        'id'    => Uuid::uuid4()->toString(),
81                        'level' => 2,
82                        'tree' => $tree,
83                    ]);
84                }
85                // allow to add godfather and godmother for CHR fact or best man and bridesmaid  for MARR fact in one window
86                if (in_array($level1type, Config::twoAssociates(), true)) {
87                    echo view('cards/add-associate', [
88                        'id'    => Uuid::uuid4()->toString(),
89                        'level' => 2,
90                        'tree' => $tree,
91                    ]);
92                }
93                if ($level1type !== 'SOUR') {
94                    echo view('cards/add-restriction', [
95                        'level' => 2,
96                        'tree' => $tree,
97                    ]);
98                }
99            }
100            break;
101        default:
102            // Other types of record do not have these lower-level records
103            break;
104    }
105
106    ?>
107
108    <div class="form-group row">
109        <label class="col-sm-3 col-form-label" for="keep_chan">
110            <?= I18N::translate('Last change') ?>
111        </label>
112        <div class="col-sm-9">
113            <?= view('components/checkbox-inline', ['label' => I18N::translate('Keep the existing “last change” information'), 'name' => 'keep_chan', 'checked' => (bool) $tree->getPreference('NO_UPDATE_CHAN')]) ?>
114            <div>
115                <?= I18N::translate('%1$s: %2$s', I18N::translate('Timestamp'), view('components/datetime', ['timestamp' => $fact->record()->lastChangeTimestamp()])) ?>
116            </div>
117            <div>
118                <?= I18N::translate('%1$s: %2$s', I18N::translate('Author of last change'), e($fact->record()->lastChangeUser())) ?>
119            </div>
120        </div>
121    </div>
122
123    <div class="form-group row">
124        <div class="col-sm-3 wt-page-options-label">
125        </div>
126        <div class="col-sm-9 wt-page-options-value">
127            <button class="btn btn-primary" type="submit">
128                <?= view('icons/save') ?>
129                <?= /* I18N: A button label. */
130                I18N::translate('save') ?>
131            </button>
132            <a class="btn btn-secondary" href="<?= e($fact->record()->url()) ?>">
133                <?= view('icons/cancel') ?>
134                <?= /* I18N: A button label. */
135                I18N::translate('cancel') ?>
136            </a>
137            <?php if ($can_edit_raw) : ?>
138                <a class="btn btn-link" href="<?= e(route(EditRawFactPage::class, ['xref' => $fact->record()->xref(), 'fact_id' => $fact->id(), 'tree' => $tree->name(), 'url' => $url ?? $fact->record()->url()])) ?>">
139                    <?= I18N::translate('Edit the raw GEDCOM') ?>
140                </a>
141            <?php endif; ?>
142        </div>
143    </div>
144</form>
145
146<?= view('modals/on-screen-keyboard') ?>
147<?= view('modals/ajax') ?>
148<?= view('edit/initialize-calendar-popup') ?>
149