version 1.19, 2010/03/22 15:33:38
|
version 1.25, 2015/06/09 21:22:57
|
Line 122 sub handler() {
|
Line 122 sub handler() {
|
sub get_javascripts() { |
sub get_javascripts() { |
|
|
my $message = &mt('Please choose a PDF-File.'); |
my $message = &mt('Please choose a PDF-File.'); |
|
&js_escape(\$message); |
|
|
# simple test if the upload ends with ".pdf" |
# simple test if the upload ends with ".pdf" |
# it's only for giving a message to the user |
# it's only for giving a message to the user |
Line 130 sub get_javascripts() {
|
Line 131 sub get_javascripts() {
|
// <![CDATA[ |
// <![CDATA[ |
function checkFilename(form) { |
function checkFilename(form) { |
var fileExt = form.file.value; |
var fileExt = form.file.value; |
fileExt = fileExt.match(/[.]pdf\$/g); |
fileExt = fileExt.match(/[.]pdf\$/gi); |
if(fileExt) { |
if(fileExt) { |
return true; |
return true; |
} |
} |
Line 183 sub processPDF {
|
Line 184 sub processPDF {
|
&grade_pdf(@pdfdata); |
&grade_pdf(@pdfdata); |
} else { |
} else { |
$result .= '<p class="LC_error">' |
$result .= '<p class="LC_error">' |
.&mt("Can't find any valid PDF formfields.") |
.&mt("Can't find any valid PDF form fields.") |
.'</p>'; |
.'</p>'; |
} |
} |
} |
} |
Line 193 sub get_pdf_data() {
|
Line 194 sub get_pdf_data() {
|
my $pdf = CAM::PDF->new($env{'form.file'}); |
my $pdf = CAM::PDF->new($env{'form.file'}); |
|
|
if($pdf) { |
if($pdf) { |
my @formFields = $pdf->getFormFieldList(); #get names of formfields |
my @formFields = $pdf->getFormFieldList(); #get names of form fields |
|
|
foreach my $field (@formFields) { |
foreach my $field (@formFields) { |
my $dict = $pdf->getFormFieldDict($pdf->getFormField($field)); # get formfield dictonary |
my $dict = $pdf->getFormFieldDict($pdf->getFormField($field)); # get form field dictonary |
|
|
# this is necessary because CAM::PDF has a problem with formfieldnames which include a |
# this is necessary because CAM::PDF has a problem with form fieldnames which include a |
# dot in fieldnames. So a fieldname like "i.am.aFormfield" will offer three fieldnames |
# dot in fieldnames. So a fieldname like "i.am.aFormfield" will offer three fieldnames |
# "i", "i.am" and "i.am.aFormfield". The fragmentary names keep no values and will be ignored. |
# "i", "i.am" and "i.am.aFormfield". The fragmentary names keep no values and will be ignored. |
if($dict->{'V'}) { |
if($dict->{'V'}) { |
Line 210 sub get_pdf_data() {
|
Line 211 sub get_pdf_data() {
|
} |
} |
|
|
sub grade_pdf { |
sub grade_pdf { |
my $result = (); |
|
my @pdfdata = @_; |
my @pdfdata = @_; |
my ($result,$meta,%grades,%problems,%foreigncourse,$debug); |
my ($result,$meta,%grades,%problems,%foreigncourse,$debug); |
|
|
Line 300 sub grade_pdf {
|
Line 300 sub grade_pdf {
|
$result .= '<td><a href="/res/'.$problem{'resource'}. |
$result .= '<td><a href="/res/'.$problem{'resource'}. |
'?symb='. |
'?symb='. |
&HTML::Entities::encode($problem{'symb'},'"&<>'). |
&HTML::Entities::encode($problem{'symb'},'"&<>'). |
'">'.$problemname.'</a></td><td class="'; |
'">'.$problemname.'</a></td><td><span class="'; |
if ($grade eq "EXACT_ANS" || $grade eq "APPROX_ANS") { |
if ($grade eq "EXACT_ANS" || $grade eq "APPROX_ANS") { |
$result .= 'LC_answer_correct'; |
$result .= 'LC_answer_correct'; |
} else { |
} elsif ($grade eq "DRAFT") { |
|
$result .= 'LC_answer_not_charged_try'; |
|
} else { |
$result .= 'LC_answer_charged_try'; |
$result .= 'LC_answer_charged_try'; |
} |
} |
$result .= '">'; |
$result .= '">'; |
Line 376 sub parse_grade_answer {
|
Line 378 sub parse_grade_answer {
|
my %answerhash = ('EXACT_ANS' => &mt('You are correct.'), |
my %answerhash = ('EXACT_ANS' => &mt('You are correct.'), |
'APPROX_ANS' => &mt('You are correct.'), |
'APPROX_ANS' => &mt('You are correct.'), |
'INCORRECT' => &mt('You are incorrect'), |
'INCORRECT' => &mt('You are incorrect'), |
|
'DRAFT' => &mt('Copy saved but not submitted.'), |
); |
); |
|
|
foreach my $key (keys %answerhash) { |
foreach my $key (keys(%answerhash)) { |
if($shortcut eq $key) { |
if($shortcut eq $key) { |
return $answerhash{$shortcut}; |
return $answerhash{$shortcut}; |
} |
} |
Line 392 sub dumpenv {
|
Line 395 sub dumpenv {
|
my $r = shift; |
my $r = shift; |
|
|
$r->print ("<br />-------------------<br />"); |
$r->print ("<br />-------------------<br />"); |
foreach my $key (sort (keys %env)) { |
foreach my $key (sort(keys(%env))) { |
$r->print ("<br />$key -> $env{$key}"); |
$r->print ("<br />$key -> $env{$key}"); |
} |
} |
$r->print ("<br />-------------------<br />"); |
$r->print ("<br />-------------------<br />"); |
$r->print ("<br />-------------------<br />"); |
$r->print ("<br />-------------------<br />"); |
foreach my $key (sort (keys %ENV)) { |
foreach my $key (sort(keys(%ENV))) { |
$r->print ("<br />$key -> $ENV{$key}"); |
$r->print ("<br />$key -> $ENV{$key}"); |
} |
} |
$r->print ("<br />-------------------<br />"); |
$r->print ("<br />-------------------<br />"); |