MediaWiki:Gadget-Ricetta.js: differenze tra le versioni

Wikibooks, manuali e libri di testo liberi.
Contenuto cancellato Contenuto aggiunto
Pietrodn (discussione | contributi)
fixes
Intanto salvo così, poi dovrò continuare ma voglio anche evitare di perdere tutto
Riga 2: Riga 2:
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++ CREAZIONE RAPIDA RICETTA +++
+++ CREAZIONE RAPIDA RICETTA +++
+++ codice originale ripreso da [[wikipedia:User:Splarka/electrocute.js +++
+++ codice originale di Wim b con l'aiuto fondamentale di Ricordisamoa +++
+++ e riadattata da Wim b per la creazione delle ricette +++
vers. beta 1
vers. beta 1.1
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//creo il link nelle pagine speciali
$(function() {
if ( mw.config.get('wgCanonicalSpecialPageName') === 'Specialpages' ) {
mw.util.addPortletLink('p-tb','/wiki/Speciale:Ricetta','Creazione ricetta');
$('#mw-specialpagesgroup-pagetools').next().find('ul').eq(0)
});
.prepend('<li><a href="/wiki/Speciale:Ricetta">Scrivi ricetta</a></li>');
if(wgPageName == 'Speciale:Ricetta') {
document.title = 'Creazione ricetta';
mw.util.addCSS('#content {visibility:hidden;}');
$(creazionericettaForm);
}
}

//Creo il link nel portlet
mw.util.addPortletLink( 'p-tb', '/wiki/Speciale:Ricetta', 'Nuova ricetta', 'p-ricetta', 'segui la procedura guidata per creare una nuova ricetta');
// Evito link rosso nelle pagine dei contenuti
function creazionericettaForm() {
var con = (document.getElementById('content')) ? document.getElementById('content') : document.getElementById('mw_content');
var bcon = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementById('mw_contentholder');
var fh = getElementsByClassName(con,'h1','firstHeading')[0];
while(fh.firstChild) fh.removeChild(fh.firstChild);
fh.appendChild(document.createTextNode('Creazione rapida ricetta'));
for(var i=0;i<bcon.childNodes.length;i++) {
bcur = bcon.childNodes[i];
if(bcur.id != 'siteSub' && bcur.id != 'contentSub' && bcur.className != 'visualClear') {
while(bcur.firstChild) bcur.removeChild(bcur.firstChild);
if(bcur.nodeType == 3) bcur.nodeValue = '';
}
}
if(queryString('submit')) {
bcon.innerHTML += '<img src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Example_recipe.svg/221px-Example_recipe.svg.png" style="border:1px dashed red;" /><br>'
+ '<b style="color:#990000;">'
+ '<br>Descrizione aspetto, indicazione periodo o ricorrenza. '
+ '<br> '
+ '<br>== Ingredienti == '
+ '<br>per \'\'\'' + queryString('persone') + '\'\'\' persone ';
if (queryString('ing1') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant1').replace(/\+/g," ") + ' ' + queryString('mis1') + ' di ' + queryString('ing1').replace(/\+/g," ");
}
if (queryString('ing2') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant2').replace(/\+/g," ") + ' ' + queryString('mis2') + ' di ' + queryString('ing2').replace(/\+/g," ");
}
if (queryString('ing3') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant3').replace(/\+/g," ") + ' ' + queryString('mis3') + ' di ' + queryString('ing3').replace(/\+/g," ");
}
if (queryString('ing4') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant4').replace(/\+/g," ") + ' ' + queryString('mis4') + ' di ' + queryString('ing4').replace(/\+/g," ");
}
if (queryString('ing5') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant5').replace(/\+/g," ") + ' ' + queryString('mis5') + ' di ' + queryString('ing5').replace(/\+/g," ");
}
if (queryString('ing6') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant6').replace(/\+/g," ") + ' ' + queryString('mis6') + ' di ' + queryString('ing6').replace(/\+/g," ");
}
if (queryString('ing7') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant7').replace(/\+/g," ") + ' ' + queryString('mis7') + ' di ' + queryString('ing7').replace(/\+/g," ");
}
if (queryString('ing8') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant8').replace(/\+/g," ") + ' ' + queryString('mis8') + ' di ' + queryString('ing8').replace(/\+/g," ");
}
if (queryString('ing9') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant9').replace(/\+/g," ") + ' ' + queryString('mis9') + ' di ' + queryString('ing9').replace(/\+/g," ");
}
if (queryString('ing10') !== "") {
bcon.innerHTML += '<b style="color:#990000;"> <br>* ' + queryString('quant10').replace(/\+/g," ") + ' ' + queryString('mis10') + ' di ' + queryString('ing10').replace(/\+/g," ");
}
bcon.innerHTML += '<b style="color:#990000;"> <br>'
+ '<br>'
+ '<br>' + queryString('consigli').replace(/\%3D/g,"=").replace(/\+/g," ")
+ '<br>'
+ '<br>{{Categorie della ricetta';
if ((queryString('regionali') !== "") && (queryString('regionali_cb') == "|Ricette regionali-")) {
bcon.innerHTML += '<b style="color:#990000;">'+ queryString('regionali_cb') + '' + queryString('regionali').replace(/\%3D/g,"=").replace(/\+/g," ");
}
if ((queryString('mondo') !== "") && (queryString('mondo_cb') == "|Ricette dal mondo-")) {
bcon.innerHTML += '<b style="color:#990000;">'+ queryString('mondo_cb') + '' + queryString('mondo').replace(/\%3D/g,"=").replace(/\+/g," ");
}
bcon.innerHTML += '<b style="color:#990000;"> }}'
+ '<br> '
+ '<br> <b style="color:#12831d;">Adesso copia tutto il testo ed incollalo nella pagina [[<a href="//it.wikibooks.org/w/index.php?title=Libro_di_cucina/Ricette/' + queryString('pagina') + '&action=edit">' + queryString('pagina').replace(/\+/g," ") + '</a>]]'
+ '<br>';
}
$("a[href$='/wiki/Speciale:Ricetta']").attr({'title': 'Speciale:Ricetta'}).removeClass();
//Note: I was writing this as nice dom, but since it is for a gag anyways, it is too much work'

bcon.innerHTML += '<form method="get" action="' + wgServer + wgScript + '"><input name="title" type="hidden" value="Speciale:Ricetta" />'

+ '<fieldset><legend>Creazione rapida delle ricette per utenti inesperti</legend>'
if(mw.config.get('wgNamespaceNumber') == -1 && mw.config.get('wgTitle') == 'Ricetta') {
+ '<label for="pagina">Titolo della pagina: </label><input id="pagina" type="text" name="pagina" /><p></p>'

+ '<label for="lingua"> Per quante persone: </label><select id="persone" name="persone">'
//Sostituisco il titolo
+ '<option selected="selected" value="2">2</option><option value="3">3</option>'
$('h1').text('Nuova ricetta');
+ '<option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option></select>'

+ '<label for="consigli"> Hai dei consigli? </label><input id="consigli_si" value="\=\= Consigli \=\= <br>scrivi i consigli al posto di questa riga" name="consigli" type="radio" checked="checked" /><label for="consigli_si">Si</label>'
// e l'intestazione nel tab
+ '<input id="consigli_no" value="" name="consigli" type="radio" /><label for="consigli_no">No</label> <p></p>'
document.title = 'Creazione nuova ricetta - Wikibooks';
+ '<label for="quant1">Primo ingrediente: </label><input id="quant1" type="text" name="quant1" value=""/>'
+ '<label for="mis1"> </label><select id="mis1" name="mis1">'
$('#bodyContent').replaceWith('Inserisci tutti i dati richiesti per scrivere velocemente una nuova ricetta'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ '<input name="title" type="hidden" value="Speciale:Ricetta" />'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '<fieldset><legend>Creazione rapida di una nuova ricetta</legend>'
+ '<label for="ing"> di </label><input id="ing1" type="text" name="ing1" value=""/><p></p>'
+ '<h3>Ingredienti: <button id="addIngrediente" >+</button><p></p> </h3>'
+ '<label for="quant2">Secondo ingrediente: </label><input id="quant2" type="text" name="quant2" value=""/>'
+ '<div id="IngredientiNuovi">'
+ '<label for="mis2"> </label><select id="mis2" name="mis2">'
+ '<div id="IngredientiAggiuntivi">'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ 'Ingrediente: <input class="mw-ui-input" name="NuovoIngrediente00" id="NuovoIngrediente00" size="80%">'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '&nbsp;'
+ '<label for="ing2"> di </label><input id="ing2" type="text" name="ing2" value=""/><p></p>'
+ 'Quantità: <input class="mw-ui-input" name="NuovaQuantita00" id="NuovaQuantita00" size="6" maxlength="5" value=""> <select id="quantità00" name="quantità00">'
+ '<label for="quant3">Terzo ingrediente: </label><input id="quant3" type="text" name="quant3" value=""/>'
+ '<optgroup id="Liquidi" name="Liquidi" label="Liquidi">Liquidi</optgroup>'
+ '<label for="mis3"> </label><select id="mis3" name="mis3">'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ '<option value="ml">millilitri</option>'
+ '<option value="cl">centilitri</option>'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '<option value="l">litri</option>'
+ '<label for="ing3"> di </label><input id="ing3" type="text" name="ing3" value=""/><p></p>'
+ '<optgroup id="Solidi" name="Solidi" label="Solidi">Solidi</optgroup>'
+ '<label for="quant4">Quarto ingrediente: </label><input id="quant4" type="text" name="quant4" value=""/>'
+ '<option value="mg">milligrammi</option>'
+ '<label for="mis4"> </label><select id="mis4" name="mis4">'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ '<option value="g">grammi</option>'
+ '<option value="hg">etti</option>'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '<label for="ing4"> di </label><input id="ing4" type="text" name="ing4" value=""/><p></p>'
+ '<optgroup id="Altro" name="Altro" label="Altro">Altro</optgroup>'
+ '<option value="q. b.">quanto basta</option>'
+ '<label for="quant5">Quinto ingrediente: </label><input id="quant5" type="text" name="quant5" value=""/>'
+ '<option value="cucchiaio">cucchiaio</option>'
+ '<label for="mis5"> </label><select id="mis5" name="mis5">'
+ '<option value="cicchiaino">cicchiaino</option>'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ '<option value="pizzico">pizzico</option>'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '</select>'
+ '<label for="ing5"> di </label><input id="ing5" type="text" name="ing5" value=""/><p></p>'
+ '<input name="AltraUnita00" type="checkbox" value="" id="AltraUnita00" style="">Altra unità di misura</input> <input class="mw-ui-input" name="Altro00" id="Altro00" size="10"/></input> <p></p>'
+ '<label for="quant6">Sesto ingrediente: </label><input id="quant6" type="text" name="quant6" value=""/>'
+ '</div>'
+ '<label for="mis6"> </label><select id="mis6" name="mis6">'
+ '</div>'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ '</td></tr>'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '</table>'
+ '<label for="ing6"> di </label><input id="ing6" type="text" name="ing6" value=""/><p></p>'
+ '<h3>Passaggi: <button id="addPassaggio" >+</button><p></p> </h3>'
+ '<label for="quant7">Settimo ingrediente: </label><input id="quant7" type="text" name="quant7" value=""/>'
+ '<label for="mis7"> </label><select id="mis7" name="mis7">'
+ '<div id="PassaggiNuovi">'
+ '<div id="PassaggiAggiuntivi">'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ 'Passaggio:<input class="mw-ui-input Passaggio" name="Passaggio00" id="Passaggio00" size="80%"/>'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '<label for="ing7"> di </label><input id="ing7" type="text" name="ing7" value=""/><p></p>'
// + '<textarea id="passaggi" type="text" rows="10" name="passaggi"; />'
+ '<br/>'
+ '<label for="quant8">Ottavo ingrediente: </label><input id="quant8" type="text" name="quant8" value=""/>'
+ '</div>'
+ '<label for="mis8"> </label><select id="mis8" name="mis8">'
+ '</div>'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '<label for="ing8"> di </label><input id="ing8" type="text" name="ing8" value=""/><p></p>'
+ '<label for="quant9">Nono ingrediente: </label><input id="quant9" type="text" name="quant9" value=""/>'
+ '<label for="mis9"> </label><select id="mis9" name="mis9">'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '<label for="ing9"> di </label><input id="ing9" type="text" name="ing9" value=""/><p></p>'
+ '<label for="quant10">Decimo ingrediente: </label><input id="quant10" type="text" name="quant10" value=""/>'
+ '<label for="mis10"> </label><select id="mis10" name="mis10">'
+ '<option selected="selected" value="mg">milligrammi</option><option value="g">grammi</option><option value="hg">etti</option>'
+ '<option value="ml">millilitri</option><option value="cl">centilitri</option><option value="l">litri</option><option value="cucchiai">cucchiai</option><option value="cucchiaini">cucchiaini da caffè</option><option value="q.b.">quanto basta</option><option value="pizzico">pizzico</option></select>'
+ '<label for="ing10"> di </label><input id="ing4" type="text" name="ing10" value=""/><p></p>'
+ '<p></p>'
+ '<h3>Categorie:</h3>'
+ '<h3>Categorie:</h3>'
+ '<div id="ElencoCategorie"></div>'
+ '<p></p>'
+ '<p></p>'
+ '<INPUT TYPE="CHECKBOX" NAME="regionali_cb" VALUE="|Ricette regionali-"><label"> Regionale </label>'
+ '<label for="pagina">inserisci il nome della regione: </label><input id="regionali" type="text" name="regionali" /><p></p>'
+ '<INPUT TYPE="CHECKBOX" NAME="mondo_cb" VALUE="|Ricette dal mondo-"><label"> Dal mondo </label>'
+ '<label for="mondo">inserisci il nome del paese: </label><input id="mondo" type="text" name="mondo" /><p></p>'
+ '<input type="submit" value="Genera" name="submit" />'
+ '<input type="submit" value="Genera" name="submit" />'
+ '</fieldset></form>';
+ '</fieldset><div id="results" style="visibility: hidden"></div></form>').ready(function () {

mw.util.addCSS('#content {visibility:visible;}');

//ID incrementali per gli ingredienti
if(queryString('pagina')) document.getElementById('pagina').value = queryString('pagina');
var current_id = 0;
if(queryString('quant1')) document.getElementById('quant1').value = queryString('quant1');
$('#addIngrediente').click(function(){
if(queryString('ing1')) document.getElementById('ing1').value = queryString('ing1');
nextElement($('#IngredientiAggiuntivi'));
if(queryString('quant2')) document.getElementById('quant2').value = queryString('quant2');
});
if(queryString('ing2')) document.getElementById('ing2').value = queryString('ing2');
if(queryString('quant3')) document.getElementById('quant3').value = queryString('quant3');
function nextElement(element){
if(queryString('ing3')) document.getElementById('ing3').value = queryString('ing3');
var newElement = element.clone().appendTo($('#IngredientiNuovi'));
if(queryString('quant4')) document.getElementById('quant4').value = queryString('quant4');
current_id++;
if(queryString('ing4')) document.getElementById('ing4').value = queryString('ing4');
var id = (current_id < 50 ? '0' : '') + current_id;
if(queryString('quant5')) document.getElementById('quant5').value = queryString('quant5');
newElement.attr('id', newElement.attr('id').replace(/00/, id));
if(queryString('ing5')) document.getElementById('ing5').value = queryString('ing5');
$('input', newElement).each(function() {
if(queryString('quant6')) document.getElementById('quant6').value = queryString('quant6');
$(this).attr('id', $(this).attr('id').replace(/00/, id));
if(queryString('ing6')) document.getElementById('ing6').value = queryString('ing6');
var nome = $(this).attr('id');
if(queryString('quant7')) document.getElementById('quant7').value = queryString('quant7');
$(this).attr('name', nome);
if(queryString('ing7')) document.getElementById('ing7').value = queryString('ing7');
}).val('');
if(queryString('quant8')) document.getElementById('quant8').value = queryString('quant8');
$('#addIngrediente').prop('disabled', current_id > 49);
if(queryString('ing8')) document.getElementById('ing8').value = queryString('ing8');
}
if(queryString('quant9')) document.getElementById('quant9').value = queryString('quant9');

if(queryString('ing9')) document.getElementById('ing9').value = queryString('ing9');

if(queryString('quant10')) document.getElementById('quant10').value = queryString('quant10');
//ID incrementali per i passaggi
if(queryString('ing10')) document.getElementById('ing10').value = queryString('ing10');
var current_idPassaggi = 0;
if(queryString('regionali')) document.getElementById('regionali').value = queryString('regionali');
$('#addPassaggio').click(function(){
if(queryString('mondo')) document.getElementById('mondo').value = queryString('mondo');
nextElementInt($('#PassaggiAggiuntivi'));
});
function nextElementInt(element){
var newElementInt = element.clone().appendTo($('#PassaggiNuovi'));
current_idPassaggi ++;
var idPassaggi = (current_idPassaggi < 100 ? '0' : '') + current_idPassaggi;
newElementInt.attr('id', newElementInt.attr('id').replace(/00/, idPassaggi));
$('input', newElementInt).each(function() {
$(this).attr('id', $(this).attr('id').replace(/00/, idPassaggi));
var nomeInt = $(this).attr('id');
$(this).attr('name', nomeInt);
}).val('');
$('#addPassaggio').prop('disabled', current_idPassaggi > 99);
}
// Funzione API per recuperare le categorie delle ricette

var api = new mw.Api();

function getSubCategories( title, cont, pages ) {
return api.get( $.extend( {
action: 'query',
generator: 'categorymembers',
gcmtitle: title,
gcmtype: 'subcat',
gcmlimit: 'max',
prop: 'categoryinfo|categories',
clcategories: title,
clprop: 'sortkey'
}, cont ) ).then( function ( data ) {
pages = $.extend( true, {}, pages || {}, data.query.pages );

if ( data.continue !== undefined ) {
return getSubCategories( title, data.continue, pages );
}

return $.map( pages, function ( page ) {
return page;
} ).sort( function ( a, b ) {
if ( a.categories[ 0 ].sortkey > b.categories[ 0 ].sortkey ) {
return 1;
}
if ( a.categories[ 0 ].sortkey < b.categories[ 0 ].sortkey ) {
return -1;
}
return 0;
} );
} );
}
}

function queryString(p) {
function doneFilter( level, cbLevel, pages ) {
return pages.map( function ( page ) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var $li = $( '<li>' ).append(
var matches;
$( '<label>' )
if (matches = re.exec(document.location)) {
.text( new mw.Title( page.title ).getMainText() )
try {
.prepend(
return decodeURI(matches[1]).replace(/\+/g," ");
level >= cbLevel ?
} catch (e) {
$( '<input>' ).attr( { type: 'checkbox', name: 'Categoria', value: new mw.Title( page.title ).getMainText() } ) :
}
[]
}
)
return null;
);

if ( page.categoryinfo.subcats > 0 ) {
$( '<button>' )
.append(
$( '<span>' ).text( '►' ),
$( '<span>' ).text( '▼' ).hide()
)
.one( 'click', function () {
var $ul = makeList( page.title, level + 1, cbLevel ).appendTo( $li );
$( this ).children().toggle();

$( this ).on( 'click', function () {
$ul.toggle();
$( this ).children().toggle();
} );
} )
.prependTo( $li );
}

return $li;
} );
}
}


function makeList( title, level, cbLevel ) {
/* Change Log
var $ul = $( '<ul>' ).css( 'list-style', 'none' ).append(
Versione beta 1.1 - Aggiunte le categorie per ricette regionali e dal mondo con il controllo per il checkbox e il form di testo in modo che siano compilati entrambi
$( '<li>' ).text( 'caricamento in corso...' )
);

getSubCategories( title, {} )
.then(
doneFilter.bind(
null,
level !== undefined ? level : 0,
cbLevel !== undefined ? cbLevel : 1
),
//failFilter
)
.always( function ( $listContents ) {
$ul.empty().append( $listContents );
} );

return $ul;
}

makeList( 'Categoria:Ricette' ).appendTo( '#ElencoCategorie' );

// recupera e mette in elenco i valori dei passaggi della ricetta
resPass = $('input.Passaggio').map(function(_, el) {
return $(el).val();
}).get().join(';\n#');
var resPass = '#'+resPass+'.';

// Elenca tutte le categorie da aggiungere
resCat = $('input[name=Categoria]:checked').map(function(_, el) {
return $(el).val();
}).get().join('|');
var resCat = '{{Categorie della ricetta|'+resCat+'}}';

});
}


/* resPass = elenco di tutti i passaggi della ricetta
*/
resCat = elenco di tutte le categorie da aggiungere
//</pre>
*/

Versione delle 23:21, 3 dic 2018

/// <pre> 
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++                CREAZIONE RAPIDA RICETTA                             +++
+++ codice originale di Wim b con l'aiuto fondamentale di Ricordisamoa  +++
                        vers. beta 1
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//creo il link nelle pagine speciali
if ( mw.config.get('wgCanonicalSpecialPageName') === 'Specialpages' ) {
	$('#mw-specialpagesgroup-pagetools').next().find('ul').eq(0)
	.prepend('<li><a href="/wiki/Speciale:Ricetta">Scrivi ricetta</a></li>');
}

//Creo il link nel portlet
mw.util.addPortletLink( 'p-tb', '/wiki/Speciale:Ricetta', 'Nuova ricetta', 'p-ricetta', 'segui la procedura guidata per creare una nuova ricetta');
 
// Evito link rosso nelle pagine dei contenuti
 
$("a[href$='/wiki/Speciale:Ricetta']").attr({'title': 'Speciale:Ricetta'}).removeClass();


if(mw.config.get('wgNamespaceNumber') == -1 && mw.config.get('wgTitle') == 'Ricetta') {

//Sostituisco il titolo
$('h1').text('Nuova ricetta');

// e l'intestazione nel tab
document.title = 'Creazione nuova ricetta - Wikibooks';
 
$('#bodyContent').replaceWith('Inserisci tutti i dati richiesti per scrivere velocemente una nuova ricetta'
    + '<input name="title" type="hidden" value="Speciale:Ricetta" />'
    + '<fieldset><legend>Creazione rapida di una nuova ricetta</legend>'
	+ '<h3>Ingredienti: <button id="addIngrediente" >+</button><p></p> </h3>'
	+ '<div id="IngredientiNuovi">'
	+ '<div id="IngredientiAggiuntivi">'
	+ 'Ingrediente: <input class="mw-ui-input" name="NuovoIngrediente00" id="NuovoIngrediente00" size="80%">'
	+ '&nbsp;'
	+ 'Quantità: <input class="mw-ui-input" name="NuovaQuantita00" id="NuovaQuantita00" size="6" maxlength="5" value=""> <select id="quantità00" name="quantità00">'    
	+ '<optgroup id="Liquidi" name="Liquidi" label="Liquidi">Liquidi</optgroup>'
	+ '<option value="ml">millilitri</option>'
	+ '<option value="cl">centilitri</option>'
	+ '<option value="l">litri</option>'
    + '<optgroup id="Solidi" name="Solidi" label="Solidi">Solidi</optgroup>'
	+ '<option value="mg">milligrammi</option>'
	+ '<option value="g">grammi</option>'
	+ '<option value="hg">etti</option>'
    + '<optgroup id="Altro" name="Altro" label="Altro">Altro</optgroup>'
	+ '<option value="q. b.">quanto basta</option>'
	+ '<option value="cucchiaio">cucchiaio</option>'
	+ '<option value="cicchiaino">cicchiaino</option>'
	+ '<option value="pizzico">pizzico</option>'
	+ '</select>'
	+ '<input name="AltraUnita00" type="checkbox" value="" id="AltraUnita00" style="">Altra unità di misura</input> <input class="mw-ui-input" name="Altro00" id="Altro00" size="10"/></input> <p></p>'
	+ '</div>'
	+ '</div>'
	+ '</td></tr>'
    + '</table>'
    + '<h3>Passaggi: <button id="addPassaggio" >+</button><p></p> </h3>'
    + '<div id="PassaggiNuovi">'
    + '<div id="PassaggiAggiuntivi">'
    + 'Passaggio:<input class="mw-ui-input Passaggio" name="Passaggio00" id="Passaggio00" size="80%"/>'
//	+ '<textarea id="passaggi" type="text" rows="10" name="passaggi"; />'
	+ '<br/>'
	+ '</div>'
	+ '</div>'
    + '<h3>Categorie:</h3>'
    + '<div id="ElencoCategorie"></div>'
    + '<p></p>'
    + '<input type="submit" value="Genera" name="submit" />'
    + '</fieldset><div id="results" style="visibility: hidden"></div></form>').ready(function () {


//ID incrementali per gli ingredienti
 var current_id = 0;
	    $('#addIngrediente').click(function(){
	        nextElement($('#IngredientiAggiuntivi'));
	    });
	    
	    function nextElement(element){
	        var newElement = element.clone().appendTo($('#IngredientiNuovi'));
	        current_id++;
            var id = (current_id < 50 ? '0' : '') + current_id;
            newElement.attr('id', newElement.attr('id').replace(/00/, id));
            $('input', newElement).each(function() {
                $(this).attr('id', $(this).attr('id').replace(/00/, id));
                var nome = $(this).attr('id');
				$(this).attr('name', nome);
            }).val('');
            $('#addIngrediente').prop('disabled', current_id > 49);
	    }


//ID incrementali per i passaggi
var current_idPassaggi = 0;
	    $('#addPassaggio').click(function(){
	        nextElementInt($('#PassaggiAggiuntivi'));
	    });
	    
	    function nextElementInt(element){
	        var newElementInt = element.clone().appendTo($('#PassaggiNuovi'));
	        current_idPassaggi ++;
            var idPassaggi = (current_idPassaggi < 100 ? '0' : '') + current_idPassaggi;
            newElementInt.attr('id', newElementInt.attr('id').replace(/00/, idPassaggi));
            $('input', newElementInt).each(function() {
                $(this).attr('id', $(this).attr('id').replace(/00/, idPassaggi));
                var nomeInt = $(this).attr('id');
				$(this).attr('name', nomeInt);
            }).val('');
            $('#addPassaggio').prop('disabled', current_idPassaggi > 99);
	    }
	    
// Funzione API per recuperare le categorie delle ricette

var api = new mw.Api();

function getSubCategories( title, cont, pages ) {
	return api.get( $.extend( {
		action: 'query',
		generator: 'categorymembers',
		gcmtitle: title,
		gcmtype: 'subcat',
		gcmlimit: 'max',
		prop: 'categoryinfo|categories',
		clcategories: title,
		clprop: 'sortkey'
	}, cont ) ).then( function ( data ) {
		pages = $.extend( true, {}, pages || {}, data.query.pages );

		if ( data.continue !== undefined ) {
			return getSubCategories( title, data.continue, pages );
		}

		return $.map( pages, function ( page ) {
			return page;
		} ).sort( function ( a, b ) {
			if ( a.categories[ 0 ].sortkey > b.categories[ 0 ].sortkey ) {
				return 1;
			}
			if ( a.categories[ 0 ].sortkey < b.categories[ 0 ].sortkey ) {
				return -1;
			}
			return 0;
		} );
	} );
}

function doneFilter( level, cbLevel, pages ) {
	return pages.map( function ( page ) {
		var $li = $( '<li>' ).append(
			$( '<label>' )
			.text( new mw.Title( page.title ).getMainText() )
			.prepend(
				level >= cbLevel ?
				$( '<input>' ).attr( { type: 'checkbox', name: 'Categoria', value: new mw.Title( page.title ).getMainText()  } ) :
				[]
			)
		);

		if ( page.categoryinfo.subcats > 0 ) {
			$( '<button>' )
			.append(
				$( '<span>' ).text( '►' ),
				$( '<span>' ).text( '▼' ).hide()
			)
			.one( 'click', function () {
				var $ul = makeList( page.title, level + 1, cbLevel ).appendTo( $li );
				$( this ).children().toggle();

				$( this ).on( 'click', function () {
					$ul.toggle();
					$( this ).children().toggle();
				} );
			} )
			.prependTo( $li );
		}

		return $li;
	} );
}

function makeList( title, level, cbLevel ) {
	var $ul = $( '<ul>' ).css( 'list-style', 'none' ).append(
		$( '<li>' ).text( 'caricamento in corso...' )
	);

	getSubCategories( title, {} )
	.then(
		doneFilter.bind(
			null,
			level !== undefined ? level : 0,
			cbLevel !== undefined ? cbLevel : 1
		),
		//failFilter
	)
	.always( function ( $listContents ) {
		$ul.empty().append( $listContents );
	} );

	return $ul;
}

makeList( 'Categoria:Ricette' ).appendTo( '#ElencoCategorie' );   

// recupera e mette in elenco i valori dei passaggi della ricetta
resPass = $('input.Passaggio').map(function(_, el) {
        return $(el).val();
    }).get().join(';\n#');
var resPass = '#'+resPass+'.';

// Elenca tutte le categorie da aggiungere
resCat = $('input[name=Categoria]:checked').map(function(_, el) {
        return $(el).val();
    }).get().join('|');
var resCat = '{{Categorie della ricetta|'+resCat+'}}';

	});
}

/* resPass = elenco di tutti i passaggi della ricetta
resCat = elenco di tutte le categorie da aggiungere 
*/