Make WordPress Core

Ticket #34101: 34101.diff

File 34101.diff, 5.7 KB (added by jtsternberg, 11 years ago)

Replace serialize-object script w/ new and updated script and add minified version.

  • src/wp-includes/js/jquery/jquery.serialize-object.js

     
    1 /*!
    2  * jQuery serializeObject - v0.2 - 1/20/2010
    3  * http://benalman.com/projects/jquery-misc-plugins/
    4  *
    5  * Copyright (c) 2010 "Cowboy" Ben Alman
    6  * Dual licensed under the MIT and GPL licenses.
    7  * http://benalman.com/about/license/
     1/**
     2 * jQuery serializeObject
     3 * @copyright 2014, macek <paulmacek@gmail.com>
     4 * @link https://github.com/macek/jquery-serialize-object
     5 * @license BSD
     6 * @version 2.5.0
    87 */
     8(function(root, factory) {
    99
    10 // Whereas .serializeArray() serializes a form into an array, .serializeObject()
    11 // serializes a form into an (arguably more useful) object.
     10  // AMD
     11  if (typeof define === "function" && define.amd) {
     12    define(["exports", "jquery"], function(exports, $) {
     13      return factory(exports, $);
     14    });
     15  }
    1216
    13 (function($,undefined){
    14   '$:nomunge'; // Used by YUI compressor.
    15  
    16   $.fn.serializeObject = function(){
    17     var obj = {};
    18    
    19     $.each( this.serializeArray(), function(i,o){
    20       var n = o.name,
    21         v = o.value;
    22        
    23         obj[n] = obj[n] === undefined ? v
    24           : $.isArray( obj[n] ) ? obj[n].concat( v )
    25           : [ obj[n], v ];
    26     });
    27    
    28     return obj;
     17  // CommonJS
     18  else if (typeof exports !== "undefined") {
     19    var $ = require("jquery");
     20    factory(exports, $);
     21  }
     22
     23  // Browser
     24  else {
     25    factory(root, (root.jQuery || root.Zepto || root.ender || root.$));
     26  }
     27
     28}(this, function(exports, $) {
     29
     30  var patterns = {
     31    validate: /^[a-z_][a-z0-9_]*(?:\[(?:\d*|[a-z0-9_]+)\])*$/i,
     32    key:      /[a-z0-9_]+|(?=\[\])/gi,
     33    push:     /^$/,
     34    fixed:    /^\d+$/,
     35    named:    /^[a-z0-9_]+$/i
    2936  };
    30  
    31 })(jQuery);
     37
     38  function FormSerializer(helper, $form) {
     39
     40    // private variables
     41    var data     = {},
     42        pushes   = {};
     43
     44    // private API
     45    function build(base, key, value) {
     46      base[key] = value;
     47      return base;
     48    }
     49
     50    function makeObject(root, value) {
     51
     52      var keys = root.match(patterns.key), k;
     53
     54      // nest, nest, ..., nest
     55      while ((k = keys.pop()) !== undefined) {
     56        // foo[]
     57        if (patterns.push.test(k)) {
     58          var idx = incrementPush(root.replace(/\[\]$/, ''));
     59          value = build([], idx, value);
     60        }
     61
     62        // foo[n]
     63        else if (patterns.fixed.test(k)) {
     64          value = build([], k, value);
     65        }
     66
     67        // foo; foo[bar]
     68        else if (patterns.named.test(k)) {
     69          value = build({}, k, value);
     70        }
     71      }
     72
     73      return value;
     74    }
     75
     76    function incrementPush(key) {
     77      if (pushes[key] === undefined) {
     78        pushes[key] = 0;
     79      }
     80      return pushes[key]++;
     81    }
     82
     83    function encode(pair) {
     84      switch ($('[name="' + pair.name + '"]', $form).attr("type")) {
     85        case "checkbox":
     86          return pair.value === "on" ? true : pair.value;
     87        default:
     88          return pair.value;
     89      }
     90    }
     91
     92    function addPair(pair) {
     93      if (!patterns.validate.test(pair.name)) return this;
     94      var obj = makeObject(pair.name, encode(pair));
     95      data = helper.extend(true, data, obj);
     96      return this;
     97    }
     98
     99    function addPairs(pairs) {
     100      if (!helper.isArray(pairs)) {
     101        throw new Error("formSerializer.addPairs expects an Array");
     102      }
     103      for (var i=0, len=pairs.length; i<len; i++) {
     104        this.addPair(pairs[i]);
     105      }
     106      return this;
     107    }
     108
     109    function serialize() {
     110      return data;
     111    }
     112
     113    function serializeJSON() {
     114      return JSON.stringify(serialize());
     115    }
     116
     117    // public API
     118    this.addPair = addPair;
     119    this.addPairs = addPairs;
     120    this.serialize = serialize;
     121    this.serializeJSON = serializeJSON;
     122  }
     123
     124  FormSerializer.patterns = patterns;
     125
     126  FormSerializer.serializeObject = function serializeObject() {
     127    return new FormSerializer($, this).
     128      addPairs(this.serializeArray()).
     129      serialize();
     130  };
     131
     132  FormSerializer.serializeJSON = function serializeJSON() {
     133    return new FormSerializer($, this).
     134      addPairs(this.serializeArray()).
     135      serializeJSON();
     136  };
     137
     138  if (typeof $.fn !== "undefined") {
     139    $.fn.serializeObject = FormSerializer.serializeObject;
     140    $.fn.serializeJSON   = FormSerializer.serializeJSON;
     141  }
     142
     143  exports.FormSerializer = FormSerializer;
     144
     145  return FormSerializer;
     146}));
  • src/wp-includes/script-loader.php

     
    237237        $scripts->add( 'suggest', "/wp-includes/js/jquery/suggest$suffix.js", array('jquery'), '1.1-20110113', 1 );
    238238        $scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20m', 1 );
    239239        $scripts->add( 'jquery-query', "/wp-includes/js/jquery/jquery.query.js", array('jquery'), '2.1.7', 1 );
    240         $scripts->add( 'jquery-serialize-object', "/wp-includes/js/jquery/jquery.serialize-object.js", array('jquery'), '0.2', 1 );
     240        $scripts->add( 'jquery-serialize-object', "/wp-includes/js/jquery/jquery.serialize-object$suffix.js", array('jquery'), '0.2', 1 );
    241241        $scripts->add( 'jquery-hotkeys', "/wp-includes/js/jquery/jquery.hotkeys$suffix.js", array('jquery'), '0.0.2m', 1 );
    242242        $scripts->add( 'jquery-table-hotkeys', "/wp-includes/js/jquery/jquery.table-hotkeys$suffix.js", array('jquery', 'jquery-hotkeys'), false, 1 );
    243243        $scripts->add( 'jquery-touch-punch', "/wp-includes/js/jquery/jquery.ui.touch-punch.js", array('jquery-ui-widget', 'jquery-ui-mouse'), '0.2.2', 1 );