The Beatles Collection e MediaWiki:Gadget-Form-valutazione-enc-core.js: differenze tra le pagine

(Differenze fra le pagine)
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
 
m -modulo rimosso
 
Riga 1:
/**
{{Album <!-- per la compilazione vedi Template:Album -->
* Eseguito come script personale o come accessorio, aggiunge alla pagina
|titolo = The Beatles Collection
* configurata in formPage alcuni elementi HTML non consentiti da Mediawiki
|titoloalfa = Beatles Collection, The
* come textbox, checkbox, textarea e pulsanti, per la creazione di un form.
|artista = The Beatles
*
|tipo album = Raccolta
* Una volta poi cliccato su "Crea la richiesta" effettua la validazione del form
|giornomese =
* e in caso di esito positivo crea una nuova sezione nella pagina configurata
|anno = 1978
* in encPage, con i dati letti dal form.
|postdata = ([[Regno Unito]]) [[:Categoria:Album del 1979|1979]] ([[Stati Uniti d'America|U.S.A.]])
*
|etichetta = Parlophone
* @author [[Utente:Rotpunkt]]
|produttore = [[George Martin]], [[Phil Spector]]
*/
|durata =
/* global mediaWiki, jQuery */
|formati = [[Long playing|LP]]
|genere = Beat
|numero di dischi = 13
|numero di tracce =
|precedente = [[Love Songs (The Beatles)|Love Songs]]<br />([[:Categoria:Album del 1977|1977]])
|successivo = [[Rarities (album dei Beatles)|Rarities]]<br />([[:Categoria:Album del 1978|1978]])
}}
'''''The Beatles Collection''''' è un set di dischi in vinile del gruppo musicale [[Gran Bretagna|britannico]] [[The Beatles]], messo in commercio nel 1978 per il mercato [[Gran Bretagna|inglese]] e nel 1979 per quello [[Stati Uniti d'America|americano]]. Tutti gli album erano presentati in formato ''stereo'', e in più era presente un disco bonus intitolato ''Rarities'' contenente versioni alternative delle canzoni e rarità varie dei Beatles.
 
( function ( mw, $ ) {
La versione americana pubblicata dalla [[Capitol Records]] conteneva lo stesso contenuto del cofanetto inglese, ma una versione differente di ''Rarities.'' Il ''Rarities'' statunitense differiva da quello inglese poiché conteneva le versioni in inglese delle canzoni ''She Loves You'' e ''I Want to Hold Your Hand'', al posto delle versioni in tedesco presenti sulla sua controparte britannica.<ref>{{cite web|url=http://www.rarebeatles.com/boxsets/rarit.htm|title=Beatles Rarities album|publisher=Rare Beatles|accessdate=31 January 2009}}</ref> The American edition of the boxed set was a limited edition of only 3,000 numbered copies.<ref>{{cite web|url=http://www.allmusic.com/cg/amg.dll?p=amg&sql=10:li8ibk596akq|title=The Beatles Collection|publisher=Allmusic|accessdate=31 January 2009}}</ref>
'use strict';
 
// la pagina che contiene il form
Il box set non comprende l'album ''[[Magical Mystery Tour (album)|Magical Mystery Tour]]''. Il disco in questione era stato pubblicato negli Stati Uniti nel 1967, ma non veniva considerato parte integrante della discografia ufficiale del gruppo, in quanto in Inghilterra era uscito sotto forma di [[Extended Play|EP]] e come album vero e proprio, non venne pubblicato fino al 1976.
var formPage = 'Progetto:Musica/Classica/Form_valutazione_enciclopedicità';
== Contenuto ==
*[[Please Please Me (album)|Please Please me]]
*[[With the Beatles]]
*[[A Hard Day's Night (album)|A Hard Day's Night]]
*[[Beatles for Sale]]
*[[Help! (album)|Help!]]
*[[Rubber Soul]]
*[[Revolver (The Beatles)|Revolver]]
*[[Sgt. Pepper's Lonely Hearts Club Band]]
*[[The Beatles (album)|White Album]]
*[[Yellow Submarine (album)|Yellow Submarine]]
*[[Abbey Road (album)|Abbey Road]]
*[[Let It Be (album)|Let it Be]]
*[[Rarities (The Beatles)|Rarities]]
 
// la pagina dove vengono create le nuove discussioni di valutazione enciclopedicità
{{Beatles}}
var encPage = 'Progetto:Musica/Classica/Valutazione_enciclopedicità';
{{Portale|Rock}}
 
// il numero di criteri, ciascuno con un checkbox gmc-mN e una textarea gmc-mN-text
[[en:The Beatles Collection]]
var numCriteri = 7;
[[es:The Beatles Collection]]
 
[[fi:The Beatles Collection]]
// configurazione elementi del form (gmc: gadget-musica-classica)
var elements = {
'gmc-musicista': {
tipo: 'textbox',
placeholder: 'Nome musicista',
msg: 'nome musicista vuoto.'
},
'gmc-sandbox': {
tipo: 'textbox',
autocomplete: true
},
'gmc-m1': {
tipo: 'checkbox'
},
'gmc-m1-text': {
tipo: 'textarea',
msg: 'è selezionato il criterio M1 ma non è stato inserito in quale enciclopedia compare.'
},
'gmc-m2': {
tipo: 'checkbox'
},
'gmc-m2-text': {
tipo: 'textarea',
msg: 'è selezionato il criterio M2 ma non sono stati inseriti i riferimenti bibliografici.'
},
'gmc-m3': {
tipo: 'checkbox'
},
'gmc-m3-text': {
tipo: 'textarea',
msg: 'è selezionato il criterio M3 ma non sono stati inseriti i link alle informazioni sugli album.'
},
'gmc-m4': {
tipo: 'checkbox'
},
'gmc-m4-text': {
tipo: 'textarea',
msg: 'è selezionato il criterio M4 ma non sono stati inseriti gli esempi rilevanti di concerti e/o produzioni.'
},
'gmc-m5': {
tipo: 'checkbox'
},
'gmc-m5-text': {
tipo: 'textarea',
msg: 'è selezionato il criterio M5 ma non sono stati inseriti i link alle informazioni sugli album.'
},
'gmc-m6': {
tipo: 'checkbox'
},
'gmc-m6-text': {
tipo: 'textarea',
msg: 'è selezionato il criterio M6 ma non sono stati inseriti i link alle informazioni sui concerti.'
},
'gmc-m7': {
tipo: 'checkbox'
},
'gmc-m7-text': {
tipo: 'textarea',
msg: 'è selezionato il criterio M7 ma non sono stati inseriti i riferimenti completi.'
},
'gmc-crea': {
tipo: 'button',
text: 'Crea la richiesta'
}
};
 
/**
* Visualizza un messaggio.
* @param {string} msg - Il messaggio da visualizzare.
* @param {boolean} spinner - Se impostato a true visualizza lo spinner.
* @param {string} url - Se impostato, redirige a quell'URL dopo aver premuto Ok.
*/
function showMessage( msg, spinner, url ) {
var $dialog = $( '#gmc-dialog' );
$dialog.empty().append( msg );
if ( spinner ) {
$dialog.append( '<br /><br />', $.createSpinner( { size: 'large', type: 'block' } ), '<br />' );
}
$dialog.dialog( {
title: 'Richiesta parere enciclopedicità',
width: 340,
modal: true,
buttons: {
Ok: function () {
$( this ).dialog( 'close' );
if ( url ) {
window.___location.href = url;
}
}
}
} );
}
 
/**
* Visualizza l'eventuale CAPTCHA.
* @param {string} captchaUrl - Url dell'immagine.
* @param {function} inputHandler - Gestore dell'input dell'utente.
*/
function showCaptcha( captchaUrl, inputHandler ) {
var $dialog = $( '#gmc-dialog' ).empty();
var $div = $( '<div>' ).css( 'text-align', 'center' );
var $img = $( '<img/>' ).attr( 'src', captchaUrl );
var $captchaWord = $( '<input/>' ).attr( 'type', 'text' ).attr( 'size', 40 );
$div.append( $img, '<br /><br />', $captchaWord ).appendTo( $dialog );
$dialog.dialog( {
title: 'Scrivi i caratteri che vedi nell\'immagine',
modal: true,
buttons: {
Ok: function () {
$( this ).dialog( 'close' );
inputHandler( $captchaWord.val() );
},
Annulla: function () {
$( this ).dialog( 'close' );
}
}
} );
}
 
/**
* Crea la nuova richiesta per la valutazione di enciclopedicità.
* @param {string} musicista - il nome del musicista.
* @param {string} sandbox - la pagina di prova.
* @param {string[]} criteri - array di criteri.
* @param {object} params - parametri addizionali per mw.Api.newSection
*/
function createRequest( musicista, sandbox, criteri, params ) {
var text = '{{RichiestaParereEnc\n';
text += '|nome = ' + musicista + '\n';
text += sandbox ? '|sandbox = ' + sandbox + '\n' : '';
$.each( criteri, function ( idx, value ) {
if ( value ) {
text += '|m' + ( idx + 1 ) + ' = ' + value + '\n';
}
} );
text += '|utente = \{\{subst:REVISIONUSER}}\n';
text += '|data = \{\{subst:#timel: j F Y}}\n';
text += '|firma = --\~\~\~\~\n';
text += '}}';
text += "\n\n'''Discussione:'''";
 
showMessage( 'Creazione richiesta in corso...', true );
new mw.Api().newSection( encPage, musicista, text, params )
.done( function ( data ) {
if ( data && data.edit && data.edit.captcha && data.edit.captcha.id && data.edit.captcha.url ) {
showCaptcha( data.edit.captcha.url, function ( text ) {
createRequest( musicista, sandbox, criteri, {
captchaid: data.edit.captcha.id,
captchaword: text
} );
} );
} else {
var url = mw.config.get( 'wgArticlePath' ).replace( '$1', encPage + '#footer' );
var msg = 'Richiesta creata alla pagina:<br />';
msg += '<a href="' + url + '">' + encPage + '</a><br /><br />';
msg += 'Premi OK per essere rediretto alla pagina.';
showMessage( msg, null, url );
}
} )
.fail ( function ( code, data ) {
showMessage( 'Errore nel creare la sezione: ' + data.error.info );
} );
}
 
/**
* Gestore del click sul pulsante "Crea la richiesta".
*/
function submitHandler() {
var musicista, sandbox, checked = false, criteri = [], error;
 
musicista = $.trim( $( '#gmc-musicista' ).val() );
sandbox = $.trim( $( '#gmc-sandbox' ).val() );
 
// valida il form
for ( var i = 1; i <= numCriteri; i++ ) {
if ( $( '#gmc-m' + i ).prop( 'checked' ) ) {
checked = true;
var id = 'gmc-m' + i + '-text';
var val = $.trim( $( '#' + id ).val() );
if ( val ) {
criteri[ i - 1 ] = val;
} else {
$( '#' + id ).focus();
error = elements[ id ].msg;
break;
}
}
}
 
if ( !musicista ) {
$( '#gmc-musicista' ).focus();
error = elements[ 'gmc-musicista' ].msg;
} else if ( !checked ) {
error = 'nessun criterio selezionato.';
}
 
if ( error ) {
showMessage( 'Errore: ' + error );
} else {
createRequest( musicista, sandbox, criteri );
}
}
 
/**
* Aggiunge a un textbox l'autocompletamento per i titoli delle pagine.
* @param {object} el - Il textbox a cui aggiungere l'autocompletamento.
*/
function addAutocomplete( $el ) {
var api = new mw.Api();
$el.autocomplete( {
source: function( request, response ) {
api.get( {
action: 'query',
prop: 'info|pageprops',
generator: 'prefixsearch',
gpssearch: request.term,
gpslimit: 10,
redirects: true,
ppprop: 'disambiguation',
} ).done( function ( data ) {
var pages = [];
if ( data.query && data.query.pages ) {
$.each( data.query.pages, function( i, page ) {
pages.push( page.title );
} );
}
response( pages );
} );
}
} );
}
 
function buildForm() {
// verifica che nella pagina esistano tutti gli elementi segnaposto necessari
for ( var id in elements ) {
if ( elements.hasOwnProperty( id ) ) {
if ( !$( '#' + id ).length ) {
console.log( '[Form-valutazione-enc.js]: ' + id + ' non trovato.' );
return;
}
}
}
 
// div per i messaggi
$( '<div>' ).attr( 'id', 'gmc-dialog' ).appendTo( 'body' );
 
// crea i nuovi elementi HTML e li sostituisce a quelli segnaposto
$.each( elements, function( id, el ) {
var $el;
switch ( el.tipo ) {
case 'checkbox':
$el = $( '<input/>' ).attr( 'type', 'checkbox' );
break;
case 'textbox':
$el = $( '<input/>' ).attr( 'type', 'text' ).attr( 'size', 80 );
if ( el.autocomplete ) {
addAutocomplete( $el );
}
break;
case 'textarea':
$el = $( '<textarea>' ).css( { width: '100%', height: '100%' } );
break;
case 'button':
$el = $( '<button/>' ).text( el.text ).addClass( 'mw-ui-button mw-ui-progressive' ).click ( submitHandler );
break;
}
 
// eventuale attributo placeholder
if ( el.placeholder ) {
$el.attr( 'placeholder', el.placeholder );
}
if ( id === 'gmc-sandbox' && mw.config.get( 'wgUserName' ) ) {
$el.attr( 'placeholder', 'Utente:' + mw.config.get( 'wgUserName' ) + '/Sandbox' );
}
$el.attr( 'id', id );
$( '#' + id ).replaceWith( $el );
} );
}
 
$( function () {
if ( mw.config.get( 'wgPageName' ) === formPage || mw.config.get( 'wgPageName' ) === formPage + '/Sandbox' ) {
mw.loader.using( [ 'jquery.ui.dialog', 'jquery.ui.autocomplete',
'jquery.spinner', 'mediawiki.api' ], function () {
buildForm();
} );
}
} );
}( mediaWiki, jQuery ) );