Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • 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('&nbsp<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('&nbsp<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('&nbsp<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();
});