/** * Configuration of Toolbar module for wikiEditor */ ( function () { var configData = require( './data.json' ), fileNamespace = mw.config.get( 'wgFormattedNamespaces' )[ 6 ], specialCharacterGroups = require( 'mediawiki.language.specialCharacters' ), toolbarConfig; toolbarConfig = { toolbar: { // Main section main: { type: 'toolbar', groups: { format: { tools: { bold: { labelMsg: 'wikieditor-toolbar-tool-bold', type: 'button', oouiIcon: 'bold', action: { type: 'encapsulate', options: { pre: "'''", periMsg: 'wikieditor-toolbar-tool-bold-example', post: "'''" } } }, italic: { section: 'main', group: 'format', id: 'italic', labelMsg: 'wikieditor-toolbar-tool-italic', type: 'button', oouiIcon: 'italic', action: { type: 'encapsulate', options: { pre: "''", periMsg: 'wikieditor-toolbar-tool-italic-example', post: "''" } } } } }, insert: { tools: { signature: { labelMsg: 'wikieditor-toolbar-tool-signature', type: 'button', oouiIcon: 'signature', action: { type: 'encapsulate', options: { pre: configData.signature } } } } } } }, // Format section advanced: { labelMsg: 'wikieditor-toolbar-section-advanced', type: 'toolbar', groups: { heading: { tools: { heading: { labelMsg: 'wikieditor-toolbar-tool-heading', type: 'select', list: { 'heading-2': { labelMsg: 'wikieditor-toolbar-tool-heading-2', action: { type: 'encapsulate', options: { pre: '== ', periMsg: 'wikieditor-toolbar-tool-heading-example', post: ' ==', regex: /^(\s*)(={1,6})(.*?)\2(\s*)$/, regexReplace: '$1==$3==$4', ownline: true } } }, 'heading-3': { labelMsg: 'wikieditor-toolbar-tool-heading-3', action: { type: 'encapsulate', options: { pre: '=== ', periMsg: 'wikieditor-toolbar-tool-heading-example', post: ' ===', regex: /^(\s*)(={1,6})(.*?)\2(\s*)$/, regexReplace: '$1===$3===$4', ownline: true } } }, 'heading-4': { labelMsg: 'wikieditor-toolbar-tool-heading-4', action: { type: 'encapsulate', options: { pre: '==== ', periMsg: 'wikieditor-toolbar-tool-heading-example', post: ' ====', regex: /^(\s*)(={1,6})(.*?)\2(\s*)$/, regexReplace: '$1====$3====$4', ownline: true } } }, 'heading-5': { labelMsg: 'wikieditor-toolbar-tool-heading-5', action: { type: 'encapsulate', options: { pre: '===== ', periMsg: 'wikieditor-toolbar-tool-heading-example', post: ' =====', regex: /^(\s*)(={1,6})(.*?)\2(\s*)$/, regexReplace: '$1=====$3=====$4', ownline: true } } } } } } }, format: { labelMsg: 'wikieditor-toolbar-group-format', tools: { ulist: { labelMsg: 'wikieditor-toolbar-tool-ulist', type: 'button', oouiIcon: 'listBullet', action: { type: 'encapsulate', options: { pre: '* ', periMsg: 'wikieditor-toolbar-tool-ulist-example', post: '', ownline: true, splitlines: true } } }, olist: { labelMsg: 'wikieditor-toolbar-tool-olist', type: 'button', oouiIcon: 'listNumbered', action: { type: 'encapsulate', options: { pre: '# ', periMsg: 'wikieditor-toolbar-tool-olist-example', post: '', ownline: true, splitlines: true } } }, nowiki: { labelMsg: 'wikieditor-toolbar-tool-nowiki', type: 'button', oouiIcon: 'noWikiText', action: { type: 'encapsulate', options: { pre: '<nowiki>', periMsg: 'wikieditor-toolbar-tool-nowiki-example', post: '</nowiki>' } } }, newline: { labelMsg: 'wikieditor-toolbar-tool-newline', type: 'button', oouiIcon: 'newline', action: { type: 'encapsulate', options: { pre: '<br>\n' } } } } }, size: { tools: { big: { labelMsg: 'wikieditor-toolbar-tool-big', type: 'button', oouiIcon: 'bigger', action: { type: 'encapsulate', options: { pre: '<big>', periMsg: 'wikieditor-toolbar-tool-big-example', post: '</big>' } } }, small: { labelMsg: 'wikieditor-toolbar-tool-small', type: 'button', oouiIcon: 'smaller', action: { type: 'encapsulate', options: { pre: '<small>', periMsg: 'wikieditor-toolbar-tool-small-example', post: '</small>' } } }, superscript: { labelMsg: 'wikieditor-toolbar-tool-superscript', type: 'button', oouiIcon: 'superscript', action: { type: 'encapsulate', options: { pre: '<sup>', periMsg: 'wikieditor-toolbar-tool-superscript-example', post: '</sup>' } } }, subscript: { labelMsg: 'wikieditor-toolbar-tool-subscript', type: 'button', oouiIcon: 'subscript', action: { type: 'encapsulate', options: { pre: '<sub>', periMsg: 'wikieditor-toolbar-tool-subscript-example', post: '</sub>' } } } } }, insert: { labelMsg: 'wikieditor-toolbar-group-insert', tools: { gallery: { labelMsg: 'wikieditor-toolbar-tool-gallery', type: 'button', oouiIcon: 'imageGallery', action: { type: 'encapsulate', options: { pre: '<gallery>\n', periMsg: [ 'wikieditor-toolbar-tool-gallery-example', fileNamespace ], post: '\n</gallery>', ownline: true } } }, redirect: { labelMsg: 'wikieditor-toolbar-tool-redirect', type: 'button', oouiIcon: 'articleRedirect', action: { type: 'encapsulate', options: { pre: configData.magicWords.redirect[ 0 ] + ' [[', periMsg: 'wikieditor-toolbar-tool-redirect-example', post: ']]', ownline: true } } } } } } }, characters: { labelMsg: 'wikieditor-toolbar-section-characters', type: 'booklet', deferLoad: true, pages: { latin: { labelMsg: 'special-characters-group-latin', layout: 'characters', characters: specialCharacterGroups.latin }, latinextended: { labelMsg: 'special-characters-group-latinextended', layout: 'characters', characters: specialCharacterGroups.latinextended }, ipa: { labelMsg: 'special-characters-group-ipa', layout: 'characters', characters: specialCharacterGroups.ipa }, symbols: { labelMsg: 'special-characters-group-symbols', layout: 'characters', characters: specialCharacterGroups.symbols }, greek: { labelMsg: 'special-characters-group-greek', layout: 'characters', language: 'el', characters: specialCharacterGroups.greek }, greekextended: { labelMsg: 'special-characters-group-greekextended', layout: 'characters', characters: specialCharacterGroups.greekextended }, cyrillic: { labelMsg: 'special-characters-group-cyrillic', layout: 'characters', characters: specialCharacterGroups.cyrillic }, // The core 28-letter alphabet, special letters for the Arabic language, // vowels, punctuation, digits. // Names of letters are written as in the Unicode charts. arabic: { labelMsg: 'special-characters-group-arabic', layout: 'characters', language: 'ar', direction: 'rtl', characters: specialCharacterGroups.arabic }, // Characters for languages other than Arabic. arabicextended: { labelMsg: 'special-characters-group-arabicextended', layout: 'characters', language: 'ar', direction: 'rtl', characters: specialCharacterGroups.arabicextended }, hebrew: { labelMsg: 'special-characters-group-hebrew', layout: 'characters', direction: 'rtl', characters: specialCharacterGroups.hebrew }, bangla: { labelMsg: 'special-characters-group-bangla', language: 'bn', layout: 'characters', characters: specialCharacterGroups.bangla }, tamil: { labelMsg: 'special-characters-group-tamil', language: 'ta', layout: 'characters', characters: specialCharacterGroups.tamil }, telugu: { labelMsg: 'special-characters-group-telugu', language: 'te', layout: 'characters', characters: specialCharacterGroups.telugu }, sinhala: { labelMsg: 'special-characters-group-sinhala', language: 'si', layout: 'characters', characters: specialCharacterGroups.sinhala }, devanagari: { labelMsg: 'special-characters-group-devanagari', layout: 'characters', characters: specialCharacterGroups.devanagari }, gujarati: { labelMsg: 'special-characters-group-gujarati', language: 'gu', layout: 'characters', characters: specialCharacterGroups.gujarati }, thai: { labelMsg: 'special-characters-group-thai', language: 'th', layout: 'characters', characters: specialCharacterGroups.thai }, lao: { labelMsg: 'special-characters-group-lao', language: 'lo', layout: 'characters', characters: specialCharacterGroups.lao }, khmer: { labelMsg: 'special-characters-group-khmer', language: 'km', layout: 'characters', characters: specialCharacterGroups.khmer }, canadianaboriginal: { labelMsg: 'special-characters-group-canadianaboriginal', language: 'cr', layout: 'characters', characters: specialCharacterGroups.canadianaboriginal }, runes: { labelMsg: 'special-characters-group-runes', layout: 'characters', characters: specialCharacterGroups.runes } } }, help: { labelMsg: 'wikieditor-toolbar-section-help', type: 'booklet', deferLoad: true, pages: { format: { labelMsg: 'wikieditor-toolbar-help-page-format', layout: 'table', headings: [ { textMsg: 'wikieditor-toolbar-help-heading-description' }, { textMsg: 'wikieditor-toolbar-help-heading-syntax' }, { textMsg: 'wikieditor-toolbar-help-heading-result' } ], rows: [ { description: { htmlMsg: 'wikieditor-toolbar-help-content-italic-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-italic-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-italic-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-bold-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-bold-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-bold-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-bolditalic-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-bolditalic-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-bolditalic-result' } } ] }, link: { labelMsg: 'wikieditor-toolbar-help-page-link', layout: 'table', headings: [ { textMsg: 'wikieditor-toolbar-help-heading-description' }, { textMsg: 'wikieditor-toolbar-help-heading-syntax' }, { textMsg: 'wikieditor-toolbar-help-heading-result' } ], rows: [ { description: { htmlMsg: 'wikieditor-toolbar-help-content-ilink-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-ilink-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-ilink-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-xlink-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-xlink-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-xlink-result' } } ] }, heading: { labelMsg: 'wikieditor-toolbar-help-page-heading', layout: 'table', headings: [ { textMsg: 'wikieditor-toolbar-help-heading-description' }, { textMsg: 'wikieditor-toolbar-help-heading-syntax' }, { textMsg: 'wikieditor-toolbar-help-heading-result' } ], rows: [ { description: { htmlMsg: 'wikieditor-toolbar-help-content-heading2-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-heading2-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-heading2-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-heading3-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-heading3-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-heading3-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-heading4-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-heading4-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-heading4-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-heading5-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-heading5-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-heading5-result' } } ] }, list: { labelMsg: 'wikieditor-toolbar-help-page-list', layout: 'table', headings: [ { textMsg: 'wikieditor-toolbar-help-heading-description' }, { textMsg: 'wikieditor-toolbar-help-heading-syntax' }, { textMsg: 'wikieditor-toolbar-help-heading-result' } ], rows: [ { description: { htmlMsg: 'wikieditor-toolbar-help-content-ulist-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-ulist-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-ulist-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-olist-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-olist-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-olist-result' } } ] }, file: { labelMsg: 'wikieditor-toolbar-help-page-file', layout: 'table', headings: [ { textMsg: 'wikieditor-toolbar-help-heading-description' }, { textMsg: 'wikieditor-toolbar-help-heading-syntax' }, { textMsg: 'wikieditor-toolbar-help-heading-result' } ], rows: [ { description: { htmlMsg: 'wikieditor-toolbar-help-content-file-description' }, syntax: { htmlMsg: [ 'wikieditor-toolbar-help-content-file-syntax', fileNamespace, configData.magicWords.img_thumbnail[ 0 ], mw.message( 'wikieditor-toolbar-help-content-file-caption' ).text() ] }, result: { html: '<div class="thumbinner" style="width: 102px;">' + '<a class="image">' + '<img alt="" src="' + $.wikiEditor.imgPath + 'toolbar/example-image.png" width="100" height="50" class="thumbimage"/>' + '</a>' + '<div class="thumbcaption"><div class="magnify">' + '<a title="' + mw.message( 'thumbnail-more' ).escaped() + '" class="internal"></a>' + '</div>' + mw.message( 'wikieditor-toolbar-help-content-file-caption' ).escaped() + '</div>' + '</div>' } } ] }, reference: { labelMsg: 'wikieditor-toolbar-help-page-reference', layout: 'table', headings: [ { textMsg: 'wikieditor-toolbar-help-heading-description' }, { textMsg: 'wikieditor-toolbar-help-heading-syntax' }, { textMsg: 'wikieditor-toolbar-help-heading-result' } ], rows: [ { description: { htmlMsg: 'wikieditor-toolbar-help-content-reference-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-reference-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-reference-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-named-reference-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-named-reference-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-named-reference-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-rereference-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-rereference-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-rereference-result' } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-showreferences-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-showreferences-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-showreferences-result' } } ] }, discussion: { labelMsg: 'wikieditor-toolbar-help-page-discussion', layout: 'table', headings: [ { textMsg: 'wikieditor-toolbar-help-heading-description' }, { textMsg: 'wikieditor-toolbar-help-heading-syntax' }, { textMsg: 'wikieditor-toolbar-help-heading-result' } ], rows: [ { description: { htmlMsg: 'wikieditor-toolbar-help-content-signaturetimestamp-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-signaturetimestamp-syntax' }, result: { htmlMsg: [ 'wikieditor-toolbar-help-content-signaturetimestamp-result', mw.config.get( 'wgFormattedNamespaces' )[ 2 ], mw.config.get( 'wgFormattedNamespaces' )[ 3 ] ] } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-signature-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-signature-syntax' }, result: { htmlMsg: [ 'wikieditor-toolbar-help-content-signature-result', mw.config.get( 'wgFormattedNamespaces' )[ 2 ], mw.config.get( 'wgFormattedNamespaces' )[ 3 ] ] } }, { description: { htmlMsg: 'wikieditor-toolbar-help-content-indent-description' }, syntax: { htmlMsg: 'wikieditor-toolbar-help-content-indent-syntax' }, result: { htmlMsg: 'wikieditor-toolbar-help-content-indent-result' } } ] } } } } }; // Remove the signature button on non-signature namespaces if ( !mw.Title.wantSignaturesNamespace( mw.config.get( 'wgNamespaceNumber' ) ) ) { delete toolbarConfig.toolbar.main.groups.insert.tools.signature; } module.exports = toolbarConfig; }() );