Участник:KPu3uC B Poccuu/rqedit.js

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Страница персонального оформления. У этого JS-кода есть документация: Участник:KPu3uC B Poccuu/rqedit.
После сохранения очистите кэш браузера.
//<nowiki> Основано на одноимённом скрипте Алекса Смотрова. Щёлкать нужно не по ссылкам, а по строкам.
var rqeditor=
{
	panel:
	'<div style="border:4px outset #D0D0D0;margin:1em 0 0 0.5em;line-height:100%">\
		<div id="rq_display" style="padding:2px;border:1px solid gray;font-weight:bold">\
		<button id="rq_accept" title="Применить изменения">Обновить</button>\
		<button id="rq_close" title="Закрыть диалог без изменений">✖</button>\
	</div>',
	loaded:false,
	close:function()
	{
		rqeditor.panel.hide();
	},
	accept:function()
	{
		
	},
	init:function()
	{
		rqeditor.panel=$(rqeditor.panel);
		rqeditor.table=$('<div>Загрузка…</div>');
		rqeditor.panel.prepend(rqeditor.table);
		rqeditor.table.load('/wiki/Template:Rq?action=render #rqedit_hint',function(resp,status,xhr)
		{
			rqeditor.table=rqeditor.table.children();// get rid of the immediate <div>.
			rqeditor.table.css({'max-height':300,'overflow':'auto'});
			rqeditor.update();
		});
		rqeditor.loaded=true;
		rqeditor.panel.insertBefore('#editform');
		$('#rq_accept').click(rqeditor.accept);
		$('#rq_close').click(rqeditor.close);
		$('#wpTextbox1').change(rqeditor.update);
	},
	update:function()
	{
		
	},
	toggle:function()
	{
		if(!rqeditor.loaded)
		{
			rqeditor.init();
		}
		else rqeditor.panel.toggle();
	}
};

/*function rq_updateState()
{
	var ma;
	if(ma=$('#wpTextbox1').val().match(/{{\s*rq\s*\|\s*?([^}]*)\s*}}/i))
	{
		ma=ma[1].split('|');
		for(i=0;i<ma.length;++i)rq[ma[i].trim()]=true;
		for(i=0;i<rqTable.length;++i)updateRqRow(rqTable.get(i));
	}
}

function updateRqRow(tr,isInvert)
{
	var param=pickUpText(tr.cells[0]);
	if(isInvert)rq[param]=!rq[param];
	tr.style.backgroundColor=rq[param]?'#F0F0F0':'';
} 

function rq_apply()
{
	var newRq=$('#rqDisp').html(),ma,txtbox=$('#wpTextbox1');
	if(ma=txtbox.val().match(/{{\s*rq\s*\|\s*?([^}]*)\s*}}/i))
		txtbox.val(txtbox.val().replace(ma,newRq));
	else
		mw.toolbar.insertTags(newRq,'','');
	rq_closeDialog();
}

function updateRqDisplay()
{
	var s='{{rq';
	for(var i in rq)if(rq[i])s+='|'+i;
	s+='}}';
	$('#rqDisp').html(s);
}*/

function rqEditInit()
{
	function addNewToolbarButton() {
		$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
			'section': 'main',
			'group': 'gadgets',
			'tools': {
				'rqeditor': {
					label: 'Вставить/заменить шаблон {{rq}}',
					type: 'button',
					icon: '//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Emblem-important.svg/22px-Emblem-important.svg.png',
					action: {
						type: 'callback',
						execute: function() {
							rqeditor.toggle();
						}
					}
				}
			}
		} );
	}
	
	function addOldToolbarButton() {
		mw.toolbar.addButton(
		{
			imageFile:'//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Emblem-important.svg/48px-Emblem-important.svg.png',
			speedTip:'Вставить/заменить шаблон {{rq}}',
			imageId: 'button-rqedit',
			onClick:rqEdit
		});
	}
	
	if ( mw.user.options.get( 'usebetatoolbar' ) === 1 ) {
		if ( mw.user.options.get( 'showtoolbar' ) === 1 ) {
			$.when( mw.loader.using( [ 'ext.wikiEditor', 'schema.Edit' ] ), $.ready ).then( function() {
				mw.hook( 'wikieditor.toolbar.gadgetsgroup' ).add( function () {
					addNewToolbarButton();
				} );
			} );
		}
	} else {
		mw.loader.using( 'mediawiki.toolbar', function() {
			$( addOldToolbarButton );
		} );
	}
}

var x=setInterval(function()
{
	var button=$('#rqeditor');
	if(!button.length)return;
	button.addClass('mw-toolbar-editbutton');
	clearInterval(x);
},20);

$(rqEditInit);
//</nowiki>