<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre, #msg p { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[11837] trunk: Speed up jQuery based scripts, props Denis-de-Bernardy,
see #10021</title>
</head>
<body>
<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/11837">11837</a></dd>
<dt>Author</dt> <dd>azaozz</dd>
<dt>Date</dt> <dd>2009-08-18 09:53:37 +0000 (Tue, 18 Aug 2009)</dd>
</dl>
<h3>Log Message</h3>
<pre>Speed up jQuery based scripts, props Denis-de-Bernardy, see <a href="http://trac.wordpress.org/ticket/10021">#10021</a></pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadminjscommondevjs">trunk/wp-admin/js/common.dev.js</a></li>
<li><a href="#trunkwpadminjscommonjs">trunk/wp-admin/js/common.js</a></li>
<li><a href="#trunkwpadminjswidgetsdevjs">trunk/wp-admin/js/widgets.dev.js</a></li>
<li><a href="#trunkwpadminjswidgetsjs">trunk/wp-admin/js/widgets.js</a></li>
<li><a href="#trunkwpadminwidgetsphp">trunk/wp-admin/widgets.php</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadminjscommondevjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/common.dev.js (11836 => 11837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/common.dev.js        2009-08-17 01:38:01 UTC (rev 11836)
+++ trunk/wp-admin/js/common.dev.js        2009-08-18 09:53:37 UTC (rev 11837)
</span><span class="lines">@@ -2,18 +2,20 @@
</span><span class="cx"> (function($){
</span><span class="cx"> // sidebar admin menu
</span><span class="cx"> adminMenu = {
</span><ins>+        init : function() {
+                var menu = $('#adminmenu');
</ins><span class="cx">
</span><del>-        init : function() {
-                $('#adminmenu div.wp-menu-toggle').each( function() {
-                        if ( $(this).siblings('.wp-submenu').length )
-                                $(this).click(function(){ adminMenu.toggle( $(this).siblings('.wp-submenu') ); });
</del><ins>+                $('.wp-menu-toggle', menu).each( function() {
+                        var t = $(this), sub = t.siblings('.wp-submenu');
+                        if ( sub.length )
+                                t.click(function(){ adminMenu.toggle( sub ); });
</ins><span class="cx">                         else
</span><del>-                                $(this).hide();
</del><ins>+                                t.hide();
</ins><span class="cx">                 });
</span><del>-
</del><ins>+                
</ins><span class="cx">                 this.favorites();
</span><del>-
-                $('a.separator').click(function(){
</del><ins>+                
+                $('.separator', menu).click(function(){
</ins><span class="cx">                         if ( $('body').hasClass('folded') ) {
</span><span class="cx">                                 adminMenu.fold(1);
</span><span class="cx">                                 deleteUserSetting( 'mfold' );
</span><span class="lines">@@ -24,27 +26,31 @@
</span><span class="cx">                         return false;
</span><span class="cx">                 });
</span><span class="cx">
</span><del>-                if ( $('body').hasClass('folded') ) {
</del><ins>+                if ( $('body').hasClass('folded') )
</ins><span class="cx">                         this.fold();
</span><del>-                }
</del><ins>+                
</ins><span class="cx">                 this.restoreMenuState();
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         restoreMenuState : function() {
</span><del>-                $('#adminmenu li.wp-has-submenu').each(function(i, e) {
</del><ins>+                $('li.wp-has-submenu', '#adminmenu').each(function(i, e) {
</ins><span class="cx">                         var v = getUserSetting( 'm'+i );
</span><del>-                        if ( $(e).hasClass('wp-has-current-submenu') ) return true; // leave the current parent open
</del><ins>+                        if ( $(e).hasClass('wp-has-current-submenu') )
+                                return true; // leave the current parent open
</ins><span class="cx">
</span><del>-                        if ( 'o' == v ) $(e).addClass('wp-menu-open');
-                        else if ( 'c' == v ) $(e).removeClass('wp-menu-open');
</del><ins>+                        if ( 'o' == v )
+                                $(e).addClass('wp-menu-open');
+                        else if ( 'c' == v )
+                                $(e).removeClass('wp-menu-open');
</ins><span class="cx">                 });
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         toggle : function(el) {
</span><ins>+                el['slideToggle'](150, function() {
+                        el.css('display','');
+                }).parent().toggleClass( 'wp-menu-open' );
</ins><span class="cx">
</span><del>-                el['slideToggle'](150, function(){el.css('display','');}).parent().toggleClass( 'wp-menu-open' );
-
-                $('#adminmenu li.wp-has-submenu').each(function(i, e) {
</del><ins>+                $('.wp-has-submenu', '#adminmenu').each(function(i, e) {
</ins><span class="cx">                         var v = $(e).hasClass('wp-menu-open') ? 'o' : 'c';
</span><span class="cx">                         setUserSetting( 'm'+i, v );
</span><span class="cx">                 });
</span><span class="lines">@@ -62,14 +68,14 @@
</span><span class="cx">                                 over: function(e){
</span><span class="cx">                                         var m, b, h, o, f;
</span><span class="cx">                                         m = $(this).find('.wp-submenu');
</span><del>-                                        b = m.parent().offset().top + m.height() + 1; // Bottom offset of the menu
</del><ins>+                                        b = $(this).offset().top + m.height() + 1; // Bottom offset of the menu
</ins><span class="cx">                                         h = $('#wpwrap').height(); // Height of the entire page
</span><span class="cx">                                         o = 60 + b - h;
</span><del>-                                        f = $(window).height() + $('body').scrollTop() - 15; // The fold
-                                        if (f < (b - o)) {
</del><ins>+                                        f = $(window).height() + $(window).scrollTop() - 15; // The fold
+                                        if ( f < (b - o) ) {
</ins><span class="cx">                                                 o = b - f;
</span><span class="cx">                                         }
</span><del>-                                        if (o > 1) {
</del><ins>+                                        if ( o > 1 ) {
</ins><span class="cx">                                                 m.css({'marginTop':'-'+o+'px'});
</span><span class="cx">                                         } else if ( m.css('marginTop') ) {
</span><span class="cx">                                                 m.css({'marginTop':''});
</span><span class="lines">@@ -86,27 +92,42 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         favorites : function() {
</span><del>-                $('#favorite-inside').width($('#favorite-actions').width()-4);
-                $('#favorite-toggle, #favorite-inside').bind( 'mouseenter', function(){$('#favorite-inside').removeClass('slideUp').addClass('slideDown'); setTimeout(function(){if ( $('#favorite-inside').hasClass('slideDown') ) { $('#favorite-inside').slideDown(100); $('#favorite-first').addClass('slide-down'); }}, 200) } );
-
-                $('#favorite-toggle, #favorite-inside').bind( 'mouseleave', function(){$('#favorite-inside').removeClass('slideDown').addClass('slideUp'); setTimeout(function(){if ( $('#favorite-inside').hasClass('slideUp') ) { $('#favorite-inside').slideUp(100, function(){ $('#favorite-first').removeClass('slide-down'); } ); }}, 300) } );
</del><ins>+                $('#favorite-inside').width( $('#favorite-actions').width() - 4 );
+                $('#favorite-toggle, #favorite-inside').bind('mouseenter', function() {
+                        $('#favorite-inside').removeClass('slideUp').addClass('slideDown');
+                        setTimeout(function() {
+                                if ( $('#favorite-inside').hasClass('slideDown') ) {
+                                        $('#favorite-inside').slideDown(100);
+                                        $('#favorite-first').addClass('slide-down');
+                                }
+                        }, 200);
+                }).bind('mouseleave', function() {
+                        $('#favorite-inside').removeClass('slideDown').addClass('slideUp');
+                        setTimeout(function() {
+                                if ( $('#favorite-inside').hasClass('slideUp') ) {
+                                        $('#favorite-inside').slideUp(100, function() {
+                                                $('#favorite-first').removeClass('slide-down');
+                                        });
+                                }
+                        }, 300);
+                });
</ins><span class="cx">         }
</span><span class="cx"> };
</span><span class="cx">
</span><del>-$(document).ready(function(){adminMenu.init();});
</del><ins>+$(document).ready(function(){ adminMenu.init(); });
</ins><span class="cx">
</span><span class="cx"> // show/hide/save table columns
</span><span class="cx"> columns = {
</span><span class="cx">         init : function() {
</span><del>-                $('.hide-column-tog').click( function() {
-                        var column = $(this).val(), show = $(this).attr('checked');
-                        if ( show ) {
</del><ins>+                $('.hide-column-tog', '#adv-settings').click( function() {
+                        var column = $(this).val();
+                        if ( $(this).attr('checked') )
</ins><span class="cx">                                 $('.column-' + column).show();
</span><del>-                        } else {
</del><ins>+                        else
</ins><span class="cx">                                 $('.column-' + column).hide();
</span><del>-                        }
</del><ins>+
</ins><span class="cx">                         columns.save_manage_columns_state();
</span><del>-                } );
</del><ins>+                });
</ins><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         save_manage_columns_state : function() {
</span><span class="lines">@@ -148,17 +169,20 @@
</span><span class="cx">         var lastClicked = false, checks, first, last, checked;
</span><span class="cx">
</span><span class="cx">         // pulse
</span><del>-        $('.fade').animate( { backgroundColor: '#ffffe0' }, 300).animate( { backgroundColor: '#fffbcc' }, 300).animate( { backgroundColor: '#ffffe0' }, 300).animate( { backgroundColor: '#fffbcc' }, 300);
</del><ins>+        $('div.fade').animate( { opacity: .5 }, 400)
+        .animate( { opacity: 1 }, 400)
+        .animate( { opacity: .5 }, 400)
+        .animate( { opacity: 1 }, 400);
</ins><span class="cx">
</span><span class="cx">         // Move .updated and .error alert boxes
</span><del>-        $('div.wrap h2 ~ div.updated, div.wrap h2 ~ div.error').addClass('below-h2');
-        $('div.updated, div.error').not('.below-h2').insertAfter('div.wrap h2:first');
</del><ins>+        $('div.wrap').children('h2:first').nextAll('div.updated, div.error').addClass('below-h2');
+        $('div.updated, div.error').not('.below-h2').insertAfter( $('div.wrap').children('h2:first') );
</ins><span class="cx">
</span><span class="cx">         // screen settings tab
</span><span class="cx">         $('#show-settings-link').click(function () {
</span><del>-                if ( ! $('#screen-options-wrap').hasClass('screen-options-open') ) {
</del><ins>+                if ( ! $('#screen-options-wrap').hasClass('screen-options-open') )
</ins><span class="cx">                         $('#contextual-help-link-wrap').css('visibility', 'hidden');
</span><del>-                }
</del><ins>+
</ins><span class="cx">                 $('#screen-options-wrap').slideToggle('fast', function(){
</span><span class="cx">                         if ( $(this).hasClass('screen-options-open') ) {
</span><span class="cx">                                 $('#show-settings-link').css({'backgroundImage':'url("images/screen-options-right.gif")'});
</span><span class="lines">@@ -174,10 +198,10 @@
</span><span class="cx">
</span><span class="cx">         // help tab
</span><span class="cx">         $('#contextual-help-link').click(function () {
</span><del>-                if ( ! $('#contextual-help-wrap').hasClass('contextual-help-open') ) {
</del><ins>+                if ( ! $('#contextual-help-wrap').hasClass('contextual-help-open') )
</ins><span class="cx">                         $('#screen-options-link-wrap').css('visibility', 'hidden');
</span><del>-                }
-                $('#contextual-help-wrap').slideToggle('fast', function(){
</del><ins>+
+                $('#contextual-help-wrap').slideToggle('fast', function() {
</ins><span class="cx">                         if ( $(this).hasClass('contextual-help-open') ) {
</span><span class="cx">                                 $('#contextual-help-link').css({'backgroundImage':'url("images/screen-options-right.gif")'});
</span><span class="cx">                                 $('#screen-options-link-wrap').css('visibility', '');
</span><span class="lines">@@ -189,20 +213,19 @@
</span><span class="cx">                 });
</span><span class="cx">                 return false;
</span><span class="cx">         });
</span><del>-        $('#contextual-help-link-wrap, #screen-options-link-wrap').show();
</del><span class="cx">
</span><span class="cx">         // check all checkboxes
</span><del>-        $( 'table:visible tbody .check-column :checkbox' ).click( function(e) {
</del><ins>+        $('tbody').children().children('.check-column').find(':checkbox').click( function(e) {
</ins><span class="cx">                 if ( 'undefined' == e.shiftKey ) { return true; }
</span><span class="cx">                 if ( e.shiftKey ) {
</span><span class="cx">                         if ( !lastClicked ) { return true; }
</span><del>-                        checks = $( lastClicked ).parents( 'form:first' ).find( ':checkbox' );
</del><ins>+                        checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' );
</ins><span class="cx">                         first = checks.index( lastClicked );
</span><span class="cx">                         last = checks.index( this );
</span><span class="cx">                         checked = $(this).attr('checked');
</span><span class="cx">                         if ( 0 < first && 0 < last && first != last ) {
</span><span class="cx">                                 checks.slice( first, last ).attr( 'checked', function(){
</span><del>-                                        if ( $(this).parents('tr').is(':visible') )
</del><ins>+                                        if ( $(this).closest('tr').is(':visible') )
</ins><span class="cx">                                                 return checked ? 'checked' : '';
</span><span class="cx">
</span><span class="cx">                                         return '';
</span><span class="lines">@@ -211,13 +234,17 @@
</span><span class="cx">                 }
</span><span class="cx">                 lastClicked = this;
</span><span class="cx">                 return true;
</span><del>-        } );
-        $( 'thead :checkbox, tfoot :checkbox' ).click( function(e) {
-                var c = $(this).attr('checked'), kbtoggle = 'undefined' == typeof toggleWithKeyboard ? false : toggleWithKeyboard, toggle = e.shiftKey || kbtoggle;
</del><ins>+        });
</ins><span class="cx">
</span><del>-
-                $(this).parents( 'form:first' ).find( 'table tbody:visible' ).find( '.check-column :checkbox' ).attr( 'checked', function() {
-                        if ( $(this).parents('tr').is(':hidden') )
</del><ins>+        $('thead, tfoot').find(':checkbox').click( function(e) {
+                var c = $(this).attr('checked'),
+                        kbtoggle = 'undefined' == typeof toggleWithKeyboard ? false : toggleWithKeyboard,
+                        toggle = e.shiftKey || kbtoggle;
+                
+                $(this).closest( 'table' ).children( 'tbody' ).filter(':visible')
+                .children().children('.check-column').find(':checkbox')
+                .attr('checked', function() {
+                        if ( $(this).closest('tr').is(':hidden') )
</ins><span class="cx">                                 return '';
</span><span class="cx">                         if ( toggle )
</span><span class="cx">                                 return $(this).attr( 'checked' ) ? '' : 'checked';
</span><span class="lines">@@ -225,7 +252,10 @@
</span><span class="cx">                                 return 'checked';
</span><span class="cx">                         return '';
</span><span class="cx">                 });
</span><del>-                $(this).parents( 'form:first' ).find( 'table thead:visible, table tfoot:visible').find( '.check-column :checkbox' ).attr( 'checked', function() {
</del><ins>+
+                $(this).closest('table').children('thead, tfoot').filter(':visible')
+                .children().children('.check-column').find(':checkbox')
+                .attr('checked', function() {
</ins><span class="cx">                         if ( toggle )
</span><span class="cx">                                 return '';
</span><span class="cx">                         else if (c)
</span><span class="lines">@@ -233,17 +263,16 @@
</span><span class="cx">                         return '';
</span><span class="cx">                 });
</span><span class="cx">         });
</span><ins>+
</ins><span class="cx">         $('#default-password-nag-no').click( function() {
</span><span class="cx">                 setUserSetting('default_password_nag', 'hide');
</span><span class="cx">                 $('div.default-password-nag').hide();
</span><span class="cx">                 return false;
</span><span class="cx">         });
</span><del>-        
-        
</del><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> jQuery(document).ready( function($){
</span><del>-        var turboNag = $('.turbo-nag');
</del><ins>+        var turboNag = $('span.turbo-nag', '#user_info');
</ins><span class="cx">
</span><span class="cx">         if ( !turboNag.length || ('undefined' != typeof(google) && google.gears) )
</span><span class="cx">                 return;
</span><span class="lines">@@ -260,5 +289,4 @@
</span><span class="cx">         }
</span><span class="cx">
</span><span class="cx">         turboNag.show();
</span><del>-
</del><span class="cx"> });
</span></span></pre></div>
<a id="trunkwpadminjscommonjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/common.js (11836 => 11837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/common.js        2009-08-17 01:38:01 UTC (rev 11836)
+++ trunk/wp-admin/js/common.js        2009-08-18 09:53:37 UTC (rev 11837)
</span><span class="lines">@@ -1 +1 @@
</span><del>-var showNotice,adminMenu,columns,validateForm;(function(a){adminMenu={init:function(){a("#adminmenu div.wp-menu-toggle").each(function(){if(a(this).siblings(".wp-submenu").length){a(this).click(function(){adminMenu.toggle(a(this).siblings(".wp-submenu"))})}else{a(this).hide()}});this.favorites();a("a.separator").click(function(){if(a("body").hasClass("folded")){adminMenu.fold(1);deleteUserSetting("mfold")}else{adminMenu.fold();setUserSetting("mfold","f")}return false});if(a("body").hasClass("folded")){this.fold()}this.restoreMenuState()},restoreMenuState:function(){a("#adminmenu li.wp-has-submenu").each(function(c,d){var b=getUserSetting("m"+c);if(a(d).hasClass("wp-has-current-submenu")){return true}if("o"==b){a(d).addClass("wp-menu-open")}else{if("c"==b){a(d).removeClass("wp-menu-open")}}})},toggle:function(b){b.slideToggle(150,function(){b.css("display","")}).parent().toggleClass("wp-menu-open");a("#adminmenu li.wp-has-submenu").each(function(d,f){var c=a(f).hasClass("wp-menu-open")?"o":"c";setUserSetting("m"+d,c)});return false},fold:function(b){if(b){a("body").removeClass("folded");a("#adminmenu li.wp-has-submenu").unbind()}else{a("body").addClass("folded");a("#adminmenu li.wp-has-submenu").hoverIntent({over:function(j){var d,c,g,k,i;d=a(this).find(".wp-submenu");c=d.parent().offset().top+d.height()+1;g=a("#wpwrap").height();k=60+c-g;i=a(window).height()+a("body").scrollTop()-15;if(i<(c-k)){k=c-i}if(k>1){d.css({marginTop:"-"+k+"px"})}else{if(d.css("marginTop")){d.css({marginTop:""})}}d.addClass("sub-open")},out:function(){a(this).find(".wp-submenu").removeClass("sub-open").css({marginTop:""})},timeout:220,sensitivity:8,interval:100})}},favorites:function(){a("#favorite-inside").width(a("#favorite-actions").width()-4);a("#favorite-toggle, #favorite-inside").bind("mouseenter",function(){a("#favorite-inside").removeClass("slideUp").addClass("slideDown");setTimeout(function(){if(a("#favorite-inside").hasClass("slideDown")){a("#favorite-inside").slideDown(100);a("#favorite-first").addClass("slide-down")}},200)});a("#favorite-toggle, #favorite-inside").bind("mouseleave",function(){a("#favorite-inside").removeClass("slideDown").addClass("slideUp");setTimeout(function(){if(a("#favorite-inside").hasClass("slideUp")){a("#favorite-inside").slideUp(100,function(){a("#favorite-first").removeClass("slide-down")})}},300)})}};a(document).ready(function(){adminMenu.init()});columns={init:function(){a(".hide-column-tog").click(function(){var c=a(this).val(),b=a(this).attr("checked");if(b){a(".column-"+c).show()}else{a(".column-"+c).hide()}columns.save_manage_columns_state()})},save_manage_columns_state:function(){var b=a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})}};a(document).ready(function(){columns.init()});validateForm=function(b){return !a(b).find(".form-required").filter(function(){return a("input:visible",this).val()==""}).addClass("form-invalid").change(function(){a(this).removeClass("form-invalid")}).size()}})(jQuery);showNotice={warn:function(){var a=commonL10n.warnDelete||"";if(confirm(a)){return true}return false},note:function(a){alert(a)}};jQuery(document).ready(function(d){var f=false,a,e,c,b;d(".fade").animate({backgroundColor:"#ffffe0"},300).animate({backgroundColor:"#fffbcc"},300).animate({backgroundColor:"#ffffe0"},300).animate({backgroundColor:"#fffbcc"},300);d("div.wrap h2 ~ div.updated, div.wrap h2 ~ div.error").addClass("below-h2");d("div.updated, div.error").not(".below-h2").insertAfter("div.wrap h2:first");d("#show-settings-link").click(function(){if(!d("#screen-options-wrap").hasClass("screen-options-open")){d("#contextual-help-link-wrap").css("visibility","hidden")}d("#screen-options-wrap").slideToggle("fast",function(){if(d(this).hasClass("screen-options-open")){d("#show-settings-link").css({backgroundImage:'url("images/screen-options-right.gif")'});d("#contextual-help-link-wrap").css("visibility","");d(this).removeClass("screen-options-open")}else{d("#show-settings-link").css({backgroundImage:'url("images/screen-options-right-up.gif")'});d(this).addClass("screen-options-open")}});return false});d("#contextual-help-link").click(function(){if(!d("#contextual-help-wrap").hasClass("contextual-help-open")){d("#screen-options-link-wrap").css("visibility","hidden")}d("#contextual-help-wrap").slideToggle("fast",function(){if(d(this).hasClass("contextual-help-open")){d("#contextual-help-link").css({backgroundImage:'url("images/screen-options-right.gif")'});d("#screen-options-link-wrap").css("visibility","");d(this).removeClass("contextual-help-open")}else{d("#contextual-help-link").css({backgroundImage:'url("images/screen-options-right-up.gif")'});d(this).addClass("contextual-help-open")}});return false});d("#contextual-help-link-wrap, #screen-options-link-wrap").show();d("table:visible tbody .check-column :checkbox").click(function(g){if("undefined"==g.shiftKey){return true}if(g.shiftKey){if(!f){return true}a=d(f).parents("form:first").find(":checkbox");e=a.index(f);c=a.index(this);b=d(this).attr("checked");if(0<e&&0<c&&e!=c){a.slice(e,c).attr("checked",function(){if(d(this).parents("tr").is(":visible")){return b?"checked":""}return""})}}f=this;return true});d("thead :checkbox, tfoot :checkbox").click(function(i){var j=d(this).attr("checked"),h="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,g=i.shiftKey||h;d(this).parents("form:first").find("table tbody:visible").find(".check-column :checkbox").attr("checked",function(){if(d(this).parents("tr").is(":hidden")){return""}if(g){return d(this).attr("checked")?"":"checked"}else{if(j){return"checked"}}return""});d(this).parents("form:first").find("table thead:visible, table tfoot:visible").find(".check-column :checkbox").attr("checked",function(){if(g){return""}else{if(j){return"checked"}}return""})});d("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");d("div.default-password-nag").hide();return false})});jQuery(document).ready(function(b){var a=b(".turbo-nag");if(!a.length||("undefined"!=typeof(google)&&google.gears)){return}if("undefined"!=typeof GearsFactory){return}else{try{if(("undefined"!=typeof window.ActiveXObject&&ActiveXObject("Gears.Factory"))||("undefined"!=typeof navigator.mimeTypes&&navigator.mimeTypes["application/x-googlegears"])){return}}catch(c){}}a.show()});
</del><span class="cx">\ No newline at end of file
</span><ins>+var showNotice,adminMenu,columns,validateForm;(function(a){adminMenu={init:function(){var b=a("#adminmenu");a(".wp-menu-toggle",b).each(function(){var c=a(this),d=c.siblings(".wp-submenu");if(d.length){c.click(function(){adminMenu.toggle(d)})}else{c.hide()}});this.favorites();a(".separator",b).click(function(){if(a("body").hasClass("folded")){adminMenu.fold(1);deleteUserSetting("mfold")}else{adminMenu.fold();setUserSetting("mfold","f")}return false});if(a("body").hasClass("folded")){this.fold()}this.restoreMenuState()},restoreMenuState:function(){a(".wp-has-submenu","#adminmenu").each(function(c,d){var b=getUserSetting("m"+c);if(a(d).hasClass("wp-has-current-submenu")){return true}if("o"==b){a(d).addClass("wp-menu-open")}else{if("c"==b){a(d).removeClass("wp-menu-open")}}})},toggle:function(b){b.slideToggle(150,function(){b.css("display","")}).parent().toggleClass("wp-menu-open");a(".wp-has-submenu","#adminmenu").each(function(d,f){var c=a(f).hasClass("wp-menu-open")?"o":"c";setUserSetting("m"+d,c)});return false},fold:function(b){if(b){a("body").removeClass("folded");a("#adminmenu li.wp-has-submenu").unbind()}else{a("body").addClass("folded");a("#adminmenu li.wp-has-submenu").hoverIntent({over:function(j){var d,c,g,k,i;d=a(this).find(".wp-submenu");c=a(this).offset().top+d.height()+1;g=a("#wpwrap").height();k=60+c-g;i=a(window).height()+a(window).scrollTop()-15;if(i<(c-k)){k=c-i}if(k>1){d.css({marginTop:"-"+k+"px"})}else{if(d.css("marginTop")){d.css({marginTop:""})}}d.addClass("sub-open")},out:function(){a(this).find(".wp-submenu").removeClass("sub-open").css({marginTop:""})},timeout:220,sensitivity:8,interval:100})}},favorites:function(){a("#favorite-inside").width(a("#favorite-actions").width()-4);a("#favorite-toggle, #favorite-inside").bind("mouseenter",function(){a("#favorite-inside").removeClass("slideUp").addClass("slideDown");setTimeout(function(){if(a("#favorite-inside").hasClass("slideDown")){a("#favorite-inside").slideDown(100);a("#favorite-first").addClass("slide-down")}},200)}).bind("mouseleave",function(){a("#favorite-inside").removeClass("slideDown").addClass("slideUp");setTimeout(function(){if(a("#favorite-inside").hasClass("slideUp")){a("#favorite-inside").slideUp(100,function(){a("#favorite-first").removeClass("slide-down")})}},300)})}};a(document).ready(function(){adminMenu.init()});columns={init:function(){a(".hide-column-tog","#adv-settings").click(function(){var b=a(this).val();if(a(this).attr("checked")){a(".column-"+b).show()}else{a(".column-"+b).hide()}columns.save_manage_columns_state()})},save_manage_columns_state:function(){var b=a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})}};a(document).ready(function(){columns.init()});validateForm=function(b){return !a(b).find(".form-required").filter(function(){return a("input:visible",this).val()==""}).addClass("form-invalid").change(function(){a(this).removeClass("form-invalid")}).size()}})(jQuery);showNotice={warn:function(){var a=commonL10n.warnDelete||"";if(confirm(a)){return true}return false},note:function(a){alert(a)}};jQuery(document).ready(function(d){var f=false,a,e,c,b;d("div.fade").animate({opacity:0.5},400).animate({opacity:1},400).animate({opacity:0.5},400).animate({opacity:1},400);d("div.wrap").children("h2:first").nextAll("div.updated, div.error").addClass("below-h2");d("div.updated, div.error").not(".below-h2").insertAfter(d("div.wrap").children("h2:first"));d("#show-settings-link").click(function(){if(!d("#screen-options-wrap").hasClass("screen-options-open")){d("#contextual-help-link-wrap").css("visibility","hidden")}d("#screen-options-wrap").slideToggle("fast",function(){if(d(this).hasClass("screen-options-open")){d("#show-settings-link").css({backgroundImage:'url("images/screen-options-right.gif")'});d("#contextual-help-link-wrap").css("visibility","");d(this).removeClass("screen-options-open")}else{d("#show-settings-link").css({backgroundImage:'url("images/screen-options-right-up.gif")'});d(this).addClass("screen-options-open")}});return false});d("#contextual-help-link").click(function(){if(!d("#contextual-help-wrap").hasClass("contextual-help-open")){d("#screen-options-link-wrap").css("visibility","hidden")}d("#contextual-help-wrap").slideToggle("fast",function(){if(d(this).hasClass("contextual-help-open")){d("#contextual-help-link").css({backgroundImage:'url("images/screen-options-right.gif")'});d("#screen-options-link-wrap").css("visibility","");d(this).removeClass("contextual-help-open")}else{d("#contextual-help-link").css({backgroundImage:'url("images/screen-options-right-up.gif")'});d(this).addClass("contextual-help-open")}});return false});d("tbody").children().children(".check-column").find(":checkbox").click(function(g){if("undefined"==g.shiftKey){return true}if(g.shiftKey){if(!f){return true}a=d(f).closest("form").find(":checkbox");e=a.index(f);c=a.index(this);b=d(this).attr("checked");if(0<e&&0<c&&e!=c){a.slice(e,c).attr("checked",function(){if(d(this).closest("tr").is(":visible")){return b?"checked":""}return""})}}f=this;return true});d("thead, tfoot").find(":checkbox").click(function(i){var j=d(this).attr("checked"),h="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,g=i.shiftKey||h;d(this).closest("table").children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").attr("checked",function(){if(d(this).closest("tr").is(":hidden")){return""}if(g){return d(this).attr("checked")?"":"checked"}else{if(j){return"checked"}}return""});d(this).closest("table").children("thead, tfoot").filter(":visible").children().children(".check-column").find(":checkbox").attr("checked",function(){if(g){return""}else{if(j){return"checked"}}return""})});d("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");d("div.default-password-nag").hide();return false})});jQuery(document).ready(function(b){var a=b("span.turbo-nag","#user_info");if(!a.length||("undefined"!=typeof(google)&&google.gears)){return}if("undefined"!=typeof GearsFactory){return}else{try{if(("undefined"!=typeof window.ActiveXObject&&ActiveXObject("Gears.Factory"))||("undefined"!=typeof navigator.mimeTypes&&navigator.mimeTypes["application/x-googlegears"])){return}}catch(c){}}a.show()});
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpadminjswidgetsdevjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/widgets.dev.js (11836 => 11837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/widgets.dev.js        2009-08-17 01:38:01 UTC (rev 11836)
+++ trunk/wp-admin/js/widgets.dev.js        2009-08-18 09:53:37 UTC (rev 11837)
</span><span class="lines">@@ -1,74 +1,83 @@
</span><del>-
</del><span class="cx"> var wpWidgets;
</span><span class="cx"> (function($) {
</span><span class="cx">
</span><span class="cx"> wpWidgets = {
</span><ins>+
</ins><span class="cx">         init : function() {
</span><del>- var rem;
</del><ins>+                var rem, sidebars = $('div.widgets-sortables');
</ins><span class="cx">
</span><del>-                if ( $('body').hasClass('widgets_access') ) {
-                        return;
-                }
-
-                $('#widgets-right div.sidebar-name').click(function(){
- var c = $(this).siblings('.widgets-sortables');
-                        if ( c.is(':visible') ) {
</del><ins>+                $('#widgets-right').children('.widgets-holder-wrap').children('.sidebar-name').click(function(){
+                        var c = $(this).siblings('.widgets-sortables'), p = $(this).parent();
+                        if ( !p.hasClass('closed') ) {
</ins><span class="cx">                                 c.sortable('disable');
</span><del>-                                $(this).parent().addClass('closed');
</del><ins>+                                p.addClass('closed');
</ins><span class="cx">                         } else {
</span><del>-                                $(this).parent().removeClass('closed');
</del><ins>+                                p.removeClass('closed');
</ins><span class="cx">                                 c.sortable('enable').sortable('refresh');
</span><span class="cx">                         }
</span><del>- });
</del><ins>+                });
</ins><span class="cx">
</span><del>- $('#widgets-left div.sidebar-name').click(function(){
-                        if ( $(this).siblings('.widget-holder').is(':visible') ) {
-                                $(this).parent().addClass('closed');
</del><ins>+                $('#widgets-left').children('.widgets-holder-wrap').children('.sidebar-name').click(function() {
+                        $(this).siblings('.widget-holder').parent().toggleClass('closed');
+                });
+
+                sidebars.not('#wp_inactive_widgets').each(function(){
+                        var h = 50, H = $(this).children('.widget').length;
+                        h = h + parseInt(H * 48, 10);
+                        $(this).css( 'minHeight', h + 'px' );
+                });
+
+                $('a.widget-action').live('click', function(){
+                        var css = {}, widget = $(this).closest('div.widget'), inside = widget.children('.widget-inside'), w = parseInt( widget.find('input.widget-width').val(), 10 );
+                        
+                        if ( inside.is(':hidden') ) {
+                                if ( w > 250 && inside.closest('div.widgets-sortables').length ) {
+                                        css['width'] = w + 30 + 'px';
+                                        if ( inside.closest('div.widget-liquid-right').length )
+                                                css['marginLeft'] = 235 - w + 'px';
+                                        widget.css(css);
+                                }
+                                wpWidgets.fixLabels(widget);
+                                inside.slideDown('fast');
</ins><span class="cx">                         } else {
</span><del>-                                $(this).parent().removeClass('closed');
</del><ins>+                                inside.slideUp('fast', function() {
+                                        widget.css({'width':'','marginLeft':''});
+                                });
</ins><span class="cx">                         }
</span><del>- });
</del><ins>+                        return false;
+                });
</ins><span class="cx">
</span><del>-                $('#widgets-right .widget, #wp_inactive_widgets .widget').each(function(){
-                        wpWidgets.appendTitle(this);
</del><ins>+                $('input.widget-control-save').live('click', function(){
+                        wpWidgets.save( $(this).closest('div.widget'), 0, 1, 0 );
+                        return false;
</ins><span class="cx">                 });
</span><span class="cx">
</span><del>-                this.addEvents();
- $('.widget-error').parents('.widget').find('a.widget-action').click();
</del><ins>+                $('a.widget-control-remove').live('click', function(){
+                        wpWidgets.save( $(this).closest('div.widget'), 1, 1, 0 );
+                        return false;
+                });
</ins><span class="cx">
</span><del>-                $('#available-widgets').droppable({
-                        tolerance: 'pointer',
-                        accept: function(o){
-                                return $(o).parent().attr('id') != 'widget-list';
-                        },
-                        drop: function(e,ui) {
-                                ui.draggable.addClass('deleting');
-                                $('#removing-widget').hide().children('span').html('');
-                        },
-                        over: function(e,ui) {
-                                ui.draggable.addClass('deleting');
-                                $('.widget-placeholder').hide();
</del><ins>+                $('a.widget-control-close').live('click', function(){
+                        wpWidgets.close( $(this).closest('div.widget') );
+                        return false;
+                });
</ins><span class="cx">
</span><del>-                                if ( ui.draggable.hasClass('ui-sortable-helper') )
-                                        $('#removing-widget').show().children('span').html( ui.draggable.find('.widget-title h4').html() );
-                        },
-                        out: function(e,ui) {
-                                ui.draggable.removeClass('deleting');
-                                $('.widget-placeholder').show();
-                                $('#removing-widget').hide().children('span').html('');
-                        }
</del><ins>+                sidebars.children('.widget').each(function() {
+                        wpWidgets.appendTitle(this);
+                        if ( $('p.widget-error', this).length )
+                                $('a.widget-action', this).click();
</ins><span class="cx">                 });
</span><span class="cx">
</span><del>-                $('#widget-list .widget').draggable({
-                        connectToSortable: '.widgets-sortables',
-                        handle: '.widget-title',
</del><ins>+                $('#widget-list').children('.widget').draggable({
+                        connectToSortable: 'div.widgets-sortables',
+                        handle: '> .widget-top > .widget-title',
</ins><span class="cx">                         distance: 2,
</span><span class="cx">                         helper: 'clone',
</span><span class="cx">                         zIndex: 5,
</span><span class="cx">                         containment: 'document',
</span><span class="cx">                         start: function(e,ui) {
</span><span class="cx">                                 wpWidgets.fixWebkit(1);
</span><del>-                                ui.helper.find('.widget-description').hide();
</del><ins>+                                ui.helper.find('div.widget-description').hide();
</ins><span class="cx">                         },
</span><span class="cx">                         stop: function(e,ui) {
</span><span class="cx">                                 if ( rem )
</span><span class="lines">@@ -78,17 +87,17 @@
</span><span class="cx">                         }
</span><span class="cx">                 });
</span><span class="cx">
</span><del>- $('.widgets-sortables').sortable({
</del><ins>+                sidebars.sortable({
</ins><span class="cx">                         placeholder: 'widget-placeholder',
</span><del>-                        connectWith: '.widgets-sortables',
-                        items: '.widget',
-                        handle: '.widget-title',
</del><ins>+                        items: '> .widget',
+                        handle: '> .widget-top > .widget-title',
+                        connectWith: 'div.widgets-sortables',
</ins><span class="cx">                         cursor: 'move',
</span><span class="cx">                         distance: 2,
</span><span class="cx">                         containment: 'document',
</span><span class="cx">                         start: function(e,ui) {
</span><span class="cx">                                 wpWidgets.fixWebkit(1);
</span><del>-                                ui.item.find('.widget-inside').hide();
</del><ins>+                                ui.item.children('.widget-inside').hide();
</ins><span class="cx">                                 ui.item.css({'marginLeft':'','width':''});
</span><span class="cx">                         },
</span><span class="cx">                         stop: function(e,ui) {
</span><span class="lines">@@ -101,7 +110,10 @@
</span><span class="cx">                                         return;
</span><span class="cx">                                 }
</span><span class="cx">
</span><del>-                                var add = ui.item.find('input.add_new').val(), n = ui.item.find('input.multi_number').val(), id = ui.item.attr('id'), sb = $(this).attr('id');
</del><ins>+                                var add = ui.item.find('input.add_new').val(),
+                                        n = ui.item.find('input.multi_number').val(),
+                                        id = ui.item.attr('id'),
+                                        sb = $(this).attr('id');
</ins><span class="cx">
</span><span class="cx">                                 ui.item.css({'marginLeft':'','width':''});
</span><span class="cx">                                 wpWidgets.fixWebkit();
</span><span class="lines">@@ -115,7 +127,6 @@
</span><span class="cx">                                                 ui.item.attr( 'id', 'new-' + id );
</span><span class="cx">                                                 rem = 'div#' + id;
</span><span class="cx">                                         }
</span><del>-                                        wpWidgets.addEvents(ui.item);
</del><span class="cx">                                         wpWidgets.save( ui.item, 0, 0, 1 );
</span><span class="cx">                                         ui.item.find('input.add_new').val('');
</span><span class="cx">                                         ui.item.find('a.widget-action').click();
</span><span class="lines">@@ -127,14 +138,36 @@
</span><span class="cx">                                 if ( !$(this).is(':visible') )
</span><span class="cx">                                         $(this).sortable('cancel');
</span><span class="cx">                         }
</span><del>-                }).not(':visible').sortable('disable');
-                wpWidgets.resize();
-                wpWidgets.fixLabels();
</del><ins>+                }).parent().filter('.closed').children('.widgets-sortables').sortable('disable');
+
+                $('#available-widgets').droppable({
+                        tolerance: 'pointer',
+                        accept: function(o){
+                                return $(o).parent().attr('id') != 'widget-list';
+                        },
+                        drop: function(e,ui) {
+                                ui.draggable.addClass('deleting');
+                                $('#removing-widget').hide().children('span').html('');
+                        },
+                        over: function(e,ui) {
+                                ui.draggable.addClass('deleting');
+                                $('div.widget-placeholder').hide();
+
+                                if ( ui.draggable.hasClass('ui-sortable-helper') )
+                                        $('#removing-widget').show().children('span')
+                                        .html( ui.draggable.find('div.widget-title').children('h4').html() );
+                        },
+                        out: function(e,ui) {
+                                ui.draggable.removeClass('deleting');
+                                $('div.widget-placeholder').show();
+                                $('#removing-widget').hide().children('span').html('');
+                        }
+                });
</ins><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         saveOrder : function(sb) {
</span><span class="cx">                 if ( sb )
</span><del>-                        $('#' + sb).parents('.widgets-holder-wrap').find('.ajax-feedback').css('visibility', 'visible');
</del><ins>+                        $('#' + sb).closest('div.widgets-holder-wrap').find('img.ajax-feedback').css('visibility', 'visible');
</ins><span class="cx">
</span><span class="cx">                 var a = {
</span><span class="cx">                         action: 'widgets-order',
</span><span class="lines">@@ -142,20 +175,21 @@
</span><span class="cx">                         sidebars: []
</span><span class="cx">                 };
</span><span class="cx">
</span><del>-                $('.widgets-sortables').each( function() {
</del><ins>+                $('div.widgets-sortables').each( function() {
</ins><span class="cx">                         a['sidebars[' + $(this).attr('id') + ']'] = $(this).sortable('toArray').join(',');
</span><span class="cx">                 });
</span><span class="cx">
</span><span class="cx">                 $.post( ajaxurl, a, function() {
</span><del>-                        $('.ajax-feedback').css('visibility', 'hidden');
</del><ins>+                        $('img.ajax-feedback').css('visibility', 'hidden');
</ins><span class="cx">                 });
</span><ins>+
</ins><span class="cx">                 this.resize();
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         save : function(widget, del, animate, order) {
</span><del>-                var sb = widget.parents('.widgets-sortables').attr('id'), data = widget.find('form').serialize(), a;
</del><ins>+                var sb = widget.closest('div.widgets-sortables').attr('id'), data = widget.find('form').serialize(), a;
</ins><span class="cx">                 widget = $(widget);
</span><del>-                widget.find('.ajax-feedback').css('visibility', 'visible');
</del><ins>+                $('.ajax-feedback', widget).css('visibility', 'visible');
</ins><span class="cx">
</span><span class="cx">                 a = {
</span><span class="cx">                         action: 'save-widget',
</span><span class="lines">@@ -172,11 +206,11 @@
</span><span class="cx">                         var id;
</span><span class="cx">
</span><span class="cx">                         if ( del ) {
</span><del>-                                if ( !$('.widget_number', widget).val() ) {
-                                        id = $('.widget-id', widget).val();
-                                        $('#available-widgets .widget-id').each(function(){
</del><ins>+                                if ( !$('input.widget_number', widget).val() ) {
+                                        id = $('input.widget-id', widget).val();
+                                        $('#available-widgets').find('input.widget-id').each(function(){
</ins><span class="cx">                                                 if ( $(this).val() == id )
</span><del>-                                                        $(this).parents('.widget').show();
</del><ins>+                                                        $(this).closest('div.widget').show();
</ins><span class="cx">                                         });
</span><span class="cx">                                 }
</span><span class="cx">
</span><span class="lines">@@ -193,7 +227,7 @@
</span><span class="cx">                         } else {
</span><span class="cx">                                 $('.ajax-feedback').css('visibility', 'hidden');
</span><span class="cx">                                 if ( r && r.length > 2 ) {
</span><del>-                                        $('.widget-content', widget).html(r);
</del><ins>+                                        $('div.widget-content', widget).html(r);
</ins><span class="cx">                                         wpWidgets.appendTitle(widget);
</span><span class="cx">                                         wpWidgets.fixLabels(widget);
</span><span class="cx">                                 }
</span><span class="lines">@@ -204,20 +238,17 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         appendTitle : function(widget) {
</span><del>-                $('input[type="text"]', widget).each(function(){
-                        var title;
-                        if ( this.id.indexOf('title') != -1 ) {
-                                title = $(this).val().replace(/<[^<>]+>/g, '').replace(/</g, '&lt;').replace(/>/g, '&gt;');
-                                if ( title )
-                                        $('.widget-title .in-widget-title', widget).html(': ' + title);
-                                return false;
-                        }
-                });
</del><ins>+                var title = $('input[id*="-title"]', widget);
+                if ( title = title.val() ) {
+                        title = title.replace(/<[^<>]+>/g, '').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+                        $(widget).children('.widget-top').children('.widget-title').children()
+                                .children('.in-widget-title').html(': ' + title);
+                }
</ins><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         resize : function() {
</span><del>-                $('.widgets-sortables').not('#wp_inactive_widgets').each(function(){
-                        var h = 50, H = $('.widget', this).length;
</del><ins>+                $('div.widgets-sortables').not('#wp_inactive_widgets').each(function(){
+                        var h = 50, H = $(this).children('.widget').length;
</ins><span class="cx">                         h = h + parseInt(H * 48, 10);
</span><span class="cx">                         $(this).css( 'minHeight', h + 'px' );
</span><span class="cx">                 });
</span><span class="lines">@@ -230,55 +261,22 @@
</span><span class="cx">                         KhtmlUserSelect: n
</span><span class="cx">                 });
</span><span class="cx"> },
</span><del>-
- fixLabels : function(sc) {
-                sc = sc || document;
</del><span class="cx">
</span><del>-                $('.widget-inside label', sc).each(function(){
</del><ins>+ fixLabels : function(widget) {
+                widget.children('.widget-inside').find('label').each(function(){
</ins><span class="cx">                         var f = $(this).attr('for');
</span><del>-
</del><span class="cx">                         if ( f && f == $('input', this).attr('id') )
</span><span class="cx">                                 $(this).removeAttr('for');
</span><span class="cx">                 });
</span><span class="cx">         },
</span><del>-
</del><ins>+
</ins><span class="cx"> close : function(widget) {
</span><del>-                widget.find('.widget-inside').slideUp('fast', function(){
</del><ins>+                widget.children('.widget-inside').slideUp('fast', function(){
</ins><span class="cx">                         widget.css({'width':'','marginLeft':''});
</span><span class="cx">                 });
</span><del>-        },
-
- addEvents : function(sc) {
-                sc = sc || document;
-                $('a.widget-action', sc).click(function(){
- var w = parseInt( $(this).parents('.widget').find('.widget-width').val(), 10 ), css = {}, inside = $(this).parents('.widget-top').siblings('.widget-inside');
-                        if ( inside.is(':hidden') ) {
-                                if ( w > 250 && inside.parents('.widgets-sortables').length ) {
-                                        css['width'] = w + 30 + 'px';
-                                        if ( inside.parents('.widget-liquid-right').length )
-                                                css['marginLeft'] = 235 - w + 'px';
-                                        inside.parents('.widget').css(css);
-                                }
-                                inside.slideDown('fast');
-                        } else {
-                                inside.slideUp('fast', function(){ inside.parents('.widget').css({'width':'','marginLeft':''}); });
-                        }
- return false;
- });
- $('.widget-control-save', sc).click(function(){
-                        wpWidgets.save( $(this).parents('.widget'), 0, 1, 0 );
-                        return false;
-                });
-                $('.widget-control-remove', sc).click(function(){
-                        wpWidgets.save( $(this).parents('.widget'), 1, 1, 0 );
-                        return false;
-                });
-                $('.widget-control-close', sc).click(function(){
-                        wpWidgets.close( $(this).parents('.widget') );
-                        return false;
-                });
</del><span class="cx">         }
</span><span class="cx"> };
</span><del>-$(document).ready(function(){wpWidgets.init();});
</del><span class="cx">
</span><ins>+$(document).ready(function($){ wpWidgets.init(); });
+
</ins><span class="cx"> })(jQuery);
</span></span></pre></div>
<a id="trunkwpadminjswidgetsjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/widgets.js (11836 => 11837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/widgets.js        2009-08-17 01:38:01 UTC (rev 11836)
+++ trunk/wp-admin/js/widgets.js        2009-08-18 09:53:37 UTC (rev 11837)
</span><span class="lines">@@ -1 +1 @@
</span><del>-var wpWidgets;(function(a){wpWidgets={init:function(){var b;if(a("body").hasClass("widgets_access")){return}a("#widgets-right div.sidebar-name").click(function(){var d=a(this).siblings(".widgets-sortables");if(d.is(":visible")){d.sortable("disable");a(this).parent().addClass("closed")}else{a(this).parent().removeClass("closed");d.sortable("enable").sortable("refresh")}});a("#widgets-left div.sidebar-name").click(function(){if(a(this).siblings(".widget-holder").is(":visible")){a(this).parent().addClass("closed")}else{a(this).parent().removeClass("closed")}});a("#widgets-right .widget, #wp_inactive_widgets .widget").each(function(){wpWidgets.appendTitle(this)});this.addEvents();a(".widget-error").parents(".widget").find("a.widget-action").click();a("#available-widgets").droppable({tolerance:"pointer",accept:function(c){return a(c).parent().attr("id")!="widget-list"},drop:function(d,c){c.draggable.addClass("deleting");a("#removing-widget").hide().children("span").html("")},over:function(d,c){c.draggable.addClass("deleting");a(".widget-placeholder").hide();if(c.draggable.hasClass("ui-sortable-helper")){a("#removing-widget").show().children("span").html(c.draggable.find(".widget-title h4").html())}},out:function(d,c){c.draggable.removeClass("deleting");a(".widget-placeholder").show();a("#removing-widget").hide().children("span").html("")}});a("#widget-list .widget").draggable({connectToSortable:".widgets-sortables",handle:".widget-title",distance:2,helper:"clone",zIndex:5,containment:"document",start:function(d,c){wpWidgets.fixWebkit(1);c.helper.find(".widget-description").hide()},stop:function(d,c){if(b){a(b).hide()}b="";wpWidgets.fixWebkit()}});a(".widgets-sortables").sortable({placeholder:"widget-placeholder",connectWith:".widgets-sortables",items:".widget",handle:".widget-title",cursor:"move",distance:2,containment:"document",start:function(d,c){wpWidgets.fixWebkit(1);c.item.find(".widget-inside").hide();c.item.css({marginLeft:"",width:""})},stop:function(f,c){if(c.item.hasClass("ui-draggable")){c.item.draggable("destroy")}if(c.item.hasClass("deleting")){wpWidgets.save(c.item,1,0,1);c.item.remove();return}var d=c.item.find("input.add_new").val(),i=c.item.find("input.multi_number").val(),h=c.item.attr("id"),g=a(this).attr("id");c.item.css({marginLeft:"",width:""});wpWidgets.fixWebkit();if(d){if("multi"==d){c.item.html(c.item.html().replace(/<[^<>]+>/g,function(e){return e.replace(/__i__|%i%/g,i)}));c.item.attr("id",h.replace(/__i__|%i%/g,i));i++;a("div#"+h).find("input.multi_number").val(i)}else{if("single"==d){c.item.attr("id","new-"+h);b="div#"+h}}wpWidgets.addEvents(c.item);wpWidgets.save(c.item,0,0,1);c.item.find("input.add_new").val("");c.item.find("a.widget-action").click();return}wpWidgets.saveOrder(g)},receive:function(d,c){if(!a(this).is(":visible")){a(this).sortable("cancel")}}}).not(":visible").sortable("disable");wpWidgets.resize();wpWidgets.fixLabels()},saveOrder:function(c){if(c){a("#"+c).parents(".widgets-holder-wrap").find(".ajax-feedback").css("visibility","visible")}var b={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};a(".widgets-sortables").each(function(){b["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(",")});a.post(ajaxurl,b,function(){a(".ajax-feedback").css("visibility","hidden")});this.resize()},save:function(g,d,e,b){var h=g.parents(".widgets-sortables").attr("id"),f=g.find("form").serialize(),c;g=a(g);g.find(".ajax-feedback").css("visibility","visible");c={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h};if(d){c.delete_widget=1}f+="&"+a.param(c);a.post(ajaxurl,f,function(i){var j;if(d){if(!a(".widget_number",g).val()){j=a(".widget-id",g).val();a("#available-widgets .widget-id").each(function(){if(a(this).val()==j){a(this).parents(".widget").show()}})}if(e){b=0;g.slideUp("fast",function(){a(this).remove();wpWidgets.saveOrder()})}else{g.remove();wpWidgets.resize()}}else{a(".ajax-feedback").css("visibility","hidden");if(i&&i.length>2){a(".widget-content",g).html(i);wpWidgets.appendTitle(g);wpWidgets.fixLabels(g)}}if(b){wpWidgets.saveOrder()}})},appendTitle:function(b){a('input[type="text"]',b).each(function(){var c;if(this.id.indexOf("title")!=-1){c=a(this).val().replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;");if(c){a(".widget-title .in-widget-title",b).html(": "+c)}return false}})},resize:function(){a(".widgets-sortables").not("#wp_inactive_widgets").each(function(){var c=50,b=a(".widget",this).length;c=c+parseInt(b*48,10);a(this).css("minHeight",c+"px")})},fixWebkit:function(b){b=b?"none":"";a("body").css({WebkitUserSelect:b,KhtmlUserSelect:b})},fixLabels:function(b){b=b||document;a(".widget-inside label",b).each(function(){var c=a(this).attr("for");if(c&&c==a("input",this).attr("id")){a(this).removeAttr("for")}})},close:function(b){b.find(".widget-inside").slideUp("fast",function(){b.css({width:"",marginLeft:""})})},addEvents:function(b){b=b||document;a("a.widget-action",b).click(function(){var d=parseInt(a(this).parents(".widget").find(".widget-width").val(),10),e={},c=a(this).parents(".widget-top").siblings(".widget-inside");if(c.is(":hidden")){if(d>250&&c.parents(".widgets-sortables").length){e.width=d+30+"px";if(c.parents(".widget-liquid-right").length){e.marginLeft=235-d+"px"}c.parents(".widget").css(e)}c.slideDown("fast")}else{c.slideUp("fast",function(){c.parents(".widget").css({width:"",marginLeft:""})})}return false});a(".widget-control-save",b).click(function(){wpWidgets.save(a(this).parents(".widget"),0,1,0);return false});a(".widget-control-remove",b).click(function(){wpWidgets.save(a(this).parents(".widget"),1,1,0);return false});a(".widget-control-close",b).click(function(){wpWidgets.close(a(this).parents(".widget"));return false})}};a(document).ready(function(){wpWidgets.init()})})(jQuery);
</del><span class="cx">\ No newline at end of file
</span><ins>+var wpWidgets;(function(a){wpWidgets={init:function(){var c,b=a("div.widgets-sortables");a("#widgets-right").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){var e=a(this).siblings(".widgets-sortables"),d=a(this).parent();if(!d.hasClass("closed")){e.sortable("disable");d.addClass("closed")}else{d.removeClass("closed");e.sortable("enable").sortable("refresh")}});a("#widgets-left").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){a(this).siblings(".widget-holder").parent().toggleClass("closed")});b.not("#wp_inactive_widgets").each(function(){var e=50,d=a(this).children(".widget").length;e=e+parseInt(d*48,10);a(this).css("minHeight",e+"px")});a("a.widget-action").live("click",function(){var f={},g=a(this).closest("div.widget"),d=g.children(".widget-inside"),e=parseInt(g.find("input.widget-width").val(),10);if(d.is(":hidden")){if(e>250&&d.closest("div.widgets-sortables").length){f.width=e+30+"px";if(d.closest("div.widget-liquid-right").length){f.marginLeft=235-e+"px"}g.css(f)}wpWidgets.fixLabels(g);d.slideDown("fast")}else{d.slideUp("fast",function(){g.css({width:"",marginLeft:""})})}return false});a("input.widget-control-save").live("click",function(){wpWidgets.save(a(this).closest("div.widget"),0,1,0);return false});a("a.widget-control-remove").live("click",function(){wpWidgets.save(a(this).closest("div.widget"),1,1,0);return false});a("a.widget-control-close").live("click",function(){wpWidgets.close(a(this).closest("div.widget"));return false});b.children(".widget").each(function(){wpWidgets.appendTitle(this);if(a("p.widget-error",this).length){a("a.widget-action",this).click()}});a("#widget-list").children(".widget").draggable({connectToSortable:"div.widgets-sortables",handle:"> .widget-top > .widget-title",distance:2,helper:"clone",zIndex:5,containment:"document",start:function(f,d){wpWidgets.fixWebkit(1);d.helper.find("div.widget-description").hide()},stop:function(f,d){if(c){a(c).hide()}c="";wpWidgets.fixWebkit()}});b.sortable({placeholder:"widget-placeholder",items:"> .widget",handle:"> .widget-top > .widget-title",connectWith:"div.widgets-sortables",cursor:"move",distance:2,containment:"document",start:function(f,d){wpWidgets.fixWebkit(1);d.item.children(".widget-inside").hide();d.item.css({marginLeft:"",width:""})},stop:function(g,d){if(d.item.hasClass("ui-draggable")){d.item.draggable("destroy")}if(d.item.hasClass("deleting")){wpWidgets.save(d.item,1,0,1);d.item.remove();return}var f=d.item.find("input.add_new").val(),j=d.item.find("input.multi_number").val(),i=d.item.attr("id"),h=a(this).attr("id");d.item.css({marginLeft:"",width:""});wpWidgets.fixWebkit();if(f){if("multi"==f){d.item.html(d.item.html().replace(/<[^<>]+>/g,function(e){return e.replace(/__i__|%i%/g,j)}));d.item.attr("id",i.replace(/__i__|%i%/g,j));j++;a("div#"+i).find("input.multi_number").val(j)}else{if("single"==f){d.item.attr("id","new-"+i);c="div#"+i}}wpWidgets.save(d.item,0,0,1);d.item.find("input.add_new").val("");d.item.find("a.widget-action").click();return}wpWidgets.saveOrder(h)},receive:function(f,d){if(!a(this).is(":visible")){a(this).sortable("cancel")}}}).parent().filter(".closed").children(".widgets-sortables").sortable("disable");a("#available-widgets").droppable({tolerance:"pointer",accept:function(d){return a(d).parent().attr("id")!="widget-list"},drop:function(f,d){d.draggable.addClass("deleting");a("#removing-widget").hide().children("span").html("")},over:function(f,d){d.draggable.addClass("deleting");a("div.widget-placeholder").hide();if(d.draggable.hasClass("ui-sortable-helper")){a("#removing-widget").show().children("span").html(d.draggable.find("div.widget-title").children("h4").html())}},out:function(f,d){d.draggable.removeClass("deleting");a("div.widget-placeholder").show();a("#removing-widget").hide().children("span").html("")}})},saveOrder:function(c){if(c){a("#"+c).closest("div.widgets-holder-wrap").find("img.ajax-feedback").css("visibility","visible")}var b={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};a("div.widgets-sortables").each(function(){b["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(",")});a.post(ajaxurl,b,function(){a("img.ajax-feedback").css("visibility","hidden")});this.resize()},save:function(g,d,e,b){var h=g.closest("div.widgets-sortables").attr("id"),f=g.find("form").serialize(),c;g=a(g);a(".ajax-feedback",g).css("visibility","visible");c={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h};if(d){c.delete_widget=1}f+="&"+a.param(c);a.post(ajaxurl,f,function(i){var j;if(d){if(!a("input.widget_number",g).val()){j=a("input.widget-id",g).val();a("#available-widgets").find("input.widget-id").each(function(){if(a(this).val()==j){a(this).closest("div.widget").show()}})}if(e){b=0;g.slideUp("fast",function(){a(this).remove();wpWidgets.saveOrder()})}else{g.remove();wpWidgets.resize()}}else{a(".ajax-feedback").css("visibility","hidden");if(i&&i.length>2){a("div.widget-content",g).html(i);wpWidgets.appendTitle(g);wpWidgets.fixLabels(g)}}if(b){wpWidgets.saveOrder()}})},appendTitle:function(b){var c=a('input[id*="-title"]',b);if(c=c.val()){c=c.replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;");a(b).children(".widget-top").children(".widget-title").children().children(".in-widget-title").html(": "+c)}},resize:function(){a("div.widgets-sortables").not("#wp_inactive_widgets").each(function(){var c=50,b=a(this).children(".widget").length;c=c+parseInt(b*48,10);a(this).css("minHeight",c+"px")})},fixWebkit:function(b){b=b?"none":"";a("body").css({WebkitUserSelect:b,KhtmlUserSelect:b})},fixLabels:function(b){b.children(".widget-inside").find("label").each(function(){var c=a(this).attr("for");if(c&&c==a("input",this).attr("id")){a(this).removeAttr("for")}})},close:function(b){b.children(".widget-inside").slideUp("fast",function(){b.css({width:"",marginLeft:""})})}};a(document).ready(function(b){wpWidgets.init()})})(jQuery);
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpadminwidgetsphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/widgets.php (11836 => 11837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/widgets.php        2009-08-17 01:38:01 UTC (rev 11836)
+++ trunk/wp-admin/widgets.php        2009-08-18 09:53:37 UTC (rev 11837)
</span><span class="lines">@@ -15,9 +15,19 @@
</span><span class="cx"> if ( ! current_user_can('switch_themes') )
</span><span class="cx">         wp_die( __( 'Cheatin&#8217; uh?' ));
</span><span class="cx">
</span><del>-wp_enqueue_script('admin-widgets');
</del><span class="cx"> wp_admin_css( 'widgets' );
</span><span class="cx">
</span><ins>+$widgets_access = get_user_setting( 'widgets_access' );
+if ( isset($_GET['widgets-access']) ) {
+        $widgets_access = 'on' == $_GET['widgets-access'] ? 'on' : 'off';
+        set_user_setting( 'widgets_access', $widgets_access );
+}
+
+if ( 'on' == $widgets_access )
+        add_filter( 'admin_body_class', create_function('', '{return " widgets_access ";}') );
+else
+        wp_enqueue_script('admin-widgets');
+
</ins><span class="cx"> do_action( 'sidebar_admin_setup' );
</span><span class="cx">
</span><span class="cx"> $title = __( 'Widgets' );
</span><span class="lines">@@ -302,15 +312,6 @@
</span><span class="cx">         exit;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-$widgets_access = get_user_setting( 'widgets_access' );
-if ( isset($_GET['widgets-access']) ) {
-        $widgets_access = 'on' == $_GET['widgets-access'] ? 'on' : 'off';
-        set_user_setting( 'widgets_access', $widgets_access );
-}
-
-if ( 'on' == $widgets_access )
-        add_filter( 'admin_body_class', create_function('', '{return " widgets_access ";}') );
-
</del><span class="cx"> $messages = array(
</span><span class="cx">         __('Changes saved.')
</span><span class="cx"> );
</span></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (11836 => 11837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2009-08-17 01:38:01 UTC (rev 11836)
+++ trunk/wp-includes/script-loader.php        2009-08-18 09:53:37 UTC (rev 11837)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">
</span><span class="cx">         $scripts->add( 'utils', "/wp-admin/js/utils$suffix.js", false, '20090102' );
</span><span class="cx">
</span><del>-        $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), '20090730' );
</del><ins>+        $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), '20090817' );
</ins><span class="cx">         $scripts->add_data( 'common', 'group', 1 );
</span><span class="cx">         $scripts->localize( 'common', 'commonL10n', array(
</span><span class="cx">                 'warnDelete' => __("You are about to permanently delete the selected items.\n 'Cancel' to stop, 'OK' to delete."),
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx">                 $scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox' ), '20090114' );
</span><span class="cx">                 $scripts->add_data( 'media-upload', 'group', 1 );
</span><span class="cx">
</span><del>-                $scripts->add( 'admin-widgets', "/wp-admin/js/widgets$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable' ), '20090601' );
</del><ins>+                $scripts->add( 'admin-widgets', "/wp-admin/js/widgets$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable' ), '20090817' );
</ins><span class="cx">                 $scripts->add_data( 'admin-widgets', 'group', 1 );
</span><span class="cx">
</span><span class="cx">                 $scripts->add( 'word-count', "/wp-admin/js/word-count$suffix.js", array( 'jquery' ), '20090422' );
</span></span></pre>
</div>
</div>
</body>
</html>