مدیاویکی:G13-restore-wizard.js

نکته: برای دیدن تغییرات، ممکن است نیاز باشد که حافظهٔ نهانی مرورگر خود را پس از انتشار پاک‌سازی کنید. گوگل کروم، فایرفاکس، مایکروسافت اج و سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload در نوار ابزار مرورگر کلیک کنید. برای آگاهی از جزئیات و نحوهٔ پاک‌سازی حافظهٔ نهانی سایر مرورگرها، صفحهٔ ویکی‌پدیا:میانگیر مرورگرتان را خالی کنید را ببینید.

/**
 * MediaWiki:G13-restore-wizard.js
 * 
 * Script for [[Wikipedia:Requests for undeletion/G13]], loaded via 
 * [[mw:Snippets/Load JS and CSS by URL]]. Creates a form for making requests to [[WP:RFUD]].
 * 
 * Author: [[User:SD0001]]
 * License: MIT
 */


// <nowiki>

var api, previewApi;

$.when(
	$.ready,
	mw.loader.using([ 'mediawiki.util', 'mediawiki.api', 'mediawiki.user' ])
).then(function() {

	if (mw.config.get('wgPageName').indexOf('ویکی‌پدیا:درخواست_احیا/ع۱۳') !== 0) {
		return;
	}

	api = new mw.Api();
	previewApi = new mw.Api();
	
	// Replace "Request draft undeletion" button with a form
	$('.mw-ui-progressive').parent().replaceWith(
		$('<label>')
			.attr('for', 'g13-page')
			.text('عنوان صفحهٔ پیش‌نویس را وارد کنید: '),
		$('<input>')
			.attr('id', 'g13-page')
			.attr('list', 'g13-list')
			.addClass('mw-ui-input')
			.css('margin-bottom', '8px'),
		$('<datalist>')
			.attr('id', 'g13-list'),
		$('<label>')
			.attr('for', 'g13-reason')
			.text('دلیل را وارد کنید: '),
		$('<textarea>')
			.attr('id', 'g13-reason')
			.addClass('mw-ui-input')
			.val("''سلام، " + (mw.user.isAnon() ? "" : "من " + mw.config.get('wgUserName') + " هستم و ") + "می‌خواهم برای احیای این [[وپ:پن|پیش‌نویس]] که با معیار [[وپ:محس#ع۱۳|محس ع۱۳]] حذف شده، درخواست احیا دهم. لطفاً این صفحه را احیا کنید تا بتوانم آن را ویرایش کنم. سپاسگزارم.'' ~~~~")
			.on('keyup', updatePreview)
			.on('focus', updatePreview),
		$('<div>')
			.attr('id', 'g13-reason-preview'),
		$('<button>')	
			.attr('id', 'g13-submit')
			.addClass('mw-ui-button mw-ui-progressive')
			.text('ارسال درخواست')
			.css('margin-top', '5px')
			.on('click', evaluate),
		$('<div>')
			.attr('id', 'g13-status')
	);

	$('#g13-reason').trigger('keyup');

	// populate datalist with non-existent drafts and WT:AFC subpages linked 
	// from the user's talk page
	api.get({
		"action": "query",
		"format": "json",
		"titles": "بحث کاربر:" + mw.config.get('wgUserName'),
		"generator": "links",
		"formatversion": "2",
		"gplnamespace": "118|5", // draft + Wikipedia talk 
		"gpllimit": "50"
	}).then(function(data) {
		data.query.pages.forEach(function(pg) {
			if (pg.missing) {
				if (pg.ns === 5 && pg.title.indexOf('بحث ویکی‌پدیا:مقاله‌ها برای ایجاد/') !== 0) {
					return;
				}
				$('#g13-list').append($('<option>').attr('value', pg.title));
			}
		});
	});

});	

function updatePreview() {
	var reason = $('#g13-reason').val();
	previewApi.abort();
	previewApi.parse(reason, { pst: true, title: 'ویکی‌پدیا:درخواست احیا' }).then(function(parsed) {
		parsed = parsed.replace(/<script/gi, '&lt;script'); // probably unnecessary, just in case ...
		$('#g13-reason-preview').html(parsed);
	});
}

function evaluate() {
	var page = $('#g13-page').val();

	$('#g13-status').text('بررسی صفحه ...').css('color', 'blue');

	checkDeletedRevisions(page).then(function(pg) {
		if (pg.invalid) {
			$('#g13-status').text('عنوان صفحهٔ وارد شده نامعتیر است').css('color', 'red');
			return;
		}
		if (!pg.missing) {
			$('#g13-status').text('این صفحه هم‌اکنون موجود است!').css('color', 'red');
			return;
		}
		if (!pg.deletedrevisions) {
			$('#g13-status').text('این صفحه تاکنون حذف نشده‌است. لطفاً نام صفحه را بررسی کنید.').css('color', 'red');
			makeSuggestions(page);
			return;
		}

		var text = '*{{revisions|' + pg.title + '}}';
		var reason = $('#g13-reason').val();
		if (reason) {
			text += '\n\n' + reason;
			if (reason.indexOf('~~~~') === -1) {
				text += ' ~~~~';
			}
		}

		api.newSection('ویکی‌پدیا:درخواست احیا', pg.title, text).then(function(data) {
			if (data.edit && data.edit.result === 'Success') {
				$('#g13-status').text('درخواست با موفقیت ارسال شد. در حال هدایت شما به ویکی‌پدیا:درخواست احیا#' + pg.title).css('color', 'green');
				setTimeout(function() {
					location.href = mw.util.getUrl('ویکی‌پدیا:درخواست احیا#' + pg.title);
				}, 1000);
			} else {
				return $.Deferred().reject(data);
			}
		}).catch(function() {
			$('#g13-status').text('ناتوان در ذخیرهٔ درخواست. لطفاً دوباره تلاش کنید.').css('color', 'red');
		});

	});
}

function checkDeletedRevisions(page) {
	return api.get({
		"action": "query",
		"format": "json",
		"prop": "deletedrevisions",
		"titles": page,
		"formatversion": "2",
		"drvprop": "ids|timestamp|user"
	}).then(function(data) {
		return data.query.pages[0];
	});
}

function makeSuggestions(page) {
	var draftpage = mw.Title.newFromText(page);
	draftpage.namespace = 118;
	
	var handleDidYouMean = function(pg) {
		if (pg.deletedrevisions) {
			$('#g13-status').append('<br>آیا منظورتان <code>' + pg.title + '</code> بود؟ ',
				$('<button>').text('بله').addClass('mw-ui-button').on('click', function() {
					$('#g13-page').val(pg.title);
					$('#g13-submit').click();
				})
			);
		}
	};

	checkDeletedRevisions(draftpage.toString()).then(handleDidYouMean);
	checkDeletedRevisions('بحث ویکی‌پدیا:مقاله‌ها برای ایجاد/' + draftpage.getMain()).then(handleDidYouMean);
}

// </nowiki>