ok(false, "missing test - untested code is broken code.");
});
+test('cookie', function() {
+ expect(6);
+
+ el = $('#tabs1');
+ var cookieName = 'tabs_test', cookieObj = { name: cookieName };
+ $.cookie(cookieName, null); // blank state
+ var cookie = function() {
+ return parseInt($.cookie(cookieName), 10);
+ };
+
+ el.tabs({ cookie: cookieObj });
+ equals(cookie(), 0, 'initial cookie value');
+
+ el.tabs('destroy');
+ el.tabs({ active: 1, cookie: cookieObj });
+ equals(cookie(), 1, 'initial cookie value, from active property');
+
+ el.tabs('option', 'active', 2);
+ equals(cookie(), 2, 'cookie value updated after activating');
+
+ el.tabs('destroy');
+ $.cookie(cookieName, 1);
+ el.tabs({ cookie: cookieObj });
+ equals(cookie(), 1, 'initial cookie value, from existing cookie');
+
+ el.tabs('destroy');
+ el.tabs({ cookie: cookieObj, collapsible: true });
+ el.tabs('option', 'active', false);
+ equals(cookie(), -1, 'cookie value for all tabs unselected');
+
+ el.tabs('destroy');
+ ok($.cookie(cookieName) === null, 'erase cookie after destroy');
+
+});
+
+
test('spinner', function() {
expect(4);
stop();
});
-test('cookie', function() {
- expect(6);
-
- el = $('#tabs1');
- var cookieName = 'tabs_test', cookieObj = { name: cookieName };
- $.cookie(cookieName, null); // blank state
- var cookie = function() {
- return parseInt($.cookie(cookieName), 10);
- };
-
- el.tabs({ cookie: cookieObj });
- equals(cookie(), 0, 'initial cookie value');
-
- el.tabs('destroy');
- el.tabs({ active: 1, cookie: cookieObj });
- equals(cookie(), 1, 'initial cookie value, from active property');
-
- el.tabs('option', 'active', 2);
- equals(cookie(), 2, 'cookie value updated after activating');
-
- el.tabs('destroy');
- $.cookie(cookieName, 1);
- el.tabs({ cookie: cookieObj });
- equals(cookie(), 1, 'initial cookie value, from existing cookie');
-
- el.tabs('destroy');
- el.tabs({ cookie: cookieObj, collapsible: true });
- el.tabs('option', 'active', false);
- equals(cookie(), -1, 'cookie value for all tabs unselected');
-
- el.tabs('destroy');
- ok($.cookie(cookieName) === null, 'erase cookie after destroy');
-
-});
-
test('disabled', function() {
expect(4);
activate: null,
beforeload: null,
beforeActivate: null,
- cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }
collapsible: false,
disabled: false,
event: "click",
// Selected tab
// use "selected" option or try to retrieve:
// 1. from fragment identifier in url
- // 2. from cookie
- // 3. from selected class attribute on <li>
+ // 2. from selected class attribute on <li>
if ( o.active === undefined ) {
if ( location.hash ) {
this.anchors.each(function( i, a ) {
}
});
}
- if ( typeof o.active !== "number" && o.cookie ) {
- o.active = parseInt( self._cookie(), 10 );
- }
if ( typeof o.active !== "number" && this.lis.filter( ".ui-tabs-selected" ).length ) {
o.active = this.lis.index( this.lis.filter( ".ui-tabs-selected" ) );
}
return hash.replace( /:/g, "\\:" );
},
- _cookie: function() {
- var cookie = this.cookie ||
- ( this.cookie = this.options.cookie.name || "ui-tabs-" + getNextListId() );
- return $.cookie.apply( null, [ cookie ].concat( $.makeArray( arguments ) ) );
- },
-
_ui: function( tab, panel ) {
return {
tab: tab,
o.disabled = false;
}
- // set or update cookie after init and add/remove respectively
- if ( o.cookie ) {
- this._cookie( o.active, o.cookie );
- }
-
// disable tabs
for ( var i = 0, li; ( li = this.lis[ i ] ); i++ ) {
$( li ).toggleClass( "ui-state-disabled", $.inArray( i, o.disabled ) != -1 );
o.active = -1;
self.active = null;
- if ( o.cookie ) {
- self._cookie( o.active, o.cookie );
- }
-
self.element.queue( "tabs", function() {
self._hideTab( clicked, $hide );
}).dequeue( "tabs" );
clicked[ 0 ].blur();
return;
} else if ( !$hide.length ) {
- if ( o.cookie ) {
- self._cookie( o.active, o.cookie );
- }
-
self.element.queue( "tabs", function() {
self._showTab( clicked, $show, event );
});
}
}
- if ( o.cookie ) {
- self._cookie( o.active, o.cookie );
- }
-
// show new tab
if ( $show.length ) {
if ( $hide.length ) {
}
});
- if ( o.cookie ) {
- this._cookie( null, o.cookie );
- }
-
return this;
},
this.anchors.eq( index ).trigger( this.options.event + ".tabs" );
};
}( jQuery, jQuery.ui.tabs.prototype ) );
+
+ // cookie option
+ (function( $, prototype ) {
+ $.extend( prototype.options, {
+ cookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }
+ });
+
+ var _create = prototype._create,
+ _refresh = prototype._refresh,
+ _eventHandler = prototype._eventHandler,
+ _destroy = prototype._destroy;
+
+ prototype._create = function() {
+ var o = this.options;
+ if ( o.active === undefined ) {
+ if ( typeof o.active !== "number" && o.cookie ) {
+ o.active = parseInt( this._cookie(), 10 );
+ }
+ }
+ _create.call( this );
+ };
+
+ prototype._cookie = function() {
+ var cookie = this.cookie ||
+ ( this.cookie = this.options.cookie.name || "ui-tabs-" + getNextListId() );
+ return $.cookie.apply( null, [ cookie ].concat( $.makeArray( arguments ) ) );
+ };
+
+ prototype._refresh = function() {
+ _refresh.call( this );
+
+ // set or update cookie after init and add/remove respectively
+ if ( this.options.cookie ) {
+ this._cookie( this.options.active, this.options.cookie );
+ }
+ };
+
+ prototype._eventHandler = function( event ) {
+ _eventHandler.apply( this, arguments );
+
+ if ( this.options.cookie ) {
+ this._cookie( this.options.active, this.options.cookie );
+ }
+ };
+
+ prototype._destroy = function() {
+ _destroy.call( this );
+
+ if ( this.options.cookie ) {
+ this._cookie( null, this.options.cookie );
+ }
+ };
+ }( jQuery, jQuery.ui.tabs.prototype ) );
}
})( jQuery );