MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
Ttenbergen (talk | contribs) mNo edit summary Tag: Reverted |
Ttenbergen (talk | contribs) make page titles into links |
||
(8 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
/* customize toolbar for wiki editor https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization */ | /* 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 () { | var customizeToolbar = function () { | ||
Line 98: | Line 100: | ||
type: 'encapsulate', | type: 'encapsulate', | ||
options: { | options: { | ||
pre: "{{Todo \n | who = Allan, Julie, Pagasa, Tina \n | todo_added = " + | 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: " }}" | post: " }}" | ||
} | } | ||
Line 185: | Line 207: | ||
} ); | } ); | ||
} | } | ||
/** | |||
* 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); |
Latest revision as of 23:30, 27 June 2025
/* 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);