Kullanıcı:İnfoCan/maddegeçmişi.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.
//<pre>
//Bu fonksiyon soldaki Araçlar kutusuna bir "Madde geçmişi" bağlantısı ekler, buna tıklanınca
//tartışma sayfasının geçmişi aranıp {{MaddeGeçmişi}} şablonuna yarayabilecek olaylar aranır.
//Daha çok ayrıntı için tartışma sayfasına bakınız. Aşağıdaki betik [[en:User:Dr pda/articlehistory.js]]
//sayfasının kısmen Türkçeye çevirisidir.
//
//Bu fonksiyonu kullanmak için monobook.js dosyanıza {{subst:js|User:İnfoCan/maddegeçmişi.js}}
//veya 
// importScript('Kullanıcı:İnfoCan/maddegeçmişi.js');
//ekleyin.
function loadXMLDocAppendingId(url,handler,id)
{
    url=url+id;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        var req = new XMLHttpRequest();
    }
    // branch for IE/Windows ActiveX version
    else if (window.ActiveXObject) {
        var req = new ActiveXObject("Microsoft.XMLHTTP");
   }
   if (req) {
     req.onreadystatechange = function () {handler(req,id)};
     req.open("GET", url, true);
     req.send("");
   }
}

function getArticleOldid(req,id) {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
	 var response = req.responseXML.documentElement;
	 var rv = response.getElementsByTagName('rev');
	 var spannode = document.getElementById('oldid-'+id);
	 spannode.innerHTML = rv[0].getAttribute('revid');
	 var linode = document.getElementById(id);
	 linode.onclick='';
        } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}

function getArticleOldidManual(req,id) {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
	 var response = req.responseXML.documentElement;
	 var rv = response.getElementsByTagName('rev');
	 var spannode = document.getElementById('oldid-'+id);

	 var timestamp = rv[0].getAttribute('timestamp');
	 timestamp = timestamp.replace(/Z/g,'');
	 var prettytimestamp = timestamp.replace(/T/,', ');
	 timestamp = timestamp.replace(/[-T:]/g,'');
	 var idtime = id.substr(0,4)+'-'+id.substr(4,2)+'-'+id.substr(6,2)+', '+id.substr(8,2)+':'+id.substr(10,2)+':'+id.substr(12,2);
	 
	 var revid = rv[0].getAttribute('revid');
	 
	 spannode.innerHTML = ' '+idtime+' tarihinden önceki son versiyon '+prettytimestamp+' tarihindeydi, '+revid+' sürüm numarasıyla. <a href="/w/index.php?title='+articleName+'&action=history&offset='+id+'">Madde geçmişi</a> veya <a href="/w/index.php?title='+talkName+'&action=history&offset='+id+'">tartışma sayfası geçmişine</a> gitmek için bağlantılara tıklayınız.';
        } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}

function getHistoryMilestones(req) {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
	 var response = req.responseXML.documentElement;
	 var revList = response.getElementsByTagName('rev');
	 var prettylastcomment = '';
	 var lasttimestamp = '';
	 var prettylasttimestamp = '';

         if(revList.length > 0){
	   for(var i=0; i<revList.length; i++){
	     var comment = revList[i].getAttribute('comment');
	     //strip out headers i.e. /*...*/
             prettycomment='';
	     if(comment) prettycomment=comment.replace(/\/\*.*\*\//,'');
	     comment=prettycomment.toLowerCase();
	     var timestamp = revList[i].getAttribute('timestamp');
	     timestamp = timestamp.replace(/Z/g,'');
	     var prettytimestamp = timestamp.replace(/T/,', ');
	     timestamp = timestamp.replace(/[-T:]/g,'');
 
             var output = document.getElementById("article-milestones");
	     if(comment.match('{{') || comment.match(/seçkin/) || comment.match(/\bmadde\b/) || comment.match('sm.?başarısız') || comment.match('esm') ||comment.match('inceleme')|| comment.match(/\bsm\b/) || comment.match(/\bsma\b/) || comment.match(/\bsl\b/) || comment.match(/\bsla\b/) || comment.match(/\bsp\b/) || comment.match(/\bspa\b/) || comment.match(/\bspoa\b/) || comment.match(/\bkm\b/) || comment.match(/\bkma\b/) || comment.match(/\bkm.?başarısız\b/) || comment.match(/\bkm.?adayı\b/)|| comment.match('kaliteli madde') || comment.match(/\bkmadde\b/) ||  comment.match(/\bkmi\b/) || comment.match(/\bsmi\b/) || comment.match(/\bsmia\b/) || comment.match(/\bsl\b/) || comment.match(/\bslia\b/) || comment.match(/\bska\b/) || comment.match(/\bsk\b/) || comment.match(/ana.?sayfa/) || comment.match('bm') || comment.match(/\bsas\b/) || comment.match(/\bsam\b/) ||comment.match(/\badaylı/) || comment.match('ihraç')  ){
	       var milestone = document.createElement("li");
	       spanid='oldid-'+timestamp;
	       milestone.innerHTML='<b>'+prettytimestamp+'</b> '+prettycomment+' <span id='+spanid+'>(sürümno)</span>';
	       milestone.id=timestamp;
	       milestone.onclick=getArticleOldidWrapper;
	       output.appendChild(milestone);
             }
	     prettylastcomment = prettycomment;
	     lasttimestamp = timestamp;
	     prettylasttimestamp = prettytimestamp;
	   }
	   var getmore = document.getElementById("getmore");
	   getmore.innerHTML='(son okunan satır: <b>'+prettylasttimestamp+'</b> '+prettylastcomment+')';
           //Get more milestones, if any (if not, the program won't get here again)
           loadXMLDocAppendingId(talkQueryURL,getHistoryMilestones,'&rvstart='+(parseInt(lasttimestamp)-1))
          }
        }
	 else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}

function getArticleOldidWrapper(event) {
  loadXMLDocAppendingId(articleQueryURL,getArticleOldid,this.id)
}

function manualDate(event)
  {
  var mydate=prompt("eski sürüm numarasını istediğiniz tarihi girin","")
  if (mydate!=null && mydate!=""){
    var utc = Date.parse(mydate+' UTC');
    var d = new Date();
    d.setTime(utc);
    if((d.getUTCHours()+d.getUTCMinutes()) == 0){
      d.setUTCHours(23);
      d.setUTCMinutes(59);
      d.setUTCSeconds(59);
    }
    var timestamp ='';
    timestamp += d.getUTCFullYear();
    timestamp += (d.getUTCMonth()<9) ? '0'+(d.getUTCMonth()+1) : (d.getUTCMonth()+1);
    timestamp += (d.getUTCDate()<10) ? '0'+ d.getUTCDate() : d.getUTCDate();
    timestamp += (d.getUTCHours()<10) ? '0'+ d.getUTCHours() : d.getUTCHours();
    timestamp += (d.getUTCMinutes()<10) ? '0'+ d.getUTCMinutes() : d.getUTCMinutes();
    timestamp += (d.getUTCSeconds()<10) ? '0'+ d.getUTCSeconds() : d.getUTCSeconds();

    var dateoldid = document.createElement("p");
    dateoldid.id = 'oldid-'+timestamp;
    output.parentNode.insertBefore(dateoldid,enterdate.nextSibling); 
    loadXMLDocAppendingId(articleQueryURL,getArticleOldidManual,timestamp)
    }
  }

function getArticleHistory(){

 output = document.createElement("ul");
 output.id = "article-milestones";

 var dummy = document.getElementById("siteSub");
 dummy.parentNode.insertBefore(output, dummy.nextSibling);

 var getmore = document.createElement("p");
 getmore.id = 'getmore';
 output.parentNode.insertBefore(getmore,output.nextSibling); 

 enterdate = document.createElement("p");
 enterdate.id = 'enterdate';
 enterdate.innerHTML='<span style="background-color:lightblue;font-weight:bold;">Tarihi elle girmek için burayı tıklayın</span>';
 enterdate.onclick = manualDate;
 output.parentNode.insertBefore(enterdate,getmore.nextSibling); 

 articleName = wgTitle;
 //Handle special characters characters, including puncutation, in URL
 articleName = encodeURIComponent(articleName);
 talkName = 'Talk:'+articleName;
 //correctly handle article name when on a Talk page archive
 var archiveIndex = articleName.toLowerCase().indexOf("/archive");
 articleName = (archiveIndex == -1) ? articleName : articleName.substring(0,archiveIndex);

 talkQueryURL = '/w/api.php?action=query&prop=revisions&titles='+talkName+'&rvlimit=500&rvprop=ids|timestamp|comment&format=xml';
 articleQueryURL = '/w/api.php?action=query&prop=revisions&titles='+articleName+'&rvlimit=500&rvprop=ids|timestamp|comment&format=xml&rvstart=';
 loadXMLDocAppendingId(talkQueryURL,getHistoryMilestones,'');
}

$(function () {
    mw.util.addPortletLink('p-tb', 'javascript:getArticleHistory()', 'Madde geçmişi', 't-madde-geçmişi', 'Tartışma sayfasında MaddeGeçmişi şablonu için faydalı olan olayları  ara', '', '');
});

//</pre>