r2418 - Datepicker: fixed #4301 - option dateFormat getter does not return same value as setter

r2418 - Datepicker: fixed #4301 - option dateFormat getter does not return same value as setter


Author: kbwood.au
Date: Wed Apr 1 03:11:35 2009
New Revision: 2418
Modified:
trunk/tests/unit/datepicker/datepicker_options.js
trunk/ui/ui.datepicker.js
Log:
Datepicker: fixed #4301 - option dateFormat getter does not return same
value as setter
Modified: trunk/tests/unit/datepicker/datepicker_options.js
==============================================================================
--- trunk/tests/unit/datepicker/datepicker_options.js    (original)
+++ trunk/tests/unit/datepicker/datepicker_options.js    Wed Apr 1 03:11:35
2009
@@ -18,6 +18,7 @@
test('option', function() {
    var inp = init('#inp');
    var inst = $.data(inp[0], PROP_NAME);
+    // Set option
    equals(inst.settings.showOn, null, 'Initial setting showOn');
    equals($.datepicker._get(inst, 'showOn'), 'focus', 'Initial instance
showOn');
    equals($.datepicker._defaults.showOn, 'focus', 'Initial default showOn');
@@ -33,6 +34,16 @@
    equals(inst.settings.showOn, null, 'Clear setting showOn');
    equals($.datepicker._get(inst, 'showOn'), 'focus', 'Restore instance
showOn');
    equals($.datepicker._defaults.showOn, 'focus', 'Retain default showOn');
+    // Get option
+    inp = init('#inp');
+    equals(inp.datepicker('option', 'showOn'), 'focus', 'Initial setting
showOn');
+    inp.datepicker('option', 'showOn', 'button');
+    equals(inp.datepicker('option', 'showOn'), 'button', 'Change instance
showOn');
+    inp.datepicker('option', 'showOn', undefined);
+    equals(inp.datepicker('option', 'showOn'), 'focus', 'Reset instance
showOn');
+    same(inp.datepicker('option', 'all'), {duration: ''}, 'Get instance
settings');
+    same(inp.datepicker('option', 'defaults'), $.datepicker._defaults,
+        'Get default settings');
});
test('change', function() {
Modified: trunk/ui/ui.datepicker.js
==============================================================================
--- trunk/ui/ui.datepicker.js    (original)
+++ trunk/ui/ui.datepicker.js    Wed Apr 1 03:11:35 2009
@@ -364,31 +364,33 @@
        }
    },
-    /* Update the settings for a date picker attached to an input field or
division.
+    /* Update or retrieve the settings for a date picker attached to an input
field or division.
     @param target element - the target input field or division or span
     @param name object - the new settings to update or
-     string - the name of the setting to change or
-     @param value any - the new value for the setting (omit if above is
an object) */
+     string - the name of the setting to change or retrieve,
+     when retrieving also 'all' for all instance settings or
+     'defaults' for all global defaults
+     @param value any - the new value for the setting
+     (omit if above is an object or to retrieve a value) */
    _optionDatepicker: function(target, name, value) {
+        var inst = this._getInst(target);
+        if (arguments.length == 2 && typeof name == 'string') {
+            return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :
+                (inst ? (name == 'all' ? $.extend({}, inst.settings) :
+                this._get(inst, name)) : null));
+        }
        var settings = name || {};
        if (typeof name == 'string') {
            settings = {};
            settings[name] = value;
        }
-        var inst = this._getInst(target);
        if (inst) {
            if (this._curInst == inst) {
                this._hideDatepicker(null);
            }
+            var date = this._getDateDatepicker(target);
            extendRemove(inst.settings, settings);
-            var date = new Date();
-            extendRemove(inst, {rangeStart: null, // start of range
-                endDay: null, endMonth: null, endYear: null, // end of range
-                selectedDay: date.getDate(), selectedMonth: date.getMonth(),
-                selectedYear: date.getFullYear(), // starting point
-                currentDay: date.getDate(), currentMonth: date.getMonth(),
-                currentYear: date.getFullYear(), // current selection
-                drawMonth: date.getMonth(), drawYear: date.getFullYear()}); // month
being drawn
+            this._setDateDatepicker(target, date);
            this._updateDatepicker(inst);
        }
    },
@@ -1609,6 +1611,9 @@
    var otherArgs = Array.prototype.slice.call(arguments, 1);
    if (typeof options == 'string' && (options == 'isDisabled' || options
== 'getDate'))
+        return $.datepicker['_' + options + 'Datepicker'].
+            apply($.datepicker, [this[0]].concat(otherArgs));
+    if (options == 'option' && arguments.length == 2 && typeof arguments[1]
== 'string')
        return $.datepicker['_' + options + 'Datepicker'].
            apply($.datepicker, [this[0]].concat(otherArgs));
    return this.each(function() {