<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://develika-wiki.marus.team/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-develika-components.js</id>
	<title>MediaWiki:Gadget-develika-components.js - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://develika-wiki.marus.team/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-develika-components.js"/>
	<link rel="alternate" type="text/html" href="https://develika-wiki.marus.team/index.php?title=MediaWiki:Gadget-develika-components.js&amp;action=history"/>
	<updated>2026-07-01T18:22:49Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://develika-wiki.marus.team/index.php?title=MediaWiki:Gadget-develika-components.js&amp;diff=65&amp;oldid=prev</id>
		<title>Admin: Библиотека компонентов</title>
		<link rel="alternate" type="text/html" href="https://develika-wiki.marus.team/index.php?title=MediaWiki:Gadget-develika-components.js&amp;diff=65&amp;oldid=prev"/>
		<updated>2026-07-01T10:31:43Z</updated>

		<summary type="html">&lt;p&gt;Библиотека компонентов&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Группа «Компоненты» в панели VisualEditor: кнопки вставки шаблонов «Девелика».&lt;br /&gt;
   Подключается как гаджет (см. MediaWiki:Gadgets-definition).&lt;br /&gt;
   ВАЖНО: регистрация синхронная — иначе панель VE успевает построиться раньше. */&lt;br /&gt;
mw.libs.ve.addPlugin( function () {&lt;br /&gt;
	var components = [&lt;br /&gt;
		{ name: &amp;#039;dvlkInfobox&amp;#039;, title: &amp;#039;Инфобокс устройства&amp;#039;, tpl: &amp;#039;Инфобокс устройства&amp;#039;, block: true },&lt;br /&gt;
		{ name: &amp;#039;dvlkReview&amp;#039;,  title: &amp;#039;Карточка обзора&amp;#039;,     tpl: &amp;#039;Карточка обзора&amp;#039;,     block: true },&lt;br /&gt;
		{ name: &amp;#039;dvlkCallout&amp;#039;, title: &amp;#039;Плашка&amp;#039;,              tpl: &amp;#039;Плашка&amp;#039;,              block: false },&lt;br /&gt;
		{ name: &amp;#039;dvlkBadge&amp;#039;,   title: &amp;#039;Бейдж&amp;#039;,               tpl: &amp;#039;Бейдж&amp;#039;,               block: false },&lt;br /&gt;
		{ name: &amp;#039;dvlkDisc&amp;#039;,    title: &amp;#039;Карточка обсуждения&amp;#039;, tpl: &amp;#039;Карточка обсуждения&amp;#039;, block: true }&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	components.forEach( function ( c ) {&lt;br /&gt;
		// Команда открывает диалог шаблона, предзаполненный нужным компонентом&lt;br /&gt;
		// (пользователь сразу получает форму параметров — паттерн Cite-tool VE).&lt;br /&gt;
		ve.ui.commandRegistry.register( new ve.ui.Command(&lt;br /&gt;
			c.name, &amp;#039;window&amp;#039;, &amp;#039;open&amp;#039;,&lt;br /&gt;
			{ args: [ &amp;#039;transclusion&amp;#039;, { template: c.tpl } ], supportedSelections: [ &amp;#039;linear&amp;#039; ] }&lt;br /&gt;
		) );&lt;br /&gt;
&lt;br /&gt;
		function Tool() { Tool.super.apply( this, arguments ); }&lt;br /&gt;
		OO.inheritClass( Tool, ve.ui.Tool );&lt;br /&gt;
		Tool.static.name = c.name;&lt;br /&gt;
		Tool.static.group = &amp;#039;dvlkComponents&amp;#039;;&lt;br /&gt;
		Tool.static.icon = &amp;#039;add&amp;#039;;&lt;br /&gt;
		Tool.static.title = c.title;&lt;br /&gt;
		Tool.static.commandName = c.name;&lt;br /&gt;
		Tool.static.autoAddToCatchall = false;&lt;br /&gt;
		Tool.static.displayBothIconAndLabel = true;&lt;br /&gt;
		// onUpdateState НЕ переопределяем — базовый ve.ui.Tool сам включает/выключает&lt;br /&gt;
		// кнопку по применимости команды (иначе кнопка остаётся disabled).&lt;br /&gt;
		ve.ui.toolFactory.register( Tool );&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
	var groupCfg = {&lt;br /&gt;
		name: &amp;#039;dvlkComponents&amp;#039;,&lt;br /&gt;
		title: &amp;#039;Компоненты&amp;#039;,&lt;br /&gt;
		label: &amp;#039;Компоненты&amp;#039;,&lt;br /&gt;
		type: &amp;#039;list&amp;#039;,&lt;br /&gt;
		icon: &amp;#039;add&amp;#039;,&lt;br /&gt;
		include: [ &amp;#039;dvlkInfobox&amp;#039;, &amp;#039;dvlkReview&amp;#039;, &amp;#039;dvlkCallout&amp;#039;, &amp;#039;dvlkBadge&amp;#039;, &amp;#039;dvlkDisc&amp;#039; ]&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	[ ve.init.mw.DesktopArticleTarget, ve.init.mw.MobileArticleTarget ].forEach( function ( target ) {&lt;br /&gt;
		if ( target &amp;amp;&amp;amp; target.static &amp;amp;&amp;amp; Array.isArray( target.static.toolbarGroups ) ) {&lt;br /&gt;
			var groups = target.static.toolbarGroups;&lt;br /&gt;
			var idx = -1;&lt;br /&gt;
			groups.forEach( function ( g, i ) { if ( g.name === &amp;#039;insert&amp;#039; ) { idx = i; } } );&lt;br /&gt;
			groups.splice( idx === -1 ? groups.length : idx + 1, 0, groupCfg );&lt;br /&gt;
		}&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>