Користувач:Dimon2711/RenameReplace.js

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть Ctrl-F5
if (typeof(window.RenameReplaceImgs) == 'undefined') {
	var RenameReplaceImgs = {
		install: function() {
			// Створення перенаправлення при перейменуванні
			this.noredirect = true;
			
			// Додати кнопку перейменування з заміною для адміністраторів
			if( ($.inArray('sysop',mw.config.get('wgUserGroups')) > -1 || $.inArray('filemover',mw.config.get('wgUserGroups')) > -1) && mw.config.get('wgNamespaceNumber') != 6) {
				mw.loader.using(['mediawiki.util']).done(function () {
					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>');
						}
					}
				});
			}
		},
		
		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;
			var content = '<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="більш змістовна назва">';
			if($( "#rr-rename-dialog" ).length === 0 ) {
				$( "#mw-content-text" ).append('<div id="rr-rename-dialog" style="display:none;" title="Перейменувати та замінити">'+ content + '</div>');
			} else {
				$( "#rr-rename-dialog" ).html(content);
			}
			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) {
			console.log('wait')
			if($('#rr-rename-dialog').length === 0) {
				$( "#mw-content-text" ).append('<div id="rr-rename-dialog" style="display:none;"></div>');
			}
			if ($("#rr-rename-dialog").hasClass('ui-dialog-content')) {
				$('#rr-rename-dialog').dialog('destroy');
			}
			$('#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();
});