| [ Index ] |
PHP Cross Reference of Wordpress 2.9.1 |
[Summary view] [Print] [Text view]
1 (function($) { 2 var fs = {add:'ajaxAdd',del:'ajaxDel',dim:'ajaxDim',process:'process',recolor:'recolor'}, wpList; 3 4 wpList = { 5 settings: { 6 url: ajaxurl, type: 'POST', 7 response: 'ajax-response', 8 9 what: '', 10 alt: 'alternate', altOffset: 0, 11 addColor: null, delColor: null, dimAddColor: null, dimDelColor: null, 12 13 confirm: null, 14 addBefore: null, addAfter: null, 15 delBefore: null, delAfter: null, 16 dimBefore: null, dimAfter: null 17 }, 18 19 nonce: function(e,s) { 20 var url = wpAjax.unserialize(e.attr('href')); 21 return s.nonce || url._ajax_nonce || $('#' + s.element + ' input[name=_ajax_nonce]').val() || url._wpnonce || $('#' + s.element + ' input[name=_wpnonce]').val() || 0; 22 }, 23 24 parseClass: function(e,t) { 25 var c = [], cl; 26 try { 27 cl = $(e).attr('class') || ''; 28 cl = cl.match(new RegExp(t+':[\\S]+')); 29 if ( cl ) { c = cl[0].split(':'); } 30 } catch(r) {} 31 return c; 32 }, 33 34 pre: function(e,s,a) { 35 var bg, r; 36 s = $.extend( {}, this.wpList.settings, { 37 element: null, 38 nonce: 0, 39 target: e.get(0) 40 }, s || {} ); 41 if ( $.isFunction( s.confirm ) ) { 42 if ( 'add' != a ) { 43 bg = $('#' + s.element).css('backgroundColor'); 44 $('#' + s.element).css('backgroundColor', '#FF9966'); 45 } 46 r = s.confirm.call(this,e,s,a,bg); 47 if ( 'add' != a ) { $('#' + s.element).css('backgroundColor', bg ); } 48 if ( !r ) { return false; } 49 } 50 return s; 51 }, 52 53 ajaxAdd: function( e, s ) { 54 e = $(e); 55 s = s || {}; 56 var list = this, cls = wpList.parseClass(e,'add'), es, valid, formData; 57 s = wpList.pre.call( list, e, s, 'add' ); 58 59 s.element = cls[2] || e.attr( 'id' ) || s.element || null; 60 if ( cls[3] ) { s.addColor = '#' + cls[3]; } 61 else { s.addColor = s.addColor || '#FFFF33'; } 62 63 if ( !s ) { return false; } 64 65 if ( !e.is("[class^=add:" + list.id + ":]") ) { return !wpList.add.call( list, e, s ); } 66 67 if ( !s.element ) { return true; } 68 69 s.action = 'add-' + s.what; 70 71 s.nonce = wpList.nonce(e,s); 72 73 es = $('#' + s.element + ' :input').not('[name=_ajax_nonce], [name=_wpnonce], [name=action]'); 74 valid = wpAjax.validateForm( '#' + s.element ); 75 if ( !valid ) { return false; } 76 77 s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( cls[4] || '' ) ) ); 78 formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize(); 79 if ( formData ) { s.data += '&' + formData; } 80 81 if ( $.isFunction(s.addBefore) ) { 82 s = s.addBefore( s ); 83 if ( !s ) { return true; } 84 } 85 if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) ) { return true; } 86 87 s.success = function(r) { 88 var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; 89 if ( !res || res.errors ) { return false; } 90 91 if ( true === res ) { return true; } 92 93 jQuery.each( res.responses, function() { 94 wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue 95 pos: this.position || 0, 96 id: this.id || 0, 97 oldId: this.oldId || null 98 } ) ); 99 } ); 100 101 if ( $.isFunction(s.addAfter) ) { 102 o = this.complete; 103 this.complete = function(x,st) { 104 var _s = $.extend( { xml: x, status: st, parsed: res }, s ); 105 s.addAfter( r, _s ); 106 if ( $.isFunction(o) ) { o(x,st); } 107 }; 108 } 109 list.wpList.recolor(); 110 $(list).trigger( 'wpListAddEnd', [ s, list.wpList ] ); 111 wpList.clear.call(list,'#' + s.element); 112 }; 113 114 $.ajax( s ); 115 return false; 116 }, 117 118 ajaxDel: function( e, s ) { 119 e = $(e); s = s || {}; 120 var list = this, cls = wpList.parseClass(e,'delete'), element; 121 s = wpList.pre.call( list, e, s, 'delete' ); 122 123 s.element = cls[2] || s.element || null; 124 if ( cls[3] ) { s.delColor = '#' + cls[3]; } 125 else { s.delColor = s.delColor || '#faa'; } 126 127 if ( !s || !s.element ) { return false; } 128 129 s.action = 'delete-' + s.what; 130 131 s.nonce = wpList.nonce(e,s); 132 133 s.data = $.extend( 134 { action: s.action, id: s.element.split('-').pop(), _ajax_nonce: s.nonce }, 135 wpAjax.unserialize( cls[4] || '' ) 136 ); 137 138 if ( $.isFunction(s.delBefore) ) { 139 s = s.delBefore( s, list ); 140 if ( !s ) { return true; } 141 } 142 if ( !s.data._ajax_nonce ) { return true; } 143 144 element = $('#' + s.element); 145 146 if ( 'none' != s.delColor ) { 147 element.css( 'backgroundColor', s.delColor ).fadeOut( 350, function(){ 148 list.wpList.recolor(); 149 $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] ); 150 }); 151 } else { 152 list.wpList.recolor(); 153 $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] ); 154 } 155 156 s.success = function(r) { 157 var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; 158 if ( !res || res.errors ) { 159 element.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); 160 return false; 161 } 162 if ( $.isFunction(s.delAfter) ) { 163 o = this.complete; 164 this.complete = function(x,st) { 165 element.queue( function() { 166 var _s = $.extend( { xml: x, status: st, parsed: res }, s ); 167 s.delAfter( r, _s ); 168 if ( $.isFunction(o) ) { o(x,st); } 169 } ).dequeue(); 170 }; 171 } 172 }; 173 $.ajax( s ); 174 return false; 175 }, 176 177 ajaxDim: function( e, s ) { 178 if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys 179 return false; 180 e = $(e); s = s || {}; 181 var list = this, cls = wpList.parseClass(e,'dim'), element, isClass, color, dimColor; 182 s = wpList.pre.call( list, e, s, 'dim' ); 183 184 s.element = cls[2] || s.element || null; 185 s.dimClass = cls[3] || s.dimClass || null; 186 if ( cls[4] ) { s.dimAddColor = '#' + cls[4]; } 187 else { s.dimAddColor = s.dimAddColor || '#FFFF33'; } 188 if ( cls[5] ) { s.dimDelColor = '#' + cls[5]; } 189 else { s.dimDelColor = s.dimDelColor || '#FF3333'; } 190 191 if ( !s || !s.element || !s.dimClass ) { return true; } 192 193 s.action = 'dim-' + s.what; 194 195 s.nonce = wpList.nonce(e,s); 196 197 s.data = $.extend( 198 { action: s.action, id: s.element.split('-').pop(), dimClass: s.dimClass, _ajax_nonce : s.nonce }, 199 wpAjax.unserialize( cls[6] || '' ) 200 ); 201 202 if ( $.isFunction(s.dimBefore) ) { 203 s = s.dimBefore( s ); 204 if ( !s ) { return true; } 205 } 206 207 element = $('#' + s.element); 208 isClass = element.toggleClass(s.dimClass).is('.' + s.dimClass); 209 color = wpList.getColor( element ); 210 element.toggleClass( s.dimClass ) 211 dimColor = isClass ? s.dimAddColor : s.dimDelColor; 212 if ( 'none' != dimColor ) { 213 element 214 .animate( { backgroundColor: dimColor }, 'fast' ) 215 .queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } ) 216 .animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] ); } } ); 217 } else { 218 $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] ); 219 } 220 221 if ( !s.data._ajax_nonce ) { return true; } 222 223 s.success = function(r) { 224 var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; 225 if ( !res || res.errors ) { 226 element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); 227 return false; 228 } 229 if ( $.isFunction(s.dimAfter) ) { 230 o = this.complete; 231 this.complete = function(x,st) { 232 element.queue( function() { 233 var _s = $.extend( { xml: x, status: st, parsed: res }, s ); 234 s.dimAfter( r, _s ); 235 if ( $.isFunction(o) ) { o(x,st); } 236 } ).dequeue(); 237 }; 238 } 239 }; 240 241 $.ajax( s ); 242 return false; 243 }, 244 245 // From jquery.color.js: jQuery Color Animation by John Resig 246 getColor: function( el ) { 247 if ( el.constructor == Object ) 248 el = el.get(0); 249 var elem = el, color, rgbaTrans = new RegExp( "rgba\\(\\s*0,\\s*0,\\s*0,\\s*0\\s*\\)", "i" ); 250 do { 251 color = jQuery.curCSS(elem, 'backgroundColor'); 252 if ( color != '' && color != 'transparent' && !color.match(rgbaTrans) || jQuery.nodeName(elem, "body") ) 253 break; 254 } while ( elem = elem.parentNode ); 255 return color || '#ffffff'; 256 }, 257 258 add: function( e, s ) { 259 e = $(e); 260 261 var list = $(this), old = false, _s = { pos: 0, id: 0, oldId: null }, ba, ref, color; 262 if ( 'string' == typeof s ) { s = { what: s }; } 263 s = $.extend(_s, this.wpList.settings, s); 264 if ( !e.size() || !s.what ) { return false; } 265 if ( s.oldId ) { old = $('#' + s.what + '-' + s.oldId); } 266 if ( s.id && ( s.id != s.oldId || !old || !old.size() ) ) { $('#' + s.what + '-' + s.id).remove(); } 267 268 if ( old && old.size() ) { 269 old.before(e); 270 old.remove(); 271 } else if ( isNaN(s.pos) ) { 272 ba = 'after'; 273 if ( '-' == s.pos.substr(0,1) ) { 274 s.pos = s.pos.substr(1); 275 ba = 'before'; 276 } 277 ref = list.find( '#' + s.pos ); 278 if ( 1 === ref.size() ) { ref[ba](e); } 279 else { list.append(e); } 280 } else if ( s.pos < 0 ) { 281 list.prepend(e); 282 } else { 283 list.append(e); 284 } 285 286 if ( s.alt ) { 287 if ( ( list.children(':visible').index( e[0] ) + s.altOffset ) % 2 ) { e.removeClass( s.alt ); } 288 else { e.addClass( s.alt ); } 289 } 290 291 if ( 'none' != s.addColor ) { 292 color = wpList.getColor( e ); 293 e.css( 'backgroundColor', s.addColor ).animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } ); 294 } 295 list.each( function() { this.wpList.process( e ); } ); 296 return e; 297 }, 298 299 clear: function(e) { 300 var list = this, t, tag; 301 e = $(e); 302 if ( list.wpList && e.parents( '#' + list.id ).size() ) { return; } 303 e.find(':input').each( function() { 304 if ( $(this).parents('.form-no-clear').size() ) 305 return; 306 t = this.type.toLowerCase(); 307 tag = this.tagName.toLowerCase(); 308 if ( 'text' == t || 'password' == t || 'textarea' == tag ) { this.value = ''; } 309 else if ( 'checkbox' == t || 'radio' == t ) { this.checked = false; } 310 else if ( 'select' == tag ) { this.selectedIndex = null; } 311 }); 312 }, 313 314 process: function(el) { 315 var list = this; 316 $("[class^=add:" + list.id + ":]", el || null) 317 .filter('form').submit( function() { return list.wpList.add(this); } ).end() 318 .not('form').click( function() { return list.wpList.add(this); } ); 319 $("[class^=delete:" + list.id + ":]", el || null).click( function() { return list.wpList.del(this); } ); 320 $("[class^=dim:" + list.id + ":]", el || null).click( function() { return list.wpList.dim(this); } ); 321 }, 322 323 recolor: function() { 324 var list = this, items, eo; 325 if ( !list.wpList.settings.alt ) { return; } 326 items = $('.list-item:visible', list); 327 if ( !items.size() ) { items = $(list).children(':visible'); } 328 eo = [':even',':odd']; 329 if ( list.wpList.settings.altOffset % 2 ) { eo.reverse(); } 330 items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt); 331 }, 332 333 init: function() { 334 var lists = this; 335 lists.wpList.process = function(a) { 336 lists.each( function() { 337 this.wpList.process(a); 338 } ); 339 }; 340 lists.wpList.recolor = function() { 341 lists.each( function() { 342 this.wpList.recolor(); 343 } ); 344 }; 345 } 346 }; 347 348 $.fn.wpList = function( settings ) { 349 this.each( function() { 350 var _this = this; 351 this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseClass(this,'list')[1] || '' }, settings ) }; 352 $.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } ); 353 } ); 354 wpList.init.call(this); 355 this.wpList.process(); 356 return this; 357 }; 358 359 })(jQuery);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri Jan 8 00:19:48 2010 | Cross-referenced by PHPXref 0.7 |