Javascript examples/ToolbarCustomization

From Linkwiki
tbd @
/*  ============================================================
 * START Edit-Toolbar Customization
 * signature button on all pages
 * add strike
 * remove <big>
 * dropdown menu for redirects with fitting categories
 *
 * @source https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization
 * @version 01.08.2026
 * @author [[wde:Benutzer:StipenTreublatt]]
 */

// Check if we're editing a page.
if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
	// Add a hook handler.
	mw.hook( 'wikiEditor.toolbarReady' ).add( function ( $textarea ) {
		// Configure a new toolbar entry on the given $textarea jQuery object.
		/* Remove button for <big> */
		$textarea.wikiEditor( 'removeFromToolbar', {
			section: 'advanced',
			group: 'size',
			tool: 'big'
		});
		/* Remove button for signature */
		$textarea.wikiEditor( 'removeFromToolbar', {
			section: 'main',
			group: 'insert',
			tool: 'signature'
		});
		/* button for signature everywhere */
		$textarea.wikiEditor( 'addToToolbar', {
			section: 'main',
			group: 'format',
			tools: {
				'signaturen': {
					label: mw.msg( "wikieditor-toolbar-tool-signature" ),
					type: 'button',
					icon: 'https://de.wiki-aventurica.de/de/images/7/79/Insert-signature.png',
					action: {
						type: 'encapsulate',
						options: {
							pre: mw.msg( 'wikieditor-toolbar-help-content-signaturetimestamp-syntax' )
						}
					}
				}
			}
		} );
		/* add button for strikethrough */
		$textarea.wikiEditor( 'addToToolbar', {
			section: 'advanced',
			group: 'format',
			tools: {
				'strikethrough': {
					label: 'Text als durchgestrichen darstellen',
					type: 'button',
					icon: 'https://de.wiki-aventurica.de/de/images/6/6d/Vector_strikeout.png',
					action: {
						type: 'encapsulate',
						options: {
							pre: "<s>",
							post: "</s>"
						}
					}
				}
			}
		});
		/* Remove button for redirect */
		$textarea.wikiEditor( 'removeFromToolbar', {
			section: 'advanced',
			group: 'insert',
			tool: 'redirect'
		});
		/* add dropdown for redirects <nowiki> */
		$textarea.wikiEditor( 'addToToolbar', {
			section: 'advanced',
			group: 'insert',
			tools: {
				templates: {
					label: 'Weiterleitungen',
					type: 'select',
					list: {
						'Abk-button': {
							label: 'Abkürzung',
							action: {
								type: 'encapsulate',
								options: {
									pre: '#redirect [[',
									post: ']]\n[[Kategorie:Abkürzung]]'
								}
							}
						},
						'Auflage-button': {
							label: 'Auflage',
							action: {
								type: 'encapsulate',
								options: {
									pre: '#redirect [[',
									post: ']]\n[[Kategorie:Auflagenweiterleitung]]'
								}
							}
						},
						'Numm-button': {
							label: 'Nummerierung',
							action: {
								type: 'encapsulate',
								options: {
									pre: '#redirect [[',
									post: ']]\n[[Kategorie:Nummerierung]]'
								}
							}
						},
						'Sonder-button': {
							label: 'Sonderzeichen',
							action: {
								type: 'encapsulate',
								options: {
									pre: '#redirect [[',
									post: ']]\n[[Kategorie:Sonderzeichen-Weiterleitung]]'
								}
							}
						},
						'Synonym-button': {
							label: 'Synonym',
							action: {
								type: 'encapsulate',
								options: {
									pre: '#redirect [[',
									post: ']]\n[[Kategorie:Synonym]]'
								}
							}
						},
						'Regeltechnik-button': {
							label: 'Regeltechnik',
							action: {
								type: 'encapsulate',
								options: {
									pre: '#redirect [[',
									post: '#Regeltechnisches]]\n[[Kategorie:Regeltechnik-Weiterleitung]]'
								}
							}
						}
					}
				}
			}
		} );
		/* </nowiki> add dropdown for templates */
		$textarea.wikiEditor( 'addToToolbar', {
			section: 'advanced',
			group: 'insert',
			tools: {
				templates: {
					label: 'Vorlagen',
					type: 'select',
					list: {
						'Done-button': {
							label: 'Done',
							action: {
								type: 'encapsulate',
								options: {
									pre: '{{done}}'
								}
							}
						},
						'Todo-button': {
							label: 'Todo',
							action: {
								type: 'encapsulate',
								options: {
									pre: '{{todo}}'
								}
							}
						}
					}
				}
			}
		} );
	} );
}

/*  
 * END Edit-Toolbar Customization
 * ============================================================
 */