View file humhub-1.1.2/js/datetimefield-init.js

File size: 3.2Kb
$(document).ready(function() {

    $('.hhtml-datetime-field').each(function(index, element) {
        
        var $element = $(element)
                , dateTimepickerDefaultOptions = {
                    pickDate: true,
                    pickTime: false,
                    useMinutes: true,
                    useSeconds: false,
                    showToday: true,
                    language: localeId.replace("\_", "\-"),
                    use24hours: true,
                    sideBySide: false,
                    // Initally use DB Timestamp Format
                    // After that we switch to locale format
                    format: 'YYYY-MM-DD hh:mm'
                }
        , $dateInput = $element.clone()
                , dateTimepickerOptions = {}
        , re_dataAttr = /^data\-options\-(.+)$/
                ;

        $dateInput.removeAttr('name').removeAttr('id');

        $.each(element.attributes, function(index, attr) {
            if (re_dataAttr.test(attr.nodeName)) {
                var key = attr.nodeName.match(re_dataAttr)[1]
                        , nodeValue = attr.nodeValue
                        ;
                nodeValue = nodeValue === 'true' ? true : nodeValue;
                nodevalue = nodeValue === 'false' ? false : nodeValue;
                dateTimepickerOptions[key] = nodeValue;
            }
        });

        if ($element.attr('data-options-pickTime') == "true") {
            dateTimepickerOptions.pickTime = true;
        }

        dateTimepickerOptions = $.extend({}, dateTimepickerDefaultOptions, dateTimepickerOptions);

        $dateInput.datetimepicker(dateTimepickerOptions);
        var datepicker = $dateInput.data("DateTimePicker");

        if (typeof $element.attr('data-options-displayFormat') === "undefined") {
            // Switch to format given by locale
            localeData = moment().localeData();
            datepicker.format = (datepicker.options.pickDate ? localeData.longDateFormat('L') : '');
            if (datepicker.options.pickDate && datepicker.options.pickTime) {
                datepicker.format += ' ';
            }
            datepicker.format += (datepicker.options.pickTime ? localeData.longDateFormat('LT') : '');
            if (datepicker.options.useSeconds) {
                if (localeData.longDateFormat('LT').indexOf(' A') !== -1) {
                    datepicker.format = datepicker.format.split(' A')[0] + ':ss A';
                }
                else {
                    datepicker.format += ':ss';
                }
            }
        } else {
            datepicker.format = $element.attr('data-options-displayFormat');
        }

        if ($element.val() != "") {
            datepicker.setDate(datepicker.date); // update visible date to correct Format
        }

        $dateInput.bind('blur change', function(ev) {
            if ($dateInput.val()) {
                if (datepicker.getDate()) {
                    $element.val(datepicker.getDate().format('YYYY-MM-DD HH:mm:00'));
                }
            } else {
                $element.val('');
            }
        });

        $element
                .hide()
                .after($dateInput)
                ;

        $dateInput.trigger('change');

    });
});