[LON-CAPA-cvs] cvs: loncom /homework essayresponse.pm /interface lonpdfupload.pm
raeburn
raeburn at source.lon-capa.org
Sun Mar 22 20:22:20 EDT 2026
raeburn Mon Mar 23 00:22:20 2026 EDT
Modified files:
/loncom/homework essayresponse.pm
/loncom/interface lonpdfupload.pm
Log:
- Bug 6121 PDF form fields
Checkbox provided above textarea for essayresponse to indicate if text in
filled form field is to be graded (checked) or is a draft (unchecked).
Index: loncom/homework/essayresponse.pm
diff -u loncom/homework/essayresponse.pm:1.128 loncom/homework/essayresponse.pm:1.129
--- loncom/homework/essayresponse.pm:1.128 Sun Mar 2 05:22:43 2025
+++ loncom/homework/essayresponse.pm Mon Mar 23 00:22:19 2026
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# essay (ungraded) style responses
#
-# $Id: essayresponse.pm,v 1.128 2025/03/02 05:22:43 raeburn Exp $
+# $Id: essayresponse.pm,v 1.129 2026/03/23 00:22:19 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -45,10 +45,10 @@
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result;
my $id = &Apache::response::start_response($parstack,$safeeval);
+ my $part= $Apache::inputtags::part;
if ($target eq 'meta') {
$result=&Apache::response::meta_package_write('essayresponse');
} elsif ($target eq 'web') {
- my $part= $Apache::inputtags::part;
my $coll;
if ($Apache::lonhomework::history{"resource.$part.$id.collaborators"} =~ /\S/) {
$coll = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"');
@@ -68,7 +68,7 @@
($Apache::lonhomework::type eq 'anonsurveycred')) {
$hiddendraft = '<input type="hidden" name="HWDRAFT'.$part.'_'.$id.'" value="yes" />';
} else {
- $result = &draft_row($part,$id,$ncol,$uploadedfiletypes,'essayresponse');
+ $result = &draft_row($part,$id,$ncol,$uploadedfiletypes,'essayresponse',$target);
}
if ($ncol > 0) {
$result .= &get_collab_row($part,$id,$coll,$ncol);
@@ -93,12 +93,21 @@
} else {
$result = &show_status_table($part,$id,$coll);
}
+ } elsif ((($target eq 'tex') && ($env{'form.pdfFormFields'} eq 'yes')) &&
+ ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') &&
+ ($Apache::lonhomework::type ne 'exam')) {
+ unless (($Apache::lonhomework::type eq 'survey') ||
+ ($Apache::lonhomework::type eq 'surveycred') ||
+ ($Apache::lonhomework::type eq 'anonsurvey') ||
+ ($Apache::lonhomework::type eq 'anonsurveycred')) {
+ $result = &draft_row($part,$id,'','','essayresponse',$target);
+ }
}
return $result;
}
sub draft_row {
- my ($part,$id,$ncol,$uploadedfiletypes,$resptype) = @_;
+ my ($part,$id,$ncol,$uploadedfiletypes,$resptype,$target) = @_;
my $status_text = &mt('Submission type');
if ($Apache::lonhomework::history{"resource.$part.award"} eq 'DRAFT') {
$status_text .= '<br />'.&mt('(Currently -- draft)');
@@ -117,7 +126,8 @@
externalresponse => &mt('Submit entries below for grading'),
}
);
- return &Apache::lonhtmlcommon::row_title($status_text).
+ if ($target eq 'web') {
+ return &Apache::lonhtmlcommon::row_title($status_text).
'<fieldset class="LC_landmark">'.
'<legend class="LC_visually_hidden">'.$status_text.'</legend>'.
'<div><label><input type="radio" name="HWDRAFT'.$part.'_'.$id.'" value="yes" checked="checked" />'.
@@ -126,6 +136,29 @@
'<input type="radio" name="HWDRAFT'.$part.'_'.$id.'" value="no" /> '.
$label{'draft'}{$resptype}.'</label></div></fieldset>'.
&Apache::lonhtmlcommon::row_closure($closure);
+ } elsif ((($target eq 'tex') && ($env{'form.pdfFormFields'} eq 'yes')) &&
+ ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') &&
+ ($Apache::lonhomework::type ne 'exam')) {
+ my ($uname,$udom,$digest) = &Apache::lonxml::get_user_digest();
+ if (($env{'request.symb'}) && ($env{'request.course.id'})) {
+ my %uuids = &Apache::lonnet::get('nohist_formfields',
+ [$env{'request.course.id'}.':'.$env{'request.symb'}],
+ $udom,$uname);
+ if ((exists($uuids{$env{'request.course.id'}.':'.$env{'request.symb'}})) &&
+ ($uuids{$env{'request.course.id'}.':'.$env{'request.symb'}})) {
+
+ my $fieldname = 'uuid_'.$uuids{$env{'request.course.id'}.':'.$env{'request.symb'}}
+ .'&user_'.$digest
+ .'&part_'.$part
+ .'&essay'
+ .'&HWDRAFT_'.$id;
+ return '\vskip 4 mm'.
+ &Apache::lonxml::print_pdf_checkbox($fieldname,'yes').' '.
+ &mt('Check if submitting for grading. Uncheck if saving a draft.').
+ '\strut \\\\ \strut \\\\';
+ }
+ }
+ }
}
sub get_collab_row {
Index: loncom/interface/lonpdfupload.pm
diff -u loncom/interface/lonpdfupload.pm:1.35 loncom/interface/lonpdfupload.pm:1.36
--- loncom/interface/lonpdfupload.pm:1.35 Sun Mar 22 23:12:53 2026
+++ loncom/interface/lonpdfupload.pm Mon Mar 23 00:22:20 2026
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# PDF Form Upload Handler
#
-# $Id: lonpdfupload.pm,v 1.35 2026/03/22 23:12:53 raeburn Exp $
+# $Id: lonpdfupload.pm,v 1.36 2026/03/23 00:22:20 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -301,7 +301,8 @@
sub grade_pdf {
my @pdfdata = @_;
my ($result,$meta,%grades,%problems,%foreigncourse,%mismatchuser,
- %types,%checkboxoff,%checkboxon,%checkboxtotal,%checkboxinfo,$debug);
+ %types,%checkboxoff,%checkboxon,%checkboxtotal,%checkboxinfo,
+ %essaydraft,$debug);
my $navmap = Apache::lonnavmaps::navmap->new();
if (!defined($navmap)) {
@@ -399,6 +400,9 @@
}
}
next;
+ } elsif (($type eq 'essay') && ($HWVAL =~ /^HWDRAFT(.+)$/)) {
+ $essaydraft{$symb.$part}{'HWVAL'.$1} = $value;
+ next;
}
my $submit = $part;
@@ -520,6 +524,14 @@
}
}
}
+ if ($types{$key}{$hwval} eq 'text') {
+ if (ref($essaydraft{$key}) eq 'HASH') {
+ if ($essaydraft{$key}{$hwval} eq 'yes') {
+ my ($id) = ($hwval =~ /^HWVAL_(.+)$/);
+ $problem{'HWDRAFT'.$part.'_'.$id} = 'yes';
+ }
+ }
+ }
}
}
my ($problemname, $grade) = &grade_problem(%problem);
More information about the LON-CAPA-cvs
mailing list