aboutsummaryrefslogtreecommitdiff
path: root/templates/sidebar/search-widget.php
blob: 6a380bc8fe078da677743027f2f622969bd01019 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
/**
 * @var string $url
 * @var string $method
 * @var array $url_params
 * @var array $needles
 * @var array $filters
 * @var array $quick_search
 * @var string $reset_link
 * @var string $onsubmit
 * @var string $onclear
 * @var bool $has_data
 */
?>
<?php
    $id ??= 'form-' . md5(uniqid());
?>
<form action="<?= URLHelper::getLink($url) ?>"
      method="<?= $method ?>"
      <? printf('id="%s"', htmlReady($id)) ?>
      <?= $onsubmit ? 'onsubmit="' . htmlReady($onsubmit) . '"' : '' ?>
      class="sidebar-search"
>
<? foreach ($url_params as $key => $value): ?>
    <?= addHiddenFields($key, $value) ?>
<? endforeach; ?>
    <ul class="needles">
    <? foreach ($needles as $needle): ?>
        <? $hash = md5($url . '|' . $needle['name']) ?>
        <li <? if ($needle['quick_search'] && $needle['quick_search']->hasExtendedLayout()) echo 'class="extendedLayout" id="' . $needle['quick_search']->getId() . '_frame"'; ?>>
            <div class="input-group files-search">
                <label for="needle-<?= $hash ?>" <? if ($needle['placeholder']) echo 'class="sr-only"'; ?>>
                    <?= htmlReady($needle['label']) ?>
                </label>
                <? if ($needle['quick_search']): ?>
                    <?= $needle['quick_search']->render() ?>
                <? else: ?>
                <input type="text" id="needle-<?= $hash ?>"
                       name="<?= htmlReady($needle['name']) ?>"
                       value="<?= htmlReady($needle['value']) ?>"
                       <? if ($needle['placeholder']) printf('placeholder="%s"', htmlReady($needle['label'])); ?>
                       <?= arrayToHtmlAttributes($needle['attributes']) ?>>
            <? endif; ?>
                <button type="submit" class="submit-search<?= $reset_link ? ' is-executed' : '' ?>"
                        title="<?= _('Suche ausführen') ?>">
                    <?= Icon::create('search') ?>
                </button>
            <? if ($reset_link): ?>
                <? if ($onsubmit) : ?>
                    <?= Icon::create('decline')->asInput([
                        'title' =>  _('Suche zurücksetzen'),
                        'class' => 'reset-search',
                        'onclick' => "document.getElementById('needle-".$hash."').value = ''; this.remove();" . ($onclear ?? ''),
                    ]) ?>
                <? else : ?>
                    <a class="reset-search" href="<?= $reset_link ?>" tabindex="0" role="button"
                       title="<?= _('Suche zurücksetzen') ?>">
                        <?= Icon::create('decline') ?>
                    </a>
                <? endif ?>
            <? endif; ?>
        </li>
    <? endforeach; ?>
    </ul>
<? if (!empty($filters)): ?>
    <ul class="filters">
    <? foreach ($filters as $key => $label): ?>
        <input type="hidden" name="<?= htmlReady($key) ?>" value="0" id="<?= md5($url . $key) ?>">
        <label>
            <input type="checkbox" name="<?= htmlReady($key) ?>" value="1"
                   <? if (!$has_data || Request::int($key)) echo 'checked'; ?>
                   data-deactivates="#<?= md5($url . $key) ?>">
            <?= htmlReady($label) ?>
        </label>
    <? endforeach; ?>
    </ul>
<? endif; ?>
<? if (!empty($quick_search)): ?>
<script>
(() => {
<? foreach ($quick_search as $needle): ?>
    STUDIP.QuickSearch.autocomplete('needle-<?= md5($url . '|' . $needle['name']) ?>', '<?= $url ?>');
<? endforeach; ?>
})();
</script>
<? endif; ?>
</form>