User:SunAfterRain/RenameLink.js

Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/**
* @description
* Install a rename link for users who cannot move files
* Feel free to add more links that support usability
*
* Clicking this link will add the rename template with a valid reason
*
* Invoke automated jsHint-validation on save: A feature on Wikimedia Commons
* Interested? See [[:commons:MediaWiki:JSValidator.js]] or [[:commons:Help:JSValidator]].
*
* @dependencies
*  the usual mediaWiki stuff (mediawiki.user, mediawiki.util)
*  Gadget-AjaxQuickDelete.js (ext.gadget.AjaxQuickDelete)
*
* @autor [[User:Rillke]], 2012
*/
// <nowiki>
/* global jQuery:false, mediaWiki:false, AjaxQuickDelete:false*/
(function ($, mw) {
'use strict';

if (mw.config.get('wgNamespaceNumber') !== 6 || !mw.config.get('wgUserName') || mw.config.get('wgIsRedirect')) return;

var cats = mw.config.get('wgCategories'),
	usergroups = mw.config.get('wgUserGroups'),
	restriction = mw.config.get('wgRestrictionEdit'),
	userlang = mw.config.get('wgUserLanguage'),
	maincats = ['Media requiring renaming',
		'Media renaming requests needing target',
		'Incomplete media renaming requests'];

if (restriction && restriction.length && $.inArray(restriction[0], usergroups) === -1) return;

// Translation to be replaced with MediaWiki-messages ASAP (MediaWiki:Vector-action-move)
var i18n = {
	ar: 'نقل',
	bn: 'স্থানান্তর',
	de: 'Verschieben',
	en: 'Move',
	es: 'Trasladar',
	fa: 'انتقال',
	fr: 'Renommer',
	gl: 'Mover',
	hr: 'Premjesti',
	it: 'Rinomina',
	ja: '移動',
	kk: 'Атауын өзгерту',
	ko: '이동',
	ml: 'തലക്കെട്ട് മാറ്റുക',
	nl: 'Hernoemen',
	pl: 'Przenieś',
	pt: 'Mover',
	ro: 'Redenumire',
	ru: 'Переименовать',
	sk: 'Premenovať',
	sv: 'Flytta',
	tr: 'Taşı',
	uk: 'Перейменувати',
	yue: '搬',
	'zh-hant': '移動'
};
var i18nP = {
	ar: 'جارٍ تحميل السكريبت',
	bn: 'স্ক্রিপ্ট লোড হচ্ছে',
	de: 'Programmcode laden',
	en: 'Loading script',
	es: 'Cargando la secuencia de órdenes',
	fa: 'بارگیری اسکریپت',
	fr: 'Chargement',
	gl: 'Cargando o script',
	hr: 'Učitavanje skripte',
	id: 'Memuat skrip',
	it: 'Caricamento script in corso',
	kk: 'Скрипт жүктелуде',
	ko: '스크립트 로딩 중',
	ml: 'സ്ക്രിപ്റ്റ് തയ്യാറാക്കുന്നു.',
	nl: 'Script laden',
	pl: 'Ładowanie skryptu',
	pt: 'Carregando script',
	ro: 'Se încarcă scriptul',
	ru: 'Загрузка скрипта',
	sk: 'Skript sa načítava',
	sv: 'Laddar skript',
	tr: 'Betik yükleniyor',
	uk: 'Завантаження скрипта',
	yue: '喺度搞緊代碼……唔該等陣……',
	'zh-hant': '載入腳本'
};

function loadAndStart(e) {
	e.preventDefault();
	AjaxQuickDelete.showProgress(i18nP[userlang] || i18nP[userlang.split('-')[0]] || i18nP.en);
	if (window.rRename)
		window.rRename.rRun();
	else
		mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=MediaWiki:RenameRequest.js&action=raw&ctype=text/javascript&dummy=0');
}

for (var i = 0; i < maincats.length; i++) {
	if ($.inArray(maincats[i], cats) !== -1) {
		$('#renameChange').show().find('a').on('click', loadAndStart);
		return;
	}
}

if ($.inArray('sysop', usergroups) + $.inArray('filemover', usergroups) > -2) return;

$(function () {
	$(mw.util.addPortletLink('p-cactions', '#',
		i18n[userlang] || i18n[userlang.split('-')[0]] || i18n.en,
		'ca-rename', 'Request renaming this file.', 'm'))
		.on('click', loadAndStart);
});
}(jQuery, mediaWiki));
// </nowiki>