xref: /webtrees/resources/views/modules/favorites/favorites.phtml (revision 1ff45046fabc22237b5d0d8e489c96f031fc598d)
1<?php
2
3declare(strict_types=1);
4
5use Fisharebest\Webtrees\I18N;
6use Fisharebest\Webtrees\Individual;
7use Fisharebest\Webtrees\Tree;
8use Illuminate\Support\Collection;
9
10/**
11 * @var int                    $block_id
12 * @var bool                   $can_edit
13 * @var Collection<int,object> $favorites
14 * @var string                 $module_name
15 * @var Tree                   $tree
16 */
17?>
18
19<?php foreach ($favorites as $favorite) : ?>
20    <div class="pt-2">
21        <?php if ($favorite->favorite_type === 'URL') : ?>
22            <a href="<?= e($favorite->url) ?>"><b><?= e($favorite->title) ?></b></a>
23        <?php elseif ($favorite->record instanceof Individual) : ?>
24            <?= view('chart-box', ['individual' => $favorite->record]) ?>
25        <?php elseif ($favorite->record !== null) : ?>
26            <?= $favorite->record->formatList() ?>
27        <?php endif ?>
28
29        <div class="wt-favorites-block-note">
30            <?= e((string) $favorite->note) ?>
31        </div>
32    </div>
33
34    <?php if ($can_edit) : ?>
35        <form method="post" action="<?= e(route('module', ['module' => $module_name, 'action' => 'DeleteFavorite', 'tree' => $tree->name(), 'favorite_id' => $favorite->favorite_id])) ?>">
36            <button type="submit" class="btn btn-link" data-wt-confirm="<?= I18N::translate('Are you sure you want to remove this item from your list of favorites?') ?>" onclick="return confirm(this.dataset.confirm);">
37                <?= I18N::translate('Remove') ?>
38            </button>
39
40            <?= csrf_field() ?>
41        </form>
42    <?php endif ?>
43<?php endforeach ?>
44
45<?php if ($can_edit) : ?>
46    <button type="button" class="btn btn-link" data-bs-toggle="modal" data-bs-backdrop="static" data-bs-target="#favorite-form-<?= e($block_id) ?>">
47        <?= I18N::translate('Add a favorite') ?>
48    </button>
49
50    <div class="modal fade" id="favorite-form-<?= e($block_id) ?>" tabindex="-1" role="dialog" aria-labelledby="favorite-form-<?= e($block_id) ?>-label" aria-hidden="true">
51        <div class="modal-dialog modal-xl" role="document">
52            <div class="modal-content">
53                <form method="post" action="<?= e(route('module', ['module' => $module_name, 'action' => 'AddFavorite', 'tree' => $tree->name()])) ?>">
54                    <div class="modal-header">
55                        <h5 class="modal-title" id="favorite-form-<?= e($block_id) ?>-label">
56                            <?= I18N::translate('Add a favorite') ?>
57                        </h5>
58                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="<?= I18N::translate('close') ?>">
59                        </button>
60                    </div>
61                    <div class="modal-body">
62                        <div class="row mb-3">
63                            <div class="col-sm-4 col-md-3">
64                                <div class="form-check">
65                                    <input class="form-check-input" type="radio" name="type" value="indi" id="fav-indi-<?= e($block_id) ?>" checked>
66                                    <label class="form-check-label" for="fav-indi-<?= e($block_id) ?>">
67                                        <?= I18N::translate('Individual') ?>
68                                    </label>
69                                </div>
70                            </div>
71                            <div class="col-sm-8 col-md-9">
72                                <?= view('components/select-individual', ['name' => 'indi-xref', 'tree' => $tree]) ?>
73                            </div>
74                        </div>
75
76                        <div class="row mb-3">
77                            <div class="col-sm-4 col-md-3">
78                                <div class="form-check">
79                                    <input class="form-check-input" type="radio" name="type" value="fam" id="fav-fam-<?= e($block_id) ?>">
80                                    <label class="form-check-label" for="fav-fam-<?= e($block_id) ?>">
81                                        <?= I18N::translate('Family') ?>
82                                    </label>
83                                </div>
84                            </div>
85                            <div class="col-sm-8 col-md-9">
86                                <?= view('components/select-family', ['name' => 'fam-xref', 'tree' => $tree]) ?>
87                            </div>
88                        </div>
89
90                        <div class="row mb-3">
91                            <div class="col-sm-4 col-md-3">
92                                <div class="form-check">
93                                    <input class="form-check-input" type="radio" name="type" value="obje" id="fav-obje-<?= e($block_id) ?>">
94                                    <label class="form-check-label" for="fav-obje-<?= e($block_id) ?>">
95                                        <?= I18N::translate('Media object') ?>
96                                    </label>
97                                </div>
98                            </div>
99                            <div class="col-sm-8 col-md-9">
100                                <?= view('components/select-media', ['name' => 'obje-xref', 'tree' => $tree]) ?>
101                            </div>
102                        </div>
103
104                        <div class="row mb-3">
105                            <div class="col-sm-4 col-md-3">
106                                <div class="form-check">
107                                    <input class="form-check-input" type="radio" name="type" value="sour" id="fav-sour-<?= e($block_id) ?>">
108                                    <label class="form-check-label" for="fav-sour-<?= e($block_id) ?>">
109                                        <?= I18N::translate('Source') ?>
110                                    </label>
111                                </div>
112                            </div>
113                            <div class="col-sm-8 col-md-9">
114                                <?= view('components/select-source', ['name' => 'sour-xref', 'tree' => $tree]) ?>
115                            </div>
116                        </div>
117
118                        <div class="row mb-3">
119                            <div class="col-sm-4 col-md-3">
120                                <div class="form-check">
121                                    <input class="form-check-input" type="radio" name="type" value="repo" id="fav-repo-<?= e($block_id) ?>">
122                                    <label class="form-check-label" for="fav-repo-<?= e($block_id) ?>">
123                                        <?= I18N::translate('Repository') ?>
124                                    </label>
125                                </div>
126                            </div>
127                            <div class="col-sm-8 col-md-9">
128                                <?= view('components/select-repository', ['name' => 'repo-xref', 'tree' => $tree]) ?>
129                            </div>
130                        </div>
131
132                        <div class="row mb-3">
133                            <div class="col-sm-4 col-md-3">
134                                <div class="form-check">
135                                    <input class="form-check-input" type="radio" name="type" value="url" id="fav-url-<?= e($block_id) ?>">
136                                    <label class="form-check-label" for="fav-url-<?= e($block_id) ?>">
137                                        <?= I18N::translate('URL') ?>
138                                    </label>
139                                </div>
140                            </div>
141                            <div class="col-sm-8 col-md-9">
142                                <label>
143                                    <span class="visually-hidden">
144                                        <?= I18N::translate('URL') ?>
145                                    </span>
146                                    <input type="text" class="form-control" name="url" id="url" value="" placeholder="<?= I18N::translate('URL') ?>">
147                                </label>
148                                <label>
149                                    <span class="visually-hidden">
150                                        <?= I18N::translate('Title') ?>
151                                    </span>
152                                    <input type="text" class="form-control" name="title" id="title" value="" placeholder="<?= I18N::translate('Title') ?>">
153                                </label>
154                            </div>
155                        </div>
156
157                        <div class="row mb-3">
158                            <div class="col-sm-4 col-md-3">
159                                <label for="fav-note-<?= e($block_id) ?>">
160                                    <?= I18N::translate('Note') ?>
161                                </label>
162                            </div>
163                            <div class="col-sm-8 col-md-9">
164                                <textarea name="note" id="fav-note-<?= e($block_id) ?>" class="form-control" placeholder="<?= I18N::translate('Enter an optional note about this favorite') ?>" rows="3" dir="auto"></textarea>
165                            </div>
166                        </div>
167                    </div>
168
169                    <div class="modal-footer">
170                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
171                            <?= view('icons/cancel') ?>
172                            <?= I18N::translate('cancel') ?>
173                        </button>
174                        <button type="submit" class="btn btn-primary">
175                            <?= view('icons/save') ?>
176                            <?= I18N::translate('save') ?>
177                        </button>
178                    </div>
179
180                    <?= csrf_field() ?>
181                </form>
182            </div>
183        </div>
184    </div>
185<?php endif ?>
186