MediaWiki:Common.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
/* testing as per https://en.wikipedia.org/w/index.php?title=User_talk:ערן */

/* customize toolbar for wiki editor  https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization */

const d = new Date();
var ISODt = d.toISOString().substring(0, 10);
var customizeToolbar = function () {

  /* add comment button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'Discuss',
			type: 'button',
			icon: '//wiki.umintmed.ca/images/9/92/DiscussionButton.png',
			action: {
				type: 'encapsulate',
				options: {
					pre: "{{Discuss|",
					post: " }}"
				}
			}
		}
	}
  } );

  /* add comment button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'Discuss Task',
			type: 'button',
			icon: '//ccmdb.kuality.ca/images/3/3f/Discuss%40task.png',
			action: {
				type: 'encapsulate',
				options: {
					pre: "{{DiscussTask|",
					post: " }}"
				}
			}
		}
	}
  } );

  /* add comment button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'Discuss Allan',
			type: 'button',
			icon: 'https://ccmdb.kuality.ca/images/thumb/5/50/Poindexter.jpg/40px-Poindexter.jpg',
			action: {
				type: 'encapsulate',
				options: {
					pre: "{{DA|",
					post: " }}"
				}
			}
		}
	}
  } );

  /* add DT comment button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'Discuss Tina',
			type: 'button',
			icon: '//ccmdb.kuality.ca/images/thumb/1/19/Swiss_Army_Knife.svg/40px-Swiss_Army_Knife.svg.png',
			action: {
				type: 'encapsulate',
				options: {
					pre: "{{DT|",
					post: " }}"
				}
			}
		}
	}
  } );

  /* add Todo comment button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'Todo',
			type: 'button',
			icon: '//ccmdb.kuality.ca/images/thumb/1/19/Swiss_Army_Knife.svg/40px-Swiss_Army_Knife.svg.png',
			action: {
				type: 'encapsulate',
				options: {
					pre: "{{Todo \n | who = Allan, Julie, Pagasa, Tina \n | todo_added = " + ISODt + "\n | todo_action = " + ISODt + "\n | question =  \n* ", 
					post: " }}"
				}
			}
		}
	}
  } );

  /* add Displaytitle button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'DT',
			type: 'button',
			icon: '//ccmdb.kuality.ca/images/thumb/1/19/Swiss_Army_Knife.svg/40px-Swiss_Army_Knife.svg.png',
		action: {
				type: 'encapsulate',
				options: {
					pre: "{{DISPLAYTITLE:", 
					post: " }}"
				}
			}
		}
	}
  } );

  /* add Legacy  button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'Legacy',
			type: 'button',
			icon: 'https://ccmdb.kuality.ca/images/thumb/4/4d/Legacy.svg/30px-Legacy.svg.png',
			action: {
				type: 'encapsulate',
				options: {
					pre: "{{LegacyContent \n| explanation=xxx \n| successor=xxx \n| content= ", 
					post: "}}"
				}
			}
		}
	}
  } );

  /* add collapsable button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'Collapsable',
			type: 'button',
			icon: '//ccmdb.kuality.ca/images/6/61/Coll.png',
			action: {
				type: 'encapsulate',
				options: {
					pre: "{{Collapsable | always=<what to always show, eg. title> | full=",
					post: " }}"
				}
			}
		}
	}
  } );

  /* add add related items button */
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
	section: 'main',
	group: 'insert',
	tools: {
		"discussion": {
			label: 'Related articles',
			type: 'button',
			icon: '//ccmdb.kuality.ca/images/9/94/Rel.png',
			action: {
				type: 'encapsulate',
				options: {
					pre: "== Related articles == \n{{Related Articles}}\n",
					post: ""
				}
			}
		}
	}
  } );

// close function customizeToolbar
};

/* load the dropdown that shows when you manually edit a page and put [[ */
/* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar ... */
if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
	
	//autocompleter: https://en.wikipedia.org/wiki/User:%D7%A2%D7%A8%D7%9F/autocomplete
	mw.loader.load('//he.wikipedia.org/w/load.php?modules=ext.gadget.autocomplete');

	mw.loader.using( 'user.options' ).then( function () {
		// This can be the string "0" if the user disabled the preference ([[phab:T54542#555387]])
		if ( mw.user.options.get( 'usebetatoolbar' ) == 1 ) {
			$.when(
				mw.loader.using( 'ext.wikiEditor' ), $.ready
			).then( customizeToolbar );
		}
	} );
}

/**
 * Wrap #firstHeading in a link to itself.
 * Works with Vector 2022 navigation reloads.
 */
function wrapHeadingInLink() {
    var pageName = mw.config.get('wgPageName');
    if (!pageName) return;

    var $heading = $('#firstHeading');
    if (!$heading.length || $heading.find('a').length) return;

    var pageUrl = mw.util.getUrl(pageName);
    var headingText = $heading.text().trim();

    $heading.empty().append(
        $('<a>')
            .attr('href', pageUrl)
            .attr('title', 'Right-click to copy link')
            .css({
                textDecoration: 'none',
                color: 'inherit'
            })
            .text(headingText)
    );
}

function setupHeadingWatcher() {
    wrapHeadingInLink();

    // Re-run when navigation completes
    if (window.mw && typeof mw.trackSubscribe === 'function') {
        // MW 1.39+ (used by Vector 2022) navigation tracker
        mw.trackSubscribe('mw.page.ready', wrapHeadingInLink);
    } else {
        // Fallback for older setups
        window.addEventListener('popstate', wrapHeadingInLink);
    }
}

// Load dependencies and run
mw.loader.using(['mediawiki.util']).then(setupHeadingWatcher);