src/cm/media/js/lib/yui/yui3.0.0/build/io/io-form.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1549
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('io-form', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
    * Extends the IO base class to enable HTML form data serialization, when specified
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
    * in the transaction's configuration object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
    * @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
    * @submodule io-form
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
    */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
    Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
       /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
        * @description Method to enumerate through an HTML form's elements collection
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
        * and return a string comprised of key-value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
        *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
        * @method _serialize
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
        * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
        * @param {object} c - YUI form node or HTML form id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
        * @param {string} s - Transaction data defined in the configuration.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
        * @return string
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
        _serialize: function(c, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
			var eUC = encodeURIComponent,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
            	data = [],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
            	useDf = c.useDisabled || false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
            	item = 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
            	id = (typeof c.id === 'string') ? c.id : c.id.getAttribute('id'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
            	e, f, n, v, d, i, il, j, jl, o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
            	if (!id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
					id = Y.guid('io:');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
					c.id.setAttribute('id', id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
            	f = Y.config.doc.getElementById(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
            // Iterate over the form elements collection to construct the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
            // label-value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
            for (i = 0, il = f.elements.length; i < il; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
                e = f.elements[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
                d = e.disabled;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
                n = e.name;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
                if ((useDf) ? n : (n && !d)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
                    n = encodeURIComponent(n) + '=';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
                    v = encodeURIComponent(e.value);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
                    switch (e.type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
                        // Safari, Opera, FF all default options.value from .text if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
                        // value attribute not specified in markup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
                        case 'select-one':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
                            if (e.selectedIndex > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
                                o = e.options[e.selectedIndex];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
                                data[item++] = n + eUC((o.attributes.value && o.attributes.value.specified) ? o.value : o.text);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
                        case 'select-multiple':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
                            if (e.selectedIndex > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
                                for (j = e.selectedIndex, jl = e.options.length; j < jl; ++j) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
                                    o = e.options[j];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
                                    if (o.selected) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
                                      data[item++] = n + eUC((o.attributes.value && o.attributes.value.specified) ? o.value : o.text);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
                                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
                                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
                        case 'radio':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
                        case 'checkbox':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
                            if(e.checked){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
                                data[item++] = n + v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
                        case 'file':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
                            // stub case as XMLHttpRequest will only send the file path as a string.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
                        case undefined:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
                            // stub case for fieldset element which returns undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
                        case 'reset':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
                            // stub case for input type reset button.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
                        case 'button':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
                            // stub case for input type button elements.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
                        case 'submit':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
                        default:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
                            data[item++] = n + v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
            return s ? data.join('&') + "&" + s : data.join('&');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
    }, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
}, '3.0.0' ,{requires:['io-base','node-base','node-style']});