r62031 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r62030‎ | r62031 | r62032 >
Date:16:35, 5 February 2010
Author:adam
Status:ok
Tags:
Comment:
Enhancing RTL support in the TOC to fix a Safari rendering problem.
Modified paths:
  • /trunk/extensions/UsabilityInitiative/UsabilityInitiative.hooks.php (modified) (history)
  • /trunk/extensions/UsabilityInitiative/js/plugins.combined.js (modified) (history)
  • /trunk/extensions/UsabilityInitiative/js/plugins.combined.min.js (modified) (history)
  • /trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.toc.js (modified) (history)

Diff [purge]

Index: trunk/extensions/UsabilityInitiative/UsabilityInitiative.hooks.php
@@ -76,16 +76,16 @@
7777 array( 'src' => 'js/plugins/jquery.wikiEditor.highlight.js', 'version' => 29 ),
7878 array( 'src' => 'js/plugins/jquery.wikiEditor.toolbar.js', 'version' => 47 ),
7979 array( 'src' => 'js/plugins/jquery.wikiEditor.dialogs.js', 'version' => 12 ),
80 - array( 'src' => 'js/plugins/jquery.wikiEditor.toc.js', 'version' => 79 ),
 80+ array( 'src' => 'js/plugins/jquery.wikiEditor.toc.js', 'version' => 80 ),
8181 array( 'src' => 'js/plugins/jquery.wikiEditor.preview.js', 'version' => 10 ),
8282 array( 'src' => 'js/plugins/jquery.wikiEditor.templateEditor.js', 'version' => 17 ),
8383 array( 'src' => 'js/plugins/jquery.wikiEditor.publish.js', 'version' => 2 ),
8484 ),
8585 'combined' => array(
86 - array( 'src' => 'js/plugins.combined.js', 'version' => 222 ),
 86+ array( 'src' => 'js/plugins.combined.js', 'version' => 223 ),
8787 ),
8888 'minified' => array(
89 - array( 'src' => 'js/plugins.combined.min.js', 'version' => 222 ),
 89+ array( 'src' => 'js/plugins.combined.min.js', 'version' => 223 ),
9090 ),
9191 ),
9292 );
Index: trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.toc.js
@@ -11,6 +11,8 @@
1212 minimumWidth: '70px',
1313 // Minimum width of the wikiText area
1414 textMinimumWidth: '450px',
 15+ // The style property to be used for positioning the flexible module in regular mode
 16+ flexProperty: 'marginRight',
1517 // Boolean var indicating text direction
1618 rtl: false
1719 },
@@ -143,7 +145,7 @@
144146 return;
145147 }
146148 $.wikiEditor.modules.toc.cfg.rtl = config.rtl;
147 -
 149+ $.wikiEditor.modules.toc.cfg.flexProperty = config.rtl ? 'marginLeft' : 'marginRight';
148150 var height = context.$ui.find( '.wikiEditor-ui-left' ).height();
149151 context.modules.toc.$toc = $( '<div />' )
150152 .addClass( 'wikiEditor-ui-toc' )
@@ -165,9 +167,9 @@
166168 context.$ui.find( '.wikiEditor-ui-right' )
167169 .css( 'width', fixedWidth + 'px' );
168170 context.$ui.find( '.wikiEditor-ui-left' )
169 - .css( 'marginRight', ( -1 * fixedWidth ) + 'px' )
 171+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, ( -1 * fixedWidth ) + 'px' )
170172 .children()
171 - .css( 'marginRight', fixedWidth + 'px' );
 173+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, fixedWidth + 'px' );
172174 } else if( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) {
173175 context.$ui.find( '.wikiEditor-ui-left' )
174176 .css( 'width', fixedWidth );
@@ -189,11 +191,12 @@
190192 width = $.wikiEditor.modules.toc.cfg.textMinimumWidth;
191193 // set our styles for goofy mode
192194 context.$ui.find( '.wikiEditor-ui-left' )
193 - .css( { 'marginRight': '', 'position': 'absolute', 'float': 'none',
 195+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '')
 196+ .css( { 'position': 'absolute', 'float': 'none',
194197 'left': $.wikiEditor.modules.toc.cfg.rtl ? 'auto': 0,
195198 'right' : $.wikiEditor.modules.toc.cfg.rtl ? 0 : 'auto' } )
196199 .children()
197 - .css( 'marginRight', '' );
 200+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' );
198201 context.$ui.find( '.wikiEditor-ui-right' )
199202 .css( { 'width': 'auto', 'position': 'absolute', 'float': 'none',
200203 'right': $.wikiEditor.modules.toc.cfg.rtl ? 'auto': 0,
@@ -212,7 +215,8 @@
213216 context.$wikitext
214217 .css( { 'position': '', 'height': '' } );
215218 context.$ui.find( '.wikiEditor-ui-right' )
216 - .css( { 'marginRight': '', 'position': '', 'left': '', 'right': '', 'float': '', 'top': '', 'height': '' } );
 219+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' )
 220+ .css( { 'position': '', 'left': '', 'right': '', 'float': '', 'top': '', 'height': '' } );
217221 context.$ui.find( '.wikiEditor-ui-left' )
218222 .css( { 'width': '', 'position': '', 'left': '', 'float': '', 'right': '' } );
219223 }
@@ -227,9 +231,9 @@
228232 }
229233 context.$ui.find( '.wikiEditor-ui-right' ).hide();
230234 context.$ui.find( '.wikiEditor-ui-left' )
231 - .css( 'marginRight', '' )
 235+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' )
232236 .children()
233 - .css( 'marginRight', '' );
 237+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' );
234238 }
235239 context.modules.toc.$toc.data( 'positionMode', 'disabled' );
236240 },
@@ -296,13 +300,16 @@
297301 }
298302 var pT = $this.parent().position().top - 1;
299303 context.modules.toc.$toc.data( 'collapsed', true );
 304+ var leftParam = {}, leftChildParam = {};
 305+ leftParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = '-1px';
 306+ leftChildParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = '1px';
300307 context.$ui.find( '.wikiEditor-ui-left' )
301 - .animate( { 'marginRight': '-1px' }, 'fast', function() {
302 - $( this ).css( 'marginRight', 0 );
 308+ .animate( leftParam, 'fast', function() {
 309+ $( this ).css( $.wikiEditor.modules.toc.cfg.flexProperty, 0 );
303310 } )
304311 .children()
305 - .animate( { 'marginRight': '1px' }, 'fast', function() {
306 - $( this ).css( 'marginRight', 0 );
 312+ .animate( leftChildParam, 'fast', function() {
 313+ $( this ).css( $.wikiEditor.modules.toc.cfg.flexProperty, 0 );
307314 } );
308315 context.$ui.find( '.wikiEditor-ui-right' )
309316 .css( {
@@ -339,10 +346,13 @@
340347 // check if we've got enough room to open to our stored width
341348 if ( availableSpace < openWidth ) openWidth = availableSpace;
342349 context.$ui.find( '.wikiEditor-ui-toc-expandControl' ).hide();
 350+ var leftParam = {}, leftChildParam = {};
 351+ leftParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = parseFloat( openWidth ) * -1;
 352+ leftChildParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = openWidth;
343353 context.$ui.find( '.wikiEditor-ui-left' )
344 - .animate( { 'marginRight': ( parseFloat( openWidth ) * -1 ) }, 'fast' )
 354+ .animate( leftParam, 'fast' )
345355 .children()
346 - .animate( { 'marginRight': openWidth }, 'fast' );
 356+ .animate( leftChildParam, 'fast' );
347357 context.$ui.find( '.wikiEditor-ui-right' )
348358 .show()
349359 .css( 'marginTop', '1px' )
@@ -492,8 +502,9 @@
493503 // for some odd reason, ui.size.width seems a step ahead of what the *actual* width of
494504 // the resizable is
495505 $( this ).css( { 'width': ui.size.width, 'top': 'auto', 'height': 'auto' } )
496 - .data( 'wikiEditor-ui-left' ).css( 'marginRight', ( -1 * ui.size.width ) )
497 - .children().css( 'marginRight', ui.size.width );
 506+ .data( 'wikiEditor-ui-left' )
 507+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, ( -1 * ui.size.width ) )
 508+ .children().css( $.wikiEditor.modules.toc.cfg.flexProperty, ui.size.width );
498509 // Let the UI know things have moved around
499510 context.fn.trigger( 'resize' );
500511 },
Index: trunk/extensions/UsabilityInitiative/js/plugins.combined.js
@@ -9119,6 +9119,8 @@
91209120 minimumWidth: '70px',
91219121 // Minimum width of the wikiText area
91229122 textMinimumWidth: '450px',
 9123+ // The style property to be used for positioning the flexible module in regular mode
 9124+ flexProperty: 'marginRight',
91239125 // Boolean var indicating text direction
91249126 rtl: false
91259127 },
@@ -9251,7 +9253,7 @@
92529254 return;
92539255 }
92549256 $.wikiEditor.modules.toc.cfg.rtl = config.rtl;
9255 -
 9257+ $.wikiEditor.modules.toc.cfg.flexProperty = config.rtl ? 'marginLeft' : 'marginRight';
92569258 var height = context.$ui.find( '.wikiEditor-ui-left' ).height();
92579259 context.modules.toc.$toc = $( '<div />' )
92589260 .addClass( 'wikiEditor-ui-toc' )
@@ -9273,9 +9275,9 @@
92749276 context.$ui.find( '.wikiEditor-ui-right' )
92759277 .css( 'width', fixedWidth + 'px' );
92769278 context.$ui.find( '.wikiEditor-ui-left' )
9277 - .css( 'marginRight', ( -1 * fixedWidth ) + 'px' )
 9279+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, ( -1 * fixedWidth ) + 'px' )
92789280 .children()
9279 - .css( 'marginRight', fixedWidth + 'px' );
 9281+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, fixedWidth + 'px' );
92809282 } else if( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) {
92819283 context.$ui.find( '.wikiEditor-ui-left' )
92829284 .css( 'width', fixedWidth );
@@ -9297,11 +9299,12 @@
92989300 width = $.wikiEditor.modules.toc.cfg.textMinimumWidth;
92999301 // set our styles for goofy mode
93009302 context.$ui.find( '.wikiEditor-ui-left' )
9301 - .css( { 'marginRight': '', 'position': 'absolute', 'float': 'none',
 9303+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '')
 9304+ .css( { 'position': 'absolute', 'float': 'none',
93029305 'left': $.wikiEditor.modules.toc.cfg.rtl ? 'auto': 0,
93039306 'right' : $.wikiEditor.modules.toc.cfg.rtl ? 0 : 'auto' } )
93049307 .children()
9305 - .css( 'marginRight', '' );
 9308+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' );
93069309 context.$ui.find( '.wikiEditor-ui-right' )
93079310 .css( { 'width': 'auto', 'position': 'absolute', 'float': 'none',
93089311 'right': $.wikiEditor.modules.toc.cfg.rtl ? 'auto': 0,
@@ -9320,7 +9323,8 @@
93219324 context.$wikitext
93229325 .css( { 'position': '', 'height': '' } );
93239326 context.$ui.find( '.wikiEditor-ui-right' )
9324 - .css( { 'marginRight': '', 'position': '', 'left': '', 'right': '', 'float': '', 'top': '', 'height': '' } );
 9327+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' )
 9328+ .css( { 'position': '', 'left': '', 'right': '', 'float': '', 'top': '', 'height': '' } );
93259329 context.$ui.find( '.wikiEditor-ui-left' )
93269330 .css( { 'width': '', 'position': '', 'left': '', 'float': '', 'right': '' } );
93279331 }
@@ -9335,9 +9339,9 @@
93369340 }
93379341 context.$ui.find( '.wikiEditor-ui-right' ).hide();
93389342 context.$ui.find( '.wikiEditor-ui-left' )
9339 - .css( 'marginRight', '' )
 9343+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' )
93409344 .children()
9341 - .css( 'marginRight', '' );
 9345+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' );
93429346 }
93439347 context.modules.toc.$toc.data( 'positionMode', 'disabled' );
93449348 },
@@ -9404,13 +9408,16 @@
94059409 }
94069410 var pT = $this.parent().position().top - 1;
94079411 context.modules.toc.$toc.data( 'collapsed', true );
 9412+ var leftParam = {}, leftChildParam = {};
 9413+ leftParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = '-1px';
 9414+ leftChildParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = '1px';
94089415 context.$ui.find( '.wikiEditor-ui-left' )
9409 - .animate( { 'marginRight': '-1px' }, 'fast', function() {
9410 - $( this ).css( 'marginRight', 0 );
 9416+ .animate( leftParam, 'fast', function() {
 9417+ $( this ).css( $.wikiEditor.modules.toc.cfg.flexProperty, 0 );
94119418 } )
94129419 .children()
9413 - .animate( { 'marginRight': '1px' }, 'fast', function() {
9414 - $( this ).css( 'marginRight', 0 );
 9420+ .animate( leftChildParam, 'fast', function() {
 9421+ $( this ).css( $.wikiEditor.modules.toc.cfg.flexProperty, 0 );
94159422 } );
94169423 context.$ui.find( '.wikiEditor-ui-right' )
94179424 .css( {
@@ -9447,10 +9454,13 @@
94489455 // check if we've got enough room to open to our stored width
94499456 if ( availableSpace < openWidth ) openWidth = availableSpace;
94509457 context.$ui.find( '.wikiEditor-ui-toc-expandControl' ).hide();
 9458+ var leftParam = {}, leftChildParam = {};
 9459+ leftParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = parseFloat( openWidth ) * -1;
 9460+ leftChildParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = openWidth;
94519461 context.$ui.find( '.wikiEditor-ui-left' )
9452 - .animate( { 'marginRight': ( parseFloat( openWidth ) * -1 ) }, 'fast' )
 9462+ .animate( leftParam, 'fast' )
94539463 .children()
9454 - .animate( { 'marginRight': openWidth }, 'fast' );
 9464+ .animate( leftChildParam, 'fast' );
94559465 context.$ui.find( '.wikiEditor-ui-right' )
94569466 .show()
94579467 .css( 'marginTop', '1px' )
@@ -9600,8 +9610,9 @@
96019611 // for some odd reason, ui.size.width seems a step ahead of what the *actual* width of
96029612 // the resizable is
96039613 $( this ).css( { 'width': ui.size.width, 'top': 'auto', 'height': 'auto' } )
9604 - .data( 'wikiEditor-ui-left' ).css( 'marginRight', ( -1 * ui.size.width ) )
9605 - .children().css( 'marginRight', ui.size.width );
 9614+ .data( 'wikiEditor-ui-left' )
 9615+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, ( -1 * ui.size.width ) )
 9616+ .children().css( $.wikiEditor.modules.toc.cfg.flexProperty, ui.size.width );
96069617 // Let the UI know things have moved around
96079618 context.fn.trigger( 'resize' );
96089619 },
Index: trunk/extensions/UsabilityInitiative/js/plugins.combined.min.js
@@ -627,7 +627,7 @@
628628 nameEndIndex=nameEnd.index+oldDivider+2;ranges.push(new Range(ranges[ranges.length-1].end,nameBeginIndex));nameIndex=ranges.push(new Range(nameBeginIndex,nameEndIndex))-1;currentValue=currentField.substring(currentField.indexOf('=')+1);oldDivider+=currentField.indexOf('=')+1;valueBegin=currentValue.match(/\S+/);if(valueBegin==null){continue;}
629629 valueBeginIndex=valueBegin.index+oldDivider+1;valueEnd=currentValue.match(/[^\s]\s*$/);if(valueEnd==null){continue;}
630630 valueEndIndex=valueEnd.index+oldDivider+2;equalsIndex=ranges.push(new Range(ranges[ranges.length-1].end,valueBeginIndex))-1;valueIndex=ranges.push(new Range(valueBeginIndex,valueEndIndex))-1;params.push(new Param(wikitext.substring(nameBeginIndex,nameEndIndex),wikitext.substring(valueBeginIndex,valueEndIndex),currentParamNumber,nameIndex,equalsIndex,valueIndex));paramsByName[wikitext.substring(nameBeginIndex,nameEndIndex)]=currentParamNumber;}}
631 -ranges.push(new Range(valueEndIndex,wikitext.length));this.ranges=ranges;this.wikitext=wikitext;this.params=params;this.paramsByName=paramsByName;this.templateNameIndex=templateNameIndex;}}};})(jQuery);(function($){$.wikiEditor.modules.toc={cfg:{defaultWidth:'166px',minimumWidth:'70px',textMinimumWidth:'450px',rtl:false},api:{},evt:{change:function(context,event){$.wikiEditor.modules.toc.fn.update(context);},ready:function(context,event){$.wikiEditor.modules.toc.fn.build(context);context.$content.parent().blur(function(){var context=event.data.context;$.wikiEditor.modules.toc.fn.unhighlight(context);});$.wikiEditor.modules.toc.evt.resize(context);},resize:function(context,event){var availableWidth=context.$wikitext.width()-parseFloat($.wikiEditor.modules.toc.cfg.textMinimumWidth),totalMinWidth=parseFloat($.wikiEditor.modules.toc.cfg.minimumWidth)+
 631+ranges.push(new Range(valueEndIndex,wikitext.length));this.ranges=ranges;this.wikitext=wikitext;this.params=params;this.paramsByName=paramsByName;this.templateNameIndex=templateNameIndex;}}};})(jQuery);(function($){$.wikiEditor.modules.toc={cfg:{defaultWidth:'166px',minimumWidth:'70px',textMinimumWidth:'450px',flexProperty:'marginRight',rtl:false},api:{},evt:{change:function(context,event){$.wikiEditor.modules.toc.fn.update(context);},ready:function(context,event){$.wikiEditor.modules.toc.fn.build(context);context.$content.parent().blur(function(){var context=event.data.context;$.wikiEditor.modules.toc.fn.unhighlight(context);});$.wikiEditor.modules.toc.evt.resize(context);},resize:function(context,event){var availableWidth=context.$wikitext.width()-parseFloat($.wikiEditor.modules.toc.cfg.textMinimumWidth),totalMinWidth=parseFloat($.wikiEditor.modules.toc.cfg.minimumWidth)+
632632 parseFloat($.wikiEditor.modules.toc.cfg.textMinimumWidth);context.$ui.find('.wikiEditor-ui-right').resizable('option','maxWidth',availableWidth);if(context.modules.toc.$toc.data('positionMode')!='disabled'&&context.$wikitext.width()<totalMinWidth){$.wikiEditor.modules.toc.fn.disable(context);}else if(context.modules.toc.$toc.data('positionMode')=='disabled'&&context.$wikitext.width()>totalMinWidth){$.wikiEditor.modules.toc.fn.enable(context);}else if(context.modules.toc.$toc.data('positionMode')=='regular'&&context.$ui.find('.wikiEditor-ui-right').width()>availableWidth){$.wikiEditor.modules.toc.fn.switchLayout(context);}else if(context.modules.toc.$toc.data('positionMode')=='goofy'&&context.modules.toc.$toc.data('previousWidth')<context.$wikitext.width()){$.wikiEditor.modules.toc.fn.switchLayout(context);}
633633 if(context.modules.toc.$toc.data('positionMode')=='goofy'){context.modules.toc.$toc.find('div').autoEllipsis({'position':'right','tooltip':true,'restoreText':true});}
634634 if(!context.modules.toc.$toc.data('collapsed')){context.modules.toc.$toc.height(context.$ui.find('.wikiEditor-ui-left').height()-
@@ -635,15 +635,15 @@
636636 context.modules.toc.$toc.data('previousWidth',context.$wikitext.width());},mark:function(context,event){var hash='';var markers=context.modules.highlight.markers;var tokenArray=context.modules.highlight.tokenArray;var outline=context.data.outline=[];var h=0;for(var i=0;i<tokenArray.length;i++){if(tokenArray[i].label!='TOC_HEADER'){continue;}
637637 h++;markers.push({index:h,start:tokenArray[i].tokenStart,end:tokenArray[i].offset,type:'toc',anchor:'before',afterWrap:function(node){var marker=$(node).data('marker');$(node).addClass('wikiEditor-toc-header').addClass('wikiEditor-toc-section-'+marker.index).data('section',marker.index);},onSkip:function(node){var marker=$(node).data('marker');if($(node).data('section')!=marker.index){$(node).removeClass('wikiEditor-toc-section-'+$(node).data('section')).addClass('wikiEditor-toc-section-'+marker.index).data('section',marker.index);}},getAnchor:function(ca1,ca2){return $(ca1.parentNode.previousSibling).is('div.wikiEditor-toc-header')?ca1.parentNode.previousSibling:null;}});hash+=tokenArray[i].match[2]+'\n';outline.push({'text':tokenArray[i].match[2],'level':tokenArray[i].match[1].length,'index':h});}
638638 if(typeof context.modules.toc.lastHash=='undefined'||context.modules.toc.lastHash!==hash){$.wikiEditor.modules.toc.fn.build(context);$.wikiEditor.modules.toc.fn.update(context);context.modules.toc.lastHash=hash;}}},exp:[{'regex':/^(={1,6})([^\r\n]+?)\1\s*$/m,'label':'TOC_HEADER','markAfter':true}],fn:{create:function(context,config){if('$toc'in context.modules.toc){return;}
639 -$.wikiEditor.modules.toc.cfg.rtl=config.rtl;var height=context.$ui.find('.wikiEditor-ui-left').height();context.modules.toc.$toc=$('<div />').addClass('wikiEditor-ui-toc').data('context',context).data('positionMode','regular').data('collapsed',false);context.$ui.find('.wikiEditor-ui-right').append(context.modules.toc.$toc);context.modules.toc.$toc.height(context.$ui.find('.wikiEditor-ui-left').height());$.wikiEditor.modules.toc.fn.redraw(context,$.wikiEditor.modules.toc.cfg.defaultWidth);},redraw:function(context,fixedWidth){var fixedWidth=parseFloat(fixedWidth);if(context.modules.toc.$toc.data('positionMode')=='regular'){context.$ui.find('.wikiEditor-ui-right').css('width',fixedWidth+'px');context.$ui.find('.wikiEditor-ui-left').css('marginRight',(-1*fixedWidth)+'px').children().css('marginRight',fixedWidth+'px');}else if(context.modules.toc.$toc.data('positionMode')=='goofy'){context.$ui.find('.wikiEditor-ui-left').css('width',fixedWidth);context.$ui.find('.wikiEditor-ui-right').css($.wikiEditor.modules.toc.cfg.rtl?'right':'left',fixedWidth);context.$wikitext.css('height',context.$ui.find('.wikiEditor-ui-right').height());}},switchLayout:function(context){var width,height=context.$ui.find('.wikiEditor-ui-right').height();if(context.modules.toc.$toc.data('positionMode')=='regular'&&!context.modules.toc.$toc.data('collapsed')){context.modules.toc.$toc.data('positionMode','goofy');context.modules.toc.$toc.data('positionModeChangeAt',context.$ui.find('.wikiEditor-ui-right').width());width=$.wikiEditor.modules.toc.cfg.textMinimumWidth;context.$ui.find('.wikiEditor-ui-left').css({'marginRight':'','position':'absolute','float':'none','left':$.wikiEditor.modules.toc.cfg.rtl?'auto':0,'right':$.wikiEditor.modules.toc.cfg.rtl?0:'auto'}).children().css('marginRight','');context.$ui.find('.wikiEditor-ui-right').css({'width':'auto','position':'absolute','float':'none','right':$.wikiEditor.modules.toc.cfg.rtl?'auto':0,'left':$.wikiEditor.modules.toc.cfg.rtl?0:'auto'});context.$wikitext.css('position','relative');}else if(context.modules.toc.$toc.data('positionMode')=='goofy'){context.modules.toc.$toc.data('positionMode','regular');width=context.$wikitext.width()-context.$ui.find('.wikiEditor-ui-left').width();if(width>context.modules.toc.$toc.data('positionModeChangeAt')){width=context.modules.toc.$toc.data('positionModeChangeAt');}
640 -context.$wikitext.css({'position':'','height':''});context.$ui.find('.wikiEditor-ui-right').css({'marginRight':'','position':'','left':'','right':'','float':'','top':'','height':''});context.$ui.find('.wikiEditor-ui-left').css({'width':'','position':'','left':'','float':'','right':''});}
 639+$.wikiEditor.modules.toc.cfg.rtl=config.rtl;$.wikiEditor.modules.toc.cfg.flexProperty=config.rtl?'marginLeft':'marginRight';var height=context.$ui.find('.wikiEditor-ui-left').height();context.modules.toc.$toc=$('<div />').addClass('wikiEditor-ui-toc').data('context',context).data('positionMode','regular').data('collapsed',false);context.$ui.find('.wikiEditor-ui-right').append(context.modules.toc.$toc);context.modules.toc.$toc.height(context.$ui.find('.wikiEditor-ui-left').height());$.wikiEditor.modules.toc.fn.redraw(context,$.wikiEditor.modules.toc.cfg.defaultWidth);},redraw:function(context,fixedWidth){var fixedWidth=parseFloat(fixedWidth);if(context.modules.toc.$toc.data('positionMode')=='regular'){context.$ui.find('.wikiEditor-ui-right').css('width',fixedWidth+'px');context.$ui.find('.wikiEditor-ui-left').css($.wikiEditor.modules.toc.cfg.flexProperty,(-1*fixedWidth)+'px').children().css($.wikiEditor.modules.toc.cfg.flexProperty,fixedWidth+'px');}else if(context.modules.toc.$toc.data('positionMode')=='goofy'){context.$ui.find('.wikiEditor-ui-left').css('width',fixedWidth);context.$ui.find('.wikiEditor-ui-right').css($.wikiEditor.modules.toc.cfg.rtl?'right':'left',fixedWidth);context.$wikitext.css('height',context.$ui.find('.wikiEditor-ui-right').height());}},switchLayout:function(context){var width,height=context.$ui.find('.wikiEditor-ui-right').height();if(context.modules.toc.$toc.data('positionMode')=='regular'&&!context.modules.toc.$toc.data('collapsed')){context.modules.toc.$toc.data('positionMode','goofy');context.modules.toc.$toc.data('positionModeChangeAt',context.$ui.find('.wikiEditor-ui-right').width());width=$.wikiEditor.modules.toc.cfg.textMinimumWidth;context.$ui.find('.wikiEditor-ui-left').css($.wikiEditor.modules.toc.cfg.flexProperty,'').css({'position':'absolute','float':'none','left':$.wikiEditor.modules.toc.cfg.rtl?'auto':0,'right':$.wikiEditor.modules.toc.cfg.rtl?0:'auto'}).children().css($.wikiEditor.modules.toc.cfg.flexProperty,'');context.$ui.find('.wikiEditor-ui-right').css({'width':'auto','position':'absolute','float':'none','right':$.wikiEditor.modules.toc.cfg.rtl?'auto':0,'left':$.wikiEditor.modules.toc.cfg.rtl?0:'auto'});context.$wikitext.css('position','relative');}else if(context.modules.toc.$toc.data('positionMode')=='goofy'){context.modules.toc.$toc.data('positionMode','regular');width=context.$wikitext.width()-context.$ui.find('.wikiEditor-ui-left').width();if(width>context.modules.toc.$toc.data('positionModeChangeAt')){width=context.modules.toc.$toc.data('positionModeChangeAt');}
 640+context.$wikitext.css({'position':'','height':''});context.$ui.find('.wikiEditor-ui-right').css($.wikiEditor.modules.toc.cfg.flexProperty,'').css({'position':'','left':'','right':'','float':'','top':'','height':''});context.$ui.find('.wikiEditor-ui-left').css({'width':'','position':'','left':'','float':'','right':''});}
641641 $.wikiEditor.modules.toc.fn.redraw(context,width);},disable:function(context){if(context.modules.toc.$toc.data('collapsed')){context.$ui.find('.wikiEditor-ui-toc-expandControl').hide();}else{if(context.modules.toc.$toc.data('positionMode')=='goofy'){$.wikiEditor.modules.toc.fn.switchLayout(context);}
642 -context.$ui.find('.wikiEditor-ui-right').hide();context.$ui.find('.wikiEditor-ui-left').css('marginRight','').children().css('marginRight','');}
 642+context.$ui.find('.wikiEditor-ui-right').hide();context.$ui.find('.wikiEditor-ui-left').css($.wikiEditor.modules.toc.cfg.flexProperty,'').children().css($.wikiEditor.modules.toc.cfg.flexProperty,'');}
643643 context.modules.toc.$toc.data('positionMode','disabled');},enable:function(context){context.modules.toc.$toc.data('positionMode','regular');if(context.modules.toc.$toc.data('collapsed')){context.$ui.find('.wikiEditor-ui-toc-expandControl').show();}else{context.$ui.find('.wikiEditor-ui-right').show();$.wikiEditor.modules.toc.fn.redraw(context,$.wikiEditor.modules.toc.cfg.minimumWidth);context.modules.toc.$toc.find('div').autoEllipsis({'position':'right','tooltip':true,'restoreText':true});}},unhighlight:function(context){if(context){context.modules.toc.$toc.find('div').removeClass('current');}},update:function(context){var div=context.fn.beforeSelection('wikiEditor-toc-header');if(div===null){return;}
644644 $.wikiEditor.modules.toc.fn.unhighlight(context);var section=div.data('section')||0;if(context.data.outline.length>0){var sectionLink=context.modules.toc.$toc.find('div.section-'+section);sectionLink.addClass('current');var relTop=sectionLink.offset().top-context.modules.toc.$toc.offset().top;var scrollTop=context.modules.toc.$toc.scrollTop();var divHeight=context.modules.toc.$toc.height();var sectionHeight=sectionLink.height();if(relTop<0)
645645 context.modules.toc.$toc.scrollTop(scrollTop+relTop);else if(relTop+sectionHeight>divHeight)
646646 context.modules.toc.$toc.scrollTop(scrollTop+relTop+sectionHeight-divHeight);}},collapse:function(event){var $this=$(this),context=$this.data('context');if(context.modules.toc.$toc.data('positionMode')=='goofy'){$.wikiEditor.modules.toc.fn.switchLayout(context);}
647 -var pT=$this.parent().position().top-1;context.modules.toc.$toc.data('collapsed',true);context.$ui.find('.wikiEditor-ui-left').animate({'marginRight':'-1px'},'fast',function(){$(this).css('marginRight',0);}).children().animate({'marginRight':'1px'},'fast',function(){$(this).css('marginRight',0);});context.$ui.find('.wikiEditor-ui-right').css({'marginTop':'1px','position':'absolute','left':$.wikiEditor.modules.toc.cfg.rtl?0:'auto','right':$.wikiEditor.modules.toc.cfg.rtl?'auto':0,'top':pT}).fadeOut('fast',function(){$(this).hide().css({'marginTop':'0','width':'1px'});context.$ui.find('.wikiEditor-ui-toc-expandControl').fadeIn('fast');context.fn.trigger('tocCollapse');context.fn.trigger('resize');});$.cookie('wikiEditor-'+context.instance+'-toc-width',0);return false;},expand:function(event){var $this=$(this),context=$this.data('context'),openWidth=parseFloat(context.modules.toc.$toc.data('openWidth')),availableSpace=context.$wikitext.width()-parseFloat($.wikiEditor.modules.toc.cfg.textMinimumWidth);if(availableSpace<$.wikiEditor.modules.toc.cfg.textMinmumWidth)return false;context.modules.toc.$toc.data('collapsed',false);if(availableSpace<openWidth)openWidth=availableSpace;context.$ui.find('.wikiEditor-ui-toc-expandControl').hide();context.$ui.find('.wikiEditor-ui-left').animate({'marginRight':(parseFloat(openWidth)*-1)},'fast').children().animate({'marginRight':openWidth},'fast');context.$ui.find('.wikiEditor-ui-right').show().css('marginTop','1px').animate({'width':openWidth},'fast',function(){context.$content.trigger('mouseup');$(this).css({'marginTop':'0','position':'relative','right':'auto','left':'auto','top':'auto'});context.fn.trigger('tocExpand');context.fn.trigger('resize');});$.cookie('wikiEditor-'+context.instance+'-toc-width',context.modules.toc.$toc.data('openWidth'));return false;},build:function(context){function buildStructure(outline,offset,level){if(offset==undefined)offset=0;if(level==undefined)level=1;var sections=[];for(var i=offset;i<outline.length;i++){if(outline[i].nLevel==level){var sub=buildStructure(outline,i+1,level+1);if(sub.length){outline[i].sections=sub;}
 647+var pT=$this.parent().position().top-1;context.modules.toc.$toc.data('collapsed',true);var leftParam={},leftChildParam={};leftParam[$.wikiEditor.modules.toc.cfg.flexProperty]='-1px';leftChildParam[$.wikiEditor.modules.toc.cfg.flexProperty]='1px';context.$ui.find('.wikiEditor-ui-left').animate(leftParam,'fast',function(){$(this).css($.wikiEditor.modules.toc.cfg.flexProperty,0);}).children().animate(leftChildParam,'fast',function(){$(this).css($.wikiEditor.modules.toc.cfg.flexProperty,0);});context.$ui.find('.wikiEditor-ui-right').css({'marginTop':'1px','position':'absolute','left':$.wikiEditor.modules.toc.cfg.rtl?0:'auto','right':$.wikiEditor.modules.toc.cfg.rtl?'auto':0,'top':pT}).fadeOut('fast',function(){$(this).hide().css({'marginTop':'0','width':'1px'});context.$ui.find('.wikiEditor-ui-toc-expandControl').fadeIn('fast');context.fn.trigger('tocCollapse');context.fn.trigger('resize');});$.cookie('wikiEditor-'+context.instance+'-toc-width',0);return false;},expand:function(event){var $this=$(this),context=$this.data('context'),openWidth=parseFloat(context.modules.toc.$toc.data('openWidth')),availableSpace=context.$wikitext.width()-parseFloat($.wikiEditor.modules.toc.cfg.textMinimumWidth);if(availableSpace<$.wikiEditor.modules.toc.cfg.textMinmumWidth)return false;context.modules.toc.$toc.data('collapsed',false);if(availableSpace<openWidth)openWidth=availableSpace;context.$ui.find('.wikiEditor-ui-toc-expandControl').hide();var leftParam={},leftChildParam={};leftParam[$.wikiEditor.modules.toc.cfg.flexProperty]=parseFloat(openWidth)*-1;leftChildParam[$.wikiEditor.modules.toc.cfg.flexProperty]=openWidth;context.$ui.find('.wikiEditor-ui-left').animate(leftParam,'fast').children().animate(leftChildParam,'fast');context.$ui.find('.wikiEditor-ui-right').show().css('marginTop','1px').animate({'width':openWidth},'fast',function(){context.$content.trigger('mouseup');$(this).css({'marginTop':'0','position':'relative','right':'auto','left':'auto','top':'auto'});context.fn.trigger('tocExpand');context.fn.trigger('resize');});$.cookie('wikiEditor-'+context.instance+'-toc-width',context.modules.toc.$toc.data('openWidth'));return false;},build:function(context){function buildStructure(outline,offset,level){if(offset==undefined)offset=0;if(level==undefined)level=1;var sections=[];for(var i=offset;i<outline.length;i++){if(outline[i].nLevel==level){var sub=buildStructure(outline,i+1,level+1);if(sub.length){outline[i].sections=sub;}
648648 sections[sections.length]=outline[i];}else if(outline[i].nLevel<level){break;}}
649649 return sections;}
650650 function buildList(structure){var list=$('<ul />');for(i in structure){var div=$('<div />').addClass('section-'+structure[i].index).data('index',structure[i].index).click(function(event){var wrapper=context.$content.find('.wikiEditor-toc-section-'+$(this).data('index'));if(wrapper.size()==0)
@@ -654,7 +654,7 @@
655655 return list;}
656656 function buildCollapseControls(){var $collapseControl=$('<div />'),$expandControl=$('<div />');$collapseControl.addClass('tab').addClass('tab-toc').append('<a href="#" />').bind('click.wikiEditor-toc',function(){context.modules.toc.$toc.trigger('collapse.wikiEditor-toc');return false;}).find('a').text(mw.usability.getMsg('wikieditor-toc-hide'));$expandControl.addClass('wikiEditor-ui-toc-expandControl').append('<a href="#" />').bind('click.wikiEditor-toc',function(){context.modules.toc.$toc.trigger('expand.wikiEditor-toc');return false;}).hide().find('a').text(mw.usability.getMsg('wikieditor-toc-show'));$collapseControl.insertBefore(context.modules.toc.$toc);context.$ui.find('.wikiEditor-ui-left .wikiEditor-ui-top').append($expandControl);}
657657 function buildResizeControls(){context.$ui.data('resizableDone',true).find('.wikiEditor-ui-right').data('wikiEditor-ui-left',context.$ui.find('.wikiEditor-ui-left')).resizable({handles:'w,e',preventPositionLeftChange:true,minWidth:parseFloat($.wikiEditor.modules.toc.cfg.minimumWidth),start:function(e,ui){var $this=$(this);$('<div />').addClass('wikiEditor-ui-resize-mask').css({'position':'absolute','z-index':2,'left':0,'top':0,'bottom':0,'right':0}).appendTo(context.$ui.find('.wikiEditor-ui-left'));$this.resizable('option','maxWidth',$this.parent().width()-
658 -parseFloat($.wikiEditor.modules.toc.cfg.textMinimumWidth));if(context.modules.toc.$toc.data('positionMode')=='goofy'){$.wikiEditor.modules.toc.fn.switchLayout(context);}},resize:function(e,ui){$(this).css({'width':ui.size.width,'top':'auto','height':'auto'}).data('wikiEditor-ui-left').css('marginRight',(-1*ui.size.width)).children().css('marginRight',ui.size.width);context.fn.trigger('resize');},stop:function(e,ui){context.$ui.find('.wikiEditor-ui-resize-mask').remove();context.$content.trigger('mouseup');if(ui.size.width<=parseFloat($.wikiEditor.modules.toc.cfg.minimumWidth)){context.modules.toc.$toc.trigger('collapse.wikiEditor-toc');}else{context.modules.toc.$toc.find('div').autoEllipsis({'position':'right','tooltip':true,'restoreText':true});context.modules.toc.$toc.data('openWidth',ui.size.width);$.cookie('wikiEditor-'+context.instance+'-toc-width',ui.size.width);}
 658+parseFloat($.wikiEditor.modules.toc.cfg.textMinimumWidth));if(context.modules.toc.$toc.data('positionMode')=='goofy'){$.wikiEditor.modules.toc.fn.switchLayout(context);}},resize:function(e,ui){$(this).css({'width':ui.size.width,'top':'auto','height':'auto'}).data('wikiEditor-ui-left').css($.wikiEditor.modules.toc.cfg.flexProperty,(-1*ui.size.width)).children().css($.wikiEditor.modules.toc.cfg.flexProperty,ui.size.width);context.fn.trigger('resize');},stop:function(e,ui){context.$ui.find('.wikiEditor-ui-resize-mask').remove();context.$content.trigger('mouseup');if(ui.size.width<=parseFloat($.wikiEditor.modules.toc.cfg.minimumWidth)){context.modules.toc.$toc.trigger('collapse.wikiEditor-toc');}else{context.modules.toc.$toc.find('div').autoEllipsis({'position':'right','tooltip':true,'restoreText':true});context.modules.toc.$toc.data('openWidth',ui.size.width);$.cookie('wikiEditor-'+context.instance+'-toc-width',ui.size.width);}
659659 context.fn.trigger('resize');}});var handle=$.wikiEditor.modules.toc.cfg.rtl?'w':'e';context.$ui.find('.ui-resizable-'+handle).removeClass('ui-resizable-'+handle).addClass('ui-resizable-'+(handle=='w'?'e':'w')).addClass('wikiEditor-ui-toc-resize-grip');context.modules.toc.$toc.bind('collapse.wikiEditor-toc',$.wikiEditor.modules.toc.fn.collapse).bind('expand.wikiEditor-toc',$.wikiEditor.modules.toc.fn.expand);context.modules.toc.$toc.data('openWidth',$.wikiEditor.modules.toc.cfg.defaultWidth);if($.cookie('wikiEditor-'+context.instance+'-toc-width')==0){context.modules.toc.$toc.trigger('collapse.wikiEditor-toc',{data:context});}else if($.cookie('wikiEditor-'+context.instance+'-toc-width')>0){var initialWidth=$.cookie('wikiEditor-'+context.instance+'-toc-width');if(initialWidth<parseFloat($.wikiEditor.modules.toc.cfg.minimumWidth))
660660 initialWidth=parseFloat($.wikiEditor.modules.toc.cfg.minimumWidth)+1;context.modules.toc.$toc.data('openWidth',initialWidth+'px');$.wikiEditor.modules.toc.fn.redraw(context,initialWidth);}}
661661 if(context.data.outline){var outline=context.data.outline;var lastLevel=0;var nLevel=0;for(var i=0;i<outline.length;i++){if(outline[i].level>lastLevel){nLevel++;}

Status & tagging log