MediaWiki:Gadget-HyphenationCoverter.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.
/*HyphenationConverter per it.wikt version [2.0]
* di [[M:User:Wim b|Wim b]]

Note:
*È un modo veloce di convertire le sillabazioni dei dizionari on line che usano il trattino "-" per dividere le sillabazioni secondo lo standard di it.wikt, cioè le sillabe divise tramite un pipe " | ".
* Copiare negli appunti la sillabazione e incollarla nel propt che si apre cliccando sul link "Converti la sillabazione" e premere "OK"
* all'apertura del messaggio apparirà la sillabazione corretta, basterà copiarla e incollarla nel lemma.

Changelog:
- 1.0.1 : Aggiunto stile CSS per la finestra di dialogo (non in questa versione)
- 1.0.2 : Aggiunto ";" per agevolare il copia-incolla
- 1.1.0 : Aggiunta la compatibilità con The Free Dictionary e la possibilità di gestire 2 sillabazioni, reso compatibile con i lemmi che presentano uno spazio, aggiunta didascalia con link alla pagina di aiuto, divisa la regex dal testo per evitare sovraffollamento inutile
- 1.1.1 : Aggiunta la compatibilità con il De Mauro (distanzia le linee verticali, a differenza del De Mauro che tiene le barre attaccate alle sillabe; cancella automaticamente il segno " / " presente prima e dopo la sillabazione nel dizionario a cui si appoggia Google
- 2.0.1 : Ora riconosce anche quando qualcuno inserisce male il template e il commento di preload
*/
                                            //Creo il link nel portlet 
if (mw.config.get('wgNamespaceNumber') === 0 && mw.config.get('wgPageName')!='Pagina_principale'  && (mw.config.get('wgAction')=='edit' || mw.config.get('wgAction')=='submit') ) {

var portletLinkConverter = mw.util.addPortletLink( 'p-navigation', '#', 'Converti sillabazione', 'p-sill', 'Converti la sillabazione copiata dai dizionari on line', 'g');
}
	
// Bind click handler
$( portletLinkConverter ).click( function ( e ) {
	e.preventDefault();

HyphConverterVer = "2.0.1";

var prmtsill;
prmtsill=prompt("Inserisci la sillabazione","");

if (prmtsill == "ver") {
alert ('Convertitore di sillabazione Vers. [' + HyphConverterVer + ']');

} else {  
if (prmtsill){                                            // Preparo lo spazio per creare la finestra
                                            // Espressione regolare per la conversione
                // La prima e l'ultima sostituzione, devono rimanere invariate per permettere allo script di correggere gli spazi bianchi
var convertita = prmtsill.replace(/[ ]/g,':;').replace(/​/g,'').replace(/ʒ/g,'z').replace(/(ṣ|ʃ)/g,'s').replace(/(-|•|·|\|)/g,' | ').replace(/\] o \[/g,'</br>\; ').replace(/(\[|\]|\/)/g,'').replace(/:;/g,' - ');
var conv = convertita.replace("<br>", '\n');
var findTemplateSill = $( "#wpTextbox1" ).val().indexOf('{{-sill-}}');
var findSill = $( "#wpTextbox1" ).val().indexOf('{{-sill-}}\n;');
if (findSill != -1) { var inserisci ='Sostituisci'} else {var inserisci ='Copia'}

// Finestra di dialogo di avvenuta conversione della sillabazione

	mw.util.$content.prepend( ''
	+'<div id="DoneBox" title="Conversione effettuata"> <p>'
	+'<div style="text-align:center">'
	+'Premi il bottone <code>'+inserisci+'</code> per copiare la sillabazione all\'interno del lemma</br>'
	+'Assicurati di aver inserito "<code>{{-sill-}}</code>" altrimenti il testo verrà inserito in fondo alla pagina di modifica.'
	+'</br><span id="LinkPosition"></span></br><div class="NavContent2">'
	+'Se preferisci puoi copiare il testo sottostante (evidenzialo e premi \"<code><i>[CTRL+C]</i></code>\" o \"<code><i>click destro - copia</i></code>\")'
	+' e, <b>dopo</b> averlo copiato premi "<code>Fatto</code>" e incollalo nel lemma</br></br><b>; '+ convertita +'</b></div></p></br></div>'
	+'<b><div style="text-align:center">ATTENZIONE!</div></b>fino a quando non premi uno dei due bottoni la finestra risulta bloccata in modifica.'
	+'<hr /><img src="http://upload.wikimedia.org/wikipedia/commons/5/55/Gtk-stop.svg" alt="operazione annullata" width="20" height="20" />'
	+'ATTENZIONE: Questo strumento è pienamente compatibile con il dizionario "Hoeply", "De Mauro" e "quello di Google" '
	+'mentre lo è parzialmente con gli altri. Per un elenco dei dizionari supportati fare riferimento a '
	+'<u><a href="/wiki/Aiuto:Accessori/Converti_sillabazione#Dizionari_compatibili" target="_new" class="plainlinks">questa tabella</a></u>'
+'</div>' );


$("#LinkPosition").prepend('<a id="ToggleHideLink">Mostra alternativa</a>');

$("#ToggleHideLink").click(function() {
    $(".NavContent2").slideToggle('slow'); 

var LinkText = $('#ToggleHideLink').text();
    $('#ToggleHideLink').text(
        LinkText == "Mostra alternativa" ? "Nascondi alternativa" : "Mostra alternativa");       
  });

$(".NavContent2").hide();

        	mw.loader.using( ['jquery.ui'], function() {                                             // inizializzo la finestra di dialogo
    $( "#DoneBox" ).dialog({ 
      width: 500,
      modal: true,
buttons: [
    {
        text: "Fatto",
        click: function() { $(this).dialog("close"); }
    },
    {
        text: inserisci ,
        click: function() {
        	
        	function TextBoxReplace(target, sostituito) {
        		$('#wpTextbox1').val($('#wpTextbox1').val().replace(target, ''+sostituito+''));
        		}
        	
        	if (findSill  != -1) {

        		TextBoxReplace(/{{-sill-}}(.*?)\n(;( |))*((.*?)\|(.*?))*\n/, '{{-sill-}}\n; '+conv+'\n');
				
			} else {
				if (findTemplateSill  != -1) {
				TextBoxReplace(/{{-sill-}}(.*?)\n(;( |))*(.*?)*\n/, '{{-sill-}}\n; '+conv+'\n');
				
			} else {
					
				}
				
			}
			$( this ).dialog( "close" );
        }
    }
]
    	
    });
  });



}else{                                            //inizio messaggio di errore
    mw.notify( $( '<div class="mw-notification-alert"><div class="mw-notification-alert-header"><h5><img src="http://upload.wikimedia.org/wikipedia/commons/5/55/Gtk-stop.svg" alt="operazione annullata" width="20" height="20" /> ATTENZIONE! </br>Conversione annullata</h5></div> Hai annullato il processo o hai lasciato il campo vuoto, quindi il testo che eventualmente hai inserito non verrà convertito.</div><div class="mw-notification-alert-footer"><a href="/wiki/User_talk:Wim_b" target="_new">Segnala un bug</a></div></div>' ) , { autoHide: false } );
  }
 }

});