Zum Inhalt springen

Benutzer:Schnark/js/personendaten.js/normdaten.js

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 8. März 2011 um 10:59 Uhr durch Schnark (Diskussion | Beiträge) (Neues Skript: Erweiterung für personendaten.js zur Bearbeitung der Normdaten). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//<nowiki>
personendaten.version += '/nd-0.1';
personendaten.extensions.normdaten = {
pnd: '', lccn: '', viaf: '', sonstige: '',
pnd_sugg0: [], pnd_sugg1: [],

add_link: function () {return '<a href="http://www.viaf.org/viaf/search?query=local.names+all+%22' +
                                         encodeURIComponent(mw.config.get('wgTitle').replace(/ \(.*$/, '')) +
                                         '%22&stylesheet=/viaf/xsl/results.xsl&sortKeys=holdingscount" ' +
                                         'title="Suche nach VIAF (in neuem Tab)" target="_blank">VIAF</a>' + ' • ' +
                              '<a href="https://portal.d-nb.de/opac.htm?method=simpleSearch&query=' +
                                         encodeURIComponent(mw.config.get('wgTitle').replace(/ \(.*$/, '')).replace(/%20/g, '+') +
                                         '" title="Suche nach PND (in neuem Tab)" target="_blank">DNB</a>';},
add_row: function () { //zusätzliche Zeilen im Formular
return '<tr><td><code>PND</code></td><td><input id="ND_PND" value="" size="70" /></td><td><span id="pnd_sugg"></span>&nbsp;<a href="javascript:personendaten.extensions.normdaten.show_pnd();" title="Datensatz zu dieser PND-Nummer (in neuem Tab)">?</a></td></tr>' +
'<tr><td><code>LCCN</code></td><td><input id="ND_LCCN" value="" size="70" /></td><td><a href="javascript:personendaten.extensions.normdaten.show_lccn();" title="Datensatz zu dieser LCCN-Nummer (in neuem Tab)">?</a></td></tr>' +
'<tr><td><code>VIAF</code></td><td><input id="ND_VIAF" value="" size="70" /></td><td><a href="javascript:personendaten.extensions.normdaten.show_viaf();" title="Datensatz zu diser VIAF-Nummer (in neuem Tab)">?</a></td></tr>' +
'<tr><td><code>SONSTIGE</code></td><td><input id="ND_SONSTIGE" value="" size="70" /></td><td></td></tr>';
},
save_data: function () { //gespeicherte Daten auslesen
  pen = personendaten.extensions.normdaten;
  pen.pnd = $('#ND_PND').val();
  pen.lccn = $('#ND_LCCN').val();
  pen.viaf = $('#ND_VIAF').val();
  pen.sonstige = $('#ND_SONSTIGE').val();
},
parse_text: function (text) { //zusätzliche Parse-Funktion
  pen = personendaten.extensions.normdaten;
  var nd = personendaten.extrahiere(/\{\{Normdaten\s*\|([^}]*)\}\}/, text);
  pen.pnd = personendaten.extrahiere(/PND=([^|]*)/, nd);
  pen.lccn = personendaten.extrahiere(/LCCN=([^|]*)/, nd);
  pen.viaf = personendaten.extrahiere(/VIAF=([^|]*)/, nd);
  pen.sonstige = nd.replace(/PND=[^|]*\|?/, '').replace(/LCCN=[^|]*\|?/, '').replace(/VIAF=[^|]*\|?/, '');
  pen.pnd_sugg0.push(['-Vorschläge-', pen.pnd]);
  var pnd = personendaten.extrahiere(/\{\{DNB-Portal\|([^|}]*)/, text);
  if (pnd != '' && pnd != pen.pnd) pen.pnd_sugg0.push(['{{DNB-Portal}}', pnd]);
  pnd = personendaten.extrahiere(/\{\{PND\|([^|}]*)/, text);
  if (pnd != '' && pnd != pen.pnd) pen.pnd_sugg0.push(['{{PND}}', pnd]);
},
change_text: function (text) { //zusätzliche Funktion zum Ändern des Textes
  pen = personendaten.extensions.normdaten;
  text = text.replace(/\n*\{\{Normdaten\s*\|[^}]*\}\}/, ''); //alte Normdaten entfernen
  var nd = '{{Normdaten';
  if (pen.pnd != '') nd += '|PND=' + pen.pnd;
  if (pen.lccn != '') nd += '|LCCN=' + pen.lccn;
  if (pen.viaf != '') nd += '|VIAF=' + pen.viaf;
  if (pen.sonstige != '') nd += '|' + pen.sonstige;
  nd += '}}';
  if (nd == '{{Normdaten}}') return text;
  var pos = text.indexOf('{{SORTIERUNG');
  if (pos == -1) pos = text.indexOf('[[Kategorie:');
  if (pos == -1) pos = text.indexOf('{{Personendaten');
  if (pos == -1) pos = text.length;
  return text.substr(0, pos) + nd + '\n\n' + text.substr(pos);
},
auto_run: function () { //nach Anzeigen des Formulares
  pen = personendaten.extensions.normdaten;
  $('#ND_PND').val(pen.pnd);
  $('#ND_LCCN').val(pen.lccn);
  $('#ND_VIAF').val(pen.viaf);
  $('#ND_SONSTIGE').val(pen.sonstige);
//  if (pen.pnd == '') {
     pen.start_apper();
     $('#PD_NAME').change(pen.start_apper);
//  }
},

start_apper: function () {
  var url = 'http://tools.wikimedia.de/~apper/pndtest/test.php?name='; //aus </nowiki>[[Benutzer:APPER/PNDJS]]<nowiki>
  url += encodeURI($('#PD_NAME').val()) + '&rand=' + Math.floor(Math.random()*1000000);
  if (mw.config.get('wgServer') == 'http://localhost')
     addPNDoffer("<a href=\"http://dispatch.opac.d-nb.de/DB=4.1/PPN?PPN=130586552\">Brooks, Albert (1947-)</a><br /><a href=\"http://dispatch.opac.d-nb.de/DB=4.1/PPN?PPN=118529579\">Einstein, Albert (1879-1955)</a>")
  else
     mw.loader.load(url);
},
add_suggestions: function () {
  var select = '<select size="1" onchange="personendaten.extensions.normdaten.suggestion(this)">';
  var sugg = personendaten.extensions.normdaten.pnd_sugg0.concat(personendaten.extensions.normdaten.pnd_sugg1);
  for (var i = 0; i < sugg.length; i++)
      select += '<option value="' + sugg[i][1] + '">' + sugg[i][0] + '</option>';
  select += '</select>';
  select += ' (' + (sugg.length - 1) + ')';
  $('#pnd_sugg').html(select);
},
suggestion: function (wahl) {
   $('#ND_PND').val(wahl.options[wahl.options.selectedIndex].value).change();
},

show_pnd: function () {
   var url = 'http://d-nb.info/gnd/';
   url += $('#ND_PND').val();
   open(url);
},
show_lccn: function () {
   alert('Diese Funktion ist noch nicht implementiert!');
},
show_viaf: function () {
   var url = 'http://viaf.org/viaf/';
   url += $('#ND_VIAF').val();
   open(url);
}

};

function addPNDoffer (offer) {
  offer = offer.split('<br />');
  var pen = personendaten.extensions.normdaten;
  pen.pnd_sugg1 = [];
  for (var i = 0; i < offer.length; i++) {
      var pnd = personendaten.extrahiere(/PPN=([^"]*)/, offer[i]);
      var text = personendaten.extrahiere(/>([^<]*)</, offer[i]);
      pen.pnd_sugg1.push([text, pnd]);
  }
  pen.add_suggestions();
}
//</nowiki>