aboutsummaryrefslogtreecommitdiff
path: root/templates/login/_header_languages.php
blob: 435ab385c03befaeaee165d9a4369830da0bea17 (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
<form id="language-selector" method="POST" action="<?= URLHelper::getLink('dispatch.php/nobody_settings/store_settings') ?>">
    <? try {echo CSRFProtection::tokenTag();} catch (SessionRequiredException) {}?>
    <input type="hidden" name="user_config_submitted" value="1">
    <input type="hidden" name="page" value="<?= htmlReady(Request::url()) ?>">
    <select id="languages" name="set_language" class="select2" onchange="this.form.submit()">
        <? foreach ($GLOBALS['INSTALLED_LANGUAGES'] as $temp_language_key => $temp_language): ?>
            <option value="<?= htmlReady($temp_language_key) ?>" <?= array_key_exists('_language', $_SESSION) && $_SESSION['_language'] === $temp_language_key ? 'selected' : '' ?>
                data-flag="<?= URLHelper::getLink('assets/images/languages/' . $temp_language['picture']) ?>">
                <?= htmlReady($temp_language['name']) ?>
            </option>
        <? endforeach; ?>
    </select>
    </div>
</form>

<script>
    jQuery(function ($) {
        let format = function (state) {
            if (!state.id) { // optgroup
                return state.text;
            }
            let flagUrl = $(state.element).data('flag');
            let flag = $(`<img src="${flagUrl}" style="vertical-align: middle; max-height: 20px; max-width: 20px;">`);
            let span = $('<span>');
            span.text(state.text);
            $(flag).prependTo(span);
            return span;
        };
        $('#languages').select2({
            minimumResultsForSearch: -1,
            width: '120px',
            templateResult: format,
            templateSelection: format
        });
    });
</script>