Benutzer:Schnark/js/personendaten.js/normdaten.js
Erscheinungsbild
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> <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>