Kullanıcı:Mavrikant/TekTıkArşivleyici.js

Not: Sayfayı kaydettikten sonra değişiklikleri görebilmek için tarayıcınızın önbelleğinizi temizlemeniz gerekir. Google Chrome, Firefox, Microsoft Edge ve Safari: ⇧ Shift tuşuna basılı tutun ve Yeniden Yükle araç çubuğu düğmesine tıklayın. Ayrıntılar ve diğer tarayıcılara yönelik yönergeler için Vikipedi:Önbelleğinizi atlayın sayfasını inceleyin.
/* Orjinal kaynaktan                              */
/* 5 Haziran 2015                                 */
/* tarihinde alınıp Türkçeleştirilmiştir.         */
/* User:Equazcion/OneClickArchiver.js             */

if (($('#ca-addsection').length > 0) && (wgAction == 'view')){
	$('span.mw-headline').each(function(index, value){
		var editSectionUrl = $(this).parent().find('.mw-editsection a:first').attr('href');
		var sectionReg = /&section=(.*)/;
		var sectionRaw = sectionReg.exec(editSectionUrl);
		if ((sectionRaw != null) && (sectionRaw[1].indexOf('T') < 0)){
			
			var section = parseInt(sectionRaw[1]);
		
			if ($(this).parent().prop("tagName") == 'H2'){
			 
				$(this).parent('h2').append(' <div style="font-size:.6em;font-weight:bold;float:right"> | <a id="' + section + 
					'" href="#archiverLink" class="archiverLink">' + 'Arşivle' + '</a></div>');
					
				$(this).parent('h2').find('a.archiverLink').click(function(){
					
					var mHeaders = '<span style="color:#454545;">Başlıklar alınıyor...</span>';
					var mSection = 'Bölüm içeriği alınıyor...';
					var mPosting = '<span style="color:#004000"İçerik alındı,</span> düzenleme yapılıyor...';
					var mPosted = '<span style="color:#008000">Arşive eklendi...</span>';
					var mCleared = '<span style="color:#008000">Bölüm temizlendi...</span>';
					var mReloading = '<span style="color:#00008C">Herşey tamamlandı! </span>Yenileniyor...';
					
					$('body').append('<div class="overlay" style="background-color:#000;opacity:.4;position:fixed;' + 
						'top:0;left:0;width:100%;height:100%;z-index:500;"></div>');					
						
					$('body').prepend('<div class="arcProg" style="font-weight:bold;box-shadow: 7px 7px 5px #000;font-size:0.9em;line-height:1.5em;' + 
						'z-index:501;opacity:1;position:fixed;width:50%;left:25%;top:30%;background:#F7F7F7;border:#222 ridge 1px;padding:20px;"></div>');
						
					$('.arcProg').append('<div>' + mHeaders + '</div>');
					
					var request4 = {
						action:"query", 
						titles: wgPageName, 
						rvsection: 0,
						prop: "revisions|info", 
						intoken: "edit", 
						rvprop: "content",
						indexpageids: 1,
						dataType: "xml",
						format: "xml"
					};
			 
					$.get(mw.config.get("wgScriptPath")+"/api.php", request4, function(response4){
						
						var content = $(response4).find('rev').text();
						
						var regexObject3 = new RegExp('\\|counter ?= ?(\\d+)');
						var counter = regexObject3.exec(content);
						if ((counter == null) || (typeof counter == 'undefined')){
							$('.arcProg').remove();
							$('.overlay').remove();
							alert("Bu sayfada arşiv numarası bulunamadı. Arşivleme iptal edildi. Ayrıntılar için bakınız:  en:User:Equazcion/OneClickArchiver");
						} else {
							var archiveNum = counter[1];
							
							var archiveNameReg = /(\| *archive *= *.*.*?) *(-->)?/;
							var archiveNameRegMatch = archiveNameReg.exec(content);
							if ((archiveNameRegMatch == null) || (typeof archiveNameRegMatch == 'undefined')){
								$('.arcProg').remove();
								$('.overlay').remove();
								alert("Bu sayfada arşiv sayfası bulunamadı. Arşivleme iptal edildi. Ayrıntılar için bakınız:  en:User:Equazcion/OneClickArchiver");
							} else {
								
								var monthNames = ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"];
									
								var shortMonthNames = ["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"];
									
								var year = new Date().getFullYear();
								var month = new Date().getMonth();
								
								var archiveName = archiveNameRegMatch[1]
									.replace(/\|archive ?= ?/, '')
									.replace(/\%\(year\)d/g, year)
									.replace(/\%\(month\)d/g, month)
									.replace(/\%\(monthname\)s/g, monthNames[month])
									.replace(/\%\(monthnameshort\)s/g, shortMonthNames[month])
									.replace(/\%\(counter\)d/g, archiveNum);
									
								//https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Albert_Einstein&rvprop=size&format=xml
	
								$('.arcProg').append('<div>' + 'Arşiv: <span style="font-weight:normal;color:#003366;">' + archiveName + 
									'</span> <span style="darkgreen">bulundu</span>, ' + mSection + '</div>');
	
								var request5 = {
									action:"query", 
									titles: wgPageName, 
									rvsection: section,
									prop: "revisions|info", 
									intoken: "edit", 
									rvprop: "content",
									indexpageids: 1,
									dataType: "xml",
									format: "xml"
								};
						 
								$.get(mw.config.get("wgScriptPath")+"/api.php", request5, function(response5){
									
									$('.arcProg').append('<div>' + mPosting + '</div>');
								
									var contentSection = '\r\r' + $(response5).find('rev').text();
	
									var request1 = {
										action:"edit", 
										title: archiveName,
										appendtext: contentSection, 
										summary: '1 tartışma ekleniyor ([[Kullanıcı:Mavrikant/TekTıkArşivleyici|TekTıkArşivleyici]])',
										token: mw.user.tokens.get("editToken")
									};
									
									var request2 = {
										action:"edit", 
										section: section, 
										title: wgPageName, 
										text: "",
										summary: '1 tartışma [[' + archiveName + ']] sayfasına arşivlendi ([[Kullanıcı:Mavrikant/TekTıkArşivleyici|TekTıkArşivleyici]])',
										token: mw.user.tokens.get("editToken")
									};
									
									$.when(
										$.post(mw.config.get("wgScriptPath")+"/api.php", request1, function(response1){	
											$('.arcProg').append('<div class="archiverPosted">' + mPosted + '</div>'); }),
										$.post(mw.config.get("wgScriptPath")+"/api.php", request2, function(response2){	
											$('.arcProg').append('<div class="archiverCleared">' + mCleared + '</div>'); })
									 ).done(function() {
									 	$('.arcProg').append('<div>' + mReloading + '</div>');
									 	location.reload();
									 });
								});
							}
						}
					});
				});
			}
		}
	});
}