Участник:Medvednikita/is.js

/* 
Скрипт для установки других скриптов.
Исходный автор: Участник:Absconditus
По состоянию на 25.12.2021 скрипт Участник:Absconditus/is.js не работает, по всей видимости из-за несуществующего варианта action=tokens в запросе к api.
Данный форк призван исправить.
v.2.0
*/
if (typeof cs == 'undefined') { var cs = 'common.js'; };
var ujsf = 'User:' + mw.config.get( 'wgUserName' ) + '/' + cs;
	scrp = mw.config.get( 'wgPageName' );
	
function show_link() {
	if(mw.config.get('wgPageName').match(/\.js$/) && 
		!(location.href.match(/\/(monobook|vector|myskin|standart|cologneblue|myskin|common|simple)/)) && 
		mw.config.get( 'wgArticleId' ) && 
		(mw.config.get( 'wgCanonicalNamespace' ) == 'User'||mw.config.get( 'wgCanonicalNamespace' ) == 'MediaWiki') ) 
	{
    	var h1 = document.getElementById('firstHeading');
    	h1.innerHTML = h1.innerHTML + '<span id="pt-is" style="font-size:85%;"> <a href="javascript:show_window(\''+scrp+'\')" title="Установить этот скрипт в личный JS-файл"> (установить скрипт)</a></span>';
		//mw.util.addPortletLink('p-personal', 'javascript:show_window()', 'Установить скрипт', 'pt-is', 'Установить этот скрипт в личный JS-файл', null, '#pt-userpage');
	}
	else if (mw.config.get('wgPageName').match(/Википедия:Персональные_скрипты/))
	{
		$( '.wikitable tr'  ).each(
			function(index, element)
			{
				var $link = $(element).find('td:first').find('a');//$element это <tr>, .find('td:first') это первый <td> в строке, в нём ищем <a>
				$link.after('<a href="javascript:show_window(\''+$link.attr('href')+'\')" title="Установить этот скрипт в личный JS-файл"> (установить скрипт)</a>');
			}
			)
	}
};

function show_window(script) {
		var window = '<div xmlns="http://www.w3.org/1999/xhtml" id="is-window" ' +
			'style="background: white; border:1px double black; padding: 15px; position: fixed; top: 150px; left: 200px; z-index: 2; height: 200px; width: 200px; text-align:left;"><table>' +
			'<tr><td>Установить скрипт <i>' + script.replace(/^.*\//, '') + '</i> в ваш ' + cs + '? (<a href="//ru.wikipedia.org/wiki/user_talk:Absconditus/is.js\#Описание_работы_скрипта" target="_blank">подробнее</a>)</td></tr>' + 
			'<tr><td><textarea id="is-comment" rows="1" cols="60"></textarea></td></tr>'+ 
			'<tr><td><input type="button" id="is-confirm" value="Да" /><input type="button" id="is-cancel" value="Нет" /></td></tr>' + 
			'</table></div>';
		$( '#bodyContent' ).append( $.parseXML( window ).firstChild );
		$( '#is-confirm' )[0].onclick = function() { makeInstallation(script); $( 'div#is-window' ).html('Скрипт установлен!'); setTimeout( () => $( 'div#is-window' ).remove() , 1000);};
		$( '#is-cancel' )[0].onclick = function() {
			$( 'div#is-window' ).remove();
		};
};

function makeInstallation(script) {
	mwapi = new mw.Api();
    mwapi.postWithEditToken({ action: 'edit', title: ujsf, minor: 1, 
        summary: '+ [[' + script + ']] (с помощью [[User:Medvednikita/is.js|is.js]])', 
        appendtext: '\n' + (($('#is-comment').val()) ? '\/\/' + $('#is-comment').val() + '\n' : '') + 'importScript\(\'' + script + '\'\);' });
};

$(show_link);

 

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia