http://www.mediawiki.org/wiki/Special:Code/MediaWiki/68845

Revision: 68845
Author:   catrope
Date:     2010-07-01 18:37:01 +0000 (Thu, 01 Jul 2010)

Log Message:
-----------
UsabilityInitiative: (bug 24216) Fix regression from r68229 causing the second 
attempt to leave the page not to trigger EditWarning. Solved in a kind of 
hackish way but it works.

Modified Paths:
--------------
    
trunk/extensions/UsabilityInitiative/Vector/Modules/EditWarning/EditWarning.js
    trunk/extensions/UsabilityInitiative/Vector/Vector.combined.js
    trunk/extensions/UsabilityInitiative/Vector/Vector.combined.min.js
    trunk/extensions/UsabilityInitiative/Vector/Vector.hooks.php

Modified: 
trunk/extensions/UsabilityInitiative/Vector/Modules/EditWarning/EditWarning.js
===================================================================
--- 
trunk/extensions/UsabilityInitiative/Vector/Modules/EditWarning/EditWarning.js  
    2010-07-01 18:11:42 UTC (rev 68844)
+++ 
trunk/extensions/UsabilityInitiative/Vector/Modules/EditWarning/EditWarning.js  
    2010-07-01 18:37:01 UTC (rev 68845)
@@ -14,6 +14,7 @@
        var ourWindowOnBeforeUnload = function() {
                var fallbackResult = undefined;
                var retval = undefined;
+               var thisFunc = arguments.callee;
                // Check if someone already set on onbeforeunload hook
                if ( fallbackWindowOnBeforeUnload ) {
                        // Get the result of their onbeforeunload hook
@@ -39,6 +40,10 @@
                // Unset the onbeforeunload handler so we don't break page 
caching in Firefox
                window.onbeforeunload = null;
                if ( retval !== undefined ) {
+                       // ...but if the user chooses not to leave the page, we 
need to rebind it
+                       setTimeout( function() {
+                               window.onbeforeunload = thisFunc;
+                       } );
                        return retval;
                }
        };

Modified: trunk/extensions/UsabilityInitiative/Vector/Vector.combined.js
===================================================================
--- trunk/extensions/UsabilityInitiative/Vector/Vector.combined.js      
2010-07-01 18:11:42 UTC (rev 68844)
+++ trunk/extensions/UsabilityInitiative/Vector/Vector.combined.js      
2010-07-01 18:37:01 UTC (rev 68845)
@@ -312,6 +312,7 @@
        var ourWindowOnBeforeUnload = function() {
                var fallbackResult = undefined;
                var retval = undefined;
+               var thisFunc = arguments.callee;
                // Check if someone already set on onbeforeunload hook
                if ( fallbackWindowOnBeforeUnload ) {
                        // Get the result of their onbeforeunload hook
@@ -337,6 +338,10 @@
                // Unset the onbeforeunload handler so we don't break page 
caching in Firefox
                window.onbeforeunload = null;
                if ( retval !== undefined ) {
+                       // ...but if the user chooses not to leave the page, we 
need to rebind it
+                       setTimeout( function() {
+                               window.onbeforeunload = thisFunc;
+                       } );
                        return retval;
                }
        };

Modified: trunk/extensions/UsabilityInitiative/Vector/Vector.combined.min.js
===================================================================
--- trunk/extensions/UsabilityInitiative/Vector/Vector.combined.min.js  
2010-07-01 18:11:42 UTC (rev 68844)
+++ trunk/extensions/UsabilityInitiative/Vector/Vector.combined.min.js  
2010-07-01 18:37:01 UTC (rev 68845)
@@ -15,9 +15,9 @@
 var 
rtl=$j('body').is('.rtl');$j.collapsibleTabs.moveToCollapsed=function(ele){var 
$moving=$j(ele);$j.collapsibleTabs.getSettings($j($j.collapsibleTabs.getSettings($moving).expandedContainer)).shifting=true;var
 data=$j.collapsibleTabs.getSettings($moving);var 
target=data.collapsedContainer;$moving.css("position","relative").css((rtl?'left':'right'),0).animate({width:'1px'},"normal",function(){$j(this).hide();$j('<span
 class="placeholder" 
style="display:none;"></span>').insertAfter(this);$j(this).remove().prependTo(target).data('collapsibleTabsSettings',data);$j(this).attr('style','display:list-item;');$j.collapsibleTabs.getSettings($j($j.collapsibleTabs.getSettings($j(ele)).expandedContainer)).shifting=false;$j.collapsibleTabs.handleResize();});};$j.collapsibleTabs.moveToExpanded=function(ele){var
 
$moving=$j(ele);$j.collapsibleTabs.getSettings($j($j.collapsibleTabs.getSettings($moving).expandedContainer)).shifting=true;var
 data=$j.collapsibleTabs.getSettings($moving);var 
$target=$j(data.expandedContainer).find('span.placeholder:first');var 
expandedWidth=data.expandedWidth;$moving.css("position","relative").css((rtl?'right':'left'),0).css('width','1px');$target.replaceWith($moving.remove().css('width','1px').data('collapsibleTabsSettings',data).animate({width:expandedWidth+"px"},"normal",function(){$j(this).attr('style','display:block;');$j.collapsibleTabs.getSettings($j($j.collapsibleTabs.getSettings($moving).expandedContainer)).shifting=false;$j.collapsibleTabs.handleResize();}));};$j('#p-views
 
ul').bind("beforeTabCollapse",function(){if($j('#p-cactions').css('display')=='none')
 
$j("#p-cactions").addClass("filledPortlet").removeClass("emptyPortlet").find('h5').css('width','1px').animate({'width':'26px'},390);}).bind("beforeTabExpand",function(){if($j('#p-cactions
 li').length==1)
 $j("#p-cactions 
h5").animate({'width':'1px'},370,function(){$j(this).attr('style','').parent().addClass("emptyPortlet").removeClass("filledPortlet");});}).collapsibleTabs({expandCondition:function(eleWidth){if(rtl){return($j('#right-navigation').position().left+$j('#right-navigation').width()+1)<($j('#left-navigation').position().left-eleWidth);}else{return($j('#left-navigation').position().left+$j('#left-navigation').width()+1)<($j('#right-navigation').position().left-eleWidth);}},collapseCondition:function(){if(rtl){return($j('#right-navigation').position().left+$j('#right-navigation').width())>$j('#left-navigation').position().left;}else{return($j('#left-navigation').position().left+$j('#left-navigation').width())>$j('#right-navigation').position().left;}}});});$j(document).ready(function(){if(!wgVectorEnabledModules.editwarning||$j('#wpTextbox1').size()==0){return
 true;}
-$j('#wpTextbox1, 
#wpSummary').each(function(){$j(this).data('origtext',$j(this).val());});var 
fallbackWindowOnBeforeUnload=window.onbeforeunload;var 
ourWindowOnBeforeUnload=function(){var fallbackResult=undefined;var 
retval=undefined;if(fallbackWindowOnBeforeUnload){fallbackResult=fallbackWindowOnBeforeUnload();}
+$j('#wpTextbox1, 
#wpSummary').each(function(){$j(this).data('origtext',$j(this).val());});var 
fallbackWindowOnBeforeUnload=window.onbeforeunload;var 
ourWindowOnBeforeUnload=function(){var fallbackResult=undefined;var 
retval=undefined;var 
thisFunc=arguments.callee;if(fallbackWindowOnBeforeUnload){fallbackResult=fallbackWindowOnBeforeUnload();}
 
if(fallbackResult!==undefined){retval=fallbackResult;}else{if(wgAction=='submit'||$j('#wpTextbox1').data('origtext')!=$j('#wpTextbox1').val()||$j('#wpSummary').data('origtext')!=$j('#wpSummary').val()){retval=mw.usability.getMsg('vector-editwarning-warning');}}
-window.onbeforeunload=null;if(retval!==undefined){return retval;}};var 
pageShowHandler=function(){window.onbeforeunload=ourWindowOnBeforeUnload;};pageShowHandler();if(window.addEventListener){window.addEventListener('pageshow',pageShowHandler,false);}else
 if(window.attachEvent){window.attachEvent('pageshow',pageShowHandler);}
+window.onbeforeunload=null;if(retval!==undefined){setTimeout(function(){window.onbeforeunload=thisFunc;});return
 retval;}};var 
pageShowHandler=function(){window.onbeforeunload=ourWindowOnBeforeUnload;};pageShowHandler();if(window.addEventListener){window.addEventListener('pageshow',pageShowHandler,false);}else
 if(window.attachEvent){window.attachEvent('pageshow',pageShowHandler);}
 
$j('form').submit(function(){window.onbeforeunload=fallbackWindowOnBeforeUnload;});});var
 
fallbackWindowOnBeforeUnload=null;$j(document).ready(function(){if(!wgVectorEnabledModules.expandablesearch||skin!='vector'){return
 true;}
 var 
map={'ltr':{'msie':[['>=',8]],'blackberry':false,'ipod':false,'iphone':false,'ps3':false},'rtl':{'msie':[['>=',8]],'blackberry':false,'ipod':false,'iphone':false,'ps3':false}};if(!mw.usability.testBrowser(map)){return
 true;}
 
$j('#searchInput').expandableField({'beforeExpand':function(context){$j(this).parent().animate({'borderTopColor':'#a0d8ff','borderLeftColor':'#a0d8ff','borderRightColor':'#a0d8ff','borderBottomColor':'#a0d8ff'},'fast');},'beforeCondense':function(context){$j(this).parent().animate({'borderTopColor':'#aaaaaa','borderLeftColor':'#aaaaaa','borderRightColor':'#aaaaaa','borderBottomColor':'#aaaaaa'},'fast');},'afterExpand':function(context){if(typeof
 
$j.collapsibleTabs!='undefined'){$j.collapsibleTabs.handleResize();}},'afterCondense':function(context){if(typeof
 
$j.collapsibleTabs!='undefined'){$j.collapsibleTabs.handleResize();}},'expandToLeft':!$j('body').is('.rtl')}).css('float',$j('body').is('.rtl')?'right':'left').siblings('button').css('float',$j('body').is('.rtl')?'right':'left');});$j(document).ready(function(){if(!wgVectorEnabledModules.footercleanup){return
 true;}

Modified: trunk/extensions/UsabilityInitiative/Vector/Vector.hooks.php
===================================================================
--- trunk/extensions/UsabilityInitiative/Vector/Vector.hooks.php        
2010-07-01 18:11:42 UTC (rev 68844)
+++ trunk/extensions/UsabilityInitiative/Vector/Vector.hooks.php        
2010-07-01 18:37:01 UTC (rev 68845)
@@ -15,15 +15,15 @@
                        array( 'src' => 
'Modules/CollapsibleNav/CollapsibleNav.js', 'version' => 28 ),
                        array( 'src' => 
'Modules/CollapsibleTabs/CollapsibleTabs.js', 'version' => 8 ),
                        array( 'src' => 
'Modules/ExpandableSearch/ExpandableSearch.js', 'version' => 5 ),
-                       array( 'src' => 'Modules/EditWarning/EditWarning.js', 
'version' => 9 ),
+                       array( 'src' => 'Modules/EditWarning/EditWarning.js', 
'version' => 10 ),
                        array( 'src' => 
'Modules/FooterCleanup/FooterCleanup.js', 'version' => 5 ),
                        array( 'src' => 'Modules/SimpleSearch/SimpleSearch.js', 
'version' => 21 ),
                ),
                'combined' => array(
-                       array( 'src' => 'Vector.combined.js', 'version' => 63 ),
+                       array( 'src' => 'Vector.combined.js', 'version' => 64 ),
                ),
                'minified' => array(
-                       array( 'src' => 'Vector.combined.min.js', 'version' => 
64 ),
+                       array( 'src' => 'Vector.combined.min.js', 'version' => 
65 ),
                ),
        );
        static $modules = array(



_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to