Користувач:Максим Підліснюк/RenameReplace.js
Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.
- Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
- Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
- Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5.
if (typeof(window.RenameReplaceImgs) == 'undefined') {
var RenameReplaceImgs = {
install: function() {
// Створення перенаправлення при перейменуванні
this.noredirect = true;
// Додати кнопку перейменування з заміною для адміністраторів
if( $.inArray('sysop',mw.config.get('wgUserGroups')) > -1 && mw.config.get('wgNamespaceNumber') == 6) {
mw.util.addPortletLink('p-cactions', 'javascript:window.RenameReplaceImgs.renameDialog();', 'Перейменувати та замінити');
}
// Додати кнопку заміни файлів, які є у Вікісховищі патрульним
if( $.inArray('editor' ,mw.config.get('wgUserGroups')) > -1 && mw.config.get('wgNamespaceNumber') == 6 && $('.mw-imagepage-duplicates .external').length > 0) {
$.each( $('.mw-imagepage-duplicates .external'), function() {
if($(this).html() != mw.config.get('wgPageName').replace(/_/g, ' ') && $('.mw-imagepage-linkstoimage').length > 0) {
$(this).parent().append(' <a href="javascript:RenameReplaceImgs.replaceonly(\''+$(this).html().replace('Файл:','').replace('\'','\\\'') + '\');">(замінити включення на цей файл за допомогою скрипта)</a>');
} else {
if($.inArray('sysop', mw.config.get('wgUserGroups')) > -1) {
if($(this).html() == mw.config.get('wgPageName').replace(/_/g, ' '))
$(this).parent().append(' <a href="https://uk.wikipedia.org/w/index.php?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=delete&wpReason=' + encodeURIComponent('Є у Вікісховищі: [[commons:File:' + mw.config.get('wgTitle') + '|під такою самою назвою]]') + '">(вилучити)</a>');
else if($('.mw-imagepage-linkstoimage').length == 0)
$(this).parent().append(' <a href="https://uk.wikipedia.org/w/index.php?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=delete&wpReason=' + encodeURIComponent('Є у Вікісховищі: [[commons:File:' + $(this).html().replace('Файл:','') + '|'+ $(this).html().replace('Файл:','') +']]') + '">(вилучити)</a>');
}
}
});
$( "#mw-content-text" ).append('<div id="rr-rename-dialog" style="display:none;"></div>');
}
},
replaceonly: function(fn) {
var rr = this;
mw.loader.using('ext.gadget.ReplaceImgs', function() {
mw.libs.globalReplace(mw.config.get('wgTitle'), fn, '([[User:RLuts/RenameReplace.js|Script]]) Заміна файлу', 'Є у Вікісховищі', true).progress(function(r){rr.wait(r)}).done(function() {
rr.wait('Включення замінено');
setTimeout(function(){
$( '#rr-rename-dialog' ).dialog('close');
location.reload();
},2000);
});
});
},
renameDialog: function() {
var rr = this;
if($( "#rr-rename-dialog" ).length == 0 ) {
$( "#mw-content-text" ).append('<div id="rr-rename-dialog" style="display:none;" title="Перейменувати та замінити"><p style="color:red">УВАГА! ЦЕЙ СКРИПТ ЩЕ ТЕСТУЄТЬСЯ. ПЕРЕВІРЯЙТЕ, БУДЬ ЛАСКА, ВСІ РЕДАГУВАННЯ, ЗРОБЛЕНІ СКРИПТОМ, А ПРО БАГИ <a style="color:red; text-decoration:underline" href="//uk.wikipedia.org/wiki/User_talk:RLuts">ПИШІТЬ RLUTS\'у</a></p><p style="font-size:.9em">Скрипт перейменує файл і постарається замінити всі посилання. Доступний лише адміністраторам</p><p>Нова назва (без простору імен):</p><input id="rr-renameid" value="' + mw.config.get('wgTitle') + '"><p>Причина:</p><input id="rr-reason" value="більш змістовна назва">');
}
mw.loader.using( 'jquery.ui', function() {
$('#rr-rename-dialog').dialog({
buttons: {
'Перейменувати та замінити': function() {
var newname = $('#rr-renameid').val(), reason = $('#rr-reason').val();
if( !/\S/.test(newname) ) {
$('#rr-rename-dialog').append( '<p style="font-size:80%; color:red">Введіть нову назву</p>' );
return;
}
mw.loader.using('ext.gadget.libAPI', function() {
rr.wait('Перейменування файлу '+ mw.config.get('wgTitle') + ' → ' + newname);
mw.libs.commons.api.movePage(function(){
mw.loader.using('ext.gadget.ReplaceImgs', function() {
mw.libs.globalReplace(mw.config.get('wgTitle'), newname, '([[User:RLuts/RenameReplace.js|Script]]) Файл перейменовано', reason, true).progress(function(r){rr.wait(r)}).done(function() {
rr.wait('Перейменування здійснено. Включення замінено');
setTimeout(function(){
$( '#rr-rename-dialog' ).dialog('close');
location.reload();
},1000);
});
});
}, function() {
rr.wait('Error: не вдалось перейменувати')
}, mw.config.get('wgPageName'), 'Файл:' + newname, '([[User:RLuts/RenameReplace.js|Script]]) Перейменування файлу. Причина: ' + reason, true, false, rr.noredirect)
});
}
}
});
$( '#rr-renameid' ).focus();
});
},
wait: function(mes) {
$('#rr-rename-dialog').dialog("close");
$('#rr-rename-dialog').prop('title', 'Зачекайте, будь ласка...');
$('#rr-rename-dialog').html('<p style="font-size: 120%; font-weight:bold;">' + mes + '</p>')
mw.loader.using( 'jquery.ui', function() {
$('#rr-rename-dialog').dialog({
modal: true,
buttons: false
});
});
}
}
}
$(document).ready(function() {
RenameReplaceImgs.install();
});