Benutzer:APPER/PNDJS

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
// Dieses JS sucht für Artikel mit Personendaten aber ohne PND nach dieser. 
// Wird etwas vielversprechendes gefunden, wird es in den Personendaten angezeigt, 
//kann gecheckt werden und sollte dann natürlich ergänzt werden.

function searchForPND()
{
 // only in articles
 if (wgNamespaceNumber == 0)
 {
   // search for GND-Link
   sitetext = document.getElementById('bodyContent').innerHTML;
   if ((sitetext.indexOf("dispatch.opac.d-nb.de") == -1) && (sitetext.indexOf("dispatch.opac.ddb.de") == -1) && (sitetext.indexOf("d-nb.info") == -1))
   {
     // now search for GND: name is needed
     RegExpForName = />NAME<\/td>[^<]*<td[^>]*>([^<]+)<\/td>/i;
     if(RegExpForName.exec(sitetext))
     {
       // there are persondata...
       name = RegExp.$1;
       // now search for a pnd! (as long as there is no way for cross-site ajax...)
       var pndJS = document.createElement('script');
       pndJS.type = 'text/javascript';
       pndJS.src = '//tools.wmflabs.org/persondata/service/gndsearch.php?callback=addPNDoffer&name=' + encodeURIComponent(name) + '&rand=' + Math.floor(Math.random()*1000000);
       document.getElementsByTagName('head')[0].appendChild(pndJS);
     }
   }
 }
}

function addPNDoffer(offer)
{
 links = document.getElementsByTagName("a");
 for(i=0;i<links.length;i++)
 {
   if (links[i].href.indexOf("/wiki/Hilfe:Personendaten") > -1)
   {
     var output = [];
     for (var s in offer) output.push("<a href='http://d-nb.info/gnd/" + s + "/'>" + offer[s] + "</a>");
     output = output.join("
");
     row = document.createElement("TR");
     cell1 = document.createElement("TD");
     cell1.innerHTML = "GND?";
     cell1.className = "metadata-label";
     cell2 = document.createElement("TD");
     cell2.innerHTML = output;
     row.appendChild(cell1);
     row.appendChild(cell2);
     
     links[i].parentNode.parentNode.parentNode.insertBefore(row, links[i].parentNode.parentNode.nextSibling);
   }
 }
}

addOnloadHook( searchForPND );