MediaWiki:Gadget-SurumGizleyici.js

Vikikitap, özgür kütüphane

Not: Yayımladıktan sonra değişiklikleri görmek için tarayıcınızın önbelleğini temizlemeniz gerekebilir.

  • Firefox / Safari: Shift tuşuna basılıyken Yeniden Yükle'ye tıklayın ya da Ctrl-F5 ya da Ctrl-R tıklayın (Mac için ⌘-R).
  • Google Chrome: Ctrl-Shift-R'ye basın. (Mac için ⌘-Shift-R)
  • Internet Explorer / Edge: Ctrl basılıyken Yenile'ye tıklayın ya da Ctrl-F5 yapın.
  • Opera: Ctrl-F5 tıklayın.
/************************************************************************
**              Betik:        Sürüm gizleyici / MassRevDel             **
**              Yazar:        Writ Keeper                              **
**      Yerelleştirme:        Vito Genovese                            **
************************************************************************/

$(document).ready(function()
{
	if(mw.config.get("wgCanonicalSpecialPageName") == "Contributions")
	{
		$("ul.mw-contributions-list").before("<div style='display:inline-block;' id='revdelCP'>Sürüm gizleme: <input type='button' id='revdelSelectAll' value='Tümünü seç'><input type='button' id='revdelSelectNone' value='Hiçbirini seçme'>\
<span style='white-space:nowrap;'><input type='checkbox' id='revdelContent' name='revdelOptions' value='content'> içeriği gizle</span> \
<span style='white-space:nowrap;'><input type='checkbox' id='revdelName' name='revdelOptions' value='userName'> kullanıcıyı gizle</span> \
<span style='white-space:nowrap;'><input type='checkbox' id='revdelComment' name='revdelOptions' value='editSummary'> özeti gizle</span> \
<span style='white-space:nowrap;'><input type='checkbox' id='undelContent' name='revdelOptions' value='content'> içeriği göster</span> \
<span style='white-space:nowrap;'><input type='checkbox' id='undelName' name='revdelOptions' value='userName'> kullanıcıyı göster</span> \
<span style='white-space:nowrap;'><input type='checkbox' id='undelComment' name='revdelOptions' value='editSummary'> özeti göster</span> \
<br/><select id='wpRevDeleteReasonList'><option value='other'>Diğer neden</option></select><input name='wpReason' size='60' id='wpReason' maxlength='100'>\
<input type='button' class='revdelSubmit' id='revdelSubmit' value='Sürüm gizleme uygula'> <input type='button' class='revdelSubmit' id='oversightSubmit' value='Gözetmenlik uygula'></div>");
		$("ul.mw-contributions-list .mw-revdelundel-link").each(function(ind,el){
			var revId = /ids=(\d+)/.exec($(this).children("a").attr("href"))[1];
			var pageTitle = /target=([^&]+)/.exec($(this).children("a").attr("href"))[1];
			el.innerHTML = "<input type='checkbox' name='"+decodeURIComponent(pageTitle)+"' class='revdelIds' value='"+revId+"'>";
		});
		$("ul.mw-contributions-list").after("</form>");
		
		//load canned summaries
		$.get("/w/index.php?title=MediaWiki:Revdelete-reason-dropdown&action=raw",function(data)
		{
			reasons = data.replace(/\*\* ([^\*]+)/g, '<option value="$1">$1</option>');
			reasons = reasons.replace(/\* ([^<]+)([^\*]+)/g, '<optgroup label="$1">$2</optgroup>');
			$('#wpRevDeleteReasonList').append(reasons);
		});
		
		//attach handlers
		$("#revdelSelectAll").click(
			function()
			{
				$('input.revdelIds').each(function()
				{
					$(this).prop("checked", true);
				})
			}
		);
		$("#revdelSelectNone").click(
			function()
			{
				$('input.revdelIds').each(function()
				{
					$(this).prop("checked", false);
				})
			}
		);
		$("#revdelSubmit").click(
			function()
			{
				//figure out which revisions and pages we're working on.
				var revCount = 0;
				var numTitles = 0;
				var pageTitles = {};
				$("input.revdelIds:checked").each(function(ind)
				{
					revCount = ind + 1;
					if(ind > 49)
					{
						alert("Tek seferde 50 sayfadan fazlasında işlem yapamazsınız. İptal ediliyor.");
						return false;
					}
					if(typeof pageTitles[$(this).attr("name")] == "undefined")
					{
						pageTitles[$(this).attr("name")] = $(this).val();
						numTitles++;
					}
					else
					{
						pageTitles[$(this).attr("name")] = pageTitles[$(this).attr("name")] + "|" + $(this).val();
					}
				});
				if(numTitles == 0)
				{
					alert("Gizlenecek herhangi bir sürüm seçmediniz!");
					return false;
				}
				var confirmString = revCount + " sürümü değiştirmeye çalışıyorsunuz.\n\nAşağıdaki sürüm öznitelikleri değiştirilecek:\n";
				
				//figure out what we're doing to each revision. This is pretty clunky, but whatever.
				var deleteString = "";
				var revealString = "";
				var typeString = "revdel";
				
				if($("#revdelContent").prop("checked") == $("#undelContent").prop("checked"))
				{
					confirmString = confirmString + "-İçerik görünürlüğü değişmeyecek.\n";
				}
				else if($("#revdelContent").prop("checked"))
				{
					deleteString = "content";
					confirmString = confirmString + "-İçerik gizlenecek.\n";
				}
				else
				{
					revealString = "content";
					confirmString = confirmString + "-İçerik görünür olacak.\n";
				}
				if($("#revdelComment").prop("checked") == $("#undelComment").prop("checked"))
				{
					confirmString = confirmString + "-Değişiklik özeti görünürlüğü değişmeyecek.\n";
				}
				else if($("#revdelComment").prop("checked"))
				{
					if(deleteString != "")
					{
						deleteString = deleteString + "|";
					}
					deleteString = deleteString + "comment";
					confirmString = confirmString + "-Değişiklik özeti gizlenecek.\n";
				}
				else
				{
					if(revealString != "")
					{
						revealString = revealString + "|";
					}
					revealString = revealString + "comment";
					confirmString = confirmString + "-Değişiklik özeti görünür olacak.\n";
				}
				if($("#revdelName").prop("checked") == $("#undelName").prop("checked"))
				{
					confirmString = confirmString + "-Kullanıcı adı görünürlüğü değişmeyecek.\n";
				}
				else if($("#revdelName").prop("checked"))
				{
					if(deleteString != "")
					{
						deleteString = deleteString + "|";
					}
					deleteString = deleteString + "user";
					confirmString = confirmString + "-Kullanıcı adı gizlenecek.\n";
				}
				else
				{
					if(revealString != "")
					{
						revealString = revealString + "|";
					}
					revealString = revealString + "user";
					confirmString = confirmString + "-Kullanıcı adı görünür olacak.\n";
				}
				if(deleteString == "" && revealString == "")
				{
					alert("Sürümlerin değiştirilecek bir özelliğini seçmediniz!");
					return false;
				}
				
				var summary = "";
				
				//construct the revdel summary
				if($("#wpRevDeleteReasonList").val() == "other")
				{
					if($("#wpReason").val() == "")
					{
						alert("Günlükler için bir değişiklik özeti seçmediniz ya da yazmadınız!");
						return false;
					}
					summary = $("#wpReason").val();
				}
				else
				{
					summary = $("#wpRevDeleteReasonList").val();
					if($("#wpReason").val() != "")
					{
						summary = summary + ": " +  $("#wpReason").val();
					}
				}
				confirmString = confirmString + "\nSürüm gizleme özetiniz: "+ summary +"\n\nBunu yapmak istediğinizden emin misiniz?";
				
				if(confirm(confirmString))
				{
					var numCompleted = 0;
					for (title in pageTitles)
					{
						var ajaxData;
						ajaxData = {action:"revisiondelete",type:"revision",ids:pageTitles[title],reason:summary,token: mw.user.tokens.get( 'csrfToken' )};
						if(deleteString != "")
						{
							ajaxData.hide=deleteString;
						}
						if(revealString != "")
						{
							ajaxData.show=revealString;
						}
						$.post('/w/api.php/', ajaxData,function()
						{
							numCompleted++;
							if(numCompleted == numTitles)
							{
								alert( revCount + " sürüm başarıyla değiştirildi!");
								return false;
							}
						});
					}
				}
				return false;
			}
		)
		$("#oversightSubmit").click(
			function()
			{
				//figure out which revisions and pages we're working on.
				var revCount = 0;
				var numTitles = 0;
				var pageTitles = {};
				$("input.revdelIds:checked").each(function(ind)
				{
					revCount = ind + 1;
					if(ind > 49)
					{
						alert("Tek seferde 50 sayfadan fazlasında işlem yapamazsınız. İptal ediliyor.");
						return false;
					}
					if(typeof pageTitles[$(this).attr("name")] == "undefined")
					{
						pageTitles[$(this).attr("name")] = $(this).val();
						numTitles++;
					}
					else
					{
						pageTitles[$(this).attr("name")] = pageTitles[$(this).attr("name")] + "|" + $(this).val();
					}
				});
				if(numTitles == 0)
				{
					alert("Gizlenecek herhangi bir sürüm seçmediniz!");
					return false;
				}
				var confirmString = revCount + " sürümü değiştirmeye çalışıyorsunuz.\n\nAşağıdaki sürüm öznitelikleri değiştirilecek:\n";
				
				//figure out what we're doing to each revision. This is pretty clunky, but whatever.
				var deleteString = "";
				var oversighting = -1;
				
				if($("#revdelContent").prop("checked") == $("#undelContent").prop("checked"))
				{
					confirmString = confirmString + "-İçerik görünürlüğü değişmeyecek.\n";
				}
				else if($("#revdelContent").prop("checked"))
				{
					deleteString = "content";
					confirmString = confirmString + "-İçeriğe gözetmenlik uygulanacak.\n";
					oversighting = 1;
				}
				else
				{
					if(oversighting == 1)
					{
						alert("değişikliklere aynı anda gözetmen gizleme ve gözetmen gösterme işlemi uygulayamayız!");
						return false;
					}
					deleteString = "content";
					confirmString = confirmString + "-İçerik normal sürüm gizleme durumuna döndürülecek.\n";
					oversighting = 0;
				}
				if($("#revdelComment").prop("checked") == $("#undelComment").prop("checked"))
				{
					confirmString = confirmString + "-Değişiklik özeti görünürlüğü değişmeyecek.\n";
				}
				else if($("#revdelComment").prop("checked"))
				{
					if(oversighting == 0)
					{
						alert("değişikliklere aynı anda gözetmen gizleme ve gözetmen gösterme işlemi uygulayamayız!");
						return false;
					}
					if(deleteString != "")
					{
						deleteString = deleteString + "|";
					}
					deleteString = deleteString + "comment";
					confirmString = confirmString + "-Değişiklik özetine gözetmenlik uygulanacak.\n";
					oversighting = 1;
				}
				else
				{
					if(oversighting == 1)
					{
						alert("değişikliklere aynı anda gözetmen gizleme ve gözetmen gösterme işlemi uygulayamayız!");
						return false;
					}
					if(deleteString != "")
					{
						deleteString = deleteString + "|";
					}
					deleteString = deleteString + "comment";
					confirmString = confirmString + "-Değişiklik özeti normal sürüm gizleme durumuna döndürülecek.\n";
					oversighting = 0;
				}
				if($("#revdelName").prop("checked") == $("#undelName").prop("checked"))
				{
					confirmString = confirmString + "-Kullanıcı adı görünürlüğü değişmeyecek.\n";
				}
				else if($("#revdelName").prop("checked"))
				{
					if(oversighting == 0)
					{
						alert("değişikliklere aynı anda gözetmen gizleme ve gözetmen gösterme işlemi uygulayamayız!");
						return false;
					}
					if(deleteString != "")
					{
						deleteString = deleteString + "|";
					}
					deleteString = deleteString + "user";
					confirmString = confirmString + "-Kullanıcı adına gözetmenlik uygulanacak.\n";
					oversighting = 1;
				}
				else
				{
					if(oversighting == 1)
					{
						alert("değişikliklere aynı anda gözetmen gizleme ve gözetmen gösterme işlemi uygulayamayız!");
						return false;
					}
					if(deleteString != "")
					{
						deleteString = deleteString + "|";
					}
					deleteString = deleteString + "user";
					confirmString = confirmString + "-Kullanıcı adı normal sürüm gizleme durumuna döndürülecek.\n";
					oversighting = 0;
				}
				if(deleteString == "")
				{
					alert("Sürümlerin değiştirilecek herhangi bir özelliğini seçmediniz!");
					return false;
				}
				
				var summary = "";
				
				//construct the revdel summary
				if($("#wpRevDeleteReasonList").val() == "other")
				{
					if($("#wpReason").val() == "")
					{
						alert("Günlükler için bir değişiklik özeti seçmediniz ya da yazmadınız!");
						return false;
					}
					summary = $("#wpReason").val();
				}
				else
				{
					summary = $("#wpRevDeleteReasonList").val();
					if($("#wpReason").val() != "")
					{
						summary = summary + ": " +  $("#wpReason").val();
					}
				}
				confirmString = confirmString + "\nGözetmenlik özetiniz: "+ summary +"\n\nBunu yapmak istediğinizden emin misiniz?";
				
				if(confirm(confirmString))
				{
					var numCompleted = 0;
					for (title in pageTitles)
					{
						var ajaxData;
						ajaxData = {action:"revisiondelete",type:"revision",ids:pageTitles[title],reason:summary,token: mw.user.tokens.get( 'csrfToken' ),hide:deleteString};
						if(oversighting == 1)
						{
							ajaxData.suppress = "yes";
						}
						else if(oversighting == 0)
						{
							ajaxData.suppress = "no";
						}
						else
						{
							alert("Bir şeyler yanlış gitti, bu yüzden bir şey yapmadan işlemi durduracağız.");
						}
						$.post('/w/api.php/', ajaxData,function()
						{
							numCompleted++;
							if(numCompleted == numTitles)
							{
								alert( revCount + " sürüm başarıyla değiştirildi!");
								return false;
							}
						});
					}
				}
				return false;
			}
		)
	}
});