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