MediaWiki:Gadget-puntanoqui.js

Da Wikisource.

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)
  • Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
  • Opera: 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);