Участник:Kalan/templatecat.js

Материал из Википедии — свободной энциклопедии
// Highlight template-generated categories
// Redefine a.templatecat to change links' appearance

function templateCat() {
  var catlinks = document.getElementById('mw-normal-catlinks')
  if (!catlinks) return
  var categories = catlinks.getElementsByTagName('a')
  if (categories.length < 2) return

  var ns14 = categories[1].title.match(/^[^:]+/)[0]
  var reg = '\\[\\[[ _]*(Category|' + ns14 + ')[ _]*:[ _]*(.*?)[ _]*(\\|.*?)?\\]\\]'
  appendCSS('.templatecat { border-bottom: 2px solid }')

  var aj = sajax_init_object()
  aj.onreadystatechange = function() {
    if (aj.readyState != 4 || aj.status != 200) return
    textcats = aj.responseText.match(new RegExp(reg, 'g'))
    if (!textcats) textcats = []
    for (var i=0; i<textcats.length; i++) {
      textcats[i] = textcats[i].match(new RegExp(reg))[2]
                   .replace(/[ _]+/g, ' ')
                   .replace(/^(.)/, function(z,a){ return a.toUpperCase() })
    }
    textcats = '|' + textcats.join('|') + '|'

    for (i=1; i<categories.length; i++)
      if (textcats.indexOf('|' + categories[i].innerHTML + '|') == -1)
        categories[i].className = 'templatecat'
    categories[0].className = 'templatecat'
  }
  aj.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?action=raw&title=' +
                 encodeURIComponent(mw.config.get('wgPageName')), true)
  aj.send('')
}

if (mw.config.get('wgNamespaceNumber') >= 0 && mw.config.get('wgAction').match(/view|purge|edit|submit/)) addOnloadHook(templateCat)