MediaWiki:Gadget-code-snippets.js

Материал из Абдулопедии
Перейти к навигации Перейти к поиску

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
/**<nowiki>
 * Gadget that loads a couple of snippets for easier access to commonly copy/pasted templates and sections
 * Authors:
 ** Joeytje50
 ** BlackHawk
 ** GodSatanist
*/

$(function() {
	var pagename = mw.config.get('wgTitle');

	function snippet(label, parts) {
		if (typeof(parts) == 'string') parts = [parts]; // if string is given, only use pre
		return {
			label: label,
			action: {
				type: 'encapsulate',
				options: {
					pre: parts[0] || '',
					peri: parts[1] || '',
					post: parts[2] || '',
				}
			}
		};
	}
	
	function getLicense(name, chars, param) {
		var label = name;
		if (name instanceof Array) { // if the label shouldn't be the same as the name
			label = name[1];
			name = name[0];
		}
		return snippet(label, [
			'{{'+name+' license|',
			pagename.slice(0, -chars),
			(param || '') + '}}'
		]);
	}

	function customizeToolbar() {
		if (typeof($('#wpTextbox1').wikiEditor) != 'function') return console.log($('#wpTextbox1'), $('#wpTextbox1').wikiEditor);
		
		var templates = {
			'label': 'Заготовки шаблонов',
			'layout': 'characters',
			'characters': [
				snippet('{{Карточка}}', [
					'{{Карточка\n|имя = ', 
					'', 
					'\n|файл = \n|caption = \n|Основные характеристики| \n|Дата рождения|1953 \n|Род деятельности|Актёро-режиссёр, алкаш, ублюдок \n|Атрибуты|Презрение к роду людскому}}\n' 
				]),
				snippet('Видео с YouTube {{YouTube}}', [
					'{{YouTube|service=youtube|', 
					'код видео', 
					'|width=150|align=right|Подпись под видео}}'
				]),
				snippet('Видео с Vimeo {{Vimeo}}', [
					'{{Vimeo|width=150|float=right|', 
					'код видео', 
					'|Подпись под видео}}'
				]),
				snippet('Видео с RuTube {{Rutube}}', [
					'{{Rutube|', 
					'код видео', 
					'|width=200|height=130|align=right|Подпись под видео}}'
				]),
				snippet('Цитата #1 {{Цитата}}', [
					'{{Цитата|', 
					'Цитируемый текст', 
					'|Автор цитаты|Источник|size=360%|textSize=200%|textColor=white|sourceColor=gray|sourceSize=100%}}\n'
               ]),
				snippet('Цитата #2 {{Цитата2}}', [
					'{{Цитата2|', 
					'Цитируемый текст', 
					'|Источник цитаты|Заголовок цитаты}}\n'
				]),
				snippet('Цитата #3 {{Tinyquote}}', [
					'{{Tinyquote|', 
					'Цитируемый текст', 
					'|Автор цитаты|Источник цитаты|color=#691919|size=344%}}\n'
				]),
				snippet('Галерея картинок #1 {{Collapsegallery}}', [
					'{{Collapsegallery|Заголовок галереи|id галереи (ставьте что-то рандомное)|center|<gallery>\n', 
					'file1.jpg\nfile2.jpg\nfile3.jpg\n', 
					'</gallery>|<gallery> \nfile4.jpg\nfile5.jpg\nfile6.jpg\n</gallery>}}\n'
				]),
                snippet('Галерея картинок #2 {{Галерея}}', [
					'{{Галерея|Заголовок галереи|center|<gallery>', 
					'', 
					'\nFile:image1.jpg\nFile:image2.jpg\nFile:image3.jpg\n</gallery>}}\n'
				]),
                snippet('Внешняя картинка {{Extimage}}', [
					'{{Extimage|', 
					'URL (discord/imgur)', 
					'|right|150px|Подпись под картинкой}}'
				]),
				snippet('Видеогалерея {{Videogallery}}', [
					'{{Videogallery|width=400|cols=3|align=center\n', 
					'||ID_видео|Описание_видео\n||ID_видео|Описание_видео\n||ID_видео|Описание_видео\n', 
					'}}\n'
				]),
				snippet('Цветной текст {{Oncolor}}', [
					'{{Oncolor|Цвет фона|Цвет текста|', 
					'Текст', 
					'}}\n'
				]),
                snippet('{{Пояснение}}', [
					'{{Пояснение|Поясняемое слово|', 
					'Пояснение', 
					'}}\n'
				]),
                snippet('Спойлер #1 {{Spoiler C}}', [
					'{{Spoiler C|Заголовок спойлера|', 
					'Содержимое спойлера', 
					'}}\n'
				]),
                snippet('Спойлер #2 {{Spoiler}}', [
					'{{Spoiler|', 
					'Содержимое спойлера', 
					'}}\n'
				]),
                snippet('{{Text box}}', [
					'{{Text box\n| heading = ', 
					'', 
					'\n| message = \n}}\n'
				]),
                snippet('{{Discord}}', [
					'{{Discord|server/user|', 
					'ID', 
					'|Text}}'
				]),
                snippet('{{Wikilink}}', [
					'{{Wikilink|', 
					'Название_статьи', 
					'|Текст}}'
				]),
                snippet('{{Vk}}', [
					'{{Vk|', 
					'ID', 
					'|Текст}}'
				]),
                snippet('{{Yt}}', [
					'{{Yt|', 
					'ID канала', 
					'|Текст}}'
				]),
                snippet('{{Telegram}}', [
					'{{Telegram|', 
					'ID канала/юзера', 
					'|Текст}}'
				]),
                snippet('{{Steam}}', [
					'{{Steam|', 
					'ID профиля', 
					'|Текст}}'
				]),
			]
		};
		var sections = {
			'label': 'Плашки',
			'layout': 'characters',
			'characters': [
				snippet('К удалению', [
					'{{blackhole|', 
					'Причина выставления на удаление', 
					'}}\n'
				]),
				snippet('Нужен ремейк', [
					'{{ремейк|', 
					'Примечание', 
					'}}\n'
				]),
				snippet('Корректировка', [
					'{{корр|', 
					'Указание недостатков', 
					'}}\n'
				]),
				snippet('Надо перепилить', [
					'{{перепилить|', 
					'Примечание', 
					'}}\n'
				]),
				snippet('Каноничное', [
					'{{канон}}\n'
				]),
				snippet('Черновик', [
					'{{Черновик}}\n'
				]),
				snippet('Мало', [
					'{{Мало}}\n'
				]),
				snippet('Дописать', [
					'{{Допилить}}\n'
				]),
				snippet('Юмор', [
					'{{Юмор}}\n'
				]),
				snippet('Статья-детектор', [
					'{{Детектор|', 
					'Причины возгораний', 
					'}}\n'
				]),
				snippet('Градусы науки', [
					'{{Градус от 1 до 4}}\n'
				]),
				snippet('Неисследованный материал', [
					'{{Неисследовано}}\n'
				]),
                snippet('Нужно доп. исследование', [
					'{{Доисследовать}}\n'
				]),
                snippet('Исследовательская статья', [
					'{{Исследование}}\n'
				]),
                snippet('Повышенная мерзотность', [
					'{{Абдулопиздец}}\n'
				]),
                snippet('Актуализация', [
					'{{Актуальность}}\n'
				]),
                snippet('Текущие события', [
					'{{Текущее}}\n'
				]),
			]
		};
		var references = {
			'label': 'Заголовки',
			'layout': 'characters',
			'characters': [
				snippet('Уровень 2', [
					'== Текст заголовка ==\n'
				]),
				snippet('Уровень 3', [
					'=== Текст заголовка ===\n'
				]),
				snippet('== Прочее ==', [
					'== Прочее ==\n'
				]),
				snippet('== Смотри также ==', [
					'== Смотри также ==\n'
				]),
				snippet('== Ссылки ==', [
					'== Ссылки ==\n'
				]),
				snippet('== Биография ==', [
					'== Биография ==\n'
				]),
				snippet('== Описание ==', [
					'== Описание ==\n'
				]),
			]
		};
		var other = {
			'label': 'Категории',
			'layout': 'characters',
			'characters': [
				snippet('[[Категория:]]', [
					'[[Категория:]]'
				]),
                snippet('Абдулокультура', [
					'[[Категория:Абдулокультура]]'
				]),
                snippet('Абдулонаука', [
					'[[Категория:Абдулонаука]]'
				]),
                snippet('Грешники', [
					'[[Категория:Грешники]]'
				]),
                snippet('Великие грешники', [
					'[[Категория:Великие грешники]]'
				]),
                snippet('Грехоболезни', [
					'[[Категория:Грехоболезни]]'
				]),
                snippet('Абдулоистория', [
					'[[Категория:Абдулоистория]]'
				]),
                snippet('Сониблядство', [
					'[[Категория:Сониблядство]]'
				]),
                snippet('Абдулоосновы', [
					'[[Категория:Абдулоосновы]]'
				]),
                snippet('Юмор', [
					'[[Категория:Юмор]]'
				]),
                snippet('Абдулопередачи', [
					'[[Категория:Абдулопередачи]]'
				]),
                snippet('Мерзость', [
					'[[Категория:Мерзость]]'
				]),
                snippet('Автономии адептов', [
					'[[Категория:Автономии адептов]]'
				]),
                snippet('Абдулопредатели', [
					'[[Категория:Абдулопредатели]]'
				]),
                snippet('Негативные явления', [
					'[[Категория:Негативные явления]]'
				]),
                snippet('Абдулоиконы', [
					'[[Категория:Абдулоиконы]]'
				]),
			]
		};
		var mark = {
			'label': 'Вики-разметка',
			'layout': 'characters',
			'characters': [
				snippet('{{ }}', [
					'{{',
					'',
					'}}'
				]),
                snippet('{{{ }}}', [
					'{{{',
					'',
					'}}}'
				]),
                snippet('[ ]', [
					'[',
					'',
					']'
				]),
                snippet('[[ ]]', [
					'[[',
					'',
					']]'
				]),
                snippet('[[|]]', [
					'[[|',
					'',
					']]'
				]),
                snippet('Редирект', [
					'#REDIRECT [[',
					'',
					']]'
				]),
               snippet('Неразрывный пробел', [
					'&nbsp;'
				]),
			]
		};
		var html = {
			'label': 'HTML теги',
			'layout': 'characters',
			'characters': [
                snippet('<> </>', [
					'<>',
					'',
					'</>'
				]),
                snippet('<br />', [
					'<br />'
				]),
                snippet('<big>', [
					'<big>',
					'',
					'</big>'
				]),
                snippet('<small>', [
					'<small>',
					'',
					'</small>'
				]),
                snippet('<center>', [
					'<center>',
					'',
					'</center>'
				]),
                snippet('<left>', [
					'<left>',
					'',
					'</left>'
				]),
                snippet('<right>', [
					'<right>',
					'',
					'</right>'
				]),
                snippet('<poem>', [
					'<poem>',
					'',
					'</poem>'
				]),
                snippet('<tt>', [
					'<tt>',
					'',
					'</tt>'
				]),
                snippet('<u>', [
					'<u>',
					'',
					'</u>'
				]),
                snippet('<s>', [
					'<s>',
					'',
					'</s>'
				]),
                snippet('<i>', [
					'<i>',
					'',
					'</i>'
				]),
                snippet('<ul>', [
					'<ul>',
					'',
					'</ul>'
				]),
                snippet('<sup>', [
					'<sup>',
					'',
					'</sup>'
				]),
                snippet('<sub>', [
					'<sub>',
					'',
					'</sub>'
				]),
                snippet('<code>', [
					'<code>',
					'',
					'</code>'
				]),
                snippet('<pre>', [
					'<pre>',
					'',
					'</pre>'
				]),
                snippet('<nowiki>', [
					'<nowiki>',
					'',
					'</nowiki>'
				]),
                snippet('<ref>', [
					'<ref>',
					'',
					'</ref>'
				]),
                snippet('<includeonly>', [
					'<includeonly>',
					'',
					'</includeonly>'
				]),
                snippet('<noinclude>', [
					'<noinclude>',
					'',
					'</noinclude>'
				]),
                snippet('<onlyinclude>', [
					'<onlyinclude>',
					'',
					'</onlyinclude>'
				]),
			]
		};
		var magicwords = {
			'label': 'Волшебные слова',
			'layout': 'characters',
			'characters': [
				snippet('__NOTOC__', [
					'__NOTOC__'
				]),
				snippet('__FORCETOC__', [
					'__FORCETOC__'
				]),
				snippet('__TOC__', [
					'__TOC__'
				]),
				snippet('__NOCAT__', [
					'__NOCAT__'
				]),
				snippet('__NOEDITSECTION__', [
					'__NOEDITSECTION__'
				]),
				snippet('__NOINDEX__', [
					'__NOINDEX__'
				]),
				snippet('__FORCETOC__', [
					'__FORCETOC__'
				]),
				snippet('__HIDDENCAT__', [
					'__HIDDENCAT__'
				]),
				snippet('__EXPECTUNUSEDCATEGORY__', [
					'__EXPECTUNUSEDCATEGORY__'
				]),
			]
		};
		var feedback = {
			'label': 'Помощь',
			'layout': 'table',
			'headings': [
				{ text: 'Не нашли чего искали/есть предложение что можно было бы добавить?' }
			],
			'rows': [
				{
					text: { html: 
						'Вы можете связаться с любым из членов  <a href="https://wiki.biboran.org/%D0%90%D0%B1%D0%B4%D1%83%D0%BB%D0%BE%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%9F%D0%BE%D0%BB%D0%B8%D1%82%D0%B1%D1%8E%D1%80%D0%BE" target="_blank">'+
						'политбюро</a> и высказать своё предложение.'+
						(mw.config.get('wgUserGroups').includes('sysop') ? '<br/>Так же вы всегда можете пройти на <a href="https://discord.com/invite/egMruTk">наш сервер Discord</a> для получения дополнительной справки и помощи.' : ''),
					},
				}
			],
		};
		
		var isRedirect = /^\#REDIRECT\s*\[\[[^\]]+\]\](\n|$)/i.test($('#wpTextbox1').val()) && $('#wikiPreview div').text().length == 0;
		
		var groups = {};
		groups['section-templates'] = templates;
		if ($('body').is('.ns-0')) groups['section-sections'] = sections; // listed sections are only relevant to mainspace
		groups['section-refs'] = references;
		if ($('body').is('.ns-120')) groups['section-transcript'] = transcript; // only show on Transcript: namespace.
		if ($('body').is('.ns-6')) groups['section-licenses'] = licenses; // only show on File: namespace.
		if ($('body').is('.ns-0')) groups['section-other'] = other; // other is only relevant to mainspace
		groups['section-mark'] = mark;
		groups['section-html'] = html;
		groups['section-magicwords'] = magicwords;
		groups['section-feedback'] = feedback;

		// Show additional snippets, except for MediaWiki:, Module:, Exchange:, talk pages.
		// Other namespaces might not necessarily need very many of these snippets, but there might be snippets for those in the future.
		if (!$('body').is('.ns-8, .ns-112, .ns-828, .ns-talk')) {
			$('#wpTextbox1').wikiEditor('addToToolbar', {
				'sections': {
					'snippets': {
						'type': 'booklet',
						'label': 'Шаблоны/пресеты',
						'pages': groups,
					}
				}
			});
		}
	}
	
	/* 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 ) {
		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 );
			}
		} );
	}
});
//</nowiki>