Utente:Alex brollo/Split.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() {
    function spl() {
	    var testo=$("#wpTextbox1").val();
	    var top="";
	    var testoSplit="";
	    if (testo.indexOf("==[[")==-1) {
	        alert("La pagina non contiene codici split");
	    return "";
	    }
	    testoSplit=testo.split(/==\[\[(.+)\]\]==\n/);
	    if (testoSplit[0].indexOf("==[[Pagina")===-1) {
	    	top=testoSplit[0];
	    	testoSplit=testoSplit.slice(1);
	    	$("#wpTextbox1").val(top);
	    }
	    return testoSplit;
    }


    // splits wiki code into header,body,footer
    function splitPagina(tpp) {
    var testo = ["", "", ""];
    testo[0] = tpp.substring(0, tpp.indexOf("</noinclude>") + 12);
    testo[2] = tpp.substring(tpp.lastIndexOf("<noinclude>"));
    testo[1] = tpp.substring(testo[0].length, tpp.length - testo[2].length);
    return testo;
    }

    // rebuilds a nsPage page from header, body, footer
    // using  defaults for header and footer if not specified into parameters
    function pageBuild(body,header,footer) {

        if (header===undefined) header='<noinclude><pagequality level="1" user="#USER#" /></noinclude>'.replace("#USER#",mw.config.get("wgUserName"));
        if (footer===undefined) footer='<noinclude></noinclude>';
		return header+body+footer;
    }


    function pageSave(pageName,wikicode) {
        new mw.Api().postWithToken( 'edit', {
            action: 'edit',
            title: pageName,
            summary:"Modifica pagina via Split.js",
            text: wikicode,
            bot: 1
            }).done(function( data ) {
            if ( data && data.edit && data.edit.result !== 'Success' ) {
            	alert("Errore nel salvataggio della pagina");
            } else { 
            	log+=(pageName+"\n");
            	$("#wpTextbox1").val(log);
            }
        });
    }

    mw.forcedSplit=function() {
        var lista=spl();
        if (lista.length>1) {
        	var log="";
        	
	        for (i=0;i<lista.length; i+=2) {
	        	pageSave(lista[i],pageBuild(lista[i+1]));
	        	
	        	
	        }
        }
    };
    if (mw.config.get("wgAction")==="edit"||mw.config.get("wgAction")==="submit" ) 
    {
        $split=$("#ca-talk").clone();
        $split.removeClass().attr("id","ca-split").html('<span><a href="#" title="Split forzato in edit">split!!</a></span>');
        $split.insertAfter($("#ca-talk"));
        $split.click(function(){mw.forcedSplit();});
    }

}(mw,$));