version 1.18, 2010/03/18 19:11:05
|
version 1.23, 2014/02/28 19:20:06
|
Line 130 sub get_javascripts() {
|
Line 130 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 183 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 192 sub get_pdf_data() {
|
Line 192 sub get_pdf_data() {
|
my @data = (); |
my @data = (); |
my $pdf = CAM::PDF->new($env{'form.file'}); |
my $pdf = CAM::PDF->new($env{'form.file'}); |
|
|
my @formFields = $pdf->getFormFieldList(); #get names of formfields |
if($pdf) { |
|
my @formFields = $pdf->getFormFieldList(); #get names of form fields |
foreach my $field (@formFields) { |
|
my $dict = $pdf->getFormFieldDict($pdf->getFormField($field)); # get formfield dictonary |
foreach my $field (@formFields) { |
|
my $dict = $pdf->getFormFieldDict($pdf->getFormField($field)); # get form field dictonary |
|
|
# |
# this is necessary because CAM::PDF has a problem with form fieldnames which include a |
# this is necessary because CAM::PDF has a problem with formfieldnames 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" |
# "i", "i.am" and "i.am.aFormfield". The fragmentary names keep no values and will be ignored. |
# and "i.am.aFormfield". The fragmentary names keep no values and will be ignored. |
if($dict->{'V'}) { |
if($dict->{'V'}) { |
push(@data, $field."?". $dict->{'V'}{'value'}); #binding fieldname with value |
push(@data, $field."?". $dict->{'V'}{'value'}); #binding fieldname with value |
} |
} |
} |
} |
} |
return @data; |
return @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 299 sub grade_pdf {
|
Line 299 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 375 sub parse_grade_answer {
|
Line 377 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) { |