Difference between revisions of "MediaWiki:Common.js"
Jump to navigation
Jump to search
(Working) |
(Testing) |
||
Line 29: | Line 29: | ||
$('#donatebutton').html('<form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_s-xclick"><input type="hidden" name="hosted_button_id" value="PSCZL9L3NKNRQ"><input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"><img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"></form>'); |
$('#donatebutton').html('<form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_s-xclick"><input type="hidden" name="hosted_button_id" value="PSCZL9L3NKNRQ"><input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"><img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"></form>'); |
||
} |
} |
||
− | |||
− | mw.loader.using( 'mediawiki.util', 'mediawiki.Uri', function() { |
||
− | /* Begin of mw.loader.using callback */ |
||
− | |||
− | window.hasClass = ( function() { |
||
− | var reCache = {}; |
||
− | return function (element, className) { |
||
− | return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className); |
||
− | }; |
||
− | })(); |
||
− | |||
− | /* collapsing tables */ |
||
− | |||
− | var autoCollapse = 2; |
||
− | var collapseCaption = "hide"; |
||
− | var expandCaption = "show"; |
||
− | |||
− | window.collapseTable = function( 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.className = "collapseButton"; //Styles are declared in Common.css |
||
− | |||
− | ButtonLink.style.color = Header.style.color; |
||
− | ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); |
||
− | ButtonLink.setAttribute( "href", "#" ); |
||
− | addHandler( ButtonLink, "click", new Function( "evt", "collapseTable(" + tableIndex + " ); return killEvt( evt );") ); |
||
− | ButtonLink.appendChild( ButtonText ); |
||
− | |||
− | Button.appendChild( document.createTextNode( "[" ) ); |
||
− | Button.appendChild( ButtonLink ); |
||
− | Button.appendChild( document.createTextNode( "]" ) ); |
||
− | |||
− | Header.insertBefore( Button, Header.firstChild ); |
||
− | tableIndex++; |
||
− | } |
||
− | } |
||
− | |||
− | for ( var i = 0; i < tableIndex; i++ ) { |
||
− | if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) { |
||
− | collapseTable( i ); |
||
− | } |
||
− | else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) { |
||
− | var element = NavigationBoxes[i]; |
||
− | while (element = element.parentNode) { |
||
− | if ( hasClass( element, "outercollapse" ) ) { |
||
− | collapseTable ( i ); |
||
− | break; |
||
− | } |
||
− | } |
||
− | } |
||
− | } |
||
− | } |
||
− | |||
− | $( createCollapseButtons ); |
||
− | |||
− | // 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 |
||
− | window.toggleNavigationBar = function(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, 'NavContent') || hasClass(NavChild, 'NavPic')) { |
||
− | 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, 'NavContent') || hasClass(NavChild, 'NavPic')) { |
||
− | NavChild.style.display = 'block'; |
||
− | } |
||
− | } |
||
− | NavToggle.firstChild.data = NavigationBarHide; |
||
− | } |
||
− | } |
||
− | |||
− | // adds show/hide-button to navigation bars |
||
− | function createNavigationBarToggleButton(){ |
||
− | var indexNavigationBar = 0; |
||
− | // iterate over all < div >-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 isCollapsed = hasClass( NavFrame, "collapsed" ); |
||
− | /* |
||
− | * Check if any children are already hidden. This loop is here for backwards compatibility: |
||
− | * the old way of making NavFrames start out collapsed was to manually add style="display:none" |
||
− | * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make |
||
− | * the content visible without JavaScript support), the new recommended way is to add the class |
||
− | * "collapsed" to the NavFrame itself, just like with collapsible tables. |
||
− | */ |
||
− | for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) { |
||
− | if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { |
||
− | if ( NavChild.style.display == 'none' ) { |
||
− | isCollapsed = true; |
||
− | } |
||
− | } |
||
− | } |
||
− | if (isCollapsed) { |
||
− | for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { |
||
− | if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { |
||
− | NavChild.style.display = 'none'; |
||
− | } |
||
− | } |
||
− | } |
||
− | var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide); |
||
− | 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")) { |
||
− | NavToggle.style.color = NavFrame.childNodes[j].style.color; |
||
− | NavFrame.childNodes[j].appendChild(NavToggle); |
||
− | } |
||
− | } |
||
− | NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); |
||
− | } |
||
− | } |
||
− | } |
||
− | |||
− | $( createNavigationBarToggleButton ); |
||
− | |||
− | /* End of mw.loader.using callback */ |
||
− | } ); |
||
/* add special:recentchanges to toolbox */ |
/* add special:recentchanges to toolbox */ |
Revision as of 03:51, 2 February 2013
/* sidebar modifications for anonymous users */
function removeSidebarSection(section) {
try {
var target = "p-" + section;
var sidebar = document.getElementById("mw-panel");
var element = document.getElementById(target);
sidebar.removeChild(element);
} catch (e) {
return;
}
}
function customizeSidebarForAnon() {
removeSidebarSection("tb");
}
if (wgUserName == null) {
addOnloadHook(customizeSidebarForAnon);
}
/* add membership payment button */
if ( ( mw.config.get('wgPageName') == 'Membership' ) && ( wgNamespaceNumber == 0 ) ) {
$('#membershipbutton').html('<form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_s-xclick"><input type="hidden" name="hosted_button_id" value="R9RT2GWXZZWXL"><table><tr><td><input type="hidden" name="on0" value="Donation Options"></td></tr><tr><td><select name="os0"><option value="Regular Membership">Regular Membership : $10.00 USD - yearly</option><option value="Bronze Sponsor">Bronze Sponsor : $25.00 USD - yearly</option><option value="Silver Sponsor">Silver Sponsor : $50.00 USD - yearly</option><option value="Gold Sponsor">Gold Sponsor : $100.00 USD - yearly</option></select></td></tr></table><input type="hidden" name="currency_code" value="USD"><input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"><img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"></form>');
}
/* add donate button */
if ( ( mw.config.get('wgPageName') == 'Donate' ) && ( wgNamespaceNumber == 0 ) ) {
$('#donatebutton').html('<form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_s-xclick"><input type="hidden" name="hosted_button_id" value="PSCZL9L3NKNRQ"><input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"><img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"></form>');
}
/* add special:recentchanges to toolbox */
addOnloadHook(function() {
mw.util.addPortletLink( 'p-tb', '//wikimediadc.org/wiki/Internal:Dashboard', 'Dashboard', 't-dashboard', 'Dashboard ', 'r', '#t-whatlinkshere' );
mw.util.addPortletLink( 'p-tb', '//wikimediadc.org/wiki/Special:Recentchanges', 'Recent changes', 't-recentchanges', 'Recent changes ', 'r', '#t-recentchangeslinked' );
mw.util.addPortletLink( 'p-tb', '//wikimediadc.org/wiki/Special:AllPages', 'All pages', 't-allpages', 'All pages ', 'p', '#t-recentchanges' );
});