в elgg опции выбора даты jQuery не работают

Мои самые первые эксперименты с elgg. elgg_view('input/date' использует функцию выбора даты, но мне нужно добавить некоторые параметры.

В моем плагине (называемом «помощь») функция инициализации (start.php) я объявил elgg_extend_view('js/elgg', 'help/js'); Затем в \mod\help\views\default\help\js.php я скопировал функцию elgg.ui.initDatePicker из ядра elgg и добавил к ней свои параметры. Также я добавил

elgg.provide('elgg.help');

на вершине и

elgg.register_hook_handler('init', 'система', elgg.ui.initDatePicker);

внизу вот так:

-- начало кода \mod\help\views\default\help\js.php

elgg.provide('elgg.help');

elgg.ui.initDatePicker = function() {
    var loadDatePicker = function() {
        $('.elgg-input-date').datepicker({

            // MY OPTIONS ADDED
            yearRange: "-100:+0",
            changeYear: true,
            changeMonth: true,

            // ISO-8601
            dateFormat: 'yy-mm-dd',
            onSelect: function(dateText) {
                if ($(this).is('.elgg-input-timestamp')) {
                    // convert to unix timestamp
                    var dateParts = dateText.split("-");
                    var timestamp = Date.UTC(dateParts[0], dateParts[1] - 1, dateParts[2]);
                    timestamp = timestamp / 1000;

                    var id = $(this).attr('id');
                    $('input[name="' + id + '"]').val(timestamp);
                }
            }
        });
    };

    if ($('.elgg-input-date').length && elgg.get_language() == 'en') {
        loadDatePicker();
    } else if ($('.elgg-input-date').length) {
        elgg.get({
            url: elgg.config.wwwroot + 'vendors/jquery/i18n/jquery.ui.datepicker-'+ elgg.get_language() +'.js',
            dataType: "script",
            cache: true,
            success: loadDatePicker,
            error: loadDatePicker // english language is already loaded.
        });
    }
}

elgg.register_hook_handler('init', 'system', elgg.ui.initDatePicker);

--- конец кода \mod\help\views\default\help\js.php

Он действительно открывает календарь, но не применяет параметры yearRange, changeYear и changeMonth. Хотя, если я просто добавлю параметры в elgg\js\lib\ui.js, все будет работать нормально. Поскольку я не хочу возиться с основным файлом, я прошу подсказки здесь. Спасибо


person Gius    schedule 08.09.2013    source источник


Ответы (2)


Обратите внимание, что таким образом вы перезаписываете основную версию elgg.ui.initDatePicker.

Кажется, вы регистрируете одну и ту же функцию во второй раз в системе инициализации (она зарегистрирована ядром, вы только что изменили реализацию)

Вам также не нужно запускать elgg.provide, если вы не используете предоставленный объект (elgg.help).

Помимо этих заметок, я бы позаботился о том, чтобы код JS загружался вовремя. Как вы загружаете код? elgg_load_js или какое-то расширение представления?

person Paweł Sroka    schedule 16.09.2013

Использовать

elgg_view('input/datepicker',array('name'=>'startDate'));

ДЛЯ элгг 1.8.16

person Mani    schedule 07.10.2013