მედიავიკი:Gadget-oneclickdelete.js

მასალა ვიკიპედიიდან — თავისუფალი ენციკლოპედია

შენიშვნა: შენახვის შემდეგ შესაძლოა დაგჭირდეთ ბრაუზერის ქეშის გაწმენდა ცვლილებების სანახავად. Google Chrome, Firefox, Microsoft Edge და Safari: დააჭირეთ   ⇧ Shift  ღილაკს და შემდეგ - ღილაკს Reload.

//ლოკალიზაცია - მომხმარებელი:გიო_ოქრო
//<nowiki>
if (mw.config.get("wgNamespaceNumber") >= 0 && mw.config.get("wgIsProbablyEditable")) {
	var oneClickDelete = {};
	$(document).ready(function() {
		oneClickDelete.addReason = function(reason, tag) {
			oneClickDelete.reasons.push([tag, reason]);
			//oneClickDelete.tag[reason] = tag;
		};
		oneClickDelete.delete = function(reason, tag) {
			console.log("Getting token...");
			$.get(mw.config.get("wgScriptPath") + "/api.php", {
				"action": "query",
				"meta": "tokens",
				"type": "csrf",
				"format": "json"
			}).done(function(token) {
				if (token.error) {
					mw.notify($("<span class=\"error\">" + token.error.info + "</span>"));
				} else {
					var temp = tag.substring(3, 6);
					if (temp.toLowerCase() != "st:" && temp.toLowerCase() != "c1") {
						$.post(mw.config.get("wgScriptPath") + '/api.php', {
							"action": "delete",
							"format": "json",
							"title": mw.config.get("wgPageName"),
							"reason": reason,
							"token": token.query.tokens.csrftoken
						}).done(function(editresult) {
							if (editresult.error) {
								mw.notify($("<span class=\"error\">" + editresult.error.info + "</span>"));
							} else {
								location.href = "/wiki/" + mw.config.get("wgPageName");
							}
						}).fail(function(editresult) {
							mw.notify("<span class=\"error\">" + editresult + "</span>");
						});
					} else {
						oneClickDelete.addTag(tag);
					}
				}
				
			}).fail(function(token) {
				mw.notify($("<span class=\"error\">" + token + "</span>"));
			});

		};
		oneClickDelete.addTag = function(reason) {
			if (reason) {
				console.log("Getting wikitext...");
				$.get(mw.config.get("wgScriptPath") + "/api.php", {
					"action": "parse",
					"prop": "wikitext",
					"page": mw.config.get("wgPageName"),
					"format": "json"
				}).done(function(result) {
					if (result.error) {
						mw.notify($("<span class=\"error\">" + result.error.info + "</span>"));
					} else if (result.parse.wikitext["*"].toLowerCase().substring(0, 100).includes("{{წასაშლელი|") || result.parse.wikitext["*"].toLowerCase().substring(0, 100).includes("{{წასაშლელი|")) {
						mw.notify($("<span class=\"error\">" + "გვერდი უკვე მონიშნულია როგორც წასაშლელი. გთხოვთ, ხელით ჩაასწოროთ იგი საჭიროების შემთხვევაში." + "</span>"));
					} else {
						console.log("ტოკენის მიღება...");
						$.get(mw.config.get("wgScriptPath") + "/api.php", {
							"action": "query",
							"meta": "tokens",
							"type": "csrf",
							"format": "json"
						}).done(function(token) {
							if (token.error) {
								mw.notify($("<span class=\"error\">" + token.error.info + "</span>"));
							} else {
								console.log("ვიკიტექსტის შექმნა და შენახვა...");
								var newwikitext = result.parse.wikitext["*"];
								if (reason == "db-g10") {
									newwikitext = "<noinclude>{{წასაშლელი|" + reason + "}}</noinclude>";
								} else //{
//									if (reason != "subst:void") {
//										newwikitext = "<noinclude>{{" + reason + "}}</noinclude>" + newwikitext;
//									} else
											{
										newwikitext = "{{წასაშლელი|" + reason + "}}" + newwikitext;
									}
//								}
								$.post(mw.config.get("wgScriptPath") + '/api.php', {
									"action": "edit",
									"format": "json",
									"title": mw.config.get("wgPageName"),
									"text": newwikitext,
									"summary": "გვერდი წასაშლელია ([[en:User:Awesome Aasim/oneclickdelete|oneclickdelete]])",
									"token": token.query.tokens.csrftoken
								}).done(function(editresult) {
									if (editresult.error) {
										mw.notify($("<span class=\"error\">" + editresult.error.info + "</span>"));
									} else {
										location.href = "/wiki/" + mw.config.get("wgPageName");
									}
								}).fail(function(editresult) {
									mw.notify("<span class=\"error\">" + editresult + "</span>");
								});
							}
							
						}).fail(function(token) {
							mw.notify($("<span class=\"error\">" + token + "</span>"));
						});
					}
				}).fail(function(result) {
					mw.notify($("<span class=\"error\">" + result + "</span>"));
				});
			}
		};
		oneClickDelete.select = $('<select name="deletiontemplate" style="width:100px" id="qcsd-dropdown" class="mw-ui-input"/>');
		oneClickDelete.el = $('<div class="mw-indicator"><form id="qcsd"></form></div>');
		$.get(mw.config.get("wgScriptPath") + "/api.php", {
			"action": "parse",
			"prop": "wikitext",
			"format": "json",
			"page": mw.config.get("wgPageName")
		}).done(function(result) {
			if (!result.error) {
				// reasons begin
				oneClickDelete.reasons = [];
				// general
				oneClickDelete.addReason("ზოგადი", "-");
				oneClickDelete.addReason("[[ვპ:სწკ#ზ1|ზ1]]: გვერდი გაუგებარი შინაარსით", "ზ1");
				if (mw.config.get("wgNamespaceNumber") != 2) {
					oneClickDelete.addReason("[[ვპ:სწკ#ზ2|ზ2]]: ტესტური გვერდი", "ზ2");
				}
				oneClickDelete.addReason("[[ვპ:სწკ#ზ3|ზ3]]: ვანდალიზმის გვერდი", "ზ3");
				oneClickDelete.addReason("[[ვპ:სწკ#ზ4|ზ4]]: ადრე წაშლილი გვერდის ასლი", "ზ4");
				oneClickDelete.addReason("[[ვპ:სწკ#ზ5|ზ5]]: წაშლა გვერდის ერთადერთმა ავტორმა მოითხოვა", "ზ5");
				oneClickDelete.addReason("[[ვპ:სწკ#ზ6|ზ6]]: წაშლილი გვერდის განხილვა", "ზ6");
				oneClickDelete.addReason("[[ვპ:სწკ#ზ7|ზ7]]: გვერდის გადატანის მიზნით", "ზ7");
				oneClickDelete.addReason("[[ვპ:სწკ#ზ8|ზ8]]: უკვე არსებული გვერდის ასლი", "ზ8");
				oneClickDelete.addReason("[[ვპ:სწკ#ზ9|ზ9]]: რეკლამა ან სპამი", "ზ9");
				oneClickDelete.addReason("[[ვპ:სწკ#ზ10|ზ10]]: განხილვის გვერდის არამიზნობრივი გამოყენება", "ზ10");
				if (result.parse.wikitext["*"].toLowerCase().substring(0, "#გადამისამართება".length).match(/.*\#გადამისამართება.*/g)) {
					// გადამისამართება
					oneClickDelete.addReason("გადამისამართებები", "-");
					oneClickDelete.addReason('[[ვპ:სწკ#გ1|გ1]]: გადამისამართება არარსებულ გვერდზე', 'გ1');
					oneClickDelete.addReason('[[ვპ:სწკ#გ2|გ2]]: გადამისამართება სახელთა სივრცეებს შორის', 'გ2');
					oneClickDelete.addReason('[[ვპ:სწკ#გ3|გ3]]: გადამისამართების სათაურში შეცდომა', 'გ3');
					oneClickDelete.addReason('[[ვპ:სწკ#გ4|გ4]]: სათაური არ არის სახელობით ბრუნვაში', 'გ4');
					oneClickDelete.addReason('[[ვპ:სწკ#გ5|გ5]]: სემანტიკურად არასწორი გადამისამართება', 'გ5');
					oneClickDelete.addReason('[[ვპ:სწკ#გ6|გ6]]: გადამისამართება განხილვის გვერდზე', 'გ6');
				} else {
					if (mw.config.get("wgNamespaceNumber") == 0) {
						// სტატია
						oneClickDelete.addReason("სტატიები", "-");
						oneClickDelete.addReason('[[ვპ:სწკ#ს1|ს1]]: ცარიელი ან ძალიან მოკლე გვერდი (3 წინადადებაზე ნაკლები)', 'ს1');
						oneClickDelete.addReason('[[ვპ:სწკ#ს2|ს2]]: სტატია არ აკმაყოფილებს ვპ:ბიო-ს', 'ს2');
						oneClickDelete.addReason('[[ვპ:სწკ#ს3|ს3]]: სტატია არაქართულ ენაზე ან მანქანური თარგმანი', 'ს3');
						oneClickDelete.addReason('[[ვპ:სწკ#ს4|ს4]]: მხოლოდ (გარე ან შიდა) ბმულებისგან შემდგარი სტატია', 'ს4');
						oneClickDelete.addReason('[[ვპ:სწკ#ს5|ს5]]: სტატია ენციკლოპედიური მნიშვნელობის დადასტურების გარეშე', 'ს5');
						oneClickDelete.addReason('[[ვპ:სწკ#ს6|ს6]]: საავტორო უფლებების აშკარა დარღვევა', 'ს6');
						oneClickDelete.addReason("სტატიას არ აქვს წყარო");

//						oneClickDelete.addReason('რაიმე განსაკუთრებული მიზეზი', 'აქ მისი კოდი');
					}
					if (mw.config.get("wgNamespaceNumber") == 6) {
						// ფაილი
						oneClickDelete.addReason("ფაილები", "-");
						oneClickDelete.addReason('[[ვპ:სწკ#ფ1|ფ1]]: ზუსტი ან უარესი ასლი', 'ფ1');
						oneClickDelete.addReason('[[ვპ:სწკ#ფ2|ფ2]]: ცარიელი ან დაზიანებული ფაილი', 'ფ2');
						oneClickDelete.addReason('[[ვპ:სწკ#ფ3|ფ3]]: გაურკვეველი სალიცენზიო სტატუსი', 'ფ3');
						oneClickDelete.addReason('[[ვპ:სწკ#ფ4|ფ4]]: გამოუყენებელი არათავისუფალი ფაილი', 'ფ4');
						oneClickDelete.addReason('[[ვპ:სწკ#ფ5|ფ5]]: სგკ კრიტერიუმების შეუსაბამო ფაილი', 'ფ5');
						oneClickDelete.addReason('[[ვპ:სწკ#ფ6|ფ6]]: გაუმართლებლად გამოყენებული არათავისუფალი ფაილი', 'ფ6');
						oneClickDelete.addReason('[[ვპ:სწკ#ფ7|ფ7]]: შეცვლადი არათავისუფალი ფაილი', 'ფ7');
						oneClickDelete.addReason('[[ვპ:სწკ#ფ8|ფ8]]: ფაილი ხელმისაწვდომია ვიკისაწყობში', 'ფ8');
						oneClickDelete.addReason('[[ვპ:სწკ#ფ9|ფ9]]: ფაილი, რომელიც აშკარად არღვევს არაჰოსტინგს', 'ფ9');
					}
					if (mw.config.get("wgNamespaceNumber") == 14) {
						// კატეგორია
						oneClickDelete.addReason("კატეგორიები", "-");
						oneClickDelete.addReason('[[ვპ:სწკ#კ1|კ1]]: ცარიელი კატეგორია', 'კ1');
						oneClickDelete.addReason('[[ვპ:სწკ#კ2|კ2]]: გადამისამართებული კატეგორია', 'კ2');
					}
					if (mw.config.get("wgNamespaceNumber") == 2 || mw.config.get("wgNamespaceNumber") == 3) {
						// მომხმარებლის გვერდი
						oneClickDelete.addReason("მომხმარებლის გვერდები", "-");
						oneClickDelete.addReason('[[ვპ:სწკ#მ1|მ1]]: ავტორის (მფლობელის) მოთხოვნა', 'მ1');
						oneClickDelete.addReason('[[ვპ:სწკ#მ2|მ2]]: ანონიმური მომხმარებლის განხილვა', 'მ2');
						oneClickDelete.addReason('[[ვპ:სწკ#მ3|მ3]]: არარსებული მომხმარებელი', 'მ3');
						oneClickDelete.addReason('[[ვპ:სწკ#მ4|მ4]]: არამიზნობრივი გამოყენება', 'მ4');
						oneClickDelete.addReason('[[ვპ:სწკ#მ5|მ5]]: სტატია მომხმარებლის პირად გვერდზე', 'მ5');
					}
//					if (mw.config.get("wgNamespaceNumber") == 100) {
//						// portals
//						oneClickDelete.addReason("პორტალები", "-");
//						oneClickDelete.addReason('[[ვპ:სწკ#პ1|პ1]]: Meets article criteria for speedy deletion [[ვპ:სწკ#A1|A1]]', 'db-p1|a1');
//					}
				}
				oneClickDelete.select.append($('<option />').prop('disabled', true).prop('selected', true).text("წაშლა"));
				oneClickDelete.select.append($('<option />').attr('value', 'subst:void').text("გაუქმება"));
				oneClickDelete.select.change(function(e) {
					//debugger;
					oneClickDelete.select.prop("disabled", true);
					if (mw.config.get("wgUserGroups").includes("sysop")) {
						oneClickDelete.delete($("#qcsd-dropdown option:selected").text(), $("#qcsd-dropdown").val());
					} else {
						oneClickDelete.addTag($("#qcsd-dropdown").val());
					}
				});
				oneClickDelete.reasons.forEach(function(r) {
					if (r[0] == "-") {
						oneClickDelete.select.append($('<option />').prop('disabled', true).text(r[1]));
					} else {
						oneClickDelete.select.append($('<option />').attr('value', r[0]).text("\xA0\xA0" + r[1]));
					}
				});
			
				oneClickDelete.el.appendTo("#siteNotice");
				if (mw.config.get("skin") != "minerva") {
					oneClickDelete.el.css({"float": "right", "margin-left": "10px"});
				}
				oneClickDelete.select.appendTo("#qcsd");
			}
		}).fail(function(result) {
			
		});
	});
}
//</nowiki>