xref: /webtrees/resources/views/search-general-page.phtml (revision a565e135d9aa2f3d9f55f82407a0703776784d78)
1<?php
2
3use Fisharebest\Webtrees\Http\RequestHandlers\SearchGeneralAction;
4use Fisharebest\Webtrees\I18N;
5use Fisharebest\Webtrees\Tree;
6
7/**
8 * @var array<Tree>                                                      $all_trees
9 * @var \Illuminate\Support\Collection<\Fisharebest\Webtrees\Family>     $families
10 * @var \Illuminate\Support\Collection<\Fisharebest\Webtrees\Individual> $individuals
11 * @var \Illuminate\Support\Collection<\Fisharebest\Webtrees\Note>       $notes
12 * @var string                                                           $query
13 * @var \Illuminate\Support\Collection<\Fisharebest\Webtrees\Repository> $repositories
14 * @var \Illuminate\Support\Collection<\Fisharebest\Webtrees\Source>     $sources
15 * @var bool                                                             $search_families
16 * @var bool                                                             $search_individuals
17 * @var bool                                                             $search_notes
18 * @var bool                                                             $search_repositories
19 * @var bool                                                             $search_sources
20 * @var array<Tree>                                                      $search_trees
21 * @var string                                                           $title
22 * @var Tree                                                             $tree
23 */
24
25?>
26
27<h2 class="wt-page-title">
28    <?= $title ?>
29</h2>
30
31<form method="post" action="<?= e(route(SearchGeneralAction::class, ['tree' => $tree->name()])) ?>"
32      class="wt-page-options wt-page-options-search hidden-print mb-4" name="searchform">
33    <?= csrf_field() ?>
34    <div class="row form-group">
35        <label class="col-sm-3 col-form-label wt-page-options-label" for="query">
36            <?= I18N::translate('Search for') ?>
37        </label>
38        <div class="col-sm-9 wt-page-options-value">
39            <div class="input-group">
40                <input id="query" class="form-control" type="text" name="query" value="<?= e($query) ?>" required>
41                <?= view('edit/input-addon-keyboard', ['id' => 'query']) ?>
42            </div>
43        </div>
44    </div>
45    <fieldset class="form-group">
46        <div class="row">
47            <label class="col-sm-3 col-form-label wt-page-options-label">
48                <?= I18N::translate('Records') ?>
49            </label>
50            <div class="col-sm-9 wt-page-options-value">
51                <div class="form-check form-check-inline">
52                    <label class="form-check-label">
53                        <input class="form-check-input" <?= $search_individuals ? 'checked' : '' ?>
54                               name="search_individuals" type="checkbox">
55                        <?= I18N::translate('Individuals') ?>
56                    </label>
57                </div>
58
59                <div class="form-check form-check-inline">
60                    <label class="form-check-label">
61                        <input class="form-check-input" <?= $search_families ? 'checked' : '' ?> name="search_families"
62                               type="checkbox">
63                        <?= I18N::translate('Families') ?>
64                    </label>
65                </div>
66
67                <div class="form-check form-check-inline">
68                    <label class="form-check-label">
69                        <input class="form-check-input" <?= $search_sources ? 'checked' : '' ?> name="search_sources"
70                               type="checkbox">
71                        <?= I18N::translate('Sources') ?>
72                    </label>
73                </div>
74
75                <div class="form-check form-check-inline">
76                    <label class="form-check-label">
77                        <input class="form-check-input" <?= $search_repositories ? 'checked' : '' ?>
78                               name="search_repositories" type="checkbox">
79                        <?= I18N::translate('Repositories') ?>
80                    </label>
81                </div>
82
83                <div class="form-check form-check-inline">
84                    <label class="form-check-label">
85                        <input class="form-check-input" <?= $search_notes ? 'checked' : '' ?> name="search_notes"
86                               type="checkbox">
87                        <?= I18N::translate('Shared notes') ?>
88                    </label>
89                </div>
90            </div>
91        </div>
92    </fieldset>
93
94    <?php if (count($all_trees) > 1) : ?>
95        <fieldset class="form-group">
96            <div class="row">
97                <label class="col-sm-3 col-form-label wt-page-options-label">
98                    <?= I18N::translate('Family trees') ?>
99                </label>
100                <div class="col-sm-9 wt-page-options-value pt-2">
101                    <div class="d-flex justify-content-between">
102                        <div id="search-trees" class="form-check">
103                            <?php foreach ($all_trees as $tree) : ?>
104                                <div class="col px-0">
105                                    <label class="form-check-label">
106                                        <input class="form-check form-check-input"
107                                               type="checkbox" <?= in_array($tree, $search_trees, true) ? 'checked' : '' ?>
108                                               value="<?= $tree->name() ?>" name="search_trees[]">
109                                        <?= e($tree->title()) ?>
110                                    </label>
111                                </div>
112                            <?php endforeach ?>
113                        </div>
114                        <?php if (count($all_trees) > 3) : ?>
115                            <div class="d-row align-self-end mb-2">
116                                <input type="button" class="btn btn-sm btn-secondary mx-1"
117                                       value="<?= /* I18N: select all (of the family trees) */
118                                       I18N::translate('select all') ?>"
119                                       onclick="$('#search-trees :checkbox').each(function(){$(this).attr('checked', true);});return false;">
120                                <input type="button" class="btn btn-sm btn-secondary mx-1"
121                                       value="<?= /* I18N: select none (of the family trees) */
122                                       I18N::translate('select none') ?>"
123                                       onclick="$('#search-trees :checkbox').each(function(){$(this).attr('checked', false);});return false;">
124                                <?php if (count($all_trees) > 10) : ?>
125                                    <input type="button" value="<?= I18N::translate('invert selection') ?>"
126                                           onclick="$('#search-trees :checkbox').each(function(){$(this).attr('checked', !$(this).attr('checked'));});return false;">
127                                <?php endif ?>
128                            </div>
129                        <?php endif ?>
130                    </div>
131                </div>
132            </div>
133        </fieldset>
134    <?php endif ?>
135
136    <div class="row form-group">
137        <label class="col-sm-3 col-form-label wt-page-options-label"></label>
138        <div class="col-sm-9 wt-page-options-value">
139            <input type="submit" class="btn btn-primary" value="<?= /* I18N: A button label. */
140            I18N::translate('search') ?>">
141        </div>
142    </div>
143</form>
144
145<?php if ($query !== '') : ?>
146    <?php if ($individuals->isEmpty() && $families->isEmpty() && $repositories->isEmpty() && $sources->isEmpty() && $notes->isEmpty()) : ?>
147        <div class="alert alert-info row">
148            <?= I18N::translate('No results found.') ?>
149        </div>
150    <?php else : ?>
151        <?= view('search-results', ['families' => $families, 'individuals' => $individuals, 'notes' => $notes, 'repositories' => $repositories, 'sources' => $sources, 'search_families' => $search_families, 'search_individuals' => $search_individuals, 'search_notes' => $search_notes, 'search_repositories' => $search_repositories, 'search_sources' => $search_sources, 'tree' => $tree]) ?>
152    <?php endif ?>
153<?php endif ?>
154
155<?= view('modals/on-screen-keyboard') ?>
156