See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
User:Alex Smotrov/histcomb.js - Wikipedia, the free encyclopedia

User:Alex Smotrov/histcomb.js

From Wikipedia, the free encyclopedia

Note: After saving, you have to bypass your browser's cache to see the changes. In Internet Explorer and Firefox, hold down the Ctrl key and click the Refresh or Reload button. Opera users have to clear their caches through Tools→Preferences, see the instructions for Opera. Konqueror and Safari users can just click the Reload button.

var histComb = new function(){
 
if (!window.histCombTalk) histCombTalk = 't'
if (!window.histCombContrib) histCombContrib = 'c'
if (!window.histCombMyBg) histCombMyBg = '#F0FFF0'
 
var pagehis,  histRow, histSize, isCombEdits = false
 
 
this.onLoad = function(){
 
 pagehis = document.getElementById('pagehistory') 
 if (!pagehis) return
 histRow = pagehis.getElementsByTagName('li')
 histSize = new Array (histRow.length)
 var row, spans, i, aa, author, author_p = '', size_digits  
 var sameAuthor = 0, thisMinor, allMinor = true
 
 for (var rr=histRow.length-1; rr>=0; rr--){ //main loop: all rows bottom to top
  row = histRow[rr]
  thisMinor = false
  spans = row.getElementsByTagName('span')
  //check all spans
  for (i=0; i<spans.length; i++)
    switch (spans[i].className){
    case 'history-size':
      size_digits = spans[i].innerHTML.match(/\d+/g)
      histSize[rr] = size_digits ? size_digits.join('') : '0'
      if (histSize[rr+1]){ 
        spans[i].title = spans[i].innerHTML.replace(/&nbsp;/g,' ')
        insertDiffValue(spans[i], histSize[rr] - histSize[rr+1])
      }
      break
    case 'minor':
      thisMinor = true
      break
    case 'history-user': // get user name and shorten talk/contribs
      aa = spans[i].getElementsByTagName('a')
      author = aa[1].title.split(':')[1]
      aa[1].innerHTML = histCombTalk 
      if (aa.length >= 3 && (aa[2].title.indexOf(':Contributions/') != -1)) //for anons this could be 'block'
        aa[2].innerHTML = histCombContrib 
      break
    case 'mw-history-undo':
      aa = spans[i].getElementsByTagName('a')[0]
      aa.title = aa.innerHTML 
      aa.innerHTML = '×'
      break
    //case 'comment':  histSumm = spans[i].innerHTML  break 
    }//end switch inside for 
 
    if (!histSize[rr] && histSize[rr+1]) histSize[rr] = histSize[rr+1] //assume it was '(un)protect' edit
 
  if (wgUserName == author) histRow[rr].style.backgroundColor = histCombMyBg
  //check how many consequent edits
  if (author == author_p) 
    sameAuthor++
  else {
    if (sameAuthor > 1) createCombineEdit(rr+1, sameAuthor, allMinor)
    sameAuthor = 1 
    author_p = author
    allMinor = thisMinor
  }
  if (!thisMinor) allMinor = false
 }//main loop
 
 //collapse top editor too
 if (sameAuthor>1) {
   createCombineEdit(0, sameAuthor, allMinor)
   if (histRow.length > sameAuthor && !window.histCombNoCollapse) //if collapsing top row - make  next row selected
     histRow[sameAuthor].getElementsByTagName('input')[0].click()
 }
 
 //add  "expand/collapse all" link
 if (isCombEdits) { 
   var togAll = document.createElement('a')
   togAll.appendChild(document.createTextNode('[±]'))
   togAll.href = 'javascript:histComb.toggleAll()'
   pagehis.parentNode.insertBefore(togAll, pagehis.previousSibling)   
 }
 
 
 //bonus: link to toоlserver
 var lnk = document.createElement('a')
 lnk.style.marginLeft = '20px'
 lnk.href = 'http://tools.wikimedia.de/~daniel/WikiSense/Contributors.php?'
  +'wikilang='+wgServer.substring(wgServer.lastIndexOf('/')+1, wgServer.indexOf('.'))
  +'&wikifam='+wgServer.substring(wgServer.indexOf('.'))
  +'&grouped=on&order=-edit_count&page='+encodeURIComponent(wgPageName)
 lnk.appendChild(document.createTextNode('Contributors'))
 lnk.title = 'All authors sorted by edits (on toolserver)'
 if (i=document.getElementById('contentSub')) i.appendChild(lnk)
 
 
}
 
 
this.toggleAll = function(){
 var links = getElementsByClassName(pagehis, 'a', 'collapsedEdits')
 var state = (links[0].innerHTML == '[–]')
 for (var i=0; i<links.length; i++)
   if (state == (links[i].innerHTML == '[–]'))
     eval(links[i].href)
}
 
 
this.toggle = function (m, len, isMinor){ //handler for collapsing link
 var row = histRow[m]
 var spans = row.getElementsByTagName('span')
 var plus = row.lastChild
 var radios = row.getElementsByTagName('input')
 var topDiff = row.getElementsByTagName('a')[ m > 0 ? 1 : 0] // "diff to last" in the combined edit
 var i, clss, bottomDiff, oldid
 var isHiding = (plus.innerHTML == '[–]')
 if (isHiding) {//need to collapse −
   plus.innerHTML = '[' + len + ']'
   row.style.borderLeft = '1px solid transparent'
   //hide other rows
   for (i=m+1; i<m+len; i++) histRow[i].style.display = 'none'
   //"diff from last" link: get oldid from the lowest collapsed edit
   bottomDiff = histRow[m+len-1].getElementsByTagName('a')[1].href
   if (bottomDiff.indexOf('&diff=') == -1)  topDiff.style.visibility = 'hidden' //the very 1st edit
   oldid = bottomDiff.match(/oldid=(\d+)/)[1]
   topDiff['old'] = topDiff.href
   topDiff.href = topDiff.href.replace(/&oldid=\d+/, '&oldid='+oldid)
 }else{ //need to expand
   plus.innerHTML = '[–]'
   //show other rows and visually reference the whole group
   row.style.borderLeft = '1px dotted gray'
   for (i=m+1; i<m+len; i++){
     histRow[i].style.display = 'block'
     histRow[i].style.borderLeft = '1px dotted gray'
     histRow[i].style.listStyle = 'none none'
   }
   histRow[m+len-1].style.borderBottom = '1px dotted gray'
   topDiff.href = topDiff['old']
   topDiff.style.visibility = 'visible'
 }
 //hide/show/modify spans in this row
 for (i=0; i<spans.length; i++)
   switch (spans[i].className.split(' ')[0]){
   case 'minor':
     spans[i].style.display = (isHiding && !isMinor)?'none':'inline'
     break
   case 'history-size': //switch to  combined diff size and back
     insertDiffValue(spans[i], histSize[m] - (isHiding ? histSize[m+len] : histSize[m+1]))
     break
   case 'comment': //hide/show
     spans[i].style.display = (isHiding && !window.histCombLeaveComment)?'none':'inline'
     break
   case 'mw-history-undo':
     var undoLnk = spans[i].getElementsByTagName('a')[0]
     if (isHiding) {
       undoLnk['old'] = undoLnk.href
       undoLnk.href = undoLnk.href.replace(/&undoafter=\d+/, '&undoafter='+oldid)
     }else
       undoLnk.href = undoLnk['old']
     break
   //case 'history-user':
 }
}
 
 
function createCombineEdit(m, len, isMinor){ //creates collapsing link for row m down to row m+len
 var row = histRow[m]
 row.style.listStyle = 'none none'
 row.style.position = 'relative'
 var plus = document.createElement('a')
 plus.className = 'collapsedEdits'
 plus.appendChild(document.createTextNode('[–]'))
 plus.style.position = 'absolute'
 plus.style.left = '-22px'
 plus.style.top = '2px'
 plus.href = 'javascript:histComb.toggle('+m+','+len+','+isMinor+')'
 row.appendChild(plus)
 if (!window.histCombNoCollapse) histComb.toggle(m, len, isMinor) //and collapse
 isCombEdits = true
 
 //unexplained IE bug: in row just under collapsed edit  radios were jumping to the left, links were unclickable
 if (navigator.userAgent.indexOf('MSIE') != -1 && m+len < histRow.length){ //make all elements 'relative'
  var els = histRow[m+len].getElementsByTagName('*')
  for (i=0; i<els.length; i++)  
     if (els[i].style && !els[i].style.position) els[i].style.position = 'relative'
 }
}
 
 
function insertDiffValue(span, value){
 var html, class2
 if (value>0) {
  html = '(+' + value + ')'
  class2 = ' mw-plusminus-pos'
 } else if (value<0) {
  html = '(' + value + ')'
  class2 = ' mw-plusminus-neg'
 } else {
  html = '(0)'
  class2 = ' mw-plusminus-null'
 }
 span.style.fontWeight = (value < -500) ? 'bold' : 'normal'
 span.innerHTML = html
 span.className = span.className.split(' ')[0] + class2
}
 
}//obj
 
if (doneOnloadHook) histComb.onLoad()
else if (wgAction == 'history') addOnloadHook(histComb.onLoad)


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -