[LON-CAPA-cvs] cvs: loncom /homework grades.pm /localize/localize de.pm es.pm pt.pm zh.pm
bisitz
bisitz at source.lon-capa.org
Fri Dec 20 12:18:50 EST 2013
bisitz Fri Dec 20 17:18:50 2013 EDT
Modified files:
/loncom/homework grades.pm
/loncom/localize/localize de.pm es.pm pt.pm zh.pm
Log:
Improve bubblesheet grading upload process - Better overview, consistent layout:
- Standard design using confirm_success
- Additionally show absolute matching results
- Skip warning and additional info about low percentage of matches in case of 100% matching.
- Consistent punctuation, consistent wording
- Updated related translation file entries
- de.pm: translation corrections and improvements
-------------- next part --------------
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.709 loncom/homework/grades.pm:1.710
--- loncom/homework/grades.pm:1.709 Fri Dec 6 14:19:49 2013
+++ loncom/homework/grades.pm Fri Dec 20 17:18:42 2013
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.709 2013/12/06 14:19:49 bisitz Exp $
+# $Id: grades.pm,v 1.710 2013/12/20 17:18:42 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -8688,23 +8688,30 @@
}
my %coursedata=&Apache::lonnet::coursedescription($env{'form.domainid'}.'_'.$env{'form.courseid'});
my $uploadedfile;
- $r->print('<h3>'.&mt("Uploading file to [_1]",$coursedata{'description'}).'</h3>');
+ $r->print('<p>'.&mt('Uploading file to [_1]','"'.$coursedata{'description'}.'"').'</p>');
if (length($env{'form.upfile'}) < 2) {
- $r->print(&mt('[_1]Error:[_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.','<span class="LC_error">','</span>','<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>'));
+ $r->print(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.',
+ '<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>'),1));
} else {
my $result =
&Apache::lonnet::userfileupload('upfile','','scantron','','','',
$env{'form.courseid'},$env{'form.domainid'});
- if ($result =~ m{^/uploaded/}) {
- $r->print(&mt('[_1]Success:[_2] Successfully uploaded [_3] bytes of data into location: [_4]',
- '<span class="LC_success">','</span>',(length($env{'form.upfile'})-1),
- '<span class="LC_filename">'.$result.'</span>'));
+ if ($result =~ m{^/uploaded/}) {
+ $r->print(
+ &Apache::lonhtmlcommon::confirm_success(&mt('Upload successful')).'<br />'.
+ &mt('Uploaded [_1] bytes of data into location: [_2]',
+ (length($env{'form.upfile'})-1),
+ '<span class="LC_filename">'.$result.'</span>'));
($uploadedfile) = ($result =~ m{/([^/]+)$});
$r->print(&validate_uploaded_scantron_file($env{'form.domainid'},
$env{'form.courseid'},$uploadedfile));
- } else {
- $r->print(&mt('[_1]Error:[_2] An error ([_3]) occurred when attempting to upload the file, [_4]',
- '<span class="LC_error">','</span>',$result,
+ } else {
+ $r->print(
+ &Apache::lonhtmlcommon::confirm_success(&mt('Upload failed'),1).'<br />'.
+ &mt('An error ([_1]) occurred when attempting to upload the file: [_2]',
+ $result,
'<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>'));
}
}
@@ -8726,7 +8733,7 @@
my $output;
if (@lines) {
my (%counts,$max_match_format);
- my ($max_match_count,$max_match_pct) = (0,0);
+ my ($found_match_count,$max_match_count,$max_match_pct) = (0,0,0);
my $classlist = &Apache::loncoursedata::get_classlist($cdom,$cname);
my %idmap = &username_to_idmap($classlist);
foreach my $key (keys(%idmap)) {
@@ -8769,6 +8776,7 @@
if (($max_match_format eq '') || ($percent_match > $max_match_pct)) {
$max_match_pct = $percent_match;
$max_match_format = $key;
+ $found_match_count = $counts{$key}{'found'};
$max_match_count = $counts{$key}{'total'};
}
}
@@ -8787,17 +8795,40 @@
}
}
my $showpct = sprintf("%.0f",$max_match_pct).'%';
- $output .= '<br />'.&mt('Comparison of student IDs in the uploaded file with the course roster found matches for [_1] of the [_2] entries in the file (for the format defined for [_3]).','<b>'.$showpct.'</b>','<b>'.$max_match_count.'</b>',$format_descs).
- '<br />'.&mt('A low percentage of matches results from one of the following:').'<ul>'.
- '<li>'.&mt('The file was uploaded to the wrong course').'</li>'.
- '<li>'.&mt('The data are not in the format expected for the domain: [_1]',
- '<i>'.$cdom.'</i>').'</li>'.
- '<li>'.&mt('Students did not bubble their IDs, or mis-bubbled them').'</li>'.
- '<li>'.&mt('The course roster is not up to date').'</li>'.
- '</ul>';
+ $output .= '<br />';
+ if ($found_match_count == $max_match_count) {
+ # 100% matching entries
+ $output .= &Apache::lonhtmlcommon::confirm_success(
+ &mt('Comparison of student IDs: [_1] matching ([quant,_2,entry,entries])',
+ '<b>'.$showpct.'</b>',$found_match_count)).'<br />'.
+ &mt('Comparison of student IDs in the uploaded file with'.
+ ' the course roster found matches for [_1] of the [_2] entries'.
+ ' in the file (for the format defined for [_3]).',
+ '<b>'.$showpct.'</b>','<b>'.$max_match_count.'</b>',$format_descs);
+ } else {
+ # Not all entries matching? -> Show warning and additional info
+ $output .=
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Comparison of student IDs: [_1] matching ([_2]/[quant,_3,entry,entries])',
+ '<b>'.$showpct.'</b>',$found_match_count,$max_match_count).'<br />'.
+ &mt('Not all entries could be matched!'),1).'<br />'.
+ &mt('Comparison of student IDs in the uploaded file with'.
+ ' the course roster found matches for [_1] of the [_2] entries'.
+ ' in the file (for the format defined for [_3]).',
+ '<b>'.$showpct.'</b>','<b>'.$max_match_count.'</b>',$format_descs).
+ '<p class="LC_info">'.
+ &mt('A low percentage of matches results from one of the following:').
+ '</p><ul>'.
+ '<li>'.&mt('The file was uploaded to the wrong course.').'</li>'.
+ '<li>'.&mt('The data is not in the format expected for the domain: [_1]',
+ '<i>'.$cdom.'</i>').'</li>'.
+ '<li>'.&mt('Students did not bubble their IDs, or mis-bubbled them').'</li>'.
+ '<li>'.&mt('The course roster is not up to date.').'</li>'.
+ '</ul>';
+ }
}
} else {
- $output = '<span class="LC_warning">'.&mt('Uploaded file contained no data').'</span>';
+ $output = '<p class="LC_warning">'.&mt('Uploaded file contained no data').'</p>';
}
return $output;
}
@@ -9712,16 +9743,18 @@
$number++;
}
$result.="</p>\n";
- if ($number==0) {
- $result.='<span class="LC_error">'.&mt('No IDs found to determine correct answer').'</span>';
- return $result;
- }
+ if ($number==0) {
+ $result .=
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('No IDs found to determine correct answer'),1);
+ return $result;
+ }
}
if (length($env{'form.upfile'}) < 2) {
- $result.=&mt('[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.',
- '<span class="LC_error">',
- '</span>',
- '<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>');
+ $result .=
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.',
+ '<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>'),1);
return $result;
}
Index: loncom/localize/localize/de.pm
diff -u loncom/localize/localize/de.pm:1.565 loncom/localize/localize/de.pm:1.566
--- loncom/localize/localize/de.pm:1.565 Thu Dec 19 17:29:54 2013
+++ loncom/localize/localize/de.pm Fri Dec 20 17:18:48 2013
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# German Localization Lexicon
#
-# $Id: de.pm,v 1.565 2013/12/19 17:29:54 bisitz Exp $
+# $Id: de.pm,v 1.566 2013/12/20 17:18:48 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -12907,9 +12907,6 @@
'No IDs found to determine correct answer'
=> 'Keine IDs gefunden, um korrekte Antwort bestimmen zu können',
- '[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.'
-=> '[_1] Fehler: [_2] Die Datei, die Sie versucht haben hochzuladen, [_3] enthält keine Informationen. Bitte überprüfen Sie, ob Sie den richtigen Dateinamen angegeben haben.',
-
'Scanning clicker file'
=> 'Scanne Clicker-Datei',
@@ -19948,8 +19945,8 @@
'The course you selected is not a valid course in this domain'
=> 'Den Kurs, den Sie ausgewählt haben, ist kein gültiger Kurs in dieser Domäne',
- 'The course roster is not up to date'
-=> 'Die Kursteilnehmerliste ist nicht aktuell',
+ 'The course roster is not up to date.'
+=> 'Die Kursteilnehmerliste ist nicht aktuell.',
'The disk space allocated for group portfolio files in this community is the default quota for this domain: [_1] MB.'
=> 'Der Speicherplatz, der für Gruppen-Portfolio-Dateien in dieser Community reserviert wurde, entspricht dem voreingestellten Speicherplatz dieser Domäne: [_1] MB.',
@@ -19969,8 +19966,8 @@
'The disk space allocated for group portfolio files remains unchanged as [_1] MB.'
=> 'Der reservierte Speicherplatz für Gruppen-Portfolio-Dateien bleibt unverändert bei [_1] MB.',
- 'The file was uploaded to the wrong course'
-=> 'Die Datei wurde in den falschen Kurs hochgeladen',
+ 'The file was uploaded to the wrong course.'
+=> 'Die Datei wurde in den falschen Kurs hochgeladen.',
'The following changes occurred:'
=> 'Folgende Ãnderungen sind aufgetreten:',
@@ -20272,11 +20269,17 @@
'[_1] was excluded because the username violated format rules for the domain'
=> '[_1] wurde ausgeschlossen, da die Benutzerkennung gegen Formatregeln der Domäne verstöÃt',
- '[_1]Error:[_2] An error ([_3]) occurred when attempting to upload the file, [_4]'
-=> '[_1]Fehler:[_2] Ein Fehler ([_3]) trat beim Hochladen der Datei auf, [_4]',
+ 'Upload failed'
+=> 'Hochladen ist fehlgeschlagen',
+
+ 'An error ([_1]) occurred when attempting to upload the file: [_2]'
+=> 'Beim Hochladen der Datei [_2] ist ein Fehler aufgetreten: [_1]',
+
+ 'Not all entries could be matched!'
+=> 'Es konnten nicht alle Einträge zugeordnet werden!',
- '[_1]Error:[_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.'
-=> '[_1]Fehler:[_2] Die Datei, die Sie hochladen wollten, [_3] beinhaltet keine Informationen. Bitte überprüfen Sie, dass Sie den richtigen Dateinamen eingegeben haben.',
+ 'The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.'
+=> 'Die Datei [_1], die Sie versucht haben hochzuladen, beinhaltet keine Informationen. Bitte überprüfen Sie, ob Sie den richtigen Dateinamen angegeben haben.',
'clicker id'
=> 'Clicker-ID',
@@ -21734,10 +21737,13 @@
=> 'Vergleich der Bubblesheet-Daten (inklusive Korrekturen) mit den entsprechenden Einreichungs-Datensätzen (neueste Einreichung) für [_1][quant,_2,Student/in,Studierende][_3] ([quant,_4,Bubblesheet-Zeile,Bubblesheet-Zeilen] pro Student/in).',
'Comparison of student IDs in the uploaded file with the course roster found matches for [_1] of the [_2] entries in the file (for the format defined for [_3]).'
-=> 'Der Vergleich der Studierenden-IDs in der hochgeladenen Datei mit der Kursteilnehmerliste hat [_1] Treffer der insgesamt [_2] Einträge in der Datei gefunden (für das Format, das in [_3] festgelegt wurde).',
+=> 'Der Vergleich der Studierenden-IDs in der hochgeladenen Datei mit der Kursteilnehmerliste hat [_1] Treffer der insgesamt [_2] Einträge in der Datei ergeben (für das Format, das in [_3] festgelegt wurde).',
- 'Comparison of student IDs in the uploaded file with the course roster found matches for [_1] of the [_2] entries in the file (for the format defined for [_3])'
-=> 'Der Vergleich der Studierenden-IDs in der hochgeladenen Datei mit der Kursteilnehmerliste hat [_1] Treffer der insgesamt [_2] Einträge in der Datei gefunden (für das Format, das in [_3] festgelegt wurde).',
+ 'Comparison of student IDs: [_1] matching ([quant,_2,entry,entries])'
+=> 'Vergleich der Studierenden-IDs: [_1] Treffer ([quant,_2,Eintrag,Einträge])',
+
+ 'Comparison of student IDs: [_1] matching ([_2]/[quant,_3,entry,entries])'
+=> 'Vergleich der Studierenden-IDs: [_1] Treffer ([_2]/[quant,_3,Eintrag,Einträgen])',
'Differences can occur if submissions were modified using manual grading after a bubblesheet grading pass.'
=> 'Es können Unterschiede auftreten, wenn Einreichungen nach einem Bubblesheet-Bewertungsdurchlauf über die manuelle Bewertung geändert wurden.',
@@ -21766,17 +21772,20 @@
'Students with exact correspondence between bubblesheet data and submissions are as follows:'
=> 'Studierende mit exakter Ãbereinstimmung der Bubblesheet-Daten mit den Einreichungen:',
- 'The data are not in the format expected for the domain: [_1]'
-=> 'Die Daten sind nicht in dem Format, das für die Domäne [_1] erwartet wurde.',
+ 'The data is not in the format expected for the domain: [_1]'
+=> 'Die Daten sind nicht in dem Format, wie es für die Domäne [_1] erwartet wurde.',
'Uploading file to [_1]'
-=> 'Datei [_1] wird hochgeladen',
+=> 'Datei wird in [_1] hochgeladen',
'You are not allowed to upload bubblesheet data to the requested course.'
=> 'Sie sind nicht berechtigt, Bubblesheet-Daten in den angeforderten Kurs hochzuladen.',
- '[_1]Success:[_2] Successfully uploaded [_3] bytes of data into location: [_4]'
-=> '[_1]Erfolg:[_2] Es wurden [_3] Datenbytes erfolgreich an den Ort [_4] hochgeladen.',
+ 'Upload successful'
+=> 'Hochladen war erfolgreich',
+
+ 'Uploaded [_1] bytes of data into location: [_2]'
+=> 'Es wurden [_1] Datenbytes an den Ort [_2] hochgeladen.',
'[quant,_1,file] uploaded to this anonymous survey'
=> '[quant,_1,Datei wurde,Dateien wurden] für die anonyme Umfrage hochgeladen',
Index: loncom/localize/localize/es.pm
diff -u loncom/localize/localize/es.pm:1.77 loncom/localize/localize/es.pm:1.78
--- loncom/localize/localize/es.pm:1.77 Thu Dec 19 18:15:00 2013
+++ loncom/localize/localize/es.pm Fri Dec 20 17:18:48 2013
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Spanish Localization Lexicon
#
-# $Id: es.pm,v 1.77 2013/12/19 18:15:00 bisitz Exp $
+# $Id: es.pm,v 1.78 2013/12/20 17:18:48 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -11514,9 +11514,6 @@
'No IDs found to determine correct answer'
=> 'No se encontró IDs para determinar la respuesta correcta',
- '[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.'
-=> '[_1] Error: [_2] El archivo que intentó cargar, [_3] no tiene información. Por favor revise que haya entrado el nombre del archivo correcto.',
-
'Scanning clicker file'
=> 'Escaneando archivo de clicker',
@@ -17747,8 +17744,8 @@
'The community you selected is not a valid community in this domain'
=> 'La comunidad seleccionada no es una comunidad válida en este dominio',
- 'The course roster is not up to date'
-=> 'La lista del curso no está actualizada',
+ 'The course roster is not up to date.'
+=> 'La lista del curso no está actualizada.',
'The disk space allocated for group portfolio files in this community is the default quota for this domain: [_1] MB.'
=> 'El espacio de disco asignado para archivos de portafolio grupal en esta comunidad es la cuota predeterminada para este dominio: [_1] MB.',
@@ -17762,8 +17759,8 @@
'The disk space allocated for group portfolio files remains unchanged as [_1] MB.'
=> 'El espacio de disco asignado para archivos de portafolio grupal permanece sin cambio [_1] MB.',
- 'The file was uploaded to the wrong course'
-=> 'El archivo fue cargado al curso incorrecto',
+ 'The file was uploaded to the wrong course.'
+=> 'El archivo fue cargado al curso incorrecto.',
'The following changes occurred:'
=> 'Los siguientes cambios ocurrieron:',
@@ -18035,11 +18032,11 @@
'[_1] was excluded because the username violated format rules for the domain'
=> '[_1] fue excluÃdo porque el usuario violó las reglas de formato para el dominio',
- '[_1]Error:[_2] An error ([_3]) occurred when attempting to upload the file, [_4]'
-=> '[_1]Error:[_2] Un error ([_3]) ocurrió cuando intentaba cargar el archivo, [_4]',
+ 'An error ([_1]) occurred when attempting to upload the file: [_2]'
+=> 'Un error ([_1]) ocurrió cuando intentaba cargar el archivo [_2]',
- '[_1]Error:[_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.'
-=> '[_1]Error:[_2] El archivo que intentó cargar, [_3] estaba sin información. Por favor revise que entró el nombre correcto del archivo.',
+ 'The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.'
+=> 'El archivo [_1] que intentó cargar estaba sin información. Por favor revise que entró el nombre correcto del archivo.', # 'El archivo [_1] que intentó cargar no tiene información. Por favor revise que haya entrado el nombre del archivo correcto.',
'clicker id'
=> 'Clicker ID',
Index: loncom/localize/localize/pt.pm
diff -u loncom/localize/localize/pt.pm:1.69 loncom/localize/localize/pt.pm:1.70
--- loncom/localize/localize/pt.pm:1.69 Thu Dec 19 18:15:00 2013
+++ loncom/localize/localize/pt.pm Fri Dec 20 17:18:48 2013
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Portuguese Localization Lexicon
#
-# $Id: pt.pm,v 1.69 2013/12/19 18:15:00 bisitz Exp $
+# $Id: pt.pm,v 1.70 2013/12/20 17:18:48 bisitz Exp $
#
# Copyright UNICAMP, Sao Paulo
# Supported in part by Partnership in Global Learning
@@ -17878,8 +17878,8 @@
'The course owner has invited you to become a co-owner:'
=> 'The course owner has invited you to become a co-owner:',
- 'The course roster is not up to date'
-=> 'The course roster is not up to date',
+ 'The course roster is not up to date.'
+=> 'The course roster is not up to date.',
'The courseID provided does not match a community in this domain.'
=> 'The courseID provided does not match a community in this domain.',
@@ -17890,8 +17890,8 @@
'The current status of this request could not be verified as pending approval/institutional action.'
=> 'The current status of this request could not be verified as pending approval/institutional action.',
- 'The data are not in the format expected for the domain: [_1]'
-=> 'The data are not in the format expected for the domain: [_1]',
+ 'The data is not in the format expected for the domain: [_1]'
+=> 'The data is not in the format expected for the domain: [_1]',
'The default privileges new members will receive are:'
=> 'The default privileges new members will receive are:',
@@ -17965,8 +17965,8 @@
'The file format for the uploaded portion of the message is'
=> 'The file format for the uploaded portion of the message is',
- 'The file was uploaded to the wrong course'
-=> 'The file was uploaded to the wrong course',
+ 'The file was uploaded to the wrong course.'
+=> 'The file was uploaded to the wrong course.',
'The first date for automated enrollment has been changed'
=> 'The first date for automated enrollment has been changed',
@@ -20614,9 +20614,6 @@
'[_1] Display Request Queue'
=> '[_1] Display Request Queue',
- '[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.'
-=> '[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.',
-
'[_1] Kerberos authenticated with domain [_2] [_3] Version 4 [_4] Version 5 [_5]'
=> '[_1] Kerberos authenticated with domain [_2] [_3] Version 4 [_4] Version 5 [_5]',
@@ -20812,11 +20809,11 @@
'[_1]Continue[_2] on in Inline Menu mode'
=> '[_1]Continue[_2] on in Inline Menu mode',
- '[_1]Error:[_2] An error ([_3]) occurred when attempting to upload the file, [_4]'
-=> '[_1]Error:[_2] An error ([_3]) occurred when attempting to upload the file, [_4]',
+ 'An error ([_1]) occurred when attempting to upload the file [_2]'
+=> 'An error ([_1]) occurred when attempting to upload the file [_2]',
- '[_1]Error:[_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.'
-=> '[_1]Error:[_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.',
+ 'The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.'
+=> 'The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.',
'[_1]Hide[_2] clicker id'
=> '[_1]Hide[_2] clicker id',
Index: loncom/localize/localize/zh.pm
diff -u loncom/localize/localize/zh.pm:1.116 loncom/localize/localize/zh.pm:1.117
--- loncom/localize/localize/zh.pm:1.116 Thu Dec 19 18:16:26 2013
+++ loncom/localize/localize/zh.pm Fri Dec 20 17:18:48 2013
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Chinese Simplified Localization Lexicon
#
-# $Id: zh.pm,v 1.116 2013/12/19 18:16:26 bisitz Exp $
+# $Id: zh.pm,v 1.117 2013/12/20 17:18:48 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -11363,8 +11363,8 @@
'No IDs found to determine correct answer'
=> 'No IDs found to determine correct answer',
- '[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.'
-=> '[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.',
+ 'The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.'
+=> 'The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.',
'Scanning clicker file'
=> 'Scanning clicker file',
More information about the LON-CAPA-cvs
mailing list