date_recur_interactive-8.x-2.0-alpha1/js/date_recur_rrule.js

js/date_recur_rrule.js
/**
 * @file
 * Date Recur Rrule Editor
 */

(function ($, Drupal) {

  'use strict';

  Drupal.behaviors.dateRecurRruleWidget = {
    attach: function (context, settings) {
      $('textarea[data-date-recur-rrule]', context).each(function (idx, el) {
        var $rrule = $(el);
        if ($rrule.data('date-recur-init')) {
          return;
        }
        $rrule.data('date-recur-init', true);
        var id = $rrule.attr('data-date-recur-rrule');
        var $startDate = $('input[type=date][data-date-recur-start=' + id + ']', context);
        var rrule = $rrule.val();

        var $checkbox = $('<label><input type="checkbox">' + Drupal.t('Repeat?') + '</label>');
        $checkbox.insertAfter($rrule);
        $checkbox.find('input').prop('checked', rrule.length);
        var $widget = $('<div class="date-recur-widget"></div>').insertAfter($checkbox);

        function initWidget($widget) {
          var opts = {};
          if (rrule.length) {
            opts.rrule = rrule
          }
          opts.dtstart = new Date($startDate.val());
          $widget.recurringinput(opts);
          $widget.on('rrule-update', function () {
            rrule = $('.rrule-output', $widget).html();
            $rrule.val(rrule);
          });
        }

        $checkbox.find('input').on('change', function () {
          if ($(this).is(':checked')) {
            if (!$widget.data('date-recur-init')) {
              initWidget($widget);
              $widget.data('date-recur-init', true);
            }
            $widget.show();
          }
          else {
            $widget.hide();
            $rrule.val('');
          }
        });

        $startDate.on('change', function () {
          $checkbox.find('input').prop('disabled', !$startDate.val());
        });

        // Trigger events for init values.
        $checkbox.find('input').trigger('change');
        $startDate.trigger('change');

        // Hide original input field and label.
        $rrule.hide();
        $rrule.siblings('label[for="' + $rrule.attr('id') + '"]').hide();

        // Don't submit the widget inputs.
        $rrule.parents('form').first().submit(function() {
          $widget.find(':input').removeAttr('name');
        })
      });
    }
  };
}(jQuery, Drupal));

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc