annotate sites/all/modules/ctools/js/auto-submit.js @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents ff03f76ab3fe
children
rev   line source
danielebarchiesi@0 1 (function($){
danielebarchiesi@0 2 /**
danielebarchiesi@0 3 * To make a form auto submit, all you have to do is 3 things:
danielebarchiesi@0 4 *
danielebarchiesi@0 5 * ctools_add_js('auto-submit');
danielebarchiesi@0 6 *
danielebarchiesi@0 7 * On gadgets you want to auto-submit when changed, add the ctools-auto-submit
danielebarchiesi@0 8 * class. With FAPI, add:
danielebarchiesi@0 9 * @code
danielebarchiesi@0 10 * '#attributes' => array('class' => array('ctools-auto-submit')),
danielebarchiesi@0 11 * @endcode
danielebarchiesi@0 12 *
danielebarchiesi@0 13 * If you want to have auto-submit for every form element,
danielebarchiesi@0 14 * add the ctools-auto-submit-full-form to the form. With FAPI, add:
danielebarchiesi@0 15 * @code
danielebarchiesi@0 16 * '#attributes' => array('class' => array('ctools-auto-submit-full-form')),
danielebarchiesi@0 17 * @endcode
danielebarchiesi@0 18 *
danielebarchiesi@0 19 * If you want to exclude a field from the ctool-auto-submit-full-form auto submission,
danielebarchiesi@0 20 * add the class ctools-auto-submit-exclude to the form element. With FAPI, add:
danielebarchiesi@0 21 * @code
danielebarchiesi@0 22 * '#attributes' => array('class' => array('ctools-auto-submit-exclude')),
danielebarchiesi@0 23 * @endcode
danielebarchiesi@0 24 *
danielebarchiesi@0 25 * Finally, you have to identify which button you want clicked for autosubmit.
danielebarchiesi@0 26 * The behavior of this button will be honored if it's ajaxy or not:
danielebarchiesi@0 27 * @code
danielebarchiesi@0 28 * '#attributes' => array('class' => array('ctools-use-ajax', 'ctools-auto-submit-click')),
danielebarchiesi@0 29 * @endcode
danielebarchiesi@0 30 *
danielebarchiesi@0 31 * Currently only 'select', 'radio', 'checkbox' and 'textfield' types are supported. We probably
danielebarchiesi@0 32 * could use additional support for HTML5 input types.
danielebarchiesi@0 33 */
danielebarchiesi@0 34
danielebarchiesi@0 35 Drupal.behaviors.CToolsAutoSubmit = {
danielebarchiesi@0 36 attach: function(context) {
danielebarchiesi@0 37 // 'this' references the form element
danielebarchiesi@0 38 function triggerSubmit (e) {
danielebarchiesi@0 39 var $this = $(this);
danielebarchiesi@0 40 if (!$this.hasClass('ctools-ajaxing')) {
danielebarchiesi@0 41 $this.find('.ctools-auto-submit-click').click();
danielebarchiesi@0 42 }
danielebarchiesi@0 43 }
danielebarchiesi@0 44
danielebarchiesi@0 45 // the change event bubbles so we only need to bind it to the outer form
danielebarchiesi@0 46 $('form.ctools-auto-submit-full-form', context)
danielebarchiesi@0 47 .add('.ctools-auto-submit', context)
danielebarchiesi@0 48 .filter('form, select, input:not(:text, :submit)')
danielebarchiesi@0 49 .once('ctools-auto-submit')
danielebarchiesi@0 50 .change(function (e) {
danielebarchiesi@0 51 // don't trigger on text change for full-form
danielebarchiesi@0 52 if ($(e.target).is(':not(:text, :submit, .ctools-auto-submit-exclude)')) {
danielebarchiesi@0 53 triggerSubmit.call(e.target.form);
danielebarchiesi@0 54 }
danielebarchiesi@0 55 });
danielebarchiesi@0 56
danielebarchiesi@0 57 // e.keyCode: key
danielebarchiesi@0 58 var discardKeyCode = [
danielebarchiesi@0 59 16, // shift
danielebarchiesi@0 60 17, // ctrl
danielebarchiesi@0 61 18, // alt
danielebarchiesi@0 62 20, // caps lock
danielebarchiesi@0 63 33, // page up
danielebarchiesi@0 64 34, // page down
danielebarchiesi@0 65 35, // end
danielebarchiesi@0 66 36, // home
danielebarchiesi@0 67 37, // left arrow
danielebarchiesi@0 68 38, // up arrow
danielebarchiesi@0 69 39, // right arrow
danielebarchiesi@0 70 40, // down arrow
danielebarchiesi@0 71 9, // tab
danielebarchiesi@0 72 13, // enter
danielebarchiesi@0 73 27 // esc
danielebarchiesi@0 74 ];
danielebarchiesi@0 75 // Don't wait for change event on textfields
danielebarchiesi@0 76 $('.ctools-auto-submit-full-form input:text, input:text.ctools-auto-submit', context)
danielebarchiesi@0 77 .filter(':not(.ctools-auto-submit-exclude)')
danielebarchiesi@0 78 .once('ctools-auto-submit', function () {
danielebarchiesi@0 79 // each textinput element has his own timeout
danielebarchiesi@0 80 var timeoutID = 0;
danielebarchiesi@0 81 $(this)
danielebarchiesi@0 82 .bind('keydown keyup', function (e) {
danielebarchiesi@0 83 if ($.inArray(e.keyCode, discardKeyCode) === -1) {
danielebarchiesi@0 84 timeoutID && clearTimeout(timeoutID);
danielebarchiesi@0 85 }
danielebarchiesi@0 86 })
danielebarchiesi@0 87 .keyup(function(e) {
danielebarchiesi@0 88 if ($.inArray(e.keyCode, discardKeyCode) === -1) {
danielebarchiesi@0 89 timeoutID = setTimeout($.proxy(triggerSubmit, this.form), 500);
danielebarchiesi@0 90 }
danielebarchiesi@0 91 })
danielebarchiesi@0 92 .bind('change', function (e) {
danielebarchiesi@0 93 if ($.inArray(e.keyCode, discardKeyCode) === -1) {
danielebarchiesi@0 94 timeoutID = setTimeout($.proxy(triggerSubmit, this.form), 500);
danielebarchiesi@0 95 }
danielebarchiesi@0 96 });
danielebarchiesi@0 97 });
danielebarchiesi@0 98 }
danielebarchiesi@0 99 }
danielebarchiesi@0 100 })(jQuery);