MediaWiki:Gadget-Adiutor-AFD-Helper.js

Vikipediya, ochiq ensiklopediya

Eʼtibor bering: Oʻzgartirishlaringizni koʻrish uchun, yangi moslamalaringizning saqlashdan keyin, brauzer keshini tozalash kerak:
Mozilla / Firefox: Ctrl+Shift+R, IE: Ctrl+F5, Safari: Cmd+Shift+R, Konqueror: F5, Opera: Tools → Preferences orqali keshni tozalang.

/* 
 * Adiutor: A gadget to assist various user actions
 * Author: Vikipolimer
 * Licencing and attribution: [[:tr:VP:Adiutor#Lisanslama ve atıf]]
 * Module: Article for deletion
 */
/* <nowiki> */
$.when(mw.loader.using(["mediawiki.user", "oojs-ui-core", "oojs-ui-windows", ]), $.ready).then(function() {
	var mwConfig = mw.config.get(["wgAction", "wgPageName", "wgTitle", "wgUserGroups", "wgUserName"]);
	var api = new mw.Api();
	// Check if on a non-existent article/file/portal (to unlink backlinks)
	var isNonexistentPage = mw.config.get("wgArticleId") === 0;
	var isUnlinkableNamespace = [0, 1, 2, 3, 5, 6, 7, 14, 10, 11, 100, 101, 102, 103, 828, 829].indexOf(mw.config.get("wgNamespaceNumber")) !== -1;
	var isUnlinkablePage = isNonexistentPage && isUnlinkableNamespace;
	var afdNominateOpinionsLog = localStorage.getItem("afdNominateOpinionsLog") == "true";
	// Check for edit, history, diff, or oldid mode
	if(!isUnlinkablePage && /(?:\?|&)(?:action|diff|oldid)=/.test(window.location.href)) {
		return;
	}
	// Check if on an afd page
	var afdpage_regex = /(Oʻchirishga)/;
	var isafdPage = afdpage_regex.test(mwConfig.wgPageName);
	var subPageRegex = /(Oʻchirishga\/)/;
	var isSubPage = subPageRegex.test(mwConfig.wgPageName);
	// Load for afd pages as well as unlinkable pages 
	var shouldLoadScript = isafdPage || isUnlinkablePage;
	if(!shouldLoadScript) {
		return;
	}
	var afdButtons, previewWikitext, firstMonthOfDateString, firstDateMatch, opinionTemplate, nominationPage, purePageName, pageName, AfD_page, header_warn;
	AfD_page = "Vikipediya:Oʻchirishga/";
	if(mwConfig.wgUserGroups.includes("sysop")) {
		if(isSubPage) {
			afdButtons = new OO.ui.ButtonGroupWidget({
				items: [new OO.ui.ButtonWidget({
					icon: 'speechBubbleAdd',
					label: 'Fikr bildirish',
					invisibleLabel: true,
					title: 'Fikr bildirish',
					classes: ['afd-helper-button']
				}), new OO.ui.ButtonWidget({
					icon: 'editLock',
					invisibleLabel: true,
					classes: ['afd-closer-button']
				})],
				classes: ['afd-helper-button-group']
			});
		} else {
			afdButtons = new OO.ui.ButtonGroupWidget({
				items: [new OO.ui.ButtonWidget({
					icon: 'eye',
					label: 'Nomzod',
					invisibleLabel: true,
					classes: ['afd-helper-visit-button']
				}), new OO.ui.ButtonWidget({
					icon: 'speechBubbleAdd',
					label: 'Fikr bildirish',
					invisibleLabel: true,
					title: 'Fikr bildirish',
					classes: ['afd-helper-button']
				}), new OO.ui.ButtonWidget({
					icon: 'editLock',
					invisibleLabel: true,
					classes: ['afd-closer-button']
				})],
				classes: ['afd-helper-button-group']
			});
		}
	} else {
		if(isSubPage) {
			afdButtons = new OO.ui.ButtonGroupWidget({
				items: [new OO.ui.ButtonWidget({
					icon: 'speechBubbleAdd',
					label: 'Fikr bildirish',
					invisibleLabel: true,
					title: 'Fikr bildirish',
					classes: ['afd-helper-button']
				})],
				classes: ['afd-helper-button-group']
			});
		} else {
			afdButtons = new OO.ui.ButtonGroupWidget({
				items: [new OO.ui.ButtonWidget({
					icon: 'eye',
					label: 'Nomzod',
					invisibleLabel: true,
					classes: ['afd-helper-visit-button']
				}), new OO.ui.ButtonWidget({
					icon: 'speechBubbleAdd',
					label: 'Fikr bildirish',
					invisibleLabel: true,
					title: 'Fikr bildirish',
					classes: ['afd-helper-button']
				}), ],
				classes: ['afd-helper-button-group']
			});
		}
	}
	$('.afd-helper-button').each(function(index) {
		this.id = "opinion" + (index + 1);
	});
	$('.afd-helper-button').children().each(function(index) {
		this.id = "opinion" + (index + 1);
	});
	$('.afd-helper-visit-button').each(function(index) {
		this.id = "opinion" + (index + 1);
	});
	$('.afd-helper-visit-button').children().each(function(index) {
		this.id = "opinion" + (index + 1);
	});
	$('.mw-headline').append(afdButtons.$element);
	$(".afd-helper-button").children().click(function() {
		pageName = $(this).parent().parent().parent()[0].innerText.replace('Fikr bildirish', '').replace('Nomzod', '');
		purePageName = pageName.replace($(this).parent().parent().parent()[0], '').replace('Fikr bildirish', '');
		PageTitleElement = $(this).parent().parent().parent().parent()[0].lastElementChild;
		nominationPage = clearURLfromOrigin(PageTitleElement.querySelector(".mw-editsection a").getAttribute('href'));
		afdOpinionDialog(purePageName);
	});
	$(".afd-closer-button").children().click(function() {
		pageName = $(this).parent().parent().parent()[0].innerText.replace('Fikr bildirish', '').replace('Nomzod', '');
		purePageName = pageName.replace($(this).parent().parent().parent()[0], '').replace('Fikr bildirish', '');
		PageTitleElement = $(this).parent().parent().parent().parent()[0].lastElementChild;
		nominationPage = clearURLfromOrigin(PageTitleElement.querySelector(".mw-editsection a").getAttribute('href'));
		var pageContentWithDate;
		if(isSubPage) {
			pageContentWithDate = $(this).parent().parent().parent().parent().parent()[0].innerText;
			discussionText = $(this).parent().parent().parent().parent().parent()[0].innerText;
			firstDateMatch = /\d{1,2} ([a-zA-ZoʻgʻʼOʻGʻ]*) \d{4}/i.exec(discussionText);
			firstMonthOfDateString = firstDateMatch && firstDateMatch[1];
		} else {
			pageContentWithDate = $(this).parent().parent().parent().parent().next()[0].innerText;
			discussionText = $(this).parent().parent().parent().parent().next().next()[0].innerText;
			firstDateMatch = /\d{1,2} ([a-zA-ZoʻgʻʼOʻGʻ]*) \d{4}/i.exec(discussionText);
			firstMonthOfDateString = firstDateMatch && firstDateMatch[1];
		}
		var timeExpired = pageContentWithDate.includes("Tartışma için öngörülen süre dolmuştur");
		afdCloserDialog(purePageName, timeExpired);
	});
	$(".afd-helper-visit-button").children().click(function() {
		PageTitleElement = $(this).parent().parent().parent().parent()[0].lastElementChild;
		nominationPage = clearURLfromOrigin(PageTitleElement.querySelector(".mw-editsection a").getAttribute('href'));
		window.location = '/wiki/' + nominationPage;
	});
	//var boxes = document.getElementsByClassName('mw-parser-output');
	//var headings = boxes[0].getElementsByTagName('h2');
	//len = headings !== null ? headings.length : 0, i = 0;
	//for (var i; i < len; i++) {
	//    headings[i].className += " hide-non-opinion";
	//}
	//$(".hide-non-opinion .afd-helper-button-group").hide();
	$(".ext-discussiontools-init-section .afd-helper-button-group").hide();
	$(".xfd-closed .afd-helper-button-group").hide();

	function afdOpinionDialog(purePageName) {
		var InputFilled = false;
		console.log(InputFilled);
		var rationaleInput = new OO.ui.MultilineTextInputWidget({
			placeholder: 'Iltimos, bu yerda fikringizni bayon eting.',
			indicator: 'required',
			notices: ['Iltimos, fikringizni qoldiring.'],
			classes: ['afd-helper-comment-textarea']
		});
		rationaleInput.on('change', function() {
			console.log(rationaleInput.value);
			if(rationaleInput.value != "") {
				InputFilled = false;
				console.log(InputFilled);
			} else {
				InputFilled = true;
				console.log(InputFilled);
			}
		});
		log_it = new OO.ui.FieldLayout(new OO.ui.CheckboxInputWidget({
			selected: localStorage.getItem("afdNominateOpinionsLog") == "true"
		}), {
			align: 'inline',
			label: 'Qoldirgan fikrlarim qaydlari olib borilsin\u200e',
		});
		var header_warn = new OO.ui.MessageWidget({
			type: 'notice',
			inline: true,
			label: new OO.ui.HtmlSnippet('Oʻchirishga nomzod sahifalar ovoz berish uchun sahifalar emas!<br>Shunday ekan, shunchaki andozani qoldirmay, fikringizni ham bildiring.<br><small>Oʻchirishga nomzod sahifalarda qarorlar fikrlar soniga qarab emas, balki Vikipediya qoida va koʻrsatmalariga binoan chiqariladi.</small>')
		});
		var page_url = '<a href="'.concat(purePageName.trim(), '" target="_blank">').concat(purePageName.trim(), "</a>");
		var page_link = page_url.replace(/&lt;(\/?pre\s?\/?)&gt;/g, " ");
		var page_name = new OO.ui.MessageWidget({
			type: 'notice',
			icon: 'article',
			label: '',
			classes: ['afd-helper-page-name']
		});

		function opinionDialog(config, buttonSelect) {
			opinionDialog.super.call(this, config, buttonSelect);
		}
		OO.inheritClass(opinionDialog, OO.ui.ProcessDialog);
		opinionDialog.static.title = 'Adiutor —— Oʻchirishga nomzod sahifalarda fikr qoldirish';
		opinionDialog.static.name = 'opinionDialog';
		opinionDialog.static.actions = [{
			action: 'continue',
			modes: 'edit,preview',
			label: 'Qoʻshilsin',
			disabled: InputFilled,
			icon: 'add',
			flags: ['primary', 'progressive']
		}, {
			action: 'about',
			modes: 'edit,preview',
			label: 'Haqida',
			icon: 'infoFilled'
		}, {
			modes: 'edit',
			label: 'Yopish',
			flags: 'safe',
			icon: 'close'
		}, {
			action: 'back',
			modes: 'about,preview',
			label: 'Orqaga',
			flags: 'safe'
		}, {
			action: 'preview',
			modes: 'edit,preview',
			label: 'Oldindan koʻrib chiqish',
			icon: 'eye',
			align: 'right'
		}];
		opinionDialog.prototype.initialize = function() {
			opinionDialog.super.prototype.initialize.apply(this, arguments);
			buttonSelect = new OO.ui.ButtonSelectWidget({
				items: [new OO.ui.ButtonOptionWidget({
					id: 1,
					data: 1,
					label: 'Qoldirilsin',
					title: 'Qoldirilsin',
					classes: ['afd-opinion-select-btn']
				}), new OO.ui.ButtonOptionWidget({
					id: 3,
					data: 3,
					label: 'Oʻchirilsin',
					title: 'Oʻchirilsin',
					classes: ['afd-opinion-select-btn']
				}), ],
				classes: ['afd-opinion-select-btn-group']
			});
			buttonSelect.on('select', (function() {
				localStorage.setItem("selectedOpinion", buttonSelect.findSelectedItem().data);
				switch(buttonSelect.findSelectedItem().data) {
					case 1:
						opinionTemplate = '*{{Qoldirilsin}}';
						break;
					case 2:
						opinionTemplate = '*{{Tezda qoldirilsin}}';
						break;
					case 3:
						opinionTemplate = '*{{Oʻchirilsin}}';
						break;
					case 4:
						opinionTemplate = '*{{Tezda oʻchirilsin}}';
						break;
					case 5:
						opinionTemplate = '*{{Birlashtirilsin}}';
						break;
					case 6:
						opinionTemplate = '*{{Koʻchirilsin}}';
						break;
					case 7:
						opinionTemplate = '*{{Olib oʻtilsin}}';
						break;
				}
				previewWikitext = opinionTemplate + ' ' + rationaleInput.value + ' ~~~~';
			}));
			this.panel1 = new OO.ui.PanelLayout({
				padded: true,
				expanded: false
			});
			this.panel1.$element.append(header_warn.$element, page_name.$element, '</br>', buttonSelect.$element, '</br>', rationaleInput.$element, log_it.$element);
			this.panel2 = new OO.ui.PanelLayout({
				padded: true,
				expanded: false
			});
			this.panel2.$element.append('<p><strong>Adiutor</strong></p><h2>Litsenziya</h2><p>Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0) https://creativecommons.org/licenses/by-sa/3.0/ va GNU Free Documentation License (GFDL) http://www.gnu.org/copyleft/fdl.html.</p>');
			rationaleInput.on('change', function() {
				previewWikitext = opinionTemplate + ' ' + rationaleInput.value + ' ~~~~';
				console.log(previewWikitext);
			});
			this.stackLayout = new OO.ui.StackLayout({
				items: [this.panel1, this.panel2]
			});
			this.$body.append(this.stackLayout.$element);
		};
		opinionDialog.prototype.getSetupProcess = function(data) {
			return opinionDialog.super.prototype.getSetupProcess.call(this, data).next(function() {
				this.actions.setMode('edit');
			}, this);
		};
		opinionDialog.prototype.getActionProcess = function(action) {
			if(action === 'about') {
				this.actions.setMode('about');
				this.stackLayout.setItem(this.panel2);
			} else if(action === 'back') {
				this.actions.setMode('edit');
				this.stackLayout.setItem(this.panel1);
			} else if(action === 'continue') {
				var dialog = this;
				return new OO.ui.Process(function() {
					if(rationaleInput.value != "") {
						addOpinion(purePageName, rationaleInput);
						dialog.close();
					} else {
						alertDialog("Fikr bildiring!", "Oʻchirishga nomzod sahifalar ovoz berish uchun sahifalar emas! Oʻchirishga nomzod sahifalarda qarorlar fikrlar soniga qarab emas, balki Vikipediya qoida va koʻrsatmalariga binoan chiqariladi.");
					}
				});
			}
			if(action === 'preview') {
				api.get({
					action: 'parse',
					text: previewWikitext,
					disablelimitreport: 1,
					disabletidy: 1,
					prop: 'text',
					format: "json"
				}).done(function(data) {
					function WikiPreviewDialog(config) {
						WikiPreviewDialog.super.call(this, config);
					}
					OO.inheritClass(WikiPreviewDialog, OO.ui.ProcessDialog);
					WikiPreviewDialog.static.name = 'WikiPreviewDialog';
					WikiPreviewDialog.static.title = 'Önizleme';
					WikiPreviewDialog.static.actions = [{
						action: 'save',
						modes: 'edit,preview',
						label: 'Ekle',
						disabled: InputFilled,
						icon: 'add',
						flags: ['primary', 'progressive']
					}, {
						label: 'Kapat',
						flags: 'safe'
					}];
					WikiPreviewDialog.prototype.initialize = function() {
						WikiPreviewDialog.super.prototype.initialize.apply(this, arguments);
						this.content = new OO.ui.PanelLayout({
							padded: true,
							expanded: false
						});
						this.content.$element.html(data.parse.text['*']);
						this.$body.append(this.content.$element);
					};
					WikiPreviewDialog.prototype.getActionProcess = function(action) {
						var dialog = this;
						if(action) {
							return new OO.ui.Process(function() {
								addOpinion(purePageName, rationaleInput);
								dialog.close({
									action: action
								});
							});
						}
						return WikiPreviewDialog.super.prototype.getActionProcess.call(this, action);
					};
					var windowManager = new OO.ui.WindowManager();
					$(document.body).append(windowManager.$element);
					var dialog = new WikiPreviewDialog({
						size: 'full',
					});
					windowManager.addWindows([dialog]);
					windowManager.openWindow(dialog);
				});
			}
			return opinionDialog.super.prototype.getActionProcess.call(this, action);
		};
		opinionDialog.prototype.getBodyHeight = function() {
			//return this.panel1.$element.outerHeight(true);
			return Math.max(this.panel1.$element.outerHeight(true), 320);
		};
		var windowManager = new OO.ui.WindowManager();
		$(document.body).append(windowManager.$element);
		var dialog = new opinionDialog({
			size: 'large',
			classes: ['afd-helper-window']
		});
		windowManager.addWindows([dialog]);
		windowManager.openWindow(dialog);
		$('.afd-helper-page-name').children().next().append(page_link);
	}

	function afdCloserDialog(purePageName, timeExpired) {
		if(timeExpired) {
			header_warn = new OO.ui.MessageWidget({
				type: 'notice',
				inline: true,
				label: new OO.ui.HtmlSnippet('Siz munozarani yopmoqdasiz<br><small>Quyida qarorni bayon eting.</small>')
			});
		} else {
			header_warn = new OO.ui.MessageWidget({
				type: 'notice',
				inline: true,
				label: new OO.ui.HtmlSnippet('Siz munozarani yopmoqdasiz<br><small>Quyida qarorni bayon eting.</small>')
			});
		}
		var page_url = '<a href="wiki/'.concat(purePageName.trim(), '" target="_blank">').concat(purePageName.trim(), "</a>");
		var page_link = page_url.replace(/&lt;(\/?pre\s?\/?)&gt;/g, " ");
		var page_name = new OO.ui.MessageWidget({
			type: 'notice',
			icon: 'article',
			label: '',
			classes: ['afd-helper-page-name']
		});
		var rationaleInput = new OO.ui.MultilineTextInputWidget({
			placeholder: 'Bu yerda nega unday qaror chiqarganingizni bayon eting.',
			indicator: 'required',
			notices: ['Iltimos, sabab keltiring.'],
			classes: ['afd-helper-comment-textarea']
		});
		rationaleInput.on('change', function() {
			console.log(rationaleInput.value);
		});

		function closerDialog(config) {
			closerDialog.super.call(this, config);
		}
		OO.inheritClass(closerDialog, OO.ui.ProcessDialog);
		closerDialog.static.title = 'Adiutor — Oʻchirishga nomzod sahifalarda qaror chiqarish';
		closerDialog.static.name = 'closerDialog';
		closerDialog.static.actions = [{
			action: 'close',
			modes: 'edit,preview',
			label: 'Qaror chiqarilsin',
			icon: 'lock',
			flags: ['primary', 'progressive']
		}, {
			action: 'about',
			modes: 'edit,preview',
			label: 'Haqida',
			icon: 'infoFilled'
		}, {
			modes: 'edit',
			label: 'Yopish',
			flags: 'safe',
			icon: 'close'
		}, {
			action: 'back',
			modes: 'about,preview',
			label: 'Orqaga',
			flags: 'safe'
		}, ];
		closerDialog.prototype.initialize = function() {
			closerDialog.super.prototype.initialize.apply(this, arguments);
			buttonSelect = new OO.ui.ButtonSelectWidget({
				items: [new OO.ui.ButtonOptionWidget({
						id: 1,
						data: 1,
						label: 'Qoldirilsin',
						title: 'Qoldirilsin',
						classes: ['afd-result-select-btn']
					}),
					new OO.ui.ButtonOptionWidget({
						id: 3,
						data: 3,
						label: 'Oʻchirilsin',
						title: 'Oʻchirilsin',
						classes: ['afd-result-select-btn']
					}),
				],
				classes: ['afd-result-select-btn-group']
			});
			buttonSelect.on('select', (function() {
				localStorage.setItem("selectedCloseDesicion", buttonSelect.findSelectedItem().data);
				console.log(localStorage.getItem("selectedCloseDesicion"));
			}));
			var actionOption = new OO.ui.FieldLayout(new OO.ui.CheckboxInputWidget({
				selected: true
			}), {
				align: 'inline',
				label: 'Nomzod sahifa ham avtomatik oʻchirilsin\u200e',
				help: 'Bunda ushbu sahifa avtomatik oʻchiriladi.\u200e'
			});
			titleInput = new OO.ui.TextInputWidget({
				'showMissing': false,
				'align': screenLeft,
				'label': 'Maqolani qaysi maqola bilan birlashtirish taklif etildi?',
			});
			this.panel1 = new OO.ui.PanelLayout({
				padded: true,
				expanded: false
			});
			this.panel1.$element.append(header_warn.$element, page_name.$element, '</br>', buttonSelect.$element, '</br>', rationaleInput.$element, actionOption.$element, titleInput.$element);
			this.panel2 = new OO.ui.PanelLayout({
				padded: true,
				expanded: false
			});
			this.panel2.$element.append('<p><strong>Adiutor</strong> foydalanuvchilarga Vikipediyadagi sahifalarni tezda oʻchirishga/koʻchirishga/oʻchirishga/himoyalashga nomzod sifatida koʻrsatishda koʻmaklashuvchi gadjetdir.</p><h2>Litsenziya</h2><p>Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0) https://creativecommons.org/licenses/by-sa/3.0/ va GNU Free Documentation License (GFDL) http://www.gnu.org/copyleft/fdl.html.</p>');
			this.stackLayout = new OO.ui.StackLayout({
				items: [this.panel1, this.panel2]
			});
			this.$body.append(this.stackLayout.$element);
		};
		closerDialog.prototype.getSetupProcess = function(data) {
			return closerDialog.super.prototype.getSetupProcess.call(this, data).next(function() {
				this.actions.setMode('edit');
			}, this);
		};
		closerDialog.prototype.getActionProcess = function(action) {
			if(action === 'preview') {
				this.actions.setMode('preview');
				this.stackLayout.setItem(this.panel3);
			}
			if(action === 'about') {
				this.actions.setMode('about');
				this.stackLayout.setItem(this.panel2);
			} else if(action === 'back') {
				this.actions.setMode('edit');
				this.stackLayout.setItem(this.panel1);
			} else if(action === 'close') {
				var dialog = this;
				return new OO.ui.Process(function() {
					closeDiscussion(purePageName, rationaleInput);
					dialog.close();
				});
			}
			return closerDialog.super.prototype.getActionProcess.call(this, action);
		};
		closerDialog.prototype.getBodyHeight = function() {
			//return this.panel1.$element.outerHeight(true);
			return Math.max(this.panel1.$element.outerHeight(true), 320);
		};
		var windowManager = new OO.ui.WindowManager();
		$(document.body).append(windowManager.$element);
		var dialog = new closerDialog({
			size: 'large',
			classes: ['afd-helper-window']
		});
		windowManager.addWindows([dialog]);
		windowManager.openWindow(dialog);
		$('.afd-helper-page-name').children().next().append(page_link);
	}
	// ADD OPINION TO NOMINATION AFD PAGE
	function addOpinion(purePageName, rationaleInput) {
		var opinion;
		var opinionText;
		switch(localStorage.getItem("selectedOpinion")) {
			case '1':
				opinion = "Qoldirilsin";
				opinionText = '*{{subst:Qoldirilsin}}' + ' ' + rationaleInput.value + ' ~~~~';
				break;
			case '3':
				opinion = "Oʻchirilsin";
				opinionText = '*{{subst:Oʻchirilsin}}' + ' ' + rationaleInput.value + ' ~~~~';
				break;
		}
		api = new mw.Api();
		api.postWithToken('csrf', {
			action: 'edit',
			title: nominationPage,
			appendtext: "\n" + opinionText,
			summary: 'Fikr-mulohaza qoldirildi',
			tags: 'Adiutor',
			format: 'json'
		}).done(function() {
			if(afdNominateOpinionsLog) {
				api = new mw.Api();
				api.postWithToken('csrf', {
					action: 'edit',
					title: 'Foydalanuvchi:'.concat(mwConfig.wgUserName, '/' + localStorage.getItem("afdOpinionLogPageName") + '').split(' ').join('_'),
					appendtext: "\n" + "* ~~~~~ '''[[" + nominationPage + "|" + purePageName + "]]''' | Fikr: '''" + opinion + "'''",
					summary: 'Oʻ qaydlariga qoʻshildi.',
					tags: 'Adiutor',
					format: 'json'
				}).done(function() {});
			}
			if(isSubPage) {
				location.reload();
			} else {
				var success_notify = new OO.ui.MessageWidget({
					type: 'success',
					label: 'Fikringizni muvaffaqiyatli qoldirdingiz, uni koʻrish uchun sahifani yangilang.',
					classes: ['afd-helper-notification'],
					showClose: true
				});
				$('.mw-page-container-inner').append(success_notify.$element);
				setTimeout(function() {
					$(".afd-helper-notification").hide('blind', {}, 500);
				}, 5000);
			}
		});
	}
	// CLOSE DISCUSSION
	function closeDiscussion(purePageName, rationaleInput) {
		var result;
		var closeText;
		switch(localStorage.getItem("selectedCloseDesicion")) {
			case '1':
				result = "Qoldirildi";
				closeText = '{{Oʻ usti|qoldirilsin}}' + ' ' + rationaleInput.value + ' ~~~~';
				break;
			case '3':
				result = "Oʻchirildi";
				closeText = '{{Oʻ usti|oʻchirilsin}}' + ' ' + rationaleInput.value + ' ~~~~';
				break;
			case '8':
				result = "Qarorsiz";
				closeText = '{{Oʻ usti|qarorsiz}}' + ' ' + rationaleInput.value + ' ~~~~';
				break;
		}
		api.postWithToken('csrf', {
			action: 'edit',
			title: nominationPage,
			prependtext: closeText + "\n",
			appendtext: "\n{{Oʻ osti}}",
			summary: 'Natija',
			tags: 'Adiutor',
			format: 'json'
		}).done(function() {
			switch(localStorage.getItem("selectedCloseDesicion")) {
				case '1':
					removeAfdTemplatesFromnominationPage(purePageName);
					break;
				case '2':
					removeAfdTemplatesFromnominationPage(purePageName);
					break;
				case '3':
					deletenominationPage(purePageName);
					break;
				case '4':
					deletenominationPage(purePageName);
					break;
				case '5':
					removeAfdTemplatesFromnominationPage(purePageName);
					break;
				case '6':
					removeAfdTemplatesFromnominationPage(purePageName);
					break;
				case '7':
					removeAfdTemplatesFromnominationPage(purePageName);
					break;
				case '8':
					removeAfdTemplatesFromnominationPage(purePageName);
					break;
				case '9':
					removeAfdTemplatesFromnominationPage(purePageName);
					break;
			}
		});
	}
	// REMOVE AFD TEMPLATES FROM NOMINATED PAGE
	function removeAfdTemplatesFromnominationPage(purePageName) {
		var pageContent;
		api.get({
			action: 'parse',
			page: purePageName.trim(),
			prop: 'wikitext',
			format: "json"
		}).done(function(data) {
			pageContent = data.parse.wikitext['*'];
			var templatesCleanedPageContent = pageContent.replace(/\{\{\s*?oʻchirishga\s*?(|\|.*?)\}\}\n?/gi, "");
			api.postWithToken('csrf', {
				action: 'edit',
				title: purePageName.trim(),
				text: templatesCleanedPageContent,
				summary: '[[VP:Oʻchirishga|Oʻchirishga]]: [[' + nominationPage + '|Nomzod sahifasida]] munozara andozasi qoldirildi',
				tags: 'Adiutor',
				format: 'json'
			}).done(function() {
				removeNominationFromAfdPage();
			});
		});
	}
	// DELETE NOMINATED PAGE
	function deletenominationPage(purePageName) {
		api.postWithToken('csrf', {
			action: 'delete',
			title: purePageName.trim(),
			reason: '[[VP:Oʻchirishga|OʻCH]]: Sahifa [[' + nominationPage + '|oʻchirishga]] qaror qilindi',
			tags: 'Adiutor',
			format: 'json'
		}).done(function() {
			api.postWithToken('csrf', {
				action: 'delete',
				title: "Munozara:" + purePageName.trim(),
				reason: '[[' + nominationPage + '|Mana bu yerdagi]] qarorga binoan',
				tags: 'Adiutor',
				format: 'json'
			}).done(function() {});
			removeNominationFromAfdPage();
		});
	}
	// REMOVE NOMINATION FROM AFD PAGE
	function removeNominationFromAfdPage() {
		api.get({
			action: 'parse',
			page: "Vikipediya:Oʻchirishga",
			prop: 'wikitext',
			format: "json"
		}).done(function(data) {
			api.postWithToken('csrf', {
				action: 'edit',
				title: "Vikipediya:Oʻchirishga",
				text: data.parse.wikitext['*'].replace("{{" + nominationPage.replace(/_/g, " ") + "}}", ""),
				summary: '[[VP:Oʻchirishga|OʻCH]]: [[' + nominationPage + '|Arxivlandi]]',
				tags: 'Adiutor',
				format: 'json'
			}).done(function() {
				addNominationToAfdLogPage();
			});
		});
	}
	// ADD NOMINATION TO AFD LOG PAGE
	function addNominationToAfdLogPage() {
		var date = new Date();
		var date_year = date.getUTCFullYear();
		var pageContent;
		api.get({
			action: 'parse',
			page: "Vikipediya:Oʻchirishga/Qaydlar/" + date_year + "-" + firstMonthOfDateString,
			prop: 'wikitext',
			format: "json"
		}).done(function(data) {
			pageContent = data.parse.wikitext['*'];
			pageNameCleaned = nominationPage.replace(/_/g, " ");
			var discusionExistInLog = pageContent.includes("{{" + pageNameCleaned + "}}");
			//CHECK IF ALREADY ADDED
			if(!discusionExistInLog) {
				api.postWithToken('csrf', {
					action: 'edit',
					title: "Vikipediya:Oʻchirishga/Qaydlar/" + date_year + "-" + firstMonthOfDateString,
					appendtext: "\n" + "{{" + pageNameCleaned + "}}",
					summary: "Nomzod [[Vikipediya:Oʻchirishga/Qaydlar/" + date_year + "-" + firstMonthOfDateString + "|tegishli qaydlarga]] qoʻshildi.",
					tags: 'Adiutor',
					format: 'json'
				}).done(function() {
					if(isSubPage) {
						location.reload();
					} else {
						var success_notify = new OO.ui.MessageWidget({
							type: 'success',
							label: 'Bajarildi! Oʻzgarishlarni koʻrish uchun sahifani yangilang.',
							classes: ['afd-helper-notification'],
							showClose: true
						});
						$('.mw-page-container-inner').append(success_notify.$element);
						setTimeout(function() {
							$(".afd-helper-notification").hide('blind', {}, 500);
						}, 5000);
					}
				});
			} else {
				if(isSubPage) {
					location.reload();
				} else {
					var success_notify = new OO.ui.MessageWidget({
						type: 'success',
						label: 'Bajarildi! Iltimos, sahifani yangilang.',
						classes: ['afd-helper-notification'],
						showClose: true
					});
					$('.mw-page-container-inner').append(success_notify.$element);
					setTimeout(function() {
						$(".afd-helper-notification").hide('blind', {}, 500);
					}, 5000);
				}
			}
			switch(localStorage.getItem("selectedCloseDesicion")) {
				case '5':
					putMergeTemplate(purePageName);
					break;
				case '7':
					putMergeTemplate(purePageName);
					break;
			}

			function putMergeTemplate(purePageName) {
				api.postWithToken('csrf', {
					action: 'edit',
					title: purePageName.trim(),
					prependtext: '{{Birlashtirishga|' + nominationPage.replace('Vikipediya:Oʻchirishga/', '') + '|' + titleInput.getValue() + '}}' + "\n",
					summary: 'Birlashtirishga andozasi qoʻshildi',
					tags: 'Adiutor',
					format: 'json'
				}).done(function() {});
			}
		});
	}

	function clearURLfromOrigin(AfDPageUrl) {
		return decodeURIComponent(AfDPageUrl.replace('https://uz.wikipedia.org/w/index.php?title=', '').replace('&section=1&veaction=editsource', '').replace('/w/index.php?title=', '').replace(/\&section=T-1&veaction=editsource/g, "").replace(/\&action=edit&section=1/g, "").replace(/\&action=edit&section=T-1/g, ""));
	}

	function alertDialog(title, message) {
		var AlertDialog = new OO.ui.MessageDialog();
		var windowManager = new OO.ui.WindowManager();
		$(document.body).append(windowManager.$element);
		windowManager.addWindows([AlertDialog]);
		windowManager.openWindow(AlertDialog, {
			title: title,
			message: message,
		});
	}
});
/* </nowiki> */