xref: /webtrees/resources/views/admin/trees-privacy.phtml (revision ef59c27bfabe6918b39f37c259c61f43631cf1ee)
1b6c326d8SGreg Roach<?php
2b6c326d8SGreg Roach
3269403b3SGreg Roachuse Fisharebest\Webtrees\Functions\FunctionsEdit;
40c0910bfSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\ControlPanel;
5269403b3SGreg Roachuse Fisharebest\Webtrees\I18N;
6b6c326d8SGreg Roachuse Fisharebest\Webtrees\View;
7b6c326d8SGreg Roachuse Ramsey\Uuid\Uuid;
8b6c326d8SGreg Roach
9b6c326d8SGreg Roach?>
10dd6b2bfcSGreg Roach
115fb051e9SGreg Roach<?= view('components/breadcrumbs', ['links' => [route(ControlPanel::class) => I18N::translate('Control panel'), route('manage-trees', ['tree' => $tree->name()]) => I18N::translate('Manage family trees'), $title]]) ?>
12dd6b2bfcSGreg Roach
13dd6b2bfcSGreg Roach<h1><?= $title ?></h1>
14dd6b2bfcSGreg Roach
150c0910bfSGreg Roach<form method="post" action="<?= e(route('tree-privacy-update', ['tree' => $tree->name()])) ?>">
16dd6b2bfcSGreg Roach    <?= csrf_field() ?>
17dd6b2bfcSGreg Roach
18dd6b2bfcSGreg Roach    <!-- REQUIRE_AUTHENTICATION -->
19dd6b2bfcSGreg Roach    <div class="row form-group">
20dd6b2bfcSGreg Roach        <div class="col-form-label col-sm-4">
21dd6b2bfcSGreg Roach            <label>
22dd6b2bfcSGreg Roach                <?= /* I18N: A configuration setting */ I18N::translate('Show the family tree') ?>
23dd6b2bfcSGreg Roach            </label>
24dd6b2bfcSGreg Roach            <div class="hidden-xs">
25dd6b2bfcSGreg Roach                <span class="badge visitors"><?= I18N::translate('visitors') ?></span>
26dd6b2bfcSGreg Roach                <span class="badge members"><?= I18N::translate('members') ?></span>
27dd6b2bfcSGreg Roach            </div>
28dd6b2bfcSGreg Roach        </div>
29dd6b2bfcSGreg Roach        <div class="col-sm-8">
30c9e11c2aSGreg Roach            <?= view('components/select', ['name' => 'REQUIRE_AUTHENTICATION', 'selected' => $tree->getPreference('REQUIRE_AUTHENTICATION'), 'options' => ['0' => I18N::translate('Show to visitors'), '1' => I18N::translate('Show to members')]]) ?>
31dd6b2bfcSGreg Roach            <p class="small text-muted">
32dd6b2bfcSGreg Roach                <?= /* I18N: Help text for the “Family tree” configuration setting */ I18N::translate('Enabling this option will force all visitors to sign in before they can view any data on the website.') ?>
33dd6b2bfcSGreg Roach            </p>
34dd6b2bfcSGreg Roach        </div>
35dd6b2bfcSGreg Roach    </div>
36dd6b2bfcSGreg Roach
37dd6b2bfcSGreg Roach    <!-- SHOW_DEAD_PEOPLE -->
38dd6b2bfcSGreg Roach    <div class="row form-group">
39dd6b2bfcSGreg Roach        <div class="col-form-label col-sm-4">
40dd6b2bfcSGreg Roach            <label for="SHOW_DEAD_PEOPLE">
41dd6b2bfcSGreg Roach                <?= /* I18N: A configuration setting */ I18N::translate('Show dead individuals') ?>
42dd6b2bfcSGreg Roach            </label>
43dd6b2bfcSGreg Roach            <div class="hidden-xs">
44dd6b2bfcSGreg Roach                <span class="badge visitors"><?= I18N::translate('visitors') ?></span>
45dd6b2bfcSGreg Roach                <span class="badge members"><?= I18N::translate('members') ?></span>
46dd6b2bfcSGreg Roach            </div>
47dd6b2bfcSGreg Roach        </div>
48dd6b2bfcSGreg Roach        <div class="col-sm-8">
49c9e11c2aSGreg Roach            <?= view('components/select', ['name' => 'SHOW_DEAD_PEOPLE', 'selected' => $tree->getPreference('SHOW_DEAD_PEOPLE'), 'options' => array_slice(FunctionsEdit::optionsAccessLevels(), 0, 2, true)]) ?>
50dd6b2bfcSGreg Roach            <p class="small text-muted">
51dd6b2bfcSGreg Roach                <?= /* I18N: Help text for the “Show dead individuals” configuration setting */ I18N::translate('Set the privacy access level for all dead individuals.') ?>
52dd6b2bfcSGreg Roach            </p>
53dd6b2bfcSGreg Roach        </div>
54dd6b2bfcSGreg Roach    </div>
55dd6b2bfcSGreg Roach
56dd6b2bfcSGreg Roach
57dd6b2bfcSGreg Roach    <!-- MAX_ALIVE_AGE -->
58dd6b2bfcSGreg Roach    <div class="row form-group">
59dd6b2bfcSGreg Roach        <label class="col-form-label col-sm-4" for="MAX_ALIVE_AGE">
60dd6b2bfcSGreg Roach            <?= I18N::translate('Age at which to assume an individual is dead') ?>
61dd6b2bfcSGreg Roach        </label>
62dd6b2bfcSGreg Roach        <div class="col-sm-8">
63dd6b2bfcSGreg Roach            <input
64dd6b2bfcSGreg Roach                class="form-control"
65dd6b2bfcSGreg Roach                id="MAX_ALIVE_AGE"
66*ef59c27bSGreg Roach                min="1"
67*ef59c27bSGreg Roach                max="9999"
68dd6b2bfcSGreg Roach                name="MAX_ALIVE_AGE"
69*ef59c27bSGreg Roach                required
70*ef59c27bSGreg Roach                type="number"
71dd6b2bfcSGreg Roach                value="<?= e($tree->getPreference('MAX_ALIVE_AGE')) ?>"
72dd6b2bfcSGreg Roach            >
73dd6b2bfcSGreg Roach            <p class="small text-muted">
74dd6b2bfcSGreg Roach                <?= /* I18N: Help text for the “Age at which to assume an individual is dead” configuration setting */ I18N::translate('If this individual has any events other than death, burial, or cremation more recent than this number of years, they are considered to be “alive”. Children’s birth dates are considered to be such events for this purpose.') ?>
75dd6b2bfcSGreg Roach            </p>
76dd6b2bfcSGreg Roach        </div>
77dd6b2bfcSGreg Roach    </div>
78dd6b2bfcSGreg Roach
79dd6b2bfcSGreg Roach    <!-- HIDE_LIVE_PEOPLE -->
80dd6b2bfcSGreg Roach    <fieldset class="form-group">
81dd6b2bfcSGreg Roach        <div class="row">
82dd6b2bfcSGreg Roach            <div class="col-sm-4">
83dd6b2bfcSGreg Roach                <legend class="col-form-label">
84dd6b2bfcSGreg Roach                    <?= /* I18N: A configuration setting */ I18N::translate('Show living individuals') ?>
85dd6b2bfcSGreg Roach                    <div class="hidden-xs">
86dd6b2bfcSGreg Roach                        <span class="badge visitors"><?= I18N::translate('visitors') ?></span>
87dd6b2bfcSGreg Roach                        <span class="badge members"><?= I18N::translate('members') ?></span>
88dd6b2bfcSGreg Roach                    </div>
89dd6b2bfcSGreg Roach                </legend>
90dd6b2bfcSGreg Roach            </div>
91dd6b2bfcSGreg Roach            <div class="col-sm-8">
92c9e11c2aSGreg Roach                <?= view('components/select', ['name' => 'HIDE_LIVE_PEOPLE', 'selected' => $tree->getPreference('HIDE_LIVE_PEOPLE'), 'options' => ['0' => I18N::translate('Show to visitors'), '1' => I18N::translate('Show to members')]]) ?>
93dd6b2bfcSGreg Roach                <p class="small text-muted">
94dd6b2bfcSGreg Roach                    <?= /* I18N: Help text for the “Show living individuals” configuration setting */ I18N::translate('If you show living individuals to visitors, all other privacy restrictions are ignored. Do this only if all the data in your tree is public.') ?>
95dd6b2bfcSGreg Roach                </p>
96dd6b2bfcSGreg Roach            </div>
97dd6b2bfcSGreg Roach        </div>
98dd6b2bfcSGreg Roach    </fieldset>
99dd6b2bfcSGreg Roach
100dd6b2bfcSGreg Roach    <!-- KEEP_ALIVE_YEARS_BIRTH / KEEP_ALIVE_YEARS_DEATH -->
101dd6b2bfcSGreg Roach    <fieldset class="form-group">
102dd6b2bfcSGreg Roach        <div class="row">
103dd6b2bfcSGreg Roach            <legend class="col-form-label col-sm-4">
104dd6b2bfcSGreg Roach                <?= /* I18N: A configuration setting. …who were born in the last XX years or died in the    last YY years */ I18N::translate('Extend privacy to dead individuals') ?>
105dd6b2bfcSGreg Roach            </legend>
106dd6b2bfcSGreg Roach            <div class="col-sm-8">
107dd6b2bfcSGreg Roach                <?php
108dd6b2bfcSGreg Roach                echo
109dd6b2bfcSGreg Roach                    /* I18N: Extend privacy to dead individuals who were… */ I18N::translate(
110dd6b2bfcSGreg Roach                        'born in the last %1$s years or died in the last %2$s years',
111dd6b2bfcSGreg Roach                        '<input type="text" name="KEEP_ALIVE_YEARS_BIRTH" value="' . $tree->getPreference('KEEP_ALIVE_YEARS_BIRTH') . '" size="5" maxlength="3">',
112dd6b2bfcSGreg Roach                        '<input type="text" name="KEEP_ALIVE_YEARS_DEATH" value="' . $tree->getPreference('KEEP_ALIVE_YEARS_DEATH') . '" size="5" maxlength="3">'
113dd6b2bfcSGreg Roach                    ) ?>
114dd6b2bfcSGreg Roach                <p class="small text-muted">
115dd6b2bfcSGreg Roach                    <?= /* I18N: Help text for the “Extend privacy to dead individuals” configuration setting */ I18N::translate('In some countries, privacy laws apply not only to living individuals, but also to those who have died recently. This option will allow you to extend the privacy rules for living individuals to those who were born or died within a specified number of years. Leave these values empty to disable this feature.') ?>
116dd6b2bfcSGreg Roach                </p>
117dd6b2bfcSGreg Roach            </div>
118dd6b2bfcSGreg Roach        </div>
119dd6b2bfcSGreg Roach    </fieldset>
120dd6b2bfcSGreg Roach
121dd6b2bfcSGreg Roach    <!-- SHOW_LIVING_NAMES -->
122dd6b2bfcSGreg Roach    <div class="row form-group">
123dd6b2bfcSGreg Roach        <div class="col-form-label col-sm-4">
124dd6b2bfcSGreg Roach            <label for="SHOW_LIVING_NAMES">
125dd6b2bfcSGreg Roach                <?= /* I18N: A configuration setting */ I18N::translate('Show names of private individuals') ?>
126dd6b2bfcSGreg Roach            </label>
127dd6b2bfcSGreg Roach            <div class="hidden-xs">
128dd6b2bfcSGreg Roach                <span class="badge visitors"><?= I18N::translate('visitors') ?></span>
129dd6b2bfcSGreg Roach                <span class="badge members"><?= I18N::translate('members') ?></span>
130dd6b2bfcSGreg Roach                <span class="badge managers"><?= I18N::translate('managers') ?></span>
131dd6b2bfcSGreg Roach            </div>
132dd6b2bfcSGreg Roach        </div>
133dd6b2bfcSGreg Roach        <div class="col-sm-8">
134c9e11c2aSGreg Roach            <?= view('components/select', ['name' => 'SHOW_LIVING_NAMES', 'selected' => $tree->getPreference('SHOW_LIVING_NAMES'), 'options' => array_slice(FunctionsEdit::optionsAccessLevels(), 0, 3, true)]) ?>
135dd6b2bfcSGreg Roach            <p class="small text-muted">
136dd6b2bfcSGreg Roach                <?= /* I18N: Help text for the “Show names of private individuals” configuration setting */ I18N::translate('This option will show the names (but no other details) of private individuals. Individuals are private if they are still alive or if a privacy restriction has been added to their individual record. To hide a specific name, add a privacy restriction to that name record.') ?>
137dd6b2bfcSGreg Roach            </p>
138dd6b2bfcSGreg Roach        </div>
139dd6b2bfcSGreg Roach    </div>
140dd6b2bfcSGreg Roach
141dd6b2bfcSGreg Roach    <!-- SHOW_PRIVATE_RELATIONSHIPS -->
142dd6b2bfcSGreg Roach    <div class="row form-group">
143dd6b2bfcSGreg Roach        <div class="col-form-label col-sm-4">
144dd6b2bfcSGreg Roach            <label for="SHOW_PRIVATE_RELATIONSHIPS">
145dd6b2bfcSGreg Roach                <?= /* I18N: A configuration setting */ I18N::translate('Show private relationships') ?>
146dd6b2bfcSGreg Roach            </label>
147dd6b2bfcSGreg Roach            <div class="hidden-xs">
148dd6b2bfcSGreg Roach                <span class="badge visitors"><?= I18N::translate('visitors') ?></span>
149dd6b2bfcSGreg Roach                <span class="badge members"><?= I18N::translate('members') ?></span>
150dd6b2bfcSGreg Roach            </div>
151dd6b2bfcSGreg Roach        </div>
152dd6b2bfcSGreg Roach        <div class="col-sm-8">
153c9e11c2aSGreg Roach            <?= view('components/select', ['name' => 'SHOW_PRIVATE_RELATIONSHIPS', 'selected' => $tree->getPreference('SHOW_PRIVATE_RELATIONSHIPS'), 'options' => ['0' => I18N::translate('Hide from everyone'), '1' => I18N::translate('Show to visitors')]]) ?>
154dd6b2bfcSGreg Roach            <p class="small text-muted">
155dd6b2bfcSGreg Roach                <?= /* I18N: Help text for the “Show private relationships” configuration setting */ I18N::translate('This option will retain family links in private records. This means that you will see empty “private” boxes on the pedigree chart and on other charts with private individuals.') ?>
156dd6b2bfcSGreg Roach            </p>
157dd6b2bfcSGreg Roach        </div>
158dd6b2bfcSGreg Roach    </div>
159dd6b2bfcSGreg Roach    <h2><?= /* I18N: Privacy restrictions are set by RESN tags in GEDCOM. */ I18N::translate('Privacy restrictions') ?></h2>
160dd6b2bfcSGreg Roach    <p>
161dd6b2bfcSGreg Roach        <?= /* I18N: Privacy restrictions are RESN tags in GEDCOM. */ I18N::translate('You can set the access for a specific record, fact, or event by adding a restriction to it. If a record, fact, or event does not have a restriction, the following default restrictions will be used.') ?>
162dd6b2bfcSGreg Roach    </p>
163dd6b2bfcSGreg Roach
164dd6b2bfcSGreg Roach    <script id="new-resn-template" type="text/html">
165dd6b2bfcSGreg Roach        <tr>
166dd6b2bfcSGreg Roach            <td>
167269403b3SGreg Roach                <select class="form-control record-type-selector">
168dd6b2bfcSGreg Roach                    <option value="individual"><?= I18N::translate('Individual') ?></option>
169dd6b2bfcSGreg Roach                    <option value="family"><?= I18N::translate('Family') ?></option>
170dd6b2bfcSGreg Roach                    <option value="source"><?= I18N::translate('Source') ?></option>
171dd6b2bfcSGreg Roach                    <option value="repository"><?= I18N::translate('Repository') ?></option>
172dd6b2bfcSGreg Roach                    <option value="note"><?= I18N::translate('Note') ?></option>
173dd6b2bfcSGreg Roach                    <option value="media"><?= I18N::translate('Media object') ?></option>
174dd6b2bfcSGreg Roach                </select>
175dd6b2bfcSGreg Roach                <span class="select-record select-individual">
176b6c326d8SGreg Roach                    <?= view('components/select-individual', ['name' => 'xref[]', 'id' => Uuid::uuid4()->toString(), 'tree' => $tree]) ?>
177dd6b2bfcSGreg Roach                </span>
178dd6b2bfcSGreg Roach                <span class="select-record select-family d-none">
179b6c326d8SGreg Roach                    <?= view('components/select-family', ['name' => 'xref[]', 'id' => Uuid::uuid4()->toString(), 'tree' => $tree, 'disabled' => true]) ?>
180dd6b2bfcSGreg Roach                </span>
181dd6b2bfcSGreg Roach                <span class="select-record select-source d-none">
182b6c326d8SGreg Roach                    <?= view('components/select-source', ['name' => 'xref[]', 'id' => Uuid::uuid4()->toString(), 'tree' => $tree, 'disabled' => true]) ?>
183dd6b2bfcSGreg Roach                </span>
184dd6b2bfcSGreg Roach                <span class="select-record select-repository d-none">
185b6c326d8SGreg Roach                    <?= view('components/select-repository', ['name' => 'xref[]', 'id' => Uuid::uuid4()->toString(), 'tree' => $tree, 'disabled' => true]) ?>
186dd6b2bfcSGreg Roach                </span>
187dd6b2bfcSGreg Roach                <span class="select-record select-note d-none">
188b6c326d8SGreg Roach                    <?= view('components/select-note', ['name' => 'xref[]', 'id' => Uuid::uuid4()->toString(), 'tree' => $tree, 'disabled' => true]) ?>
189dd6b2bfcSGreg Roach                </span>
190dd6b2bfcSGreg Roach                <span class="select-record select-media d-none">
191b6c326d8SGreg Roach                    <?= view('components/select-media', ['name' => 'xref[]', 'id' => Uuid::uuid4()->toString(), 'tree' => $tree, 'disabled' => true]) ?>
192dd6b2bfcSGreg Roach                </span>
193dd6b2bfcSGreg Roach            </td>
194dd6b2bfcSGreg Roach            <td>
195c9e11c2aSGreg Roach                <?= view('components/select', ['name' => 'tag_type[]', 'id' => Uuid::uuid4()->toString(), 'selected' => '', 'options' => $all_tags]) ?>
196dd6b2bfcSGreg Roach            </td>
197dd6b2bfcSGreg Roach            <td>
198c9e11c2aSGreg Roach                <?= view('components/select', ['name' => 'resn[]', 'id' => Uuid::uuid4()->toString(), 'selected' => 'privacy', 'options' => $privacy_constants]) ?>
199dd6b2bfcSGreg Roach            </td>
200dd6b2bfcSGreg Roach            <td>
201dd6b2bfcSGreg Roach            </td>
202dd6b2bfcSGreg Roach        </tr>
203dd6b2bfcSGreg Roach    </script>
204dd6b2bfcSGreg Roach
205dd6b2bfcSGreg Roach    <table class="table table-bordered table-sm table-hover" id="default-resn">
206dd6b2bfcSGreg Roach        <caption class="sr-only">
207dd6b2bfcSGreg Roach            <?= I18N::translate('Privacy restrictions - these apply to records and facts that do not contain a GEDCOM RESN tag') ?>
208dd6b2bfcSGreg Roach        </caption>
209dd6b2bfcSGreg Roach        <thead>
210dd6b2bfcSGreg Roach            <tr>
211dd6b2bfcSGreg Roach                <th>
212dd6b2bfcSGreg Roach                    <?= I18N::translate('Record') ?>
213dd6b2bfcSGreg Roach                </th>
214dd6b2bfcSGreg Roach                <th>
215dd6b2bfcSGreg Roach                    <?= I18N::translate('Fact or event') ?>
216dd6b2bfcSGreg Roach                </th>
217dd6b2bfcSGreg Roach                <th>
218dd6b2bfcSGreg Roach                    <?= I18N::translate('Access level') ?>
219dd6b2bfcSGreg Roach                </th>
220dd6b2bfcSGreg Roach                <th>
221dd6b2bfcSGreg Roach                    <button class="btn btn-primary" id="add-resn" type="button">
222dd6b2bfcSGreg Roach                <?= view('icons/add') ?>
223dd6b2bfcSGreg Roach                        <?= /* I18N: A button label. */ I18N::translate('add') ?>
224dd6b2bfcSGreg Roach                    </button>
225dd6b2bfcSGreg Roach                </th>
226dd6b2bfcSGreg Roach            </tr>
227dd6b2bfcSGreg Roach        </thead>
228dd6b2bfcSGreg Roach        <tbody>
229dd6b2bfcSGreg Roach            <?php foreach ($privacy_restrictions as $privacy_restriction) : ?>
230dd6b2bfcSGreg Roach                <tr>
231dd6b2bfcSGreg Roach                    <td>
232dd6b2bfcSGreg Roach                        <?php if ($privacy_restriction->record) : ?>
23339ca88baSGreg Roach                            <a href="<?= e($privacy_restriction->record->url()) ?>"><?= $privacy_restriction->record->fullName() ?></a>
234dd6b2bfcSGreg Roach                        <?php elseif ($privacy_restriction->xref) : ?>
235dd6b2bfcSGreg Roach                            <div class="text-danger">
236dd6b2bfcSGreg Roach                                <?= $privacy_restriction->xref ?><?= I18N::translate('This record does not exist.') ?>
237dd6b2bfcSGreg Roach                            </div>
238dd6b2bfcSGreg Roach                        <?php else : ?>
239dd6b2bfcSGreg Roach                            <div class="text-muted">
240dd6b2bfcSGreg Roach                                <?= I18N::translate('All records') ?>
241dd6b2bfcSGreg Roach                            </div>
242dd6b2bfcSGreg Roach                        <?php endif ?>
243dd6b2bfcSGreg Roach                    </td>
244dd6b2bfcSGreg Roach                    <td>
245cd494761SGreg Roach                        <?php if ($privacy_restriction->tag_label === '') : ?>
246dd6b2bfcSGreg Roach                            <div class="text-muted">
247dd6b2bfcSGreg Roach                                <?= I18N::translate('All facts and events') ?>
248dd6b2bfcSGreg Roach                            </div>
249cd494761SGreg Roach                        <?php else : ?>
250cd494761SGreg Roach                            <?= $privacy_restriction->tag_label ?>
251dd6b2bfcSGreg Roach                        <?php endif ?>
252dd6b2bfcSGreg Roach                    </td>
253dd6b2bfcSGreg Roach                    <td>
2540a758434SGreg Roach                        <?= FunctionsEdit::optionsRestrictionsRule()[$privacy_restriction->resn] ?>
255dd6b2bfcSGreg Roach                    </td>
256dd6b2bfcSGreg Roach                    <td>
257dd6b2bfcSGreg Roach                        <label for="delete-<?= $privacy_restriction->default_resn_id ?>">
258dd6b2bfcSGreg Roach                            <input id="delete-<?= $privacy_restriction->default_resn_id ?>" name="delete[]" type="checkbox" value="<?= $privacy_restriction->default_resn_id ?>">
259dd6b2bfcSGreg Roach                            <?= I18N::translate('Delete') ?>
260dd6b2bfcSGreg Roach                        </label>
261dd6b2bfcSGreg Roach                    </td>
262dd6b2bfcSGreg Roach                </tr>
263dd6b2bfcSGreg Roach            <?php endforeach ?>
264dd6b2bfcSGreg Roach        </tbody>
265dd6b2bfcSGreg Roach    </table>
266dd6b2bfcSGreg Roach
267dd6b2bfcSGreg Roach    <div class="row form-group">
268dd6b2bfcSGreg Roach        <div class="offset-sm-4 col-sm-8">
269dd6b2bfcSGreg Roach            <button type="submit" class="btn btn-primary">
270dd6b2bfcSGreg Roach                <?= view('icons/save') ?>
271dd6b2bfcSGreg Roach                <?= I18N::translate('save') ?>
272dd6b2bfcSGreg Roach            </button>
2730c0910bfSGreg Roach
2740c0910bfSGreg Roach            <a class="btn btn-secondary" href="<?= route('manage-trees', ['tree' => $tree->name()]) ?>">
275dd6b2bfcSGreg Roach                <?= view('icons/cancel') ?>
276dd6b2bfcSGreg Roach                <?= I18N::translate('cancel') ?>
277dd6b2bfcSGreg Roach            </a>
278dd6b2bfcSGreg Roach            <!-- Coming soon
279dd6b2bfcSGreg Roach            <div class="form-check">
280dd6b2bfcSGreg Roach                <?php if ($count_trees > 1) : ?>
281dd6b2bfcSGreg Roach                <label>
282dd6b2bfcSGreg Roach                    <input type="checkbox" name="all_trees">
283dd6b2bfcSGreg Roach                    <?= /* I18N: Label for checkbox */ I18N::translate('Apply these preferences to all family trees') ?>
284dd6b2bfcSGreg Roach                </label>
285dd6b2bfcSGreg Roach                <?php endif ?>
286dd6b2bfcSGreg Roach            </div>
287dd6b2bfcSGreg Roach            <div class="form-check">
288dd6b2bfcSGreg Roach                <label>
289dd6b2bfcSGreg Roach                    <input type="checkbox" name="new_trees">
290dd6b2bfcSGreg Roach                    <?= /* I18N: Label for checkbox */ I18N::translate('Apply these preferences to new family trees') ?>
291dd6b2bfcSGreg Roach                </label>
292dd6b2bfcSGreg Roach            </div>
293dd6b2bfcSGreg Roach        </div>
294dd6b2bfcSGreg Roach        -->
295dd6b2bfcSGreg Roach        </div>
296dd6b2bfcSGreg Roach
297dd6b2bfcSGreg Roach</form>
298dd6b2bfcSGreg Roach
299dd6b2bfcSGreg Roach<?php View::push('javascript') ?>
300dd6b2bfcSGreg Roach<script>
301269403b3SGreg Roach    "use strict";
302dd6b2bfcSGreg Roach
303dd6b2bfcSGreg Roach    /**
304dd6b2bfcSGreg Roach     * Hide/show the feedback labels for a privacy option.
305dd6b2bfcSGreg Roach     *
306dd6b2bfcSGreg Roach     * @param sel    the control to change
307dd6b2bfcSGreg Roach     * @param who    "visitors", "members" or "managers"
308dd6b2bfcSGreg Roach     * @param access true or false
309dd6b2bfcSGreg Roach     */
310dd6b2bfcSGreg Roach    function setPrivacyFeedback(sel, who, access) {
311269403b3SGreg Roach        var formGroup = $(sel).closest(".form-group");
312dd6b2bfcSGreg Roach
313dd6b2bfcSGreg Roach        if (access) {
314269403b3SGreg Roach            $("." + who, formGroup).addClass("badge-success").removeClass("badge-secondary");
315269403b3SGreg Roach            $("." + who + " i", formGroup).addClass("fa-check").removeClass("fa-times");
316dd6b2bfcSGreg Roach        } else {
317269403b3SGreg Roach            $("." + who, formGroup).addClass("badge-secondary").removeClass("badge-success");
318269403b3SGreg Roach            $("." + who + " i", formGroup).addClass("fa-times").removeClass("fa-check");
319dd6b2bfcSGreg Roach        }
320dd6b2bfcSGreg Roach    }
321dd6b2bfcSGreg Roach
322dd6b2bfcSGreg Roach    /**
323dd6b2bfcSGreg Roach     * Update all the privacy feedback labels.
324dd6b2bfcSGreg Roach     */
325dd6b2bfcSGreg Roach    function updatePrivacyFeedback() {
326269403b3SGreg Roach        var requireAuthentication    = parseInt($("[name=REQUIRE_AUTHENTICATION]").val(), 10);
327269403b3SGreg Roach        var showDeadPeople           = parseInt($("[name=SHOW_DEAD_PEOPLE]").val(), 10);
328269403b3SGreg Roach        var hideLivePeople           = parseInt($("[name=HIDE_LIVE_PEOPLE]").val(), 10);
329269403b3SGreg Roach        var showLivingNames          = parseInt($("[name=SHOW_LIVING_NAMES]").val(), 10);
330269403b3SGreg Roach        var showPrivateRelationships = parseInt($("[name=SHOW_PRIVATE_RELATIONSHIPS]").val(), 10);
331dd6b2bfcSGreg Roach
332269403b3SGreg Roach        setPrivacyFeedback("[name=REQUIRE_AUTHENTICATION]", "visitors", requireAuthentication === 0);
333269403b3SGreg Roach        setPrivacyFeedback("[name=REQUIRE_AUTHENTICATION]", "members", true);
334dd6b2bfcSGreg Roach
335269403b3SGreg Roach        setPrivacyFeedback("[name=SHOW_DEAD_PEOPLE]", "visitors", requireAuthentication === 0 && (showDeadPeople >= 2 || hideLivePeople === 0));
336269403b3SGreg Roach        setPrivacyFeedback("[name=SHOW_DEAD_PEOPLE]", "members", showDeadPeople >= 1 || hideLivePeople === 0);
337dd6b2bfcSGreg Roach
338269403b3SGreg Roach        setPrivacyFeedback("[name=HIDE_LIVE_PEOPLE]", "visitors", requireAuthentication === 0 && hideLivePeople === 0);
339269403b3SGreg Roach        setPrivacyFeedback("[name=HIDE_LIVE_PEOPLE]", "members", true);
340dd6b2bfcSGreg Roach
341269403b3SGreg Roach        setPrivacyFeedback("[name=SHOW_LIVING_NAMES]", "visitors", requireAuthentication === 0 && showLivingNames >= 2);
342269403b3SGreg Roach        setPrivacyFeedback("[name=SHOW_LIVING_NAMES]", "members", showLivingNames >= 1);
343269403b3SGreg Roach        setPrivacyFeedback("[name=SHOW_LIVING_NAMES]", "managers", showLivingNames >= 0);
344dd6b2bfcSGreg Roach
345269403b3SGreg Roach        setPrivacyFeedback("[name=SHOW_PRIVATE_RELATIONSHIPS]", "visitors", requireAuthentication === 0 && showPrivateRelationships >= 1);
346269403b3SGreg Roach        setPrivacyFeedback("[name=SHOW_PRIVATE_RELATIONSHIPS]", "members", showPrivateRelationships >= 1);
347dd6b2bfcSGreg Roach    }
348dd6b2bfcSGreg Roach
349dd6b2bfcSGreg Roach    // Activate the privacy feedback labels.
350dd6b2bfcSGreg Roach    updatePrivacyFeedback();
351269403b3SGreg Roach    $("[name=REQUIRE_AUTHENTICATION], [name=HIDE_LIVE_PEOPLE], [name=SHOW_DEAD_PEOPLE], [name=SHOW_LIVING_NAMES], [name=SHOW_PRIVATE_RELATIONSHIPS]").on("change", function () {
352dd6b2bfcSGreg Roach        updatePrivacyFeedback();
353dd6b2bfcSGreg Roach    });
354dd6b2bfcSGreg Roach
355dd6b2bfcSGreg Roach    // Mute a line when it is marked for deletion
356dd6b2bfcSGreg Roach    $("#default-resn").on("click", "input[type=checkbox]", function () {
357dd6b2bfcSGreg Roach        if ($(this).prop("checked")) {
358dd6b2bfcSGreg Roach            $($(this).closest("tr").addClass("text-muted"));
359dd6b2bfcSGreg Roach        } else {
360dd6b2bfcSGreg Roach            $($(this).closest("tr").removeClass("text-muted"));
361dd6b2bfcSGreg Roach        }
362dd6b2bfcSGreg Roach    });
363dd6b2bfcSGreg Roach
364dd6b2bfcSGreg Roach    // Add a new row to the table
365dd6b2bfcSGreg Roach    $("#add-resn").on("click", function () {
366dd6b2bfcSGreg Roach        $("#default-resn tbody").prepend($("#new-resn-template").html());
367269403b3SGreg Roach
368269403b3SGreg Roach        // Select2 - same as webtrees.js
369269403b3SGreg Roach        $("select.select2").select2({
370269403b3SGreg Roach            escapeMarkup: function (x) {
371269403b3SGreg Roach                return x;
372269403b3SGreg Roach            },
373269403b3SGreg Roach        })
374269403b3SGreg Roach        .on("select2:unselect", function (evt) {
375269403b3SGreg Roach            $(evt.delegateTarget).append("<option value=\"\" selected=\"selected\"></option>");
376269403b3SGreg Roach        });
377269403b3SGreg Roach
378269403b3SGreg Roach        // Record type selector
379269403b3SGreg Roach        $(".record-type-selector").change(function () {
380269403b3SGreg Roach            $(".select-record", $(this).parent()).addClass('d-none');
381269403b3SGreg Roach            $(".select-record select", $(this).parent()).prop( "disabled", true);
382269403b3SGreg Roach            $(".select-" + $(this).val(), $(this).parent()).removeClass('d-none');
383269403b3SGreg Roach            $(".select-" + $(this).val() + " select", $(this).parent()).prop( "disabled", false);
384269403b3SGreg Roach        });
385dd6b2bfcSGreg Roach    });
386dd6b2bfcSGreg Roach</script>
387dd6b2bfcSGreg Roach<?php View::endpush() ?>
388