MediaWiki:Condivisione articoli.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)
- Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
- Opera: premi Ctrl-F5.
/*
* Questo script visualizza (solo per gli articoli pubblicati)
* le icone di condivisione contenute nel template Di_la_tua
* e per default nascoste con 'display:none'
*
* Inoltre fornisce un dialog
* che restituisce il codice da copiare
* per linkare l'articolo.
*
*/
( function scriptWrapper() {
// mostra un dialog che fornisce il codice da copiare
function showHtmlForm() {
// costruisce il testo di un <a href ...>
function getLink( href, text, hint ) {
return '<a href="' + href + '"\n'
+ 'target="_blank"'
+ ( typeof hint == 'string'
? '\ntitle="' + hint + '"'
: ''
)
+ '>' + text + '</a>';
}
// HTML del dialog
function getHtmlDialog() {
var
dottedStyle = 'style="border: 1px dotted black; padding: 1em; margin: .5em 0;"',
dottedStylePre = dottedStyle.replace ( '="', '="white-space: pre-line; overflow: auto; ' ),
hr = '<hr style="margin: .5em 0;">';
return $( '<div>' )
.append( '\
Qui sotto puoi vedere il codice HTML da utilizzare per inserire \n\
il link alla notizia sul tuo sito personale o negli altri casi in cui è possibile utilizzare \n\
un link HTML, per esempio in un commento su un blog.' )
.append( '<div id="link-type" style="margin-top: 1em; font-weight: bold;">' )
.append( '<div ' + dottedStylePre + '><code id="html-link">' )
.append( '<br />E questo sarà il risultato:' )
.append( '<div id="html-sample" ' + dottedStyle + '>' )
.append(
$ ( '<div style="font-size:80%">' )
.append( '\
Tieni però presente che l\'aspetto finale \
dipenderà anche dalle impostazioni del sito (principalmente dai '
)
.append( getLink(
'//it.wikipedia.org/wiki/CSS',
'fogli di stile',
'it.wikipedia.org'
) )
.append( ').')
.append( hr )
.append( 'Ricorda che il contenuto di Wikinotizie viene rilasciato sotto licenza ' )
.append( getLink(
'http://creativecommons.org/licenses/by/2.5/',
'Creative Commons Attribution 2.5'
) )
.append( ' \
che richiede l\'attribuzione degli articoli agli autori, \n\
visibili nella cronologia della pagina. La cronologia può essere indicata direttamente \n\
oppure raggiunta indirettamente attraverso un link all\'articolo.<br />\n\
<br />\n\
Grazie di diffondere le nostre notizie.'
)
.append( hr )
)
.append( '\n\
Cliccando uno dei due pulsanti \'link\', \n\
verrà visualizzato e selezionato il codice corrispondente, \n\
pronto per essere copiato negli appunti.\n\
' );
}
// codice del link da copiare
function setCode( dialog, shortOrLongCode ) {
// seleziona il testo da copiare
function select( $element ) {
var selection = window.getSelection();
selection.removeAllRanges();
var range = document.createRange();
range.selectNodeContents( $element.get( 0 ) );
selection.addRange( range );
}
// ricava la data dalle categorie
function getArticleDate() {
var
regexData = new RegExp( '\\d\\d? (gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre) \\d\\d\\d\\d' ),
data = null;
$.each( wgCategories, function( index, category ) {
if ( regexData.test( category ) ) {
data = category;
return false;
}
} );
return data;
}
var
Server = mw.config.get( 'wgServer' ),
wgTitle = mw.config.get( 'wgTitle' ),
wgPageName = mw.config.get( 'wgPageName' ),
wgScript = mw.config.get( 'wgScript' ),
articleDate = getArticleDate(),
articleHref = mw.util.getUrl( wgPageName ),
articleLink = getLink( articleHref, wgTitle,
'Articolo di Wikinotizie, le notizie a contenuto aperto.' ),
wikinotizieLink = getLink( Server, 'Wikinotizie', Server ),
historyLink = getLink(
Server + wgScript + '?title=' + mw.util.wikiUrlencode( wgPageName ) + '&action=history',
'autori', 'elenco dei contributori dell\'articolo'
);
var code, linkTipe;
switch ( shortOrLongCode ) {
case 'longCode':
code
= articleLink + '\n da ' + wikinotizieLink + ', le notizie a contenuto aperto'
+ ( articleDate ? ', ' + articleDate : '' )
+ ' (' + historyLink + ')';
linkTipe = 'citazione';
break;
case 'shortCode':
code = articleLink;
linkTipe = 'link semplice';
break;
}
$( dialog ).find( '#html-link' ).text( code );
$( dialog ).find( '#html-sample' ).html( code );
$( dialog ).find( '#link-type' ).text( linkTipe );
select( $( dialog ).find( '#html-link' ) );
}
mw.loader.using( 'jquery.ui', function() {
getHtmlDialog().dialog( {
title: 'HTML da includere',
modal: true,
width: 500,
position: 'top',
open: function() {
setCode( this, 'shortCode' );
},
buttons: {
chiudi: function() {
$( this ).dialog( 'close' );
},
'citazione' : function() {
setCode( this, 'longCode' );
},
'link semplice' : function() {
setCode( this, 'shortCode' );
}
}
} );
} );
}
// chiude se l'articolo non e' pubblicato
var wgCategories = mw.config.get( 'wgCategories' );
if ( $.inArray( 'Pubblicati', wgCategories ) < 0 ) {
return;
}
$( '#commentrequest' )
.prepend( '<!-- \n\
Lo script MediaWiki:Condivisione_articoli.js, \n\
caricato da MediaWiki:Common.js, \n\
ha modificato alcuni degli elementi contenuti in #commentrequest \n\
-->' )
.find( '#condivisione-articolo' )
// mostra le icone di condivisione
.show()
// modifica il click dell'icona 'link o citazione'
.find( '#link-citazione a' )
.attr( 'href', 'javascript:void(0)' )
.click( showHtmlForm );
// imposta apertura link in un'altra scheda o finestra
$( '#commentrequest #condivisione-articolo #social_bookmark span:not(.no-blank) a' )
.attr( 'target', '_blank' );
} )();