MediaWiki:Gadget-Adiutor-AFD.js

Günümüz dünyasında MediaWiki:Gadget-Adiutor-AFD.js pek çok kişinin büyük ilgisini çeken bir konu haline geldi. MediaWiki:Gadget-Adiutor-AFD.js gerek toplumdaki önemi, gerekse günlük hayata olan etkisi veya tarihsel önemi nedeniyle her yaştan ve her kesimden bireyin ilgisini çekmiştir. Ortaya çıkışından bu yana, MediaWiki:Gadget-Adiutor-AFD.js tartışmaya, incelemeye ve analize konu olmuş, farklı bağlamlardaki önemini ve etkisini anlamaya çalışan çok sayıda araştırma ve görüş üretilmiştir. Bu makalede, bugün çok alakalı olan bu konuya kapsamlı bir bakış sağlamak amacıyla MediaWiki:Gadget-Adiutor-AFD.js'in kökeninden mevcut etkisine kadar çeşitli yönlerini inceleyeceğiz.
/*
 * Adiutor: Adiutor enables versatile editing options and modules to assist a variety of user actions to enhance the Wikipedia editing experience.
 * Author: Vikipolimer
 * Learn more at: https://meta.wikimedia.orghttps://wikifreehand.com/tr/Adiutor
 * Licensing and Attribution: Licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
 * Module: Article For Deletion
 */
/* <nowiki> */
// Get essential configuration from MediaWiki
var mwConfig = mw.config.get();
var api = new mw.Api();
var wikiId = mw.config.get('wgWikiID');
var adiutorUserOptions = JSON.parse(mw.user.options.get('userjs-adiutor-' + wikiId));
var NominatedPreviously;
var nextNominationNumber = 0;

function ArticleForDeletionDialog(config) {
	ArticleForDeletionDialog.super.call(this, config);
}
OO.inheritClass(ArticleForDeletionDialog, OO.ui.ProcessDialog);
ArticleForDeletionDialog.static.name = 'ArticleForDeletionDialog';
ArticleForDeletionDialog.static.title = new OO.ui.deferMsg('afd-module-title');
ArticleForDeletionDialog.static.actions = [{
	action: 'save',
	label: new OO.ui.deferMsg('continue'),
	flags: 
}, {
	label: new OO.ui.deferMsg('cancel'),
	flags: 'safe'
}];
ArticleForDeletionDialog.prototype.initialize = function() {
	ArticleForDeletionDialog.super.prototype.initialize.apply(this, arguments);
	var headerTitle = new OO.ui.MessageWidget({
		type: 'notice',
		inline: true,
		label: new OO.ui.deferMsg('afd-header-title')
	});
	var headerTitleDescription = new OO.ui.LabelWidget({
		label: new OO.ui.deferMsg('afd-header-description')
	});
	headerTitleDescription.$element.css({
		'margin-top': '20px',
		'margin-bottom': '20px'
	});
	AfDOptions = new OO.ui.FieldsetLayout({});
	AfDOptions.addItems([
		rationaleField = new OO.ui.FieldLayout(rationaleInput = new OO.ui.MultilineTextInputWidget({
			placeholder: new OO.ui.deferMsg('afd-rationale-placeholder'),
			indicator: 'required',
			value: '',
		}), {
			label: new OO.ui.deferMsg('rationale'),
			align: 'inline',
		}),
		new OO.ui.FieldLayout(new OO.ui.ToggleSwitchWidget({
			value: adiutorUserOptions.articlesForDeletion.afdSendMessageToCreator,
			data: 'informCreator'
		}), {
			label: new OO.ui.deferMsg('afd-inform-creator'),
			align: 'top',
			help: new OO.ui.deferMsg('afd-inform-creator-help'),
		}),
	]);
	rationaleField.$element.css('font-weight', '900');
	this.content = new OO.ui.PanelLayout({
		padded: true,
		expanded: false,
		isDraggable: true
	});
	this.content.$element.append(headerTitle.$element, headerTitleDescription.$element, AfDOptions.$element);
	this.$body.append(this.content.$element);
};
ArticleForDeletionDialog.prototype.getActionProcess = function(action) {
	var dialog = this;
	if(action) {
		return new OO.ui.Process(function() {
			var AFDTempalte;
			var ActionOptions = ;
			AfDOptions.items.forEach(function(Option) {
				if(Option.fieldWidget.selected) {
					ActionOptions.push({
						value: Option.fieldWidget.value,
						selected: Option.fieldWidget.selected
					});
				}
				if(Option.fieldWidget.value === true) {
					ActionOptions.push({
						value: Option.fieldWidget.value,
						data: Option.fieldWidget.data
					});
				}
			});
			ActionOptions.forEach(function(Option) {
				if(Option.data === "informCreator") {
					console.log(Option.data);
					getCreator().then(function(data) {
						var Author = data.query.pages.revisions.user;
						if(!mw.util.isIPAddress(Author)) {
							var message = '{{kopyala:sas bildirim|' + mwConfig.wgPageName.replace(/_/g, " ") + '}}';
							sendMessageToAuthor(Author, message);
						}
					});
				}
			});
			checkPreviousNominations("Vikipedi:Silinmeye aday sayfalar/" + mwConfig.wgPageName).then(function(data) {
				if(data.query.pages) {
					var nomCount = 0;
					console.log(nomCount);
					NominatedPreviously = false;
					AFDTempalte = '{{sas|yardım=hayır}}';
					putAfDTemplate(AFDTempalte, nextNominationNumber);
				} else {
					Rec(2);
				}
			});

			function Rec(nomCount) {
				checkPreviousNominations("Vikipedi:Silinmeye aday sayfalar/" + mwConfig.wgPageName + ' ' + '(' + nomCount + '._aday_gösterme)').then(function(data) {
					if(!data.query.pages) {
						Rec(nomCount + 1);
					} else {
						nextNominationNumber = nomCount++;
						console.log(nextNominationNumber);
						if(nextNominationNumber > 1) {
							AFDTempalte = '{{sas|' + nextNominationNumber + '|' + mwConfig.wgPageName.replace(/_/g, " ") + '|yardım=hayır}}';
						} else {
							AFDTempalte = '{{sas|yardım=hayır}}';
						}
						console.log(AFDTempalte);
						putAfDTemplate(AFDTempalte, nextNominationNumber);
					}
				});
			}
			dialog.close({
				action: action
			});
			showProgress();
		});
	}
	return ArticleForDeletionDialog.super.prototype.getActionProcess.call(this, action);
};
var windowManager = new OO.ui.WindowManager();
$(document.body).append(windowManager.$element);
var dialog = new ArticleForDeletionDialog({
	size: 'large',
	classes: ,
	isDraggable: true
});
windowManager.addWindows();
windowManager.openWindow(dialog);

function putAfDTemplate(AFDTempalte, nextNominationNumber) {
	var PageAFDX;
	if(nextNominationNumber > 1) {
		PageAFDX = mwConfig.wgPageName + ' (' + nextNominationNumber + '._aday_gösterme)';
	} else {
		PageAFDX = mwConfig.wgPageName;
	}
	api.postWithToken('csrf', {
		action: 'edit',
		title: mwConfig.wgPageName,
		prependtext: AFDTempalte + "\n",
		summary: 'Sayfa ] gösterildi',
		tags: 'Adiutor',
		format: 'json'
	}).done(function() {
		createNominationPage(PageAFDX);
		logNomination(PageAFDX, adiutorUserOptions);
	});
}

function checkPreviousNominations(title) {
	return api.get({
		action: 'query',
		prop: 'revisions',
		rvlimit: 1,
		rvprop: ,
		rvdir: 'newer',
		titles: title,
	});
}

function createNominationPage(PageAFDX) {
	api.postWithToken('csrf', {
		action: 'edit',
		title: 'Vikipedi:Silinmeye_aday_sayfalar/' + PageAFDX,
		appendtext: '{{yk:sas2 |sa = ' + mwConfig.wgPageName.replace(/_/g, " ") + '|metin= ' + rationaleInput.value + ' ~~~~ }}' + "\n",
		summary: 'Sayfa ] gösterildi',
		tags: 'Adiutor',
		format: 'json'
	}).done(function() {
		addNominationToAfdPage(PageAFDX);
	});
}

function addNominationToAfdPage(PageAFDX) {
	var pageContent;
	api.get({
		action: 'parse',
		page: "Vikipedi:Silinmeye_aday_sayfalar",
		prop: 'wikitext',
		format: "json"
	}).done(function(data) {
		pageContent = data.parse.wikitext;
		var NominatedBefore = pageContent.includes("{{Vikipedi:Silinmeye aday sayfalar/" + PageAFDX.replace(/_/g, " ") + "}}");
		if(!NominatedBefore) {
			api.postWithToken('csrf', {
				action: 'edit',
				title: "Vikipedi:Silinmeye_aday_sayfalar",
				appendtext: "\n" + "{{Vikipedi:Silinmeye aday sayfalar/" + PageAFDX.replace(/_/g, " ") + "}}",
				summary: "Adaylık ] listesine eklendi.",
				tags: 'Adiutor',
				format: 'json'
			}).done(function() {
				addNominationToAfdLogPage(PageAFDX);
				adiutorUserOptions.stats.afdRequests++;
				api.postWithEditToken({
					action: 'globalpreferences',
					format: 'json',
					optionname: 'userjs-adiutor',
					optionvalue: JSON.stringify(adiutorUserOptions),
					formatversion: 2,
				}).done(function() {});
			});
		}
	});
}

function addNominationToAfdLogPage(PageAFDX) {
	var date = new Date();
	var date_months = ;
	var date_year = date.getUTCFullYear();
	var month_name = date_months;
	var pageContent;
	api.get({
		action: 'parse',
		page: "Vikipedi:Silinmeye_aday_sayfalar/Kayıt/" + date_year + "_" + month_name,
		prop: 'wikitext',
		format: "json"
	}).done(function(data) {
		pageContent = data.parse.wikitext;
		var NominatedBefore = pageContent.includes("{{Vikipedi:Silinmeye aday sayfalar/" + PageAFDX.replace(/_/g, " ") + "}}");
		//Eğer daha önce aday gösterilmişe
		if(!NominatedBefore) {
			api.postWithToken('csrf', {
				action: 'edit',
				title: "Vikipedi:Silinmeye_aday_sayfalar/Kayıt/" + date_year + "_" + month_name,
				appendtext: "\n" + "{{Vikipedi:Silinmeye aday sayfalar/" + PageAFDX.replace(/_/g, " ") + "}}",
				summary: "Adaylık ] kayıtlarına eklendi.",
				tags: 'Adiutor',
				format: 'json'
			}).done(function() {
				window.location = 'https://wikifreehand.com/tr/Vikipedi:Silinmeye aday sayfalar/' + PageAFDX.replace(/_/g, " ");
			});
		} else {
			window.location = 'https://wikifreehand.com/tr/Vikipedi:Silinmeye aday sayfalar/' + PageAFDX.replace(/_/g, " ");
		}
	});
}

function logNomination(PageAFDX, adiutorUserOptions) {
	if(adiutorUserOptions.articlesForDeletion.afdLogNominatedPages === true) {
		api.postWithToken('csrf', {
			action: 'edit',
			title: 'Kullanıcı:'.concat(mwConfig.wgUserName, '/' + adiutorUserOptions.articlesForDeletion.afdLogPageName + '').split(' ').join('_'),
			appendtext: "\n" + "# ''']''' sayfasını silinmeye aday gösterdi ~~~~~",
			summary: 'Silinmeye aday gösterilen sayfanın günlük kaydı tutuluyor.',
			tags: 'Adiutor',
			format: 'json'
		}).done(function() {});
	}
}

function getCreator() {
	return api.get({
		action: 'query',
		prop: 'revisions',
		rvlimit: 1,
		rvprop: ,
		rvdir: 'newer',
		titles: mwConfig.wgPageName.replace(/_/g, " ")
	});
}

function sendMessageToAuthor(Author, message) {
	api.postWithToken('csrf', {
		action: 'edit',
		title: 'Kullanıcı_mesaj:' + Author,
		appendtext: '\n' + message,
		summary: ']' + ' silinmeye aday gösterildi',
		tags: 'Adiutor',
		format: 'json'
	}).done(function() {});
}

function showProgress() {
	var processStartedDialog = new OO.ui.MessageDialog();
	var progressBar = new OO.ui.ProgressBarWidget();
	var windowManager = new OO.ui.WindowManager();
	$(document.body).append(windowManager.$element);
	windowManager.addWindows();
	windowManager.openWindow(processStartedDialog, {
		title: mw.msg('processing'),
		message: progressBar.$element
	});
}
/* </nowiki> */