/*
Скрипт для установки других скриптов.
Исходный автор: Участник: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);