Difference between revisions of "MediaWiki:Common.js"

From Hobowars Wiki
Jump to: navigation, search
m (test fix again...)
m (test)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
+
jQuery(document).ready(function ($) {
/** Collapsible tables *********************************************************
+
    $('#wpTextbox1').wikiEditor('addToToolbar', {
*
+
         section: 'advanced',
*  Description: Allows tables to be collapsed, showing only the header. See
+
         group: 'format',
*                        http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
+
         tools: {
*  Maintainers: [http://en.wikipedia.org/wiki/User:R.Koot R.Koot]
+
            buttonId: {
*/
+
                 label: 'Comment visible only for editors',
+
                 type: 'button',
var autoCollapse = 2;
+
                 icon: '//upload.wikimedia.org/wikipedia/commons/f/f9/Toolbaricon_regular_S_stroke.png',
var collapseCaption = 'Hide';
+
                action: {
var expandCaption = 'Show';
+
                    type: 'encapsulate',
+
                    options: {
function collapseTable( tableIndex ) {
+
                         pre: "<!-- ",
        var Button = document.getElementById( 'collapseButton' + tableIndex );
+
                         peri: "Insert comment here",
        var Table = document.getElementById( 'collapsibleTable' + tableIndex );
+
                         post: " -->"
+
                    }
        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 [[MediaWiki:Common.css]]
+
+
                        ButtonLink.style.color = Header.style.color;
+
                        ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
+
                         ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
+
                        ButtonLink.appendChild( ButtonText );
+
+
                        Button.appendChild( document.createTextNode( '\u00a0' ) );
+
                        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 );
+
                } else if ( hasClass( NavigationBoxes[i], 'innercollapse' ) ) {
+
                        var element = NavigationBoxes[i];
+
                        while ( element = element.parentNode ) {
+
                                if ( hasClass( element, 'outercollapse' ) ) {
+
                                        collapseTable( i );
+
                                        break;
+
                                }
+
                        }
+
 
                 }
 
                 }
 +
            }
 
         }
 
         }
}
+
    });
+
});
addOnloadHook( createCollapseButtons );
+
+
/** Test if an element has a certain class **************************************
+
*
+
* Description: Uses regular expressions and caching for better performance.
+
* Maintainers: [http://en.wikipedia.org/wiki/User:Mike&nbsp;Dillon Mike&nbsp;Dillon], [http://en.wikipedia.org/wiki/User:R.Koot R.Koot], [http://en.wikipedia.org/wiki/User:SG SG]
+
*/
+
+
var hasClass = ( function() {
+
        var reCache = {};
+
        return function( element, className ) {
+
                return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );
+
        };
+
})();
+
 
+
/* JavaScript for alternating-color table rows in sortable tables. */
+
 
+
var ts_alternate_row_colors = true;
+
 
+
/* JavasSript for hiding the ToC by default. Source: http://ryanalberts.com/418/hiding-table-of-contents-on-mediawiki/ */
+
 
+
function hideToc() {
+
        var toc = document.getElementById('toc').getElementsByTagName('ul')[0];
+
        var toggleLink = document.getElementById('togglelink');
+
        changeText(toggleLink, tocShowText);
+
        toc.style.display = 'none';
+
        document.cookie = "hidetoc=1";
+
}
+
 
+
addOnloadHook( hideToc );
+
 
+
 
+
 
+
/* Section for custom edit buttons */
+
 
+
/* Remove Default Buttons */
+
function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
+
  if ((imageId=="mw-editbutton-italic") || (imageId=="mw-editbutton-link") || (imageId=="mw-editbutton-extlink") || (imageId=="mw-editbutton-headline") || (imageId=="mw-editbutton-image") || (imageId=="mw-editbutton-bold") || (imageId=="mw-editbutton-media") || (imageId=="mw-editbutton-math") || (imageId=="mw-editbutton-nowiki") || (imageId=="mw-editbutton-sig") || (imageId=="mw-editbutton-hr")) return;
+
  mwEditButtons[mwEditButtons.length] =
+
    {"imageId": imageId,
+
    "imageFile": imageFile,
+
    "speedTip": speedTip,
+
    "tagOpen": tagOpen,
+
    "tagClose": tagClose,
+
    "sampleText": sampleText};
+
  }
+
 
+
/* Bold Text Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_bold.png",
+
    "speedTip": "Bold text",
+
    "tagOpen": "'''",
+
    "tagClose": "'''",
+
    "sampleText": "Bold text"};
+
  }
+
 
+
 
+
/* Italic Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_italic.png",
+
    "speedTip": "Italic text",
+
    "tagOpen": "''",
+
    "tagClose": "''",
+
    "sampleText": "Italic text"};
+
  }
+
 
+
/* StrikeThrough Text Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_strike.png",
+
    "speedTip": "StrikeThrough text",
+
    "tagOpen": "<s>",
+
    "tagClose": "</s>",
+
    "sampleText": ""};
+
  }
+
 
+
/* Text Color Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_TextColor.png",
+
    "speedTip": "TextColor",
+
    "tagOpen": "<span style='color: #000000'>",
+
    "tagClose": "</span>",
+
    "sampleText": ""};
+
  }
+
 
+
/* Headline 1 Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_header01.png",
+
    "speedTip": "Headline1 text",
+
    "tagOpen": "= ",
+
    "tagClose": " =",
+
    "sampleText": "Headline1 text"};
+
  }
+
 
+
/* Headline 2 Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_header02.png",
+
    "speedTip": "Headline2 text",
+
    "tagOpen": "== ",
+
    "tagClose": " ==",
+
    "sampleText": "Headline2 text"};
+
  }
+
 
+
/* Headline 3 Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_header03.png",
+
    "speedTip": "Headline3 text",
+
    "tagOpen": "=== ",
+
    "tagClose": " ===",
+
    "sampleText": "Headline3 text"};
+
  }
+
 
+
/* Headline 4 Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_header04.png",
+
    "speedTip": "Headline4 text",
+
    "tagOpen": "==== ",
+
    "tagClose": " ====",
+
    "sampleText": "Headline4 text"};
+
  }
+
 
+
/* Internal Link Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_link.png",
+
    "speedTip": "Internal Link",
+
    "tagOpen": "[[",
+
    "tagClose": "]]",
+
    "sampleText": "Link title"};
+
  }
+
 
+
/* External Link Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_extlink.png",
+
    "speedTip": "External Link(remember http:// prefix)",
+
    "tagOpen": "[",
+
    "tagClose": "]",
+
    "sampleText": "http://www.example.com link title"};
+
  }
+
 
+
/* Embeded File Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_image.png",
+
    "speedTip": "Embeded File",
+
    "tagOpen": "[[File:",
+
    "tagClose": "]]",
+
    "sampleText": "Example.jpg"};
+
  }
+
 
+
/* File Link Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_media.png",
+
    "speedTip": "File Link",
+
    "tagOpen": "[[Media:",
+
    "tagClose": "]]",
+
    "sampleText": "Example.ogg"};
+
  }
+
 
+
/* Math Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_math.png",
+
    "speedTip": "Mathematical formula (LaTeX)",
+
    "tagOpen": "<math>",
+
    "tagClose": "</math>",
+
    "sampleText": "Insert formula here"};
+
  }
+
 
+
/* NoWiki Formatting Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_nowiki.png",
+
    "speedTip": "Ignore wiki formatting",
+
    "tagOpen": "<nowiki>",
+
    "tagClose": "</nowiki>",
+
    "sampleText": "Insert non-formatted text here"};
+
  }
+
 
+
/* Horizontal Line Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/skins/common/images/button_hr.png",
+
    "speedTip": "Horizontal line (use sparingly)",
+
    "tagOpen": "----",
+
    "tagClose": "",
+
    "sampleText": ""};
+
  }
+
 
+
/* Line Break Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_enter.png",
+
    "speedTip": "LineBreak",
+
    "tagOpen": "<br>",
+
    "tagClose": "",
+
    "sampleText": ""};
+
  }
+
 
+
/* Double Line Right Arrow Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_arrow.png",
+
    "speedTip": "DBLArrow",
+
    "tagOpen": "⇒",
+
    "tagClose": " ",
+
    "sampleText": ""};
+
  }
+
 
+
/* Redirect Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_redirect.png",
+
    "speedTip": "Redirect article",
+
    "tagOpen": "#Redirect[[",
+
    "tagClose": "]]",
+
    "sampleText": "Target page name"};
+
  }
+
 
+
/* Category Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_category.png",
+
    "speedTip": "Add a category",
+
    "tagOpen": "[[Category:",
+
    "tagClose": "]]",
+
    "sampleText": "Category Name"};
+
  }
+
 
+
/* Comment Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_comment.png",
+
    "speedTip": "Add a comment (visible only for editors)",
+
    "tagOpen": "<!-- ",
+
    "tagClose": " -->",
+
    "sampleText": "Insert comment here"};
+
  }
+
 
+
  /* Food Item Template Button */
+
if (mwCustomEditButtons) {
+
  mwCustomEditButtons[mwCustomEditButtons.length] = {
+
    "imageFile": "http://www.hobowars.com/wiki/images/Button_food.png",
+
    "speedTip": "Food Item Template",
+
    "tagOpen": " {{",
+
    "tagClose": "Category:Incomplete]]",
+
    "sampleText": "Info Table" + "\n|name= FOOD_NAME" + "\n|image= IMAGE_URL" + "\n|id= ITEM_ID" + "\n|cat= CATEGORY" + "\n|subcat= SUBCATEGORY" + "\n}}" + "\nA \'\'\'FOOD_NAME\'\'\' is a [[Food|food item]] that gives you \'\'\'0T\'\'\' and the \'\'\'\'\'[[Insert Effect]]\'\'\'\'\' [[Status Effects|status effect]] upon consumption." + "\n__NOTOC__" + "\n==List of Locations and Costs==" + "\n===HoboWars and HoboWars2===" + "\n====Hoburbia====" + "\n* [[LOCATION]] ⇒ SECONDARY_LOCATION" + "\n" + "\n==Cookbook==" + "\n*Created by combining [[INGREDIENT_ONE]] and [[INGREDIENT_TWO]]" + "\n*Separates into [[INGREDIENT_ONE]] and [[INGREDIENT_TWO]]" + "\n*Not an ingredient" + "\n" + "\n [["};
+
  }
+

Revision as of 07:02, 8 July 2014

jQuery(document).ready(function ($) {
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        section: 'advanced',
        group: 'format',
        tools: {
            buttonId: {
                label: 'Comment visible only for editors',
                type: 'button',
                icon: '//upload.wikimedia.org/wikipedia/commons/f/f9/Toolbaricon_regular_S_stroke.png',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<!-- ",
                        peri: "Insert comment here",
                        post: " -->"
                    }
                }
            }
        }
    });
});