Участник:Valodzka/iProject.js

//<source  lang="javascript">
function getElementsByClass(searchClass,node,tag) {
  var classElements = [];
  if ( node == null )
    node = document;
  if ( tag == null )
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;

  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j++] = els[i];
    }
  }
  return classElements;
}

function ce(name) { 
  return document.createElement(name) 
}  

function createNewElement(toAppend) {
  var newElement = ce("div")
  newElement.style.marginTop = "0.7em"
  var header = ce('h5')
  header.innerHTML = 'смотри также'
  var body = ce('div')
  body.className = 'pBody'    
  
  document.getElementById("p-tb").appendChild(newElement)
  newElement.appendChild(header)
  newElement.appendChild(body)
  body.appendChild(toAppend)

  return newElement
}

function iProject2() {
  var listElement = document.createElement("ul")
  var codeNames = ['wikiquote', 'wikinews', 'wikisource', 'wikidict', 'wikibooks', 'wikispice', 'wiki-meta', 'wikicommons']
  var displayNames = ['Викицитатник', 'Викиновости', 'Викитека', 'Викисловарь', 'Викиучебник', 'Викивиды', 'Метавики', 'Викисклад']  
  var linsk = []
  var toHide = []
  var ne = null
 
  // Проекты
  for (var i in codeNames) {  
    var iProjects = getElementsByClass(codeNames[i] + "-ref")    
    toHide = toHide.concat(getElementsByClass(codeNames[i] + "-box"))
    if (iProjects.length != 0) {
      var li = ce('li')
      li.innerHTML = '<a href="/wiki/' + encodeURIComponent (displayNames[i]) + '" title="' + displayNames[i] + '">' + displayNames[i] + '</a>'
      ne || (ne = createNewElement(listElement))
      listElement.appendChild(li)
      var ul = ce('ul')
      li.appendChild(ul)
      for (var j in iProjects) {
        var li2 = ce('li')
        ul.appendChild(li2)
        li2.appendChild(iProjects[j].getElementsByTagName('a')[0].cloneNode(true))
      }      
    }
  }
  // Порталы
  var portals = getElementsByClass("portal-box")   
  toHide = toHide.concat(portals)
  if (portals.length != 0) {
    var li = ce('li')
    var ul = null
    ne || (ne = createNewElement(listElement))
    listElement.appendChild(li)
    // Если порталов больше одного, то добавляем секцию "Порталы"
    if (portals.length > 1) {
      ul = ce('ul')
      li.innerHTML ='<a href="/wiki/' + encodeURIComponent ('Портал:Обзор') + '" title="Портал:Обзор">Порталы</a>'
      li.appendChild(ul)    
    }
    
    
    for (var i in portals) {      
      // Пытаемся получить ссылку на портал
      var portalRefs = portals[i].getElementsByTagName('a')    
      var  portalRef = (portalRefs[0].getElementsByTagName('img').length == 0 ? portalRefs[0] : portalRefs[1]).cloneNode(true)
      var text =  portalRef.innerHTML

      // Если в ссылке не описанно, что это портал - берём в кавычки и добавляем слово "Портал"
      if (text.indexOf("портал") == -1 && text.indexOf("Портал") == -1) {
        if (text.indexOf("«")) {  text = "«" + text + "»" }
        text = "Портал " + text
      }
      portalRef.innerHTML = text
      if (portals.length > 1) {
        var li2 = ce('li')
        ul.appendChild(li2)
        li2.appendChild(portalRef)
      }
      else {
        li.appendChild(portalRef)    
      }
    }    
  }
  
  var nav = document.getElementById('navigation-box')
  if (nav)
    toHide.push(nav)
  // Скрываем старую навигацию
  for (var i in toHide) {
    toHide[i].style.display = 'none'
  }
}
 
 hookEvent("load", iProject2);
//</source >
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya