Thread:Project:Support desk/Loss of sortable table functionality after MediaWiki 1.15 to 1.18 upgrade.

Upgraded our internal MediaWiki installation from 1.15 to 1.18 this weekend. After the upgrade sortable tables no longer work. Read online about adding java script code to MediaWiki:Common.js. This made no difference so reverted the change. Receive SQL database error (from within function "MessageBlobStore::getUpdatesForMessage, msg_resource table) when I save that page, although the change seems to be retained. All the pertinent info is below. Any help would be greatly appreciated!

MediaWiki 1.18.0 PHP 5.3.8 (apache2handler) MySQL 5.5.18

Installed Extensions: SphinxSearch (Version 0.7.2) ParserFunctions (Version 1.1.1) Include LDAP Authentication Plugin (Version 1.2e)

MediaWiki:Common.js

/* Any JavaScript here will be loaded for all users on every page load. */

// If the page name (wgPageName) contains "MediaWiki" and we're in normal view // mode, add "mainpage" class to the body element if ( /^MediaWiki(\/.+)?$/.test( wgPageName ) && wgAction == 'view' ) { $(function {		document.body.className += ' mainpage';	}); }

// switches for scripts // TODO: migrate to JSConfig // var load_extratabs = true; var load_edittools = true;

// extra drop down menu on editing for adding special characters importScript( 'MediaWiki:Edittools.js' );

// Editpage scripts if( wgAction == 'edit' || wgAction == 'submit' ) { importScript( 'MediaWiki:Editpage.js' ); }

mw.loader.load( 'http://www.mediawiki.org/w/index.php?title=MediaWiki:JQuery-makeCollapsible.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400' );

/** Collapsible tables ********************************************************* * * From English Wikipedia, 2008-09-15 * @deprecated: Do not use this in new constructions, use class="mw-collapsible" instead * * Description: Allows tables to be collapsed, showing only the header. *              See NavFrame. * Maintainers: User:R. Koot */ var autoCollapse = 2; var collapseCaption = 'hide'; var expandCaption = 'show';

function collapseTable( tableIndex ) { var Button = document.getElementById( 'collapseButton' + tableIndex ); var Table = document.getElementById( 'collapsibleTable' + tableIndex );

if ( !Table || !Button ) { return false; }

var Rows = Table.rows;

if ( Button.firstChild.data == collapseCaption ) { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = 'none'; }		Button.firstChild.data = expandCaption; } else { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; }		Button.firstChild.data = collapseCaption; } }

function createCollapseButtons{ var tableIndex = 0; var NavigationBoxes = new Object; var Tables = document.getElementsByTagName( 'table' );

for ( var i = 0; i < Tables.length; i++ ) { if ( hasClass( Tables[i], 'collapsible' ) ) { /* only add button and increment count if there is a header row to work with */ var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0]; if( !HeaderRow ) { continue; }			var Header = HeaderRow.getElementsByTagName( 'th' )[0]; if( !Header ) { continue; }

NavigationBoxes[tableIndex] = Tables[i]; Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );

var Button    = document.createElement( 'span' ); var ButtonLink = document.createElement( 'a' ); var ButtonText = document.createTextNode( collapseCaption );

Button.style.styleFloat = 'right'; Button.style.cssFloat = 'right'; Button.style.fontWeight = 'normal'; Button.style.textAlign = 'right'; Button.style.width = '6em';

ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex ); ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" ); ButtonLink.appendChild( ButtonText );

Button.appendChild( document.createTextNode( '[' ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( ']' ) );

Header.insertBefore( Button, Header.childNodes[0] ); tableIndex++; }   }

for ( var i = 0; i < tableIndex; i++ ) { if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) { collapseTable( i ); }	} }

addOnloadHook( createCollapseButtons );

/** Dynamic Navigation Bars (experimental) ************************************* * * From English Wikipedia, 2008-09-15 * * Description: See NavFrame. * Maintainers: UNMAINTAINED */

// set up the words in your language var NavigationBarHide = '[' + collapseCaption + ']'; var NavigationBarShow = '[' + expandCaption + ']';

// shows and hides content and picture (if available) of navigation bars // Parameters: //    indexNavigationBar: the index of navigation bar to be toggled function toggleNavigationBar( indexNavigationBar ) { var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar ); var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );

if( !NavFrame || !NavToggle ) { return false; }

// if shown now if( NavToggle.firstChild.data == NavigationBarHide ) { for( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if ( hasClass( NavChild, 'NavPic' ) ) { NavChild.style.display = 'none'; }			if ( hasClass( NavChild, 'NavContent' ) ) { NavChild.style.display = 'none'; }		}		NavToggle.firstChild.data = NavigationBarShow;

// if hidden now } else if( NavToggle.firstChild.data == NavigationBarShow ) { for( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if( hasClass( NavChild, 'NavPic' ) ) { NavChild.style.display = 'block'; }			if( hasClass( NavChild, 'NavContent' ) ) { NavChild.style.display = 'block'; }		}		NavToggle.firstChild.data = NavigationBarHide; } }

// adds show/hide-button to navigation bars function createNavigationBarToggleButton { var indexNavigationBar = 0; // iterate over all -elements var divs = document.getElementsByTagName( 'div' ); for( var i = 0; NavFrame = divs[i]; i++ ) { // if found a navigation bar if( hasClass( NavFrame, 'NavFrame' ) ) { indexNavigationBar++; var NavToggle = document.createElement( 'a' ); NavToggle.className = 'NavToggle'; NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar ); NavToggle.setAttribute( 'href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');' );

var NavToggleText = document.createTextNode( NavigationBarHide ); for( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { if( NavChild.style.display == 'none' ) { NavToggleText = document.createTextNode( NavigationBarShow ); break; }				}			}

NavToggle.appendChild(NavToggleText); // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) for( var j = 0; j < NavFrame.childNodes.length; j++) { if( hasClass( NavFrame.childNodes[j], 'NavHead' ) ) { NavFrame.childNodes[j].appendChild( NavToggle ); }			}			NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar ); }	} } addOnloadHook( createNavigationBarToggleButton );

/* End of extra pages */