MediaWiki:Gadget-puntanoqui.js
Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.
- Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
- Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
- Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5.
(function($,mw) {
/** toglie l'articolo all'inizio del titolo (se presente) */
function removeInitialArticle(titolo) {
titolo = titolo.replace(/^L(a |o |e |')/, '').replace(/^Un(a |o |'| )/, '').replace(/^Gli /, '').replace(/^Il? /, '');
return titolo.substring(0, 1).toUpperCase() + titolo.substring(1);
}
// link alle pagine che trascludono questa pagina
if (mw.config.get( 'wgCanonicalNamespace' ) == "Page") {
mw.loader.using("mediawiki.api", function() {
var api = new mw.Api();
api.get({
action: 'query',
format: 'json',
list: 'embeddedin',
einamespace: '0',
eititle: mw.config.get("wgPageName")
}).done(function (data) {
var linkedNs0= data.query.embeddedin;
//debugger;
if (linkedNs0.length == 0) {
if ($('.prp-page-qualityheader.quality4').length || $('.prp-page-qualityheader.quality3').length) {
$('.quality-msg-text').append(' <span style="color:red">Non è stata <a href="https://it.wikisource.org/wiki/Aiuto:Transclusione" style="color: red; font-weight: bold">trasclusa</a> nel namespace principale (<a href="/wiki/Aiuto:Transclusione_proofread" style="font-weight: bold">guida</a>).</span>');
}
}
else {
for (var i = 0; i < linkedNs0.length; i += 1) {
var li = document.createElement( 'li' );
li.setAttribute( 'id', 'ca-ns0_' + i );
li.setAttribute( 'class', 'icon vector-tab-noicon mw-list-item' );
var $la = document.createElement( 'a' );
$la.setAttribute( 'href', '' + mw.util.getUrl( linkedNs0[i].title ) +
"#pagename" +
mw.config.get( "wgPageName" ).substring( mw.config.get("wgPageName").lastIndexOf("/") + 1 ));
$la.setAttribute( 'title', 'Pagina transclusa in ' +
linkedNs0[i].title );
$la.setAttribute( 'data-mw', 'interface' );
var $img = document.createElement( 'img' );
$img.setAttribute( 'src', '//upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Book_icoline.svg/25px-Book_icoline.svg.png' );
$img.setAttribute( 'width', 25 );
$img.setAttribute( 'height', 15 );
$la.appendChild( $img );
li.append( $la );
document.getElementById( 'ca-proofreadPageIndexLink' ).before( li );
}
}
});
});
}
// link alle pagine Opera e Disambigua
else if (mw.config.get( 'wgNamespaceNumber') === 0) {
var notaDisambiguaGiaPresente = $('#notaDisambigua').length > 0;
if (!notaDisambiguaGiaPresente) {
$('.quality-ns0').before('<div id="notaDisambigua" class="noprint ws-noexport"></div>');
}
var titolo = mw.config.get( 'wgPageName' );
if (titolo.indexOf('/') > 0) {
titolo = titolo.substring(titolo.lastIndexOf('/') + 1);
}
var titoloSenzaParentesi = titolo.replace(/_/g, ' ').replace(/\(.*?\)/, '').trim();
var titoloSenzaArticolo = removeInitialArticle(titoloSenzaParentesi);
mw.loader.using("mediawiki.api", function() {
var api = new mw.Api();
api.get({
action: 'query',
format: 'json',
list: 'categorymembers',
cmnamespace: '0',
cmtitle: 'Category:Disambigua',
cmlimit: 5000
}).done(function (data) {
var allDisambig = data.query.categorymembers;
api.get({
action: 'query',
format: 'json',
prop: 'linkshere',
lhnamespace: '0|112',
titles: mw.config.get("wgPageName"),
lhlimit: 5000
}).done(function (data) {
var foundOpera = false;
$.each(data.query.pages, function(k, v) {
if (v.linkshere) {
for (var i = 0; i < v.linkshere.length; i++) {
var page = v.linkshere[i];
if (page.ns == 112) {
foundOpera = true;
}
}
}
});
$.each(data.query.pages, function(k, v) {
if (v.linkshere) {
for (var i = 0; i < v.linkshere.length; i++) {
var page = v.linkshere[i];
if (page.ns == 112) {
if (notaDisambiguaGiaPresente) {
$('#notaDisambigua').empty();
notaDisambiguaGiaPresente = false;
}
var add = true;
if ($('#link-to-opera').length > 0) {
// non aggiungere altri link ad Opera se ce n'è già uno
add = false;
// ma se il nuovo link corrisponde allla parte iniziale del titolo della pagina, allora sostituiscilo a quello già presente
var disambigSenzaArticolo = removeInitialArticle(page.title.replace('Opera:', ''));
add = disambigSenzaArticolo.startsWith(titoloSenzaArticolo);
}
if (add) {
$('#link-to-opera').remove();
$('#notaDisambigua').append('<div id="link-to-opera">Vedi le <a href="' + mw.util.getUrl(page.title.replace(/ /g, '_')) + '">edizioni disponibili</a> di questo testo.</div>');
}
} else {
for (var j = 0; j < allDisambig.length; j++) {
if (allDisambig[j].title == page.title) {
if (notaDisambiguaGiaPresente) {
$('#notaDisambigua').empty();
notaDisambiguaGiaPresente = false;
}
// se non ci sono altre disambigue e non ci sono opere, aggiungiamo direttamente questa disambigua
// altrimenti la aggiungiamo solo se il suo titolo corrisponde alla parte iniziale del titolo della pagina
var add = true;
if ($('#link-to-disambigua').length > 0 || foundOpera) {
var disambigSenzaArticolo = removeInitialArticle(allDisambig[j].title);
add = titoloSenzaArticolo.startsWith(disambigSenzaArticolo);
}
if (add) {
$('#link-to-disambigua').remove();
$('#notaDisambigua').append('<div id="link-to-disambigua">Ci sono <a href="' + mw.util.getUrl(page.title.replace(/ /g, '_')) + '">altri testi con titolo simile</a>.</div>');
}
}
}
}
}
}
});
});
});
});
}
})($,mw);