Il logo di batmath
www.batmath.it

Invio dei risultati di un test ad una stampante locale

Quasi nello stesso modo in cui si spediscono i risultati di un test via mail, si possono invece inviare ad una stampante locale. Questo sistema è particolarmente utile quando si vogliono usare i test pubblicati sul proprio sito come verifiche in classe. Nonostante il codice prodotto con HotPotatoes non sia studiato per offrire le garanzie di sicurezza (nel senso delle copiature!) che invece offrono altri programmi più complessi (come del resto è ovvio con il materiale distribuito sulla rete), la possibilità di mettere in rete un test, farlo eseguire subito dopo agli studenti, e poter avere una stampa che riepiloghi il punteggio individuale è, secondo noi, oltremodo interessante.

Il processo da seguire è molto simile a quello già considerato per l'uso dell'applicazione formmail di Digiland e richiede un intervento sempre sulle sezioni A e B considerate: per questo riporteremo solo il codice originale e quello modificato, senza particolari commenti. Partiamo dal codice originale di JBC, versione 5.4, che si trova nella cartella source di HotPotatoes, con il nome JBC5.ht_ Per gli altri programmi la procedura è simile. Anche per le successive versioni di JBC gli adattamenti sono semplici.

Codice originale:

Sezione A

[inclSendResults]
var UserName = '';
var StartTime = (new Date()).toLocaleString();

var ResultForm = '<html><body><form name="Results" action="[strFormMailURL]" method="post" enctype="x-www-form-encoded">';
ResultForm += '<input type="hidden" name="recipient" value="[strEMail]"></input>';
ResultForm += '<input type="hidden" name="subject" value="[strExerciseTitle]"></input>';
ResultForm += '<input type="hidden" name="Exercise" value="[strExerciseTitle]"></input>';
ResultForm += '<input type="hidden" name="realname" value=""></input>';
ResultForm += '<input type="hidden" name="Score" value=""></input>';
ResultForm += '<input type="hidden" name="Start_Time" value=""></input>';
ResultForm += '<input type="hidden" name="End_Time" value=""></input>';
ResultForm += '<input type="hidden" name="title" value="Thanks!"></input>';
[inclPageBGColor]
ResultForm += '<input type="hidden" name="bgcolor" value="[strPageBGColor]"></input>';
[/inclPageBGColor]

ResultForm += '<input type="hidden" name="text_color" value="[strTitleColor]"></input>';
ResultForm += '<input type="hidden" name="sort" value="order:realname,Exercise,Score,Start_Time,End_Time"></input>';
ResultForm += '</form></body></html>';
[/inclSendResults]

Sezione B

[inclSendResults]
function SendResults(Score){
var today = new Date;
var NewName = '' + today.getTime();
var NewWin = window.open('Submission', NewName, 'toolbar=no,location=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no,,width=400,height=300');

NewWin.document.clear();
NewWin.document.open();
NewWin.document.write(ResultForm);
NewWin.document.close();
NewWin.document.Results.Score.value = Score + '%';
NewWin.document.Results.realname.value = UserName;
NewWin.document.Results.End_Time.value = (new Date()).toLocaleString();
NewWin.document.Results.Start_Time.value = StartTime;
NewWin.document.Results.submit();
}
[/inclSendResults]

Codice modificato

Sezione A

[inclSendResults]
var UserName = '';
var StartTime = (new Date()).toLocaleString();

var ResultForm = '<html><body onLoad="window.print()">';
ResultForm += '<form name="Results">';
ResultForm += '<input type="text" size="100" disabled name="Exercise" value="[strExerciseTitle]"></input>';
ResultForm += '<input type="text" size="100" disabled name="realname" value=""></input>';
ResultForm += '<input type="text" size="100" disabled name="Score" value=""></input>';
ResultForm += '<input type="text" size="100" disabled name="Start_Time" value=""></input>';
ResultForm += '<input type="text" size="100" disabled name="End_Time" value=""></input>';
[inclPageBGColor]
[/inclPageBGColor]

ResultForm += '</form></body></html>';
[/inclSendResults]

N.B. Le text box sono disabled per evitare un intervento dell'utente a modificare i dati prima della stampa. 

Sezione B

[inclSendResults]
function SendResults(Score){
var today = new Date;
var NewName = '' + today.getTime();
var NewWin = window.open('Submission', NewName, 'toolbar=no,location=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no,,width=700,height=500');

NewWin.document.clear();
NewWin.document.open();
NewWin.document.write(ResultForm);
NewWin.document.Results.Score.value = Score + '%';
NewWin.document.Results.realname.value = UserName;
NewWin.document.Results.End_Time.value = (new Date()).toLocaleString();
NewWin.document.Results.Start_Time.value = StartTime;
NewWin.document.close();
}
[/inclSendResults]

A questo punto quando lanciate JBC, nella scheda CGI del menu di configurazione dell'esercizio, potete lasciare in bianco sia lo spazio per l'indirizzo delle script CGI formmail sia quello per l'indirizzo e-mail, in quanto non vengono utilizzati, ma dovete attivare l'opzione Invia risultati con un modulo CGI ad un indirizzo e-mail.

Potete anche, naturalmente, aggiungere il Numero di risposte corrette al primo tentativo.

Buon lavoro!

pagina pubblicata il 21/04/2002 - ultimo aggiornamento il 01/09/2003