Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 3416b114

Přidáno uživatelem Jan Šedivý před asi 6 roky(ů)

Re #7327 Předávání parametrů vyhledávání přes nově vytvořenou session sekci

Zobrazit rozdíly:

app/FrontModule/component/Transliteration/TransliterationSearchForm.latte
1
{form form class => 'form'}
2
    <div class="form-group">
3
        <div class="row">
4
            <div class="col">
5
                {label word1}
6
                {input word1 class => 'form-control'}
7
            </div>
8
            <div class="col">
9
                {label word2}
10
                <div class="input-group">
11
                    {input word2_condition class => 'form-control'}
12
                    {input word2 class => 'form-control'}
13
                </div>
14
            </div>
15
            <div class="col">
16
                {label word3}
17
                <div class="input-group">
18
                    {input word3_condition class => 'form-control'}
19
                    {input word3 class => 'form-control'}
20
                </div>
21
            </div>
22
        </div>
23
        {input exact_match}
24
        <hr>
25

  
26
        {*<div class="search-options">*}
27
            {*<div class="form-group row">*}
28
                {*<label for="book" class="col-sm-2 col-form-label">Book</label>*}
29
                {*<div class="col-sm-3">*}
30
                    {*<div class="input-group">*}
31

  
32
                        {*<select name="book-op" class="form-control">*}
33
                            {*<option value="equals">*}
34
                                {*equals*}
35
                            {*</option>*}
36
                            {*<option value="not equals">*}
37
                                {*not equals*}
38
                            {*</option>*}
39
                            {*<option value="contains" selected="selected">*}
40
                                {*contains*}
41
                            {*</option>*}
42
                            {*<option value="begins with">*}
43
                                {*begins with*}
44
                            {*</option>*}
45
                            {*<option value="ends with">*}
46
                                {*ends with*}
47
                            {*</option>*}
48
                        {*</select>*}
49
                        {*<input type="text" id="book" name="book" class="form-control">*}
50
                    {*</div>*}
51
                {*</div>*}
52
            {*</div>*}
53
            {*<div class="form-group row">*}
54
                {*<label for="museum-no" class="col-sm-2 col-form-label">Museum number</label>*}
55
                {*<div class="col-sm-3">*}
56
                    {*<div class="input-group">*}
57

  
58
                        {*<select name="museum-no-op" class="form-control">*}
59
                            {*<option value="equals">*}
60
                                {*equals*}
61
                            {*</option>*}
62
                            {*<option value="not equals">*}
63
                                {*not equals*}
64
                            {*</option>*}
65
                            {*<option value="contains" selected="selected">*}
66
                                {*contains*}
67
                            {*</option>*}
68
                            {*<option value="begins with">*}
69
                                {*begins with*}
70
                            {*</option>*}
71
                            {*<option value="ends with">*}
72
                                {*ends with*}
73
                            {*</option>*}
74
                        {*</select>*}
75
                        {*<input type="text" name="museum-no" id="museum-no" class="form-control">*}
76
                    {*</div>*}
77
                {*</div>*}
78
            {*</div>*}
79
            {*<div class="form-group row">*}
80
                {*<label for="id_book_type" class="col-sm-2 col-form-label">Type</label>*}
81
                {*<div class="col-sm-3">*}
82
                    {*<div class="input-group">*}
83

  
84
                        {*<select name="book-type-op" class="form-control">*}
85
                            {*<option value="is">*}
86
                                {*is*}
87
                            {*</option>*}
88
                            {*<option value="is not">*}
89
                                {*is not*}
90
                            {*</option>*}
91
                        {*</select>*}
92
                        {*<select name="id_book_type" id="id_book_type" class="form-control">*}
93

  
94
                            {*<option value="0" label="- NOT SELECTED -">*}
95
                                {*- NOT SELECTED -*}
96
                            {*</option>*}
97
                            {*<option value="1" label="letter">*}
98
                                {*letter*}
99
                            {*</option>*}
100
                            {*<option value="2" label="document">*}
101
                                {*document*}
102
                            {*</option>*}
103
                            {*<option value="3" label="epic">*}
104
                                {*epic*}
105
                            {*</option>*}
106
                            {*<option value="4" label="hymn">*}
107
                                {*hymn*}
108
                            {*</option>*}
109
                            {*<option value="5" label="incantation">*}
110
                                {*incantation*}
111
                            {*</option>*}
112
                            {*<option value="6" label="legal text">*}
113
                                {*legal text*}
114
                            {*</option>*}
115
                            {*<option value="8" label="mathematics">*}
116
                                {*mathematics*}
117
                            {*</option>*}
118
                            {*<option value="9" label="omina">*}
119
                                {*omina*}
120
                            {*</option>*}
121
                            {*<option value="10" label="other">*}
122
                                {*other*}
123
                            {*</option>*}
124
                            {*<option value="11" label="royal inscription">*}
125
                                {*royal inscription*}
126
                            {*</option>*}
127
                            {*<option value="13" label="school text">*}
128
                                {*school text*}
129
                            {*</option>*}
130

  
131
                        {*</select>*}
132
                    {*</div>*}
133
                {*</div>*}
134
            {*</div>*}
135
            {*<div class="form-group row">*}
136
                {*<label for="id_origin" class="col-sm-2 col-form-label">Origin</label>*}
137
                {*<div class="col-sm-3">*}
138
                    {*<div class="input-group">*}
139

  
140
                        {*<select name="origin-op" class="form-control">*}
141
                            {*<option value="is">*}
142
                                {*is*}
143
                            {*</option>*}
144
                            {*<option value="is not">*}
145
                                {*is not*}
146
                            {*</option>*}
147
                        {*</select>*}
148
                        {*<select name="id_origin" id="id_origin" class="form-control">*}
149

  
150
                            {*<option value="0" label="- NOT SELECTED -">*}
151
                                {*/ - NOT SELECTED -*}
152
                            {*</option>*}
153
                            {*<option value="9" label="Tell Ḫarīrī">*}
154
                                {*Mari / Tell Ḫarīrī*}
155
                            {*</option>*}
156
                            {*<option value="10" label="Išān Baḫriyāt">*}
157
                                {*Isin / Išān Baḫriyāt*}
158
                            {*</option>*}
159
                            {*<option value="11" label="Nuffar">*}
160
                                {*Nippur / Nuffar*}
161
                            {*</option>*}
162
                            {*<option value="1" label="Babylon">*}
163
                                {*Bābili / Babylon*}
164
                            {*</option>*}
165
                            {*<option value="2" label="Tell Inġarra, Tell al-Uḫaimir">*}
166
                                {*Kiš / Tell Inġarra, Tell al-Uḫaimir*}
167
                            {*</option>*}
168
                            {*<option value="3" label="Abū Ḫaṭab">*}
169
                                {*Kisurra / Abū Ḫaṭab*}
170
                            {*</option>*}
171
                            {*<option value="4" label="unknown">*}
172
                                {*Lagaba / unknown*}
173
                            {*</option>*}
174
                            {*<option value="5" label="as-Sankara">*}
175
                                {*Larsa / as-Sankara*}
176
                            {*</option>*}
177
                            {*<option value="6" label="Tell Harmal">*}
178
                                {*Šaduppûm / Tell Harmal*}
179
                            {*</option>*}
180
                            {*<option value="12" label="Tell Asmar">*}
181
                                {*Ešnunna / Tell Asmar*}
182
                            {*</option>*}
183
                            {*<option value="13" label="Tell al-Muqaiyar">*}
184
                                {*Ur / Tell al-Muqaiyar*}
185
                            {*</option>*}
186
                            {*<option value="14" label="Tulūl al-Ḫumr">*}
187
                                {*- / Tulūl al-Ḫumr*}
188
                            {*</option>*}
189
                            {*<option value="15" label="Tell Abū Duwari">*}
190
                                {*Maškan-šāpir / Tell Abū Duwari*}
191
                            {*</option>*}
192
                            {*<option value="16" label="Khafajah">*}
193
                                {*/ Khafajah*}
194
                            {*</option>*}
195
                            {*<option value="17" label="Borsippa, Birs Nimrūd">*}
196
                                {*Barsip / Borsippa, Birs Nimrūd*}
197
                            {*</option>*}
198
                            {*<option value="18" label="Tell Abū Ḫabba">*}
199
                                {*Sippar / Tell Abū Ḫabba*}
200
                            {*</option>*}
201
                            {*<option value="19" label="Tell Muḫammad">*}
202
                                {*Diniktum? / Tell Muḫammad*}
203
                            {*</option>*}
204
                            {*<option value="21" label="Khafajah">*}
205
                                {*Dūr-Samsu-iluna / Khafajah*}
206
                            {*</option>*}
207
                            {*<option value="22" label="">*}
208
                                {*unknown /*}
209
                            {*</option>*}
210
                            {*<option value="24" label="Sūsa">*}
211
                                {*Šūšan / Sūsa*}
212
                            {*</option>*}
213
                            {*<option value="23" label="Warka">*}
214
                                {*Uruk / Warka*}
215
                            {*</option>*}
216
                            {*<option value="25" label="Ishchali">*}
217
                                {*Nērebtum? / Ishchali*}
218
                            {*</option>*}
219
                            {*<option value="26" label="Cytheria (island)">*}
220
                                {*/ Cytheria (island)*}
221
                            {*</option>*}
222
                            {*<option value="27" label="Cyprus">*}
223
                                {*Iadnāna / Cyprus*}
224
                            {*</option>*}
225
                            {*<option value="29" label="Qalʾat Šarqāṭ">*}
226
                                {*Aššur / Qalʾat Šarqāṭ*}
227
                            {*</option>*}
228
                            {*<option value="28" label="Tell Ḫaddād">*}
229
                                {*Mê-Turran / Tell Ḫaddād*}
230
                            {*</option>*}
231
                            {*<option value="30" label="Tell Leilān">*}
232
                                {*Šubat-Enlil / Tell Leilān*}
233
                            {*</option>*}
234
                            {*<option value="31" label="Acem Höyük">*}
235
                                {*? / Acem Höyük*}
236
                            {*</option>*}
237
                            {*<option value="32" label="Tell al-ʾAšāra">*}
238
                                {*Terqa / Tell al-ʾAšāra*}
239
                            {*</option>*}
240
                            {*<option value="33" label="Išān Dhaḫāk">*}
241
                                {*/ Išān Dhaḫāk*}
242
                            {*</option>*}
243
                            {*<option value="34" label="Tell ad-Dibāʾī">*}
244
                                {*Zaralulu / Tell ad-Dibāʾī*}
245
                            {*</option>*}
246
                            {*<option value="35" label="Tell al-Suleimaḫ">*}
247
                                {*Batir? / Tell al-Suleimaḫ*}
248
                            {*</option>*}
249
                            {*<option value="36" label="Bardi Sanjian in Bītwāta">*}
250
                                {*/ Bardi Sanjian in Bītwāta*}
251
                            {*</option>*}
252
                            {*<option value="37" label="near Tūz Ḫurmati">*}
253
                                {*Ḫuršītum? / near Tūz Ḫurmati*}
254
                            {*</option>*}
255
                            {*<option value="38" label="Tell Šamšāra">*}
256
                                {*Šušarrā / Tell Šamšāra*}
257
                            {*</option>*}
258
                            {*<option value="39" label="Dura-Europos">*}
259
                                {*Damara / Dura-Europos*}
260
                            {*</option>*}
261
                            {*<option value="20" label="Tell ar-Rimāḫ">*}
262
                                {*Qaṭṭarā / Tell ar-Rimāḫ*}
263
                            {*</option>*}
264
                            {*<option value="40" label="Tell Açana">*}
265
                                {*Alalaḫ / Tell Açana*}
266
                            {*</option>*}
267
                            {*<option value="7" label="Rās aš-Šamra">*}
268
                                {*Ugarit / Rās aš-Šamra*}
269
                            {*</option>*}
270
                            {*<option value="41" label="Tell Mardiḫ">*}
271
                                {*Ebla / Tell Mardiḫ*}
272
                            {*</option>*}
273
                            {*<option value="42" label="Hillah (near Babylon)">*}
274
                                {*/ Hillah (near Babylon)*}
275
                            {*</option>*}
276
                            {*<option value="43" label="Bismāya">*}
277
                                {*Adab / Bismāya*}
278
                            {*</option>*}
279
                            {*<option value="44" label="al-Hibā">*}
280
                                {*Lagaš / al-Hibā*}
281
                            {*</option>*}
282
                            {*<option value="45" label="Tell ed-Dēr">*}
283
                                {*Sippar-Iaḫrūrum / Tell ed-Dēr*}
284
                            {*</option>*}
285
                            {*<option value="46" label="Tell Dulaiḫim or Tell Muḫaṭṭaṭ">*}
286
                                {*Dilbat / Tell Dulaiḫim or Tell Muḫaṭṭaṭ*}
287
                            {*</option>*}
288

  
289
                        {*</select>*}
290
                    {*</div>*}
291
                {*</div>*}
292
            {*</div>*}
293
            {*<div class="form-group row">*}
294
                {*<label for="reg_no" class="col-sm-2 col-form-label">Registration / Ex. number</label>*}
295
                {*<div class="col-sm-3">*}
296
                    {*<div class="input-group">*}
297

  
298
                        {*<select name="reg_no-op" class="form-control">*}
299
                            {*<option value="equals">*}
300
                                {*equals*}
301
                            {*</option>*}
302
                            {*<option value="not equals">*}
303
                                {*not equals*}
304
                            {*</option>*}
305
                            {*<option value="contains" selected="selected">*}
306
                                {*contains*}
307
                            {*</option>*}
308
                            {*<option value="begins with">*}
309
                                {*begins with*}
310
                            {*</option>*}
311
                            {*<option value="ends with">*}
312
                                {*ends with*}
313
                            {*</option>*}
314
                        {*</select>*}
315
                        {*<input type="text" id="reg_no" name="reg_no" class="form-control">*}
316
                    {*</div>*}
317
                {*</div>*}
318
            {*</div>*}
319
            {*<div class="form-group row">*}
320
                {*<label for="date" class="col-sm-2 col-form-label">Date</label>*}
321
                {*<div class="col-sm-3">*}
322
                    {*<div class="input-group">*}
323

  
324
                        {*<select name="date-op" class="form-control">*}
325
                            {*<option value="equals">*}
326
                                {*equals*}
327
                            {*</option>*}
328
                            {*<option value="not equals">*}
329
                                {*not equals*}
330
                            {*</option>*}
331
                            {*<option value="contains" selected="selected">*}
332
                                {*contains*}
333
                            {*</option>*}
334
                            {*<option value="begins with">*}
335
                                {*begins with*}
336
                            {*</option>*}
337
                            {*<option value="ends with">*}
338
                                {*ends with*}
339
                            {*</option>*}
340
                        {*</select>*}
341
                        {*<input type="text" id="date" name="date" class="form-control">*}
342
                    {*</div>*}
343
                {*</div>*}
344
            {*</div>*}
345
        {*</div>*}
346
        {*<hr>*}
347

  
348
        {*<label for="line-count">Representation of search result:</label>*}
349
        {*<div class="form-inline">*}
350
            {*<div class="form-group">*}
351
                {*<small class="text-muted">*}
352
                    {*Print*}
353
                {*</small>*}
354
                {*<select name="line-count" id="line-count" class="form-control form-control-sm mx-sm-3">*}
355
                    {*<option value="0" selected="selected">0</option>*}
356
                    {*<option value="1">1</option>*}
357
                    {*<option value="2">2</option>*}
358
                    {*<option value="3">3</option>*}
359
                    {*<option value="5">5</option>*}
360
                    {*<option value="10">10</option>*}
361
                    {*<option value="15">15</option>*}
362
                {*</select>*}
363
                {*<small id="passwordHelpInline" class="text-muted">*}
364
                    {*lines before and after found line.*}
365
                {*</small>*}
366
            {*</div>*}
367
        {*</div>*}
368
        {*<div class="form-inline">*}
369
            {*<div class="form-group">*}
370
                {*<small class="text-muted">*}
371
                    {*Show*}
372
                {*</small>*}
373
                {*<select name="r_limit" class="form-control form-control-sm mx-sm-3">*}
374
                    {*<option value="1">1</option>*}
375
                    {*<option value="2">2</option>*}
376
                    {*<option value="3">3</option>*}
377
                    {*<option value="5" selected="selected">5</option>*}
378
                    {*<option value="10">10</option>*}
379
                    {*<option value="15">15</option>*}
380
                    {*<option value="30">30</option>*}
381
                {*</select>*}
382
                {*<small class="text-muted">*}
383
                    {*found transliteration per site.*}
384
                {*</small>*}
385
            {*</div>*}
386
        {*</div>*}
387
    </div>
388
    <div class="form-group row">
389
        <div class="col-sm-10">
390
            {input submit class => 'btn btn-outline-dark'}
391
        </div>
392
    </div>
393

  
394
{/form}
app/FrontModule/component/Transliteration/TransliterationSearchForm.php
1
<?php
2

  
3
namespace App\FrontModule\Components;
4

  
5
use App\Enum\ELogicalConditions;
6
use App\Model\TransliterationSearchModel;
7
use Nette\Application\UI\Control;
8
use Nette\Application\UI\Form;
9

  
10
class TransliterationSearchForm extends Control
11
{
12
    /** @var TransliterationSearchModel */
13
    private $transliterationSearchModel;
14

  
15
    /**
16
     * TransliterationSearchForm constructor.
17
     * @param TransliterationSearchModel $transliterationSearchModel
18
     */
19
    public function __construct(TransliterationSearchModel $transliterationSearchModel)
20
    {
21
        parent::__construct();
22
        $this->transliterationSearchModel = $transliterationSearchModel;
23
    }
24

  
25

  
26
    public function render()
27
    {
28
        $this->template->setFile(__DIR__ . '/TransliterationSearchForm.latte');
29
        $this->template->render();
30
    }
31

  
32
    public function createComponentForm()
33
    {
34
        $form = new Form();
35

  
36
        $form->addText('word1', 'Word 1')
37
            ->setRequired(true, 'Field Word 1 is required');
38
        $form->addText('word2', 'Word 2');
39
        $form->addSelect('word2_condition', '', ELogicalConditions::$selectValues);
40
        $form->addText('word3', 'Word 3');
41
        $form->addSelect('word3_condition', '', ELogicalConditions::$selectValues);
42

  
43
        $form->addCheckbox('exact_match', ' Exact Match');
44

  
45
        $form->addSubmit('submit', 'Search');
46
        $form->onSuccess[] = [$this, 'formSuccess'];
47

  
48
        return $form;
49
    }
50

  
51
    public function formSuccess(Form $form)
52
    {
53
        $values = $form->getValues();
54
        $this->transliterationSearchModel->setSearchTerms($values);
55
        $this->presenter->redirect('Transliteration:searchResult');
56
    }
57
}
58

  
59
interface ITransliterationSearchFormFactory{
60
    /**
61
     * @return TransliterationSearchForm
62
     */
63
    public function create();
64
}
app/FrontModule/presenters/TransliterationPresenter.php
1
<?php
2

  
3
namespace App\FrontModule\Presenters;
4

  
5

  
6

  
7
use App\FrontModule\Components\ITransliterationSearchFormFactory;
8
use App\Model\Repository\TransliterationRepository;
9
use App\Model\TransliterationSearchModel;
10
use Nette\Application\UI\Presenter;
11

  
12
class TransliterationPresenter extends Presenter
13
{
14
    /** @var ITransliterationSearchFormFactory */
15
    private $transliterationSearchFormFactory;
16

  
17
    /** @var TransliterationRepository */
18
    private $transliterationRepository;
19

  
20
    /** @var TransliterationSearchModel */
21
    private $transliterationSearchModel;
22

  
23
    public function __construct(
24
        ITransliterationSearchFormFactory $transliterationSearchFormFactory,
25
        TransliterationRepository $transliterationRepository,
26
        TransliterationSearchModel $transliterationSearchModel
27
    )
28
    {
29
        parent::__construct();
30

  
31
        $this->transliterationSearchFormFactory = $transliterationSearchFormFactory;
32
        $this->transliterationRepository = $transliterationRepository;
33
        $this->transliterationSearchModel = $transliterationSearchModel;
34
    }
35

  
36

  
37
    public function actionSearch()
38
    {
39

  
40
    }
41

  
42
    public function actionSearchResult()
43
    {
44
        $searchTerms = $this->transliterationSearchModel->getSearchTerms();
45

  
46
        if (!$searchTerms)
47
        {
48
            $this->redirect('Transliteration:search');
49
        }
50

  
51
        if(!$searchTerms['word1'])
52
        {
53
            $this->redirect('Transliteration:search');
54
        }
55

  
56
        $resultRows = $this->transliterationRepository->transliterationsFulltextSearch($searchTerms);
57

  
58
        $this->template->resultRows = $resultRows;
59
    }
60

  
61
    public function createComponentTransliterationSearchForm()
62
    {
63
        return $this->transliterationSearchFormFactory->create();
64
    }
65
}
app/FrontModule/templates/Transliteration/search.latte
1
{block content}
2
    <div class="display-5">Search in transliterations</div>
3
    <hr>
4
    {control transliterationSearchForm}
5
{/block}
app/FrontModule/templates/Transliteration/searchResult.latte
1
{block content}
2
    <div class="display-5">Search in texts - Results</div>
3

  
4
    <div class="row h-100 pagination-header">
5
        <div class="col my-auto">
6
            <nav aria-label="Page navigation example">
7
                <ul class="pagination">
8
                    <li class="page-item"><a class="page-link" href="#"><span aria-hidden="true">&laquo;</span>
9
                            <span class="sr-only">Previous</span></a></li>
10
                    <li class="page-item"><a class="page-link" href="#"><span aria-hidden="true">&lsaquo;</span>
11
                            <span class="sr-only">Previous</span></a></li>
12
                    <li class="page-item active"><a class="page-link" href="#">1</a></li>
13
                    <li class="page-item"><a class="page-link" href="#">2</a></li>
14
                    <li class="page-item"><a class="page-link" href="#">3</a></li>
15
                    <li class="page-item"><a class="page-link" href="#">4</a></li>
16
                    <li class="page-item"><a class="page-link" href="#">5</a></li>
17
                    <li class="page-item"><a class="page-link" href="#"><span aria-hidden="true">&rsaquo;</span>
18
                            <span class="sr-only">Next</span></a></li>
19
                    <li class="page-item"><a class="page-link" href="#"><span aria-hidden="true">&raquo;</span>
20
                            <span class="sr-only">Next</span></a></li>
21
                </ul>
22
            </nav>
23
        </div>
24
        <div class="col text-right my-auto">
25
            <span class="text-muted align-middle">
26
                Total count: 23655. Showing page 1 of 4731 (5 results per site).
27
            </span>
28
        </div>
29
    </div>
30

  
31
    {foreach $resultRows as $result}
32
        <hr>
33

  
34
        <a href="transliteration-info.html">
35
            {$result->book_abrev}, {$result->chapter}
36
        </a>
37
        <div>
38
            <span class="lineno linefound">{$result->line_number}.</span>
39
            <span class="line">{$result->transliteration}</span>
40
        </div>
41

  
42
    {/foreach}
43
{/block}
app/component/Transliteration/TransliterationSearchForm.latte
1
{form form class => 'form'}
2
    <div class="form-group">
3
        <div class="row">
4
            <div class="col">
5
                {label word1}
6
                {input word1 class => 'form-control'}
7
            </div>
8
            <div class="col">
9
                {label word2}
10
                <div class="input-group">
11
                    {input word2_condition class => 'form-control'}
12
                    {input word2 class => 'form-control'}
13
                </div>
14
            </div>
15
            <div class="col">
16
                {label word3}
17
                <div class="input-group">
18
                    {input word3_condition class => 'form-control'}
19
                    {input word3 class => 'form-control'}
20
                </div>
21
            </div>
22
        </div>
23
        <input name="exact-match" id="exact-match" type="checkbox">
24
        <label for="exact-match">Exact Match</label>
25
        <br>
26
        <a href="/nobtc/app/webroot/pages/hints-for-search">Hints for search</a>
27
        <hr>
28

  
29
        <div class="search-options">
30
            <div class="form-group row">
31
                <label for="book" class="col-sm-2 col-form-label">Book</label>
32
                <div class="col-sm-3">
33
                    <div class="input-group">
34

  
35
                        <select name="book-op" class="form-control">
36
                            <option value="equals">
37
                                equals
38
                            </option>
39
                            <option value="not equals">
40
                                not equals
41
                            </option>
42
                            <option value="contains" selected="selected">
43
                                contains
44
                            </option>
45
                            <option value="begins with">
46
                                begins with
47
                            </option>
48
                            <option value="ends with">
49
                                ends with
50
                            </option>
51
                        </select>
52
                        <input type="text" id="book" name="book" class="form-control">
53
                    </div>
54
                </div>
55
            </div>
56
            <div class="form-group row">
57
                <label for="museum-no" class="col-sm-2 col-form-label">Museum number</label>
58
                <div class="col-sm-3">
59
                    <div class="input-group">
60

  
61
                        <select name="museum-no-op" class="form-control">
62
                            <option value="equals">
63
                                equals
64
                            </option>
65
                            <option value="not equals">
66
                                not equals
67
                            </option>
68
                            <option value="contains" selected="selected">
69
                                contains
70
                            </option>
71
                            <option value="begins with">
72
                                begins with
73
                            </option>
74
                            <option value="ends with">
75
                                ends with
76
                            </option>
77
                        </select>
78
                        <input type="text" name="museum-no" id="museum-no" class="form-control">
79
                    </div>
80
                </div>
81
            </div>
82
            <div class="form-group row">
83
                <label for="id_book_type" class="col-sm-2 col-form-label">Type</label>
84
                <div class="col-sm-3">
85
                    <div class="input-group">
86

  
87
                        <select name="book-type-op" class="form-control">
88
                            <option value="is">
89
                                is
90
                            </option>
91
                            <option value="is not">
92
                                is not
93
                            </option>
94
                        </select>
95
                        <select name="id_book_type" id="id_book_type" class="form-control">
96

  
97
                            <option value="0" label="- NOT SELECTED -">
98
                                - NOT SELECTED -
99
                            </option>
100
                            <option value="1" label="letter">
101
                                letter
102
                            </option>
103
                            <option value="2" label="document">
104
                                document
105
                            </option>
106
                            <option value="3" label="epic">
107
                                epic
108
                            </option>
109
                            <option value="4" label="hymn">
110
                                hymn
111
                            </option>
112
                            <option value="5" label="incantation">
113
                                incantation
114
                            </option>
115
                            <option value="6" label="legal text">
116
                                legal text
117
                            </option>
118
                            <option value="8" label="mathematics">
119
                                mathematics
120
                            </option>
121
                            <option value="9" label="omina">
122
                                omina
123
                            </option>
124
                            <option value="10" label="other">
125
                                other
126
                            </option>
127
                            <option value="11" label="royal inscription">
128
                                royal inscription
129
                            </option>
130
                            <option value="13" label="school text">
131
                                school text
132
                            </option>
133

  
134
                        </select>
135
                    </div>
136
                </div>
137
            </div>
138
            <div class="form-group row">
139
                <label for="id_origin" class="col-sm-2 col-form-label">Origin</label>
140
                <div class="col-sm-3">
141
                    <div class="input-group">
142

  
143
                        <select name="origin-op" class="form-control">
144
                            <option value="is">
145
                                is
146
                            </option>
147
                            <option value="is not">
148
                                is not
149
                            </option>
150
                        </select>
151
                        <select name="id_origin" id="id_origin" class="form-control">
152

  
153
                            <option value="0" label="- NOT SELECTED -">
154
                                / - NOT SELECTED -
155
                            </option>
156
                            <option value="9" label="Tell Ḫarīrī">
157
                                Mari / Tell Ḫarīrī
158
                            </option>
159
                            <option value="10" label="Išān Baḫriyāt">
160
                                Isin / Išān Baḫriyāt
161
                            </option>
162
                            <option value="11" label="Nuffar">
163
                                Nippur / Nuffar
164
                            </option>
165
                            <option value="1" label="Babylon">
166
                                Bābili / Babylon
167
                            </option>
168
                            <option value="2" label="Tell Inġarra, Tell al-Uḫaimir">
169
                                Kiš / Tell Inġarra, Tell al-Uḫaimir
170
                            </option>
171
                            <option value="3" label="Abū Ḫaṭab">
172
                                Kisurra / Abū Ḫaṭab
173
                            </option>
174
                            <option value="4" label="unknown">
175
                                Lagaba / unknown
176
                            </option>
177
                            <option value="5" label="as-Sankara">
178
                                Larsa / as-Sankara
179
                            </option>
180
                            <option value="6" label="Tell Harmal">
181
                                Šaduppûm / Tell Harmal
182
                            </option>
183
                            <option value="12" label="Tell Asmar">
184
                                Ešnunna / Tell Asmar
185
                            </option>
186
                            <option value="13" label="Tell al-Muqaiyar">
187
                                Ur / Tell al-Muqaiyar
188
                            </option>
189
                            <option value="14" label="Tulūl al-Ḫumr">
190
                                - / Tulūl al-Ḫumr
191
                            </option>
192
                            <option value="15" label="Tell Abū Duwari">
193
                                Maškan-šāpir / Tell Abū Duwari
194
                            </option>
195
                            <option value="16" label="Khafajah">
196
                                / Khafajah
197
                            </option>
198
                            <option value="17" label="Borsippa, Birs Nimrūd">
199
                                Barsip / Borsippa, Birs Nimrūd
200
                            </option>
201
                            <option value="18" label="Tell Abū Ḫabba">
202
                                Sippar / Tell Abū Ḫabba
203
                            </option>
204
                            <option value="19" label="Tell Muḫammad">
205
                                Diniktum? / Tell Muḫammad
206
                            </option>
207
                            <option value="21" label="Khafajah">
208
                                Dūr-Samsu-iluna / Khafajah
209
                            </option>
210
                            <option value="22" label="">
211
                                unknown /
212
                            </option>
213
                            <option value="24" label="Sūsa">
214
                                Šūšan / Sūsa
215
                            </option>
216
                            <option value="23" label="Warka">
217
                                Uruk / Warka
218
                            </option>
219
                            <option value="25" label="Ishchali">
220
                                Nērebtum? / Ishchali
221
                            </option>
222
                            <option value="26" label="Cytheria (island)">
223
                                / Cytheria (island)
224
                            </option>
225
                            <option value="27" label="Cyprus">
226
                                Iadnāna / Cyprus
227
                            </option>
228
                            <option value="29" label="Qalʾat Šarqāṭ">
229
                                Aššur / Qalʾat Šarqāṭ
230
                            </option>
231
                            <option value="28" label="Tell Ḫaddād">
232
                                Mê-Turran / Tell Ḫaddād
233
                            </option>
234
                            <option value="30" label="Tell Leilān">
235
                                Šubat-Enlil / Tell Leilān
236
                            </option>
237
                            <option value="31" label="Acem Höyük">
238
                                ? / Acem Höyük
239
                            </option>
240
                            <option value="32" label="Tell al-ʾAšāra">
241
                                Terqa / Tell al-ʾAšāra
242
                            </option>
243
                            <option value="33" label="Išān Dhaḫāk">
244
                                / Išān Dhaḫāk
245
                            </option>
246
                            <option value="34" label="Tell ad-Dibāʾī">
247
                                Zaralulu / Tell ad-Dibāʾī
248
                            </option>
249
                            <option value="35" label="Tell al-Suleimaḫ">
250
                                Batir? / Tell al-Suleimaḫ
251
                            </option>
252
                            <option value="36" label="Bardi Sanjian in Bītwāta">
253
                                / Bardi Sanjian in Bītwāta
254
                            </option>
255
                            <option value="37" label="near Tūz Ḫurmati">
256
                                Ḫuršītum? / near Tūz Ḫurmati
257
                            </option>
258
                            <option value="38" label="Tell Šamšāra">
259
                                Šušarrā / Tell Šamšāra
260
                            </option>
261
                            <option value="39" label="Dura-Europos">
262
                                Damara / Dura-Europos
263
                            </option>
264
                            <option value="20" label="Tell ar-Rimāḫ">
265
                                Qaṭṭarā / Tell ar-Rimāḫ
266
                            </option>
267
                            <option value="40" label="Tell Açana">
268
                                Alalaḫ / Tell Açana
269
                            </option>
270
                            <option value="7" label="Rās aš-Šamra">
271
                                Ugarit / Rās aš-Šamra
272
                            </option>
273
                            <option value="41" label="Tell Mardiḫ">
274
                                Ebla / Tell Mardiḫ
275
                            </option>
276
                            <option value="42" label="Hillah (near Babylon)">
277
                                / Hillah (near Babylon)
278
                            </option>
279
                            <option value="43" label="Bismāya">
280
                                Adab / Bismāya
281
                            </option>
282
                            <option value="44" label="al-Hibā">
283
                                Lagaš / al-Hibā
284
                            </option>
285
                            <option value="45" label="Tell ed-Dēr">
286
                                Sippar-Iaḫrūrum / Tell ed-Dēr
287
                            </option>
288
                            <option value="46" label="Tell Dulaiḫim or Tell Muḫaṭṭaṭ">
289
                                Dilbat / Tell Dulaiḫim or Tell Muḫaṭṭaṭ
290
                            </option>
291

  
292
                        </select>
293
                    </div>
294
                </div>
295
            </div>
296
            <div class="form-group row">
297
                <label for="reg_no" class="col-sm-2 col-form-label">Registration / Ex. number</label>
298
                <div class="col-sm-3">
299
                    <div class="input-group">
300

  
301
                        <select name="reg_no-op" class="form-control">
302
                            <option value="equals">
303
                                equals
304
                            </option>
305
                            <option value="not equals">
306
                                not equals
307
                            </option>
308
                            <option value="contains" selected="selected">
309
                                contains
310
                            </option>
311
                            <option value="begins with">
312
                                begins with
313
                            </option>
314
                            <option value="ends with">
315
                                ends with
316
                            </option>
317
                        </select>
318
                        <input type="text" id="reg_no" name="reg_no" class="form-control">
319
                    </div>
320
                </div>
321
            </div>
322
            <div class="form-group row">
323
                <label for="date" class="col-sm-2 col-form-label">Date</label>
324
                <div class="col-sm-3">
325
                    <div class="input-group">
326

  
327
                        <select name="date-op" class="form-control">
328
                            <option value="equals">
329
                                equals
330
                            </option>
331
                            <option value="not equals">
332
                                not equals
333
                            </option>
334
                            <option value="contains" selected="selected">
335
                                contains
336
                            </option>
337
                            <option value="begins with">
338
                                begins with
339
                            </option>
340
                            <option value="ends with">
341
                                ends with
342
                            </option>
343
                        </select>
344
                        <input type="text" id="date" name="date" class="form-control">
345
                    </div>
346
                </div>
347
            </div>
348
        </div>
349
        <hr>
350

  
351
        <label for="line-count">Representation of search result:</label>
352
        <div class="form-inline">
353
            <div class="form-group">
354
                <small class="text-muted">
355
                    Print
356
                </small>
357
                <select name="line-count" id="line-count" class="form-control form-control-sm mx-sm-3">
358
                    <option value="0" selected="selected">0</option>
359
                    <option value="1">1</option>
360
                    <option value="2">2</option>
361
                    <option value="3">3</option>
362
                    <option value="5">5</option>
363
                    <option value="10">10</option>
364
                    <option value="15">15</option>
365
                </select>
366
                <small id="passwordHelpInline" class="text-muted">
367
                    lines before and after found line.
368
                </small>
369
            </div>
370
        </div>
371
        <div class="form-inline">
372
            <div class="form-group">
373
                <small class="text-muted">
374
                    Show
375
                </small>
376
                <select name="r_limit" class="form-control form-control-sm mx-sm-3">
377
                    <option value="1">1</option>
378
                    <option value="2">2</option>
379
                    <option value="3">3</option>
380
                    <option value="5" selected="selected">5</option>
381
                    <option value="10">10</option>
382
                    <option value="15">15</option>
383
                    <option value="30">30</option>
384
                </select>
385
                <small class="text-muted">
386
                    found transliteration per site.
387
                </small>
388
            </div>
389
        </div>
390
    </div>
391
    <div class="form-group row">
392
        <div class="col-sm-10">
393
            {input submit class => 'btn btn-outline-dark'}
394
        </div>
395
    </div>
396

  
397
{/form}
app/component/Transliteration/TransliterationSearchForm.php
1
<?php
2

  
3
namespace App\Components;
4

  
5
use App\Enum\ELogicalConditions;
6
use Nette\Application\UI\Control;
7
use Nette\Forms\Form;
8

  
9
class TransliterationSearchForm extends Control
10
{
11
    public function render()
12
    {
13
        $this->template->setFile(__DIR__ . '/TransliterationSearchForm.latte');
14
        $this->template->render();
15
    }
16

  
17
    public function createComponentForm()
18
    {
19
        $form = new Form();
20
        $form->addText('word1', 'Word 1');
21
        $form->addText('word2', 'Word 2');
22
        $form->addSelect('word2_condition', '', ELogicalConditions::$selectValues);
23
        $form->addText('word3', 'Word 3');
24
        $form->addSelect('word3_condition', '', ELogicalConditions::$selectValues);
25

  
26
        $form->addSubmit('submit', 'Search');
27

  
28
        $form->onSuccess[] = [$this, 'formSubmit'];
29

  
30
        return $form;
31
    }
32

  
33
    public function formSubmit()
34
    {
35

  
36
    }
37
}
38

  
39
interface ITransliterationSearchFormFactory{
40
    /**
41
     * @return TransliterationSearchForm
42
     */
43
    public function create();
44
}
app/config/components.neon
6 6
    # Formuláře
7 7
    - App\FrontModule\Components\ILoginFormFactory
8 8
    - App\AdminModule\Components\IUserEditFormFactory
9
    - App\Components\ITransliterationSearchFormFactory
9
    - App\FrontModule\Components\ITransliterationSearchFormFactory
app/config/model.neon
1 1
services:
2
    #Repository
2 3
    - App\Model\Repository\Repository
3 4
    - App\Model\Repository\BookRepository
4 5
    - App\Model\Repository\BookTypeRepository
......
16 17
    - App\Model\Repository\UserRepository
17 18
    - App\Model\Repository\UserRoleRepository
18 19

  
19
    - App\Model\Facade\UserFacade
20
    #Facade
21
    - App\Model\Facade\UserFacade
22

  
23
    #Sessions
24
    - App\Model\TransliterationSearchModel
app/enum/ELogicalConditions.php
16 16
        self::OR => 'OR',
17 17
        self::AND_NOT => 'AND NOT'
18 18
    ];
19

  
20
    public static $whereCondition = [
21
        self::AND => 'AND',
22
        self::OR => 'OR',
23
        self::AND_NOT => 'AND NOT'
24
    ];
19 25
}
app/model/TransliterationSearchModel.php
1
<?php
2

  
3
namespace App\Model;
4

  
5

  
6
use Nette\Http\Session;
7
use Nette\Http\SessionSection;
8

  
9
class TransliterationSearchModel
10
{
11
    const SECTION_NAME = 'TransliterationSearch';
12
    const SECTION_EXPIRATION = 0;
13

  
14
    /** @var SessionSection */
15
    private $section;
16

  
17
    public function __construct(Session $session)
18
    {
19
        $this->section = $session->getSection(self::SECTION_NAME);
20
        $this->section->setExpiration(self::SECTION_EXPIRATION);
21
    }
22

  
23
    /**
24
     * @return SessionSection
25
     */
26
    public function getTransliterationSearchSection()
27
    {
28
        return $this->section;
29
    }
30

  
31
    public function setSearchTerms($searchTerms)
32
    {
33
        $this->section->searchTerms = $searchTerms;
34
    }
35

  
36
    public function getSearchTerms()
37
    {
38
        return $this->section->searchTerms;
39
    }
40
}
app/model/repository/TransliterationRepository.php
2 2

  
3 3
namespace App\Model\Repository;
4 4

  
5
use App\Enum\ELogicalConditions;
6

  
5 7
/**
6 8
 * Repository pro práci s tabulkou `transliteration`
7 9
 *
......
25 27
    const COLUMN_REG_NO = 'reg_no';
26 28
    const COLUMN_DATE = 'date';
27 29
    const COLUMN_NOTE = 'note';
30

  
31
    public function transliterationsFulltextSearch($queryParams)
32
    {
33
        $where = '';
34
        $whereArgs = [];
35

  
36
        if($queryParams['exact_match'])
37
        {
38
            $where .= "l.transliteration LIKE '%?%' ";
39
            $whereArgs[] = $queryParams['word1'];
40
        }
41
        else
42
        {
43
            $where .= "l.transliteration LIKE '%?%' ";
44
            $whereArgs[] = $queryParams['word1'];
45
        }
46

  
47
        $query = "SELECT b.book_abrev, t.chapter, l.transliteration, l.line_number FROM transliteration t
48
                  LEFT JOIN surface s ON s.id_transliteration = t.id_transliteration
49
                  LEFT JOIN line l ON l.id_surface = s.id_surface
50
                  LEFT JOIN book b on t.id_book = b.id_book
51
                  WHERE " . $where;
52

  
53
        return $this->context->queryArgs($query, $whereArgs);
54
    }
28 55
}
app/presenters/TransliterationPresenter.php
1
<?php
2

  
3
namespace App\Presenters;
4

  
5

  
6
use App\Components\ITransliterationSearchFormFactory;
7
use Nette\Application\UI\Presenter;
8

  
9
class TransliterationPresenter extends Presenter
10
{
11
    /** @var ITransliterationSearchFormFactory */
12
    private $transliterationSearchFormFactory;
13

  
14
    public function __construct(ITransliterationSearchFormFactory $transliterationSearchFormFactory)
15
    {
16
        parent::__construct();
17

  
18
        $this->transliterationSearchFormFactory = $transliterationSearchFormFactory;
19
    }
20

  
21

  
22
    public function actionSearch()
23
    {
24

  
25
    }
26

  
27
    public function actionSearchResult(array $searchTerms = null)
28
    {
29

  
30
    }
31

  
32
    public function createComponentTransliterationSearchForm()
33
    {
34
        return $this->transliterationSearchFormFactory->create();
35
    }
36
}
app/presenters/templates/Transliteration/search.latte
1
{block content}
2
    <div class="display-5">Search in transliterations</div>
3
    <hr>
4
    {control transliterationSearchForm}
5
{/block}
app/router/RouterFactory.php
19 19
		$router = new RouteList;
20 20

  
21 21
        $frontRouter = new RouteList('Front');
22
        $frontRouter[] = new Route('<action>[/<id>]', 'Homepage:default');
22
        $frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
23 23

  
24 24
        $adminRouter = new RouteList('Admin');
25 25
        $adminRouter[] = new Route('admin/<presenter>/<action>[/<id>]', 'Default:default');

Také k dispozici: Unified diff