Fix wp-lists.js for jQuery 1.5.2

git-svn-id: https://develop.svn.wordpress.org/trunk@17808 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Ozz 2011-05-05 06:18:52 +00:00
parent 0822d55016
commit 4e574b9881
3 changed files with 162 additions and 73 deletions

View File

@ -23,48 +23,66 @@ wpList = {
parseClass: function(e,t) { parseClass: function(e,t) {
var c = [], cl; var c = [], cl;
try { try {
cl = $(e).attr('class') || ''; cl = $(e).attr('class') || '';
cl = cl.match(new RegExp(t+':[\\S]+')); cl = cl.match(new RegExp(t+':[\\S]+'));
if ( cl ) { c = cl[0].split(':'); }
if ( cl )
c = cl[0].split(':');
} catch(r) {} } catch(r) {}
return c; return c;
}, },
pre: function(e,s,a) { pre: function(e,s,a) {
var bg, r; var bg, r;
s = $.extend( {}, this.wpList.settings, { s = $.extend( {}, this.wpList.settings, {
element: null, element: null,
nonce: 0, nonce: 0,
target: e.get(0) target: e.get(0)
}, s || {} ); }, s || {} );
if ( $.isFunction( s.confirm ) ) { if ( $.isFunction( s.confirm ) ) {
if ( 'add' != a ) { if ( 'add' != a ) {
bg = $('#' + s.element).css('backgroundColor'); bg = $('#' + s.element).css('backgroundColor');
$('#' + s.element).css('backgroundColor', '#FF9966'); $('#' + s.element).css('backgroundColor', '#FF9966');
} }
r = s.confirm.call(this,e,s,a,bg); r = s.confirm.call(this, e, s, a, bg);
if ( 'add' != a ) { $('#' + s.element).css('backgroundColor', bg ); }
if ( !r ) { return false; } if ( 'add' != a )
$('#' + s.element).css('backgroundColor', bg );
if ( !r )
return false;
} }
return s; return s;
}, },
ajaxAdd: function( e, s ) { ajaxAdd: function( e, s ) {
e = $(e); e = $(e);
s = s || {}; s = s || {};
var list = this, cls = wpList.parseClass(e,'add'), es, valid, formData; var list = this, cls = wpList.parseClass(e,'add'), es, valid, formData, res, rres;
s = wpList.pre.call( list, e, s, 'add' ); s = wpList.pre.call( list, e, s, 'add' );
s.element = cls[2] || e.attr( 'id' ) || s.element || null; s.element = cls[2] || e.attr( 'id' ) || s.element || null;
if ( cls[3] ) { s.addColor = '#' + cls[3]; }
else { s.addColor = s.addColor || '#FFFF33'; }
if ( !s ) { return false; } if ( cls[3] )
s.addColor = '#' + cls[3];
else
s.addColor = s.addColor || '#FFFF33';
if ( !e.is('[class^="add:' + list.id + ':"]') ) { return !wpList.add.call( list, e, s ); } if ( !s )
return false;
if ( !s.element ) { return true; } if ( !e.is('[class^="add:' + list.id + ':"]') )
return !wpList.add.call( list, e, s );
if ( !s.element )
return true;
s.action = 'add-' + s.what; s.action = 'add-' + s.what;
@ -72,23 +90,35 @@ wpList = {
es = $('#' + s.element + ' :input').not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]'); es = $('#' + s.element + ' :input').not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]');
valid = wpAjax.validateForm( '#' + s.element ); valid = wpAjax.validateForm( '#' + s.element );
if ( !valid ) { return false; }
if ( !valid )
return false;
s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( cls[4] || '' ) ) ); s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( cls[4] || '' ) ) );
formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize(); formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize();
if ( formData ) { s.data += '&' + formData; }
if ( formData )
s.data += '&' + formData;
if ( $.isFunction(s.addBefore) ) { if ( $.isFunction(s.addBefore) ) {
s = s.addBefore( s ); s = s.addBefore( s );
if ( !s ) { return true; } if ( !s )
return true;
} }
if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) ) { return true; }
if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) )
return true;
s.success = function(r) { s.success = function(r) {
var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; res = wpAjax.parseAjaxResponse(r, s.response, s.element);
if ( !res || res.errors ) { return false; }
if ( true === res ) { return true; } rres = r;
if ( !res || res.errors )
return false;
if ( true === res )
return true;
jQuery.each( res.responses, function() { jQuery.each( res.responses, function() {
wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue
@ -98,33 +128,38 @@ wpList = {
} ) ); } ) );
} ); } );
if ( $.isFunction(s.addAfter) ) {
o = this.complete;
this.complete = function(x,st) {
var _s = $.extend( { xml: x, status: st, parsed: res }, s );
s.addAfter( r, _s );
if ( $.isFunction(o) ) { o(x,st); }
};
}
list.wpList.recolor(); list.wpList.recolor();
$(list).trigger( 'wpListAddEnd', [ s, list.wpList ] ); $(list).trigger( 'wpListAddEnd', [ s, list.wpList ] );
wpList.clear.call(list,'#' + s.element); wpList.clear.call(list,'#' + s.element);
}; };
s.complete = function(x, st) {
if ( $.isFunction(s.addAfter) ) {
var _s = $.extend( { xml: x, status: st, parsed: res }, s );
s.addAfter( rres, _s );
}
};
$.ajax( s ); $.ajax( s );
return false; return false;
}, },
ajaxDel: function( e, s ) { ajaxDel: function( e, s ) {
e = $(e); s = s || {}; e = $(e);
var list = this, cls = wpList.parseClass(e,'delete'), element; s = s || {};
var list = this, cls = wpList.parseClass(e,'delete'), element, res, rres;
s = wpList.pre.call( list, e, s, 'delete' ); s = wpList.pre.call( list, e, s, 'delete' );
s.element = cls[2] || s.element || null; s.element = cls[2] || s.element || null;
if ( cls[3] ) { s.delColor = '#' + cls[3]; }
else { s.delColor = s.delColor || '#faa'; }
if ( !s || !s.element ) { return false; } if ( cls[3] )
s.delColor = '#' + cls[3];
else
s.delColor = s.delColor || '#faa';
if ( !s || !s.element )
return false;
s.action = 'delete-' + s.what; s.action = 'delete-' + s.what;
@ -137,9 +172,12 @@ wpList = {
if ( $.isFunction(s.delBefore) ) { if ( $.isFunction(s.delBefore) ) {
s = s.delBefore( s, list ); s = s.delBefore( s, list );
if ( !s ) { return true; } if ( !s )
return true;
} }
if ( !s.data._ajax_nonce ) { return true; }
if ( !s.data._ajax_nonce )
return true;
element = $('#' + s.element); element = $('#' + s.element);
@ -154,22 +192,24 @@ wpList = {
} }
s.success = function(r) { s.success = function(r) {
var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; res = wpAjax.parseAjaxResponse(r, s.response, s.element);
rres = r;
if ( !res || res.errors ) { if ( !res || res.errors ) {
element.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); element.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
return false; return false;
} }
};
s.complete = function(x, st) {
if ( $.isFunction(s.delAfter) ) { if ( $.isFunction(s.delAfter) ) {
o = this.complete;
this.complete = function(x,st) {
element.queue( function() { element.queue( function() {
var _s = $.extend( { xml: x, status: st, parsed: res }, s ); var _s = $.extend( { xml: x, status: st, parsed: res }, s );
s.delAfter( r, _s ); s.delAfter( rres, _s );
if ( $.isFunction(o) ) { o(x,st); } }).dequeue();
} ).dequeue();
};
} }
}; }
$.ajax( s ); $.ajax( s );
return false; return false;
}, },
@ -177,18 +217,29 @@ wpList = {
ajaxDim: function( e, s ) { ajaxDim: function( e, s ) {
if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys
return false; return false;
e = $(e); s = s || {};
var list = this, cls = wpList.parseClass(e,'dim'), element, isClass, color, dimColor; e = $(e);
s = s || {};
var list = this, cls = wpList.parseClass(e,'dim'), element, isClass, color, dimColor, res, rres;
s = wpList.pre.call( list, e, s, 'dim' ); s = wpList.pre.call( list, e, s, 'dim' );
s.element = cls[2] || s.element || null; s.element = cls[2] || s.element || null;
s.dimClass = cls[3] || s.dimClass || null; s.dimClass = cls[3] || s.dimClass || null;
if ( cls[4] ) { s.dimAddColor = '#' + cls[4]; }
else { s.dimAddColor = s.dimAddColor || '#FFFF33'; }
if ( cls[5] ) { s.dimDelColor = '#' + cls[5]; }
else { s.dimDelColor = s.dimDelColor || '#FF3333'; }
if ( !s || !s.element || !s.dimClass ) { return true; } if ( cls[4] )
s.dimAddColor = '#' + cls[4];
else
s.dimAddColor = s.dimAddColor || '#FFFF33';
if ( cls[5] )
s.dimDelColor = '#' + cls[5];
else
s.dimDelColor = s.dimDelColor || '#FF3333';
if ( !s || !s.element || !s.dimClass )
return true;
s.action = 'dim-' + s.what; s.action = 'dim-' + s.what;
@ -201,7 +252,8 @@ wpList = {
if ( $.isFunction(s.dimBefore) ) { if ( $.isFunction(s.dimBefore) ) {
s = s.dimBefore( s ); s = s.dimBefore( s );
if ( !s ) { return true; } if ( !s )
return true;
} }
element = $('#' + s.element); element = $('#' + s.element);
@ -209,32 +261,39 @@ wpList = {
color = wpList.getColor( element ); color = wpList.getColor( element );
element.toggleClass( s.dimClass ); element.toggleClass( s.dimClass );
dimColor = isClass ? s.dimAddColor : s.dimDelColor; dimColor = isClass ? s.dimAddColor : s.dimDelColor;
if ( 'none' != dimColor ) { if ( 'none' != dimColor ) {
element element
.animate( { backgroundColor: dimColor }, 'fast' ) .animate( { backgroundColor: dimColor }, 'fast' )
.queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } ) .queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } )
.animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] ); } } ); .animate( { backgroundColor: color }, { complete: function() {
$(this).css( 'backgroundColor', '' );
$(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
}
});
} else { } else {
$(list).trigger( 'wpListDimEnd', [ s, list.wpList ] ); $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
} }
if ( !s.data._ajax_nonce ) { return true; } if ( !s.data._ajax_nonce )
return true;
s.success = function(r) { s.success = function(r) {
var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; res = wpAjax.parseAjaxResponse(r, s.response, s.element);
rres = r;
if ( !res || res.errors ) { if ( !res || res.errors ) {
element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
return false; return false;
} }
};
s.complete = function(x, st) {
if ( $.isFunction(s.dimAfter) ) { if ( $.isFunction(s.dimAfter) ) {
o = this.complete;
this.complete = function(x,st) {
element.queue( function() { element.queue( function() {
var _s = $.extend( { xml: x, status: st, parsed: res }, s ); var _s = $.extend( { xml: x, status: st, parsed: res }, s );
s.dimAfter( r, _s ); s.dimAfter( rres, _s );
if ( $.isFunction(o) ) { o(x,st); } }).dequeue();
} ).dequeue();
};
} }
}; };
@ -272,13 +331,19 @@ wpList = {
old.remove(); old.remove();
} else if ( isNaN(s.pos) ) { } else if ( isNaN(s.pos) ) {
ba = 'after'; ba = 'after';
if ( '-' == s.pos.substr(0,1) ) { if ( '-' == s.pos.substr(0,1) ) {
s.pos = s.pos.substr(1); s.pos = s.pos.substr(1);
ba = 'before'; ba = 'before';
} }
ref = list.find( '#' + s.pos ); ref = list.find( '#' + s.pos );
if ( 1 === ref.size() ) { ref[ba](e); }
else { list.append(e); } if ( 1 === ref.size() )
ref[ba](e);
else
list.append(e);
} else if ( s.pos < 0 ) { } else if ( s.pos < 0 ) {
list.prepend(e); list.prepend(e);
} else { } else {
@ -300,16 +365,25 @@ wpList = {
clear: function(e) { clear: function(e) {
var list = this, t, tag; var list = this, t, tag;
e = $(e); e = $(e);
if ( list.wpList && e.parents( '#' + list.id ).size() ) { return; }
if ( list.wpList && e.parents( '#' + list.id ).size() )
return;
e.find(':input').each( function() { e.find(':input').each( function() {
if ( $(this).parents('.form-no-clear').size() ) if ( $(this).parents('.form-no-clear').size() )
return; return;
t = this.type.toLowerCase(); t = this.type.toLowerCase();
tag = this.tagName.toLowerCase(); tag = this.tagName.toLowerCase();
if ( 'text' == t || 'password' == t || 'textarea' == tag ) { this.value = ''; }
else if ( 'checkbox' == t || 'radio' == t ) { this.checked = false; } if ( 'text' == t || 'password' == t || 'textarea' == tag )
else if ( 'select' == tag ) { this.selectedIndex = null; } this.value = '';
else if ( 'checkbox' == t || 'radio' == t )
this.checked = false;
else if ( 'select' == tag )
this.selectedIndex = null;
}); });
}, },
@ -336,21 +410,32 @@ wpList = {
recolor: function() { recolor: function() {
var list = this, items, eo; var list = this, items, eo;
if ( !list.wpList.settings.alt ) { return; }
if ( !list.wpList.settings.alt )
return;
items = $('.list-item:visible', list); items = $('.list-item:visible', list);
if ( !items.size() ) { items = $(list).children(':visible'); }
if ( !items.size() )
items = $(list).children(':visible');
eo = [':even',':odd']; eo = [':even',':odd'];
if ( list.wpList.settings.altOffset % 2 ) { eo.reverse(); }
if ( list.wpList.settings.altOffset % 2 )
eo.reverse();
items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt); items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt);
}, },
init: function() { init: function() {
var lists = this; var lists = this;
lists.wpList.process = function(a) { lists.wpList.process = function(a) {
lists.each( function() { lists.each( function() {
this.wpList.process(a); this.wpList.process(a);
} ); } );
}; };
lists.wpList.recolor = function() { lists.wpList.recolor = function() {
lists.each( function() { lists.each( function() {
this.wpList.recolor(); this.wpList.recolor();
@ -362,11 +447,15 @@ wpList = {
$.fn.wpList = function( settings ) { $.fn.wpList = function( settings ) {
this.each( function() { this.each( function() {
var _this = this; var _this = this;
this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseClass(this,'list')[1] || '' }, settings ) }; this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseClass(this,'list')[1] || '' }, settings ) };
$.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } ); $.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } );
} ); } );
wpList.init.call(this); wpList.init.call(this);
this.wpList.process(); this.wpList.process();
return this; return this;
}; };

File diff suppressed because one or more lines are too long

View File

@ -112,7 +112,7 @@ function wp_default_scripts( &$scripts ) {
$scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), '20110425' ); $scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), '20110425' );
$scripts->add_data( 'autosave', 'group', 1 ); $scripts->add_data( 'autosave', 'group', 1 );
$scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array('wp-ajax-response'), '20110430' ); $scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array('wp-ajax-response'), '20110504' );
$scripts->add_data( 'wp-lists', 'group', 1 ); $scripts->add_data( 'wp-lists', 'group', 1 );
$scripts->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/wp-scriptaculous.js', array('prototype'), '1.8.3'); $scripts->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/wp-scriptaculous.js', array('prototype'), '1.8.3');