Utilisateur:Tractopelle-jaune/Toolbar.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
//<nowiki>

/* Boutons supplémentaires pour la barre d'outils WikiEditor (barre d'outils par défaut) */
// [[mw:Extension:WikiEditor/Toolbar customization]]

/* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar … */
if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) {
	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 );
		}
	} );
}

/* Barre d'outils supplémentaires */

// Boutons supplémentaires
var customizeToolbar = function() { $('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'main',
	group: 'format',
	tools: [ {
		type: 'button',
		label: 'Ajouter <u></u>',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/a/a1/OOjs_UI_icon_underline-a.svg/22px-OOjs_UI_icon_underline-a.svg.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '<u>',
				post: '</u>' }}}, {
		
		type: 'button',
		label: 'Ajouter <u>\'\'\'texte\'\'\'</u>',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/1/10/OOjs_UI_icon_text-style.svg/22px-OOjs_UI_icon_text-style.svg.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '<u>\'\'\'',
				post: '\'\'\'</u>' }}}, {
		
		type: 'button',
		label: 'Ajouter <small></small>',
		icon: '//upload.wikimedia.org/wikipedia/commons/1/10/Toolbar_Format_small.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '<small>',
				post: '</small>' }}}, {
		
		type: 'button',
		label: 'Supprimer les liens internes',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/5/54/OOjs_UI_icon_noWikiText-ltr.svg/22px-OOjs_UI_icon_noWikiText-ltr.svg.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /(?:\[\[([^<>\[\]|{}#]+)\]\]|\[\[[^<>\[\]|{}]+\|([^\[\]#]+)\]\])/g,
				regexReplace: '$1$2' }}}
	]
});

$('#wpTextbox1').wikiEditor('addToToolbar',
{
	sections: {
		'tracto-tools': {
			type: 'toolbar',
			label: 'Tracto-Tools',
			groups: {
				'code': { label: 'Code' },
				'date': { label: 'Date' },
				'list': { label: 'Liste' },
				'modélisme': { label: 'Modélisme' }
			}}
	},
	
	section: 'tracto-tools',
	group: 'code',
	tools: [ { //</nowiki>
		type: 'button',
		label: 'Ajouter balises <code></code>',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/4/45/Farm-Fresh_script_code.png/22px-Farm-Fresh_script_code.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '<code>',
				post: '</code>' }}}, {
		
		type: 'button',
		label: 'Ajouter balises <code id=""></code> avec l\'id contenant le texte séléctionné',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Farm-Fresh_script_go.png/22px-Farm-Fresh_script_go.png',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<code id="param-xxx">',
				post: '</code>',
				regex: /(?:<code>|\'{2,5}|\"|^( *))([^<>|{}\[\]#]+?)(?:<\/code>|\'{2,5}|\"|( *)$)/g,
				regexReplace: '$1<code id="param-$2">$2</code>$3' }}}, {
		
		type: 'button',
		label: 'Ajouter balises <code>[[#param-xxx|...]]</code> avec lien vers le paramètre séléctionné',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/6/68/Farm-Fresh_script_link.png/22px-Farm-Fresh_script_link.png',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<code>[[#param-xxx|',
				post: ']]</code>',
				regex: /(?:<code>|\'{2,5}|\"|^( *))([^<>|{}\[\]#]+?)(?:<\/code>|\'{2,5}|\"|( *)$)/g,
				regexReplace: '$1<code>[[#param-$2|$2]]</code>$3' }}}, {
		
		type: 'button',
		label: 'Ajout balises code + lien vers Aide:Mot magique',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/6/61/Farm-Fresh_script_palette.png/22px-Farm-Fresh_script_palette.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '<code>[[Aide:Mot magique#XXX|<nowiki>',
				peri: 'XXX',
				post: '</nowiki>]]</code>',
				/*                               1       2   3       4    5     6                  7      8        9                10     11                                             12   */
				regex: /(?:<code>(?:<nowiki>)?|^( *))(?:(__)([A-Z]+)(__)|(\{\{)([A-Za-z0-9 _!]+):?(\}\})|(\{\{)m\|([A-Za-z0-9 _!]+)(\}\})|([A-Za-z0-9 _!]+):?)(?:(?:<\/nowiki>)?<\/code>|( *)$)/g,
				regexReplace: '$1<code>[[Aide:Mot magique#$3$6$9$11|<nowiki>$2$3$4$5$6$7$8$9$10$11</nowiki>]]</code>$12' }}}, {
		
		type: 'button',
		label: 'Ajouter balises <code><nowiki></nowiki></code>',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/a/ac/Farm-Fresh_script_visual_studio.png/22px-Farm-Fresh_script_visual_studio.png',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<code><nowiki>',
				post: '</nowiki></code>' }}}, {
		
		type: 'button',
		label: 'Ajouter balises <nowiki></nowiki>',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Farm-Fresh_script_code_red.png/22px-Farm-Fresh_script_code_red.png',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<nowiki>',
				post: '</nowiki>' }}}, {
		
		type: 'button',
		label: 'De-code',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/8/87/Farm-Fresh_script_delete.png/22px-Farm-Fresh_script_delete.png',
		action: {
			type: 'replace',
			options: {
				pre: '',
				regex: /(?:<code>|<nowiki>)+(.+?)(?:<\/nowiki>|<\/code>)+/g,
				regexReplace: '$1' }}}, {
		
		type: 'button',
		label: 'Remplacer \'\'\'texte\'\'\' par <code>texte</code>',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/b/be/Farm-Fresh_script_flash.png/22px-Farm-Fresh_script_flash.png',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<code>',
				post: '</code>',
				regex: /(?:\'{2,5}(?:<code>)?(.+?)(?:<\/code>)?\'{2,5}|« *(?:<code>)?([^«»\n]+?)(?:<\/code>)? *»|\" *(?:<code>)?([^«»\n]+?)(?:<\/code>)? *\")/g,
				regexReplace: '<code>$1$2$3</code>' }}}, {
		
		type: 'button',
		label: 'Remplacer "* \'\'\'<code>param</code>\'\'\' : " par "; <code>param</code> : " sur toutes les lignes sélectionnées',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/8/89/Farm-Fresh_macro_show_all_actions.png/22px-Farm-Fresh_macro_show_all_actions.png',
		action: {
			type: 'encapsulate',
			options: {
				pre: '; <code>',
				post: '</code> : ',
				regex: /^[*;]+ *(?:\'{2,5} *([^<>=\n;*]+?) *(?:[:=—–] *| +- +)?\'{2,5} *(?:[:=—–] *| +- +)?|(?:\'{2,5})?<code>((?:<nowiki>)?[^<>=\n;*]+?(?:<\/nowiki>)?)<\/code>(?:\'{2,5})? *(?:[:=—–] *| +- +)?|([^<>:=\n—–;*]+?) *[:=—–] *| +- +)/mg,
				regexReplace: '; <code>$1$2$3</code> : ' }}}
	] //<nowiki>
});

$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'tracto-tools',
	group: 'date',
	tools: [ {
		type: 'button',
		label: 'Ajouter {{date-}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Farm-Fresh_date_add.png/22px-Farm-Fresh_date_add.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '{{date-|',
				post: '}}',
				regex: /(?:\{\{date-?\|)?(?:(?:\{\{)?(\d+)(?:er|er\}\}|\{\{er\}\})?[ |]+)?(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)[ |]+(\d{4})(?:\}\})?/gi,
				regexReplace: '{{date-|$1 $2 $3}}' }}}, {
		
		type: 'button',
		label: 'Ajouter {{date}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Farm-Fresh_date_link.png/22px-Farm-Fresh_date_link.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '{{date|',
				post: '}}',
				regex: /(?:\{\{date-?\|)?(?:(?:\{\{)?(\d+)(?:er|er\}\}|\{\{er\}\})?[ |]+)?(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)[ |]+(\d{4})(?:\}\})?/gi,
				regexReplace: '{{date|$1 $2 $3}}' }}}, {
		
		type: 'button',
		label: 'Supprimer {{date}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/6/60/Farm-Fresh_date_delete.png/22px-Farm-Fresh_date_delete.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /\{\{date-?\|(?:(?:\{\{)?(\d{1,2})(?:er|er\}\}|\{\{er\}\})?)?[ |]+(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)[ |]+(\d{4})(?:\|[^{}|\n]+)?\}\}/gi,
				regexReplace: '$1 $2 $3' }}}
	]
});

/** Tracto-Tools - Listes **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'tracto-tools',
	group: 'list',
	tools: [ {
		type: 'button',
		label: 'Ajout puce à chaque ligne / conversion # → * / conversion {{Liste éléments}} en {{Liste horizontale}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/7/71/Farm-Fresh_text_list_bullets.png/22px-Farm-Fresh_text_list_bullets.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^(?: *[*#|:] *)?([^\n*#]+?) *$/mg,
				regexReplace: '* $1' }}}, {
		
		type: 'button',
		label: 'Ajout puce numérotée à chaque ligne / conversion * → # / conversion {{Liste éléments}} en {{Liste horizontale}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Farm-Fresh_text_list_numbers.png/22px-Farm-Fresh_text_list_numbers.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^(?: *[*#|:] *)?([^\n*#]+?) *$/mg,
				regexReplace: '# $1' }}}, {
		
		type: 'button',
		label: 'Liste de définition - convertir élément en « ; »',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Farm-Fresh_tree_list.png/22px-Farm-Fresh_tree_list.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^(?: *[*#|]+ *)?(?:'''|<u>)*([^\n*#]+?)( ?:|'''|<\/u>)* *$/mg,
				regexReplace: '; $1' }}}, {
		
		type: 'button',
		label: 'Liste de définition - convertir élément en « : »',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Farm-Fresh_legend.png/22px-Farm-Fresh_legend.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^(?: *[*#|]+ *)?([^\n*#]+?) *$/mg,
				regexReplace: ': $1' }}}, {
		
		type: 'button',
		label: 'Liste de définition - augmenter indentation',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Farm-Fresh_regex_split.png/22px-Farm-Fresh_regex_split.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^([;:*#]+)? *([^\n]+?) *$/mg,
				regexReplace: ':$1 $2' }}}, {
		
		type: 'button',
		label: 'Liste de définition - réduire indentation',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Farm-Fresh_database_repeat_delete.png/22px-Farm-Fresh_database_repeat_delete.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^[;:]([;:*#]+ *)?([^\n]+?) *$/mg,
				regexReplace: '$1 $2' }}}, {
		
		type: 'button',
		label: 'Ajouter liens sur tous les éléments de la liste',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Farm-Fresh_database_repeat_insert.png/22px-Farm-Fresh_database_repeat_insert.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^( *[*#|:;]+ *)?([^\[\]\n*#{}|]+?) *$/mg,
				regexReplace: '$1[[$2]]' }}}
	]
});
/** Fin Tracto-Tools - Listes **/



/** Tracto-Tools - Modélisme **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'tracto-tools',
	group: 'modélisme',
	tools: [ {
		type: 'button',
		label: 'Ajout {{{{{|safesubst:}}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Farm-Fresh_winrar_extract.png/22px-Farm-Fresh_winrar_extract.png',
		action:	{
			type: 'replace',
			options: {
				peri: '{{{{{|safesubst:}}}',
				regex: /^( *)\{\{(?:safesubst:)?([^{}]|$)/,
				regexReplace: '$1{{{{{|safesubst:}}}$2' }}}
	]
});
/** Fin Tracto-Tools - Modélisme **/



/** Tableaux **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	sections: {
		'table': {
			type: 'toolbar',
			label: 'Tables',
			groups: {
				'header': { label: 'En-tête' },
				'cell': { label: 'Cellule' },
				'style': { label: 'CSS' }}}
	},
	
	section: 'table',
	group: 'header',
	tools: [ {
		type: 'button',
		label: 'Ajouter titre de tableau (caption)',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Farm-Fresh_query_make_table.png/22px-Farm-Fresh_query_make_table.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '|+ ',
				regex: /^ *(.+) *$/,
				regexReplace: '|+ $1',
				ownline: true }}}, {
		
		type: 'button',
		label: 'Ajouter scope="col"',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/6/69/Farm-Fresh_imex_run_import.png/22px-Farm-Fresh_imex_run_import.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '! scope="col" | ',
				peri: 'CONTENU',
				regex: /^[!|] *(?:([^\[\]{}|!\n]+ ?) *?\|(?!\|))? *(''')?(.+)\2/gm,
				regexReplace: '! scope="col" $1| $3' }}}, {
		
		type: 'button',
		label: 'Ajouter scope="row"',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Farm-Fresh_imex_run_export.png/22px-Farm-Fresh_imex_run_export.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '! scope="row" | ',
				peri: 'CONTENU',
				regex: /^[!|] *(?:([^\[\]{}|!\n]+ ?) *?\|(?!\|))? *(''')?(.+?)\2 *(?:\|(\|.+)(\n)|$)/gm, /* La dernière partie "(?:\|(\|.+)(\n)|$)" permet de gérer les cas où plusieurs cellules sont sur la même ligne, car cela nécéssite de casser la ligne au niveau du "||" ; en bricolant avec des captures optionelles de retours à la ligne, on arrive gérer ce cas en renvoyant sur une nouvelle ligne les autres cellules, tout en n'ajoutant pas de nouvelle ligne si il n'y a pas d'autres cellules */
				regexReplace: '! scope="row" $1| $3$5$4$5' }}}, {
		
		type: 'button',
		label: 'Ajouter scope="row" sur toutes les cellules de la 1re colonne',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Farm-Fresh_more_exports.png/22px-Farm-Fresh_more_exports.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^\|-([^\n|]*)\n\| *(?:([^\[\]{}|!\n]+ ?) *?\|(?!\|))? *(''')?(.+?)\3 *(?:\|(\|.+)(\n)|$)/gm, /* La dernière partie "(?:\|(\|.+)(\n)|$)" permet de gérer les cas où plusieurs cellules sont sur la même ligne, car cela nécéssite de casser la ligne au niveau du "||" ; en bricolant avec des captures optionelles de retours à la ligne, on arrive gérer ce cas en renvoyant sur une nouvelle ligne les autres cellules, tout en n'ajoutant pas de nouvelle ligne si il n'y a pas d'autres cellules */
				regexReplace: '|-$1\n! scope="row" $2| $4$6$5$6' }}}
	]
});
	
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'table',
	group: 'cell',
	tools: [ {
		type: 'button',
		label: 'Mettre les cellules sur une seule ligne',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Farm-Fresh_consolidate.png/22px-Farm-Fresh_consolidate.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: /^(\|-[^\n]*)\n([!|])(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*)(?:\n(\2)(?:\2)?(?![|!+-\}])( *)([^\n]*))?)?)?)?)?)?)?)?)?/gm,
				regexReplace: '$1\n$2$3$4$6$5$5$6$7$9$8$8$9$10$12$11$11$12$13$15$14$14$15$16$18$17$17$18$19$21$20$20$21$22$24$23$23$24$25$27$26$26$27$28$30$29$29$30$31' }}}, {
		
		type: 'button',
		label: 'Mettre une cellule par ligne',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/3/33/Farm-Fresh_table_chart.png/22px-Farm-Fresh_table_chart.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: / *([|!])\1 */g,
				regexReplace: '\n$1 ' }}}
	]
});

$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'table',
	group: 'style',
	tools: [ {
		type: 'button',
		label: 'Ajouter/convertir width vers propriété CSS width:',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/2/21/Farm-Fresh_merge_cells.png/22px-Farm-Fresh_merge_cells.png',
		action:	{
			type: 'encapsulate',
			options: {
				peri: 'style="width:100%;"',
				regex: /width=\"?(\d+(?:px|%))\"?/g,
				regexReplace: 'style="width:$1;"' }}}, {
		
		type: 'button',
		label: 'Ajouter/convertir align vers propriété CSS text-align:',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Farm-Fresh_table_select_row.png/22px-Farm-Fresh_table_select_row.png',
		action:	{
			type: 'encapsulate',
			options: {
				peri: 'style="text-align:center;"',
				regex: /align=\"?(left|center|right|justify)\"?/g,
				regexReplace: 'style="text-align:$1;"' }}}, {
		
		type: 'button',
		label: 'Ajouter/convertir bgcolor vers propriété CSS background:',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Farm-Fresh_table_heatmap_cell.png/22px-Farm-Fresh_table_heatmap_cell.png',
		action:	{
			type: 'encapsulate',
			options: {
				peri: 'style="background:XXX;"',
				regex: /bgcolor=\"?([a-zA-Z]+|#[0-9A-Fa-f]+)\"?/g,
				regexReplace: 'style="background:$1;"' }}}, {
		
		type: 'button',
		label: 'Fusionner les différents attributs style=""',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Farm-Fresh_query_design.png/22px-Farm-Fresh_query_design.png',
		action:	{
			type: 'encapsulate',
			options: {
				regex: / *style=\"([^\"|!\n]+)\"([^|!\n]*?) *style=\"([^\"|!\n]+)\"/g,
				regexReplace: '$2 style="$1 $3"' }}}
	]
});
/** Fin Tableaux **/



/** Sysop **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	sections: {
		'sysop': {
			type: 'toolbar',
			label: 'Sysop',
			groups: {
				'IP': { label: 'IP' },
				'entités': { label: 'Entités' },
				'DFH': { label: 'DFH' }
			}}
	},
	
	section: 'sysop',
	group: 'IP',
	tools: [ {
		type: 'button',
		label: '{{IP scolaire}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/d/d0/School_ip.svg/22px-School_ip.svg.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '{{IP scolaire|',
				post: '}}\n',
				regex: /^(\s*)([^\n]+?)(\s*)$/,
				regexReplace: '$1{{IP scolaire|$2}}$3',
				ownline: true }}}, {
		
		type: 'button',
		label: '{{IP partagée}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Shared_IP.svg/22px-Shared_IP.svg.png',
		action:	{
			type: 'encapsulate',
			options: {
				pre: '{{IP partagée|',
				post: '}}\n',
				regex: /^(\s*)([^\n]+?)(\s*)$/,
				regexReplace: '$1{{IP partagée|$2}}$3',
				ownline: true }}}
		]
});

/** Sysop - menus établissements **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'sysop',
	group: 'entités',
	tools: {
		'menu-académies': {
			type: 'select',
			label: 'Académies',
			list: [ {
				label: '[A] Aix-Marseille',
				action: {
					type: 'replace',
					options: { pre:'[[Académie d\'Aix-Marseille]]' }}}, {
				
				label: '[A] Amiens',
				action: {
					type: 'replace',
					options: { pre:'[[Académie d\'Amiens (éducation)|Académie d\'Amiens]]' }}}, {
				
				label: '[A] Besançon',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Besançon]]' }}}, {
				
				label: '[A] Bordeaux',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Bordeaux (éducation)|Académie de Bordeaux]]' }}}, {
				
				label: '[A] Caen',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Caen (éducation)|Académie de Caen]]' }}}, {
				
				label: '[A] Clermont-Ferrand',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Clermont-Ferrand]]' }}}, {
				
				label: '[A] Corse',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Corse]]' }}}, {
				
				label: '[A] Dijon',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Dijon (éducation)|Académie de Dijon]]' }}}, {
				
				label: '[A] Créteil',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Créteil]]' }}}, {
				
				label: '[A] Guadeloupe',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de la Guadeloupe]]' }}}, {
				
				label: '[A] Guyane',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Guyane]]' }}}, {
				
				label: '[A] Grenoble',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Grenoble]]' }}}, {
				
				label: '[A] Lille',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Lille]]' }}}, {
				
				label: '[A] Limoges',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Limoges]]' }}}, {
				
				label: '[A] Lyon',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Lyon (éducation)|Académie de Lyon]]' }}}, {
				
				label: '[A] Martinique',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Martinique]]' }}}, {
				
				label: '[A] Mayotte',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Mayotte]]' }}}, {
				
				label: '[A] Montpellier',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Montpellier (éducation)|Académie de Montpellier]]' }}}, {
				
				label: '[A] Nancy-Metz',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Nancy-Metz]]' }}}, {
						
				label: '[A] Nantes',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Nantes]]' }}}, {
				
				label: '[A] Rouen',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Rouen (éducation)|Académie de Rouen]]' }}}, {
				
				label: '[A] Strasbourg',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Strasbourg]]' }}}, {
				
				label: '[A] Toulouse',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Toulouse]]' }}}, {

				label: '[A] Versailles',
				action: {
					type: 'replace',
					options: { pre:'[[Académie de Versailles (éducation)|Académie de Versailles]]' }}}
			]
		}
	}
});

/** Sysop - menu DFH **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'sysop',
	group: 'DFH',
	tools: {
		'DF début': {
			type: 'select',
			label: 'DF début',
			list: [ {
				label: 'oui',
				action: {
					type: 'replace',
					options: { pre:'oui' }}}, {
				
				label: 'non',
				action: {
					type: 'replace',
					options: { pre:'non' }}}, {
				
				label: 'attente',
				action: {
					type: 'replace',
					options: { pre:'attente' }}}
			]
		}
	}
});
/** Fin Sysop **/



/** Smileys **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	sections: {
		'smileys': {
			type: 'toolbar',
			label: 'Smileys',
			groups: {
				'basic': { label: '' }}}
	},
	
	section: 'smileys',
	group: 'basic',
	tools: [ {
		type: 'button',
		label: '{{???}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Puzzled.svg/22px-Puzzled.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{???}}' }}}, {
		
		type: 'button',
		label: '{{Ange}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/d/d5/Face-angel.svg/22px-Face-angel.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Ange}}' }}}, {

 		type: 'button',
		label: '{{Bisou}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Face-kiss.svg/22px-Face-kiss.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Bisou}}' }}}, {
		
 		type: 'button',
		label: '{{Clin}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/5/57/Face-wink.svg/22px-Face-wink.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Clin}}' }}}, {
		
 		type: 'button',
		label: '{{Cool}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Emblem-cool.svg/22px-Emblem-cool.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Cool}}' }}}, {
		
 		type: 'button',
		label: '{{CQFD}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Face-glasses.svg/22px-Face-glasses.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{CQFD}}' }}}, {
		
 		type: 'button',
		label: '{{Espiègle}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Face-espiegle.svg/22px-Face-espiegle.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Espiègle}}' }}}, {
		
 		type: 'button',
		label: '{{Fier}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/1/15/Face-smile-big.svg/22px-Face-smile-big.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Fier}}' }}}, {
		
 		type: 'button',
		label: '{{Grr}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/5/5c/Angry.png',
		action: { type: 'encapsulate', options: { pre: '{{Grr}}' }}}, {
		
 		type: 'button',
		label: '{{Oups}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Face-blush.svg/22px-Face-blush.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Oups}}' }}}, {
		
 		type: 'button',
		label: '{{Drôle}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Face-grin.svg/22px-Face-grin.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Drôle}}' }}}, {
		
 		type: 'button',
		label: '{{^^}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/2/24/Im-yahoo.svg/22px-Im-yahoo.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{^^}}' }}}, {
		
 		type: 'button',
		label: '{{Boulet}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/c/c6/Face-badtooth.svg/22px-Face-badtooth.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Boulet}}' }}}, {
		
 		type: 'button',
		label: '{{Malin}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/7/70/Face-devil-grin.svg/22px-Face-devil-grin.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Malin}}' }}}, {
		
 		type: 'button',
		label: '{{Pleure}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Face-crying.svg/22px-Face-crying.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Pleure}}' }}}, {
		
 		type: 'button',
		label: '{{Sourire}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/7/79/Face-smile.svg/22px-Face-smile.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Sourire}}' }}}, {
		
 		type: 'button',
		label: '{{Surprise}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/7/79/Face-surprise.svg/22px-Face-surprise.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Surprise}}' }}}, {
		
 		type: 'button',
		label: '{{Tire langue}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/c/c4/Tongue.png',
		action: { type: 'encapsulate', options: { pre: '{{Tire langue}}' }}}, {
		
 		type: 'button',
		label: '{{Triste}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/0/06/Face-sad.svg/22px-Face-sad.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Triste}}' }}}, {
		
 		type: 'button',
		label: '{{Bof}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Face-plain.svg/22px-Face-plain.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Bof}}' }}}, {
		
 		type: 'button',
		label: '{{Expert}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/0/03/Face-grin_expert.svg/22px-Face-grin_expert.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Expert}}' }}}, {
		
 		type: 'button',
		label: '{{=/}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Gnome-face-uncertain.svg/22px-Gnome-face-uncertain.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{=/}}' }}}, {
		
 		type: 'button',
		label: '{{Hum}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/2/26/Aliensmiley.svg/22px-Aliensmiley.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Hum}}' }}}, {
		
 		type: 'button',
		label: '{{Ampoule}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Lightbulb.png/22px-Lightbulb.png',
		action: { type: 'encapsulate', options: { pre: '{{Ampoule}}' }}}, {
		
 		type: 'button',
		label: '{{Amour}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Nuvola_emblem-favorite.svg/22px-Nuvola_emblem-favorite.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Amour}}' }}}, {
		
 		type: 'button',
		label: '{{Smiley marronnier}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/3/39/Horse-chestnut_fruit.svg/22px-Horse-chestnut_fruit.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Smiley marronnier}}' }}}, {
		
 		type: 'button',
		label: '{{Bravo}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/1/1f/SMirC-thumbsup.svg/22px-SMirC-thumbsup.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Bravo}}' }}}, {
		
 		type: 'button',
		label: '{{Yeux}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/SMirC-puppyeyes.svg/22px-SMirC-puppyeyes.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Yeux}}' }}}, {
		
 		type: 'button',
		label: '{{Beurk}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/5/56/SMirC-puke.svg/22px-SMirC-puke.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Beurk}}' }}}, {
		
 		type: 'button',
		label: '{{Sifflote}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/3/30/Sifflote.png/22px-Sifflote.png',
		action: { type: 'encapsulate', options: { pre: '{{Sifflote}}' }}}, {
		
 		type: 'button',
		label: '{{Applau}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/7/76/Applau.gif',
		action: { type: 'encapsulate', options: { pre: '{{Applau}}' }}}, {
		
 		type: 'button',
		label: '{{Troll3}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Crystal_Clear_troll_dots.png/22px-Crystal_Clear_troll_dots.png',
		action: { type: 'encapsulate', options: { pre: '{{Troll3}}' }}}, {
		
 		type: 'button',
		label: '{{Dans le mur}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/6/60/Wall25.gif',
		action: { type: 'encapsulate', options: { pre: '{{Dans le mur}}' }}}, {
		
 		type: 'button',
		label: '{{Hic}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/8/83/Drinking-smiley-Sunglass.gif',
		action: { type: 'encapsulate', options: { pre: '{{Hic}}' }}}, {
		
 		type: 'button',
		label: '{{Gnii}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/d/da/Roto.svg/22px-Roto.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{Gnii}}' }}}, {
		
 		type: 'button',
		label: '{{Injure}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/2/22/PissedOff.gif',
		action: { type: 'encapsulate', options: { pre: '{{Injure}}' }}}, {
		
 		type: 'button',
		label: '{{N\'importe quoi}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/d/d3/Notpayingattention.gif',
		action: { type: 'encapsulate', options: { pre: '{{N\'importe quoi}}' }}}, {
		
 		type: 'button',
		label: '{{Ah Ah}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/8/8f/Rolling_on_the_floor.gif',
		action: { type: 'encapsulate', options: { pre: '{{Ah Ah}}' }}}, {
		
 		type: 'button',
		label: '{{2 cents}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/9/98/Coin_Icon.svg/22px-Coin_Icon.svg.png',
		action: { type: 'encapsulate', options: { pre: '{{2 cents}}' }}}, {
		
 		type: 'button',
		label: '{{Fiesta}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Partyhat_icone.png/22px-Partyhat_icone.png',
		action: { type: 'encapsulate', options: { pre: '{{Fiesta}}' }}}, {
		
 		type: 'button',
		label: '{{Désespoir}}',
		icon: '//upload.wikimedia.org/wikipedia/commons/7/75/Smiley_emoticons_doh.gif',
		action: { type: 'encapsulate', options: { pre: '{{Désespoir}}' }}}
	]
});
/** Fin Smileys **/



/** Menu autres - SyntaxHighlight **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	sections: {
		'menu-autres': {
			type: 'booklet',
			label: 'Menu autres',
			pages: {
				'syntaxhighlight': { label: 'SyntaxHighlight', layout: 'characters' },
				'modélisme': { label: 'Modélisme', layout: 'characters' },
				'documentation': { label: 'Documentation', layout: 'characters' }
	}}},
	
	section: 'menu-autres',
	page: 'syntaxhighlight',
	characters: [ {
		label: '<syntaxhighlight lang="xxx">',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<syntaxhighlight lang="xxx">\n',
				post: '\n</syntaxhighlight>',
				regex: /(?:<code><nowiki>|<code>|<pre>)([\D\d]+?)(?:<\/pre>|<\/nowiki><\/code>|<\/code>)/g,
				regexReplace: '<syntaxhighlight lang="xxx">\n$1\n</syntaxhighlight>' }}}, {
		
		label: '<syntaxhighlight lang="xxx" inline>',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<syntaxhighlight lang="xxx" inline>',
				post: '</syntaxhighlight>',
				regex: /(?:<code><nowiki>|<code>|<pre>)([\D\d]+?)(?:<\/pre>|<\/nowiki><\/code>|<\/code>)/g,
				regexReplace: '<syntaxhighlight lang="xxx" inline>$1</syntaxhighlight>' }}}, {
		
		label: '<syntaxhighlight lang="xxx" line>',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<syntaxhighlight lang="xxx" line>\n',
				post: '\n</syntaxhighlight>',
				regex: /(?:<code><nowiki>|<code>|<pre>)([\D\d]+?)(?:<\/pre>|<\/nowiki><\/code>|<\/code>)/g,
				regexReplace: '<syntaxhighlight lang="xxx" line>\n$1\n</syntaxhighlight>' }}}, {
		
		label: '<syntaxhighlight lang="xxx" highlight="">',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<syntaxhighlight lang="xxx" highlight="x,x-x">\n',
				post: '\n</syntaxhighlight>',
				regex: /(?:<code><nowiki>|<code>|<pre>)([\D\d]+?)(?:<\/pre>|<\/nowiki><\/code>|<\/code>)/g,
				regexReplace: '<syntaxhighlight lang="xxx" highlight="">\n$1\n</syntaxhighlight>' }}}, {
		
		label: '<syntaxhighlight lang="xxx" line start="x">',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<syntaxhighlight lang="xxx" line start="x">\n',
				post: '\n</syntaxhighlight>',
				regex: /(?:<code><nowiki>|<code>|<pre>)([\D\d]+?)(?:<\/pre>|<\/nowiki><\/code>|<\/code>)/g,
				regexReplace: '<syntaxhighlight lang="xxx" line start="x">\n$1\n</syntaxhighlight>' }}}
	]
});
/** Fin Menu autres - SyntaxHighlight **/



/** Menu autres - Modélisme **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'menu-autres',
	page: 'modélisme',
	characters: [ {
		label: '<div style="display:grid;">',
		action: {
			type: 'encapsulate',
			options: {
				pre: '<div style="display:grid; grid-auto-flow:column; align-items:center; column-gap:1em;">',
				peri: 'CONTENU',
				post: '</div>' }}}, {
		
		label: 'VIDE',
		action: {
			type: 'encapsulate',
			options: {
				pre: 'VIDE',
				post: 'VIDE' }}}
	]
});
/** Fin Menu autres - Modélisme **/


/** Menu autres - Documentation **/
$('#wpTextbox1').wikiEditor('addToToolbar',
{
	section: 'menu-autres',
	page: 'documentation',
	characters: [ {
		label: '{{Méta cadre}} pour exemple',
		action: {
			type: 'encapsulate',
			options: {
				pre: '{{Méta cadre\n | fond    = #F8FFF8\n | contenu = ',
				peri: 'EXEMPLE',
				post: '\n}}',
				regex: /^\s*(.+?)\s*?(\n)?$/s,
				regexReplace: '{{Méta cadre\n | fond    = #F8FFF8\n | contenu = $1\n}}$2',
				ownline: true }}}, {
		
		label: 'VIDE',
		action: {
			type: 'encapsulate',
			options: {
				pre: 'VIDE',
				post: 'VIDE' }}}
	]
});
/** Fin Menu autres - Documentation **/

};
// </nowiki>