[LON-CAPA-cvs] cvs: loncom /homework essayresponse.pm externalresponse.pm
raeburn
raeburn at source.lon-capa.org
Sat Dec 6 12:46:40 EST 2014
raeburn Sat Dec 6 17:46:40 2014 EDT
Modified files:
/loncom/homework essayresponse.pm externalresponse.pm
Log:
- Move some code in start_essayresponse() and end_essayresponse to
subroutines within essayresponse.pm to facilitate reuse by
externalresponse.pm
Work in progress.
-------------- next part --------------
Index: loncom/homework/essayresponse.pm
diff -u loncom/homework/essayresponse.pm:1.120 loncom/homework/essayresponse.pm:1.121
--- loncom/homework/essayresponse.pm:1.120 Thu Dec 4 20:43:23 2014
+++ loncom/homework/essayresponse.pm Sat Dec 6 17:46:40 2014
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# essay (ungraded) style responses
#
-# $Id: essayresponse.pm,v 1.120 2014/12/04 20:43:23 raeburn Exp $
+# $Id: essayresponse.pm,v 1.121 2014/12/06 17:46:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -47,97 +47,110 @@
my $id = &Apache::response::start_response($parstack,$safeeval);
if ($target eq 'meta') {
$result=&Apache::response::meta_package_write('essayresponse');
- } elsif ($target eq 'web' &&
- $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
- my $part= $Apache::inputtags::part;
- my $ncol= &Apache::lonnet::EXT("resource.$part".'_'."$id.maxcollaborators");
- my $coll= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"');
- my $uploadedfiletypes= &Apache::lonnet::EXT("resource.$part".'_'."$id.uploadedfiletypes");
- $uploadedfiletypes=~s/[^\w\,]//g;
- my $maxfilesize=&Apache::lonnet::EXT("resource.$part".'_'."$id.maxfilesize");
- if (!defined($maxfilesize)) {
- $maxfilesize = 10.0; #FIXME This should become a domain configuration
- }
- my $hiddendraft;
- if (($Apache::lonhomework::type eq 'survey') ||
- ($Apache::lonhomework::type eq 'surveycred') ||
- ($Apache::lonhomework::type eq 'anonsurvey') ||
- ($Apache::lonhomework::type eq 'anonsurveycred')) {
- $hiddendraft = '<input type="hidden" name="HWDRAFT'.$part.'_'.$id.'" value="yes" />';
- } else {
- my $status_text = &mt('Submission type');
- if ($Apache::lonhomework::history{"resource.$part.award"} eq 'DRAFT') {
- $status_text .= '<br />'.&mt('(Currently -- draft)');
+ } 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"},'<>&"');
+ }
+ if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
+ my $ncol= &Apache::lonnet::EXT("resource.$part".'_'."$id.maxcollaborators");
+ my $uploadedfiletypes= &Apache::lonnet::EXT("resource.$part".'_'."$id.uploadedfiletypes");
+ $uploadedfiletypes=~s/[^\w\,]//g;
+ my $maxfilesize=&Apache::lonnet::EXT("resource.$part".'_'."$id.maxfilesize");
+ if (!defined($maxfilesize)) {
+ $maxfilesize = 10.0; #FIXME This should become a domain configuration
+ }
+ my $hiddendraft;
+ if (($Apache::lonhomework::type eq 'survey') ||
+ ($Apache::lonhomework::type eq 'surveycred') ||
+ ($Apache::lonhomework::type eq 'anonsurvey') ||
+ ($Apache::lonhomework::type eq 'anonsurveycred')) {
+ $hiddendraft = '<input type="hidden" name="HWDRAFT'.$part.'_'.$id.'" value="yes" />';
+ } else {
+ $result = &draft_row($part,$id,$ncol,$uploadedfiletypes);
+ }
+ if ($ncol > 0) {
+ $result .= &get_collab_row($part,$id,$coll,$ncol);
+ }
+ my $filesfrom = 'both';
+ my $stuname = &Apache::lonnet::EXT('user.name');
+ my $studom = &Apache::lonnet::EXT('user.domain');
+ if (!&Apache::lonnet::usertools_access($stuname,$studom,'portfolio')) {
+ $filesfrom = 'uploadonly';
+ }
+ $result.=&Apache::inputtags::file_selector($part,$id,$uploadedfiletypes,
+ $filesfrom,undef,$maxfilesize);
+ if ($result) {
+ $result =
+ '<div>'.$hiddendraft.
+ &Apache::lonhtmlcommon::start_pick_box().
+ $result.
+ &Apache::lonhtmlcommon::end_pick_box().'</div>';
+ } else {
+ $result = $hiddendraft;
}
- $result = &Apache::lonhtmlcommon::row_title($status_text);
- my $closure;
- unless ($ncol || $uploadedfiletypes) {
- $closure = 1;
- }
- $result.=
- '<label>'.
- '<input type="radio" name="HWDRAFT'.$part.'_'.$id.'" value="yes" checked="checked" /> '.
- &mt('Submit entries below as answer to receive credit').
- '</label> <br />'.
- '<label>'.
- '<input type="radio" name="HWDRAFT'.$part.'_'.$id.'" value="no" /> '.
- &mt('Save entries below (not submitted for credit yet)').
- '</label>'.
- &Apache::lonhtmlcommon::row_closure($closure);
- }
-
- if ($ncol > 0) {
- $result.= &Apache::lonhtmlcommon::row_title(&mt('Collaborators')).
- '<label>'.
- &mt('Collaborators:').' <input type="text" size="70" max="80" name="HWCOL'.
- $part.'_'.$id.'" value="'.$coll.'" /><br />'.
- &mt('Enter a maximum of [quant,_1,collaborator] using username or username:domain, e.g. smithje or smithje:[_2].',$ncol,$env{'user.domain'});
- if ($ncol > 1) {
- $result .= '<br />'.&mt('If entering more than one, use spaces to separate the collaborators.');
- }
- $result .= '</label><br />';
- $result .= &check_collaborators($ncol,$coll) if ($coll =~ /\w+/);
- $result .= &Apache::lonhtmlcommon::row_closure();
- }
- my $filesfrom = 'both';
- my $stuname = &Apache::lonnet::EXT('user.name');
- my $studom = &Apache::lonnet::EXT('user.domain');
- if (!&Apache::lonnet::usertools_access($stuname,$studom,'portfolio')) {
- $filesfrom = 'uploadonly';
- }
- $result.=&Apache::inputtags::file_selector($part,$id,$uploadedfiletypes,
- $filesfrom,undef,$maxfilesize);
- if ($result) {
- $result =
- '<div>'.$hiddendraft.
- &Apache::lonhtmlcommon::start_pick_box().
- $result.
- &Apache::lonhtmlcommon::end_pick_box().'</div>';
} else {
- $result = $hiddendraft;
+ $result = &show_status_table($part,$id,$coll);
}
- } elsif ($target eq 'web' &&
- $Apache::inputtags::status[-1] ne 'CAN_ANSWER') {
- my $part= $Apache::inputtags::part;
- my @msgs;
- if ($Apache::lonhomework::history{"resource.$part.$id.collaborators"} =~ /\S/) {
- my $coll= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"');
- $result .= '<td><i>'.&mt('Collaborated with [_1]',$coll).'</i></td>';
- }
+ }
+ return $result;
+}
- my $current_files_display = &Apache::inputtags::current_file_submissions($part,$id);
- if ($current_files_display) {
- $result .= '<td><b>'.&mt('Submitted files:').'</b><br />'.
- $current_files_display.'</td>';
- }
+sub draft_row {
+ my ($part,$id,$ncol,$uploadedfiletypes) = @_;
+ my $status_text = &mt('Submission type');
+ if ($Apache::lonhomework::history{"resource.$part.award"} eq 'DRAFT') {
+ $status_text .= '<br />'.&mt('(Currently -- draft)');
+ }
+ my $closure;
+ unless ($ncol || $uploadedfiletypes) {
+ $closure = 1;
+ }
+ return &Apache::lonhtmlcommon::row_title($status_text).
+ '<label>'.
+ '<input type="radio" name="HWDRAFT'.$part.'_'.$id.'" value="yes" checked="checked" />'.
+ ' '.&mt('Submit entries below as answer to receive credit').'</label> <br />'.
+ '<label>'.
+ '<input type="radio" name="HWDRAFT'.$part.'_'.$id.'" value="no" /> '.
+ &mt('Save entries below (not submitted for credit yet)').
+ '</label>'.
+ &Apache::lonhtmlcommon::row_closure($closure);
+}
- if ($result ne '') {
- $result =
- '<table class="LC_pastsubmission"><tr>'.$result.
- '</tr></table>';
- }
+sub get_collab_row {
+ my ($part,$id,$coll,$ncol,$closure) = @_;
+ my $output = &Apache::lonhtmlcommon::row_title(&mt('Collaborators')).
+ '<label>'.
+ &mt('Collaborators:').' <input type="text" size="70" max="80" name="HWCOL'.
+ $part.'_'.$id.'" value="'.$coll.'" /><br />'.
+ &mt('Enter a maximum of [quant,_1,collaborator] using username or username:domain, e.g. smithje or smithje:[_2].',
+ $ncol,$env{'user.domain'});
+ if ($ncol > 1) {
+ $output .= '<br />'.&mt('If entering more than one, use spaces to separate the collaborators.');
+ }
+ $output .= '</label><br />';
+ $output .= &check_collaborators($ncol,$coll) if ($coll =~ /\w+/);
+ $output .= &Apache::lonhtmlcommon::row_closure($closure);
+ return $output;
+}
+
+sub show_status_table {
+ my ($part,$id,$coll) = @_;
+ my $output;
+ if ($coll) {
+ $output = '<td><i>'.&mt('Collaborated with [_1]',$coll).'</i></td>';
}
- return $result;
+ my $current_files_display = &Apache::inputtags::current_file_submissions($part,$id);
+ if ($current_files_display) {
+ $output .= '<td><b>'.&mt('Submitted files:').'</b><br />'.
+ $current_files_display.'</td>';
+ }
+ if ($output ne '') {
+ return '<table class="LC_pastsubmission"><tr>'.$output.
+ '</tr></table>';
+ }
+ return;
}
sub end_essayresponse {
@@ -147,13 +160,7 @@
my $increment = &Apache::response::repetition();
my $result;
if ( $target eq 'grade' ) {
-# Deal with collaborators
- my $collaborators = $env{'form.HWCOL'.$part.'_'.$id};
- my $previous_list= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"');
- if ($collaborators ne $previous_list) {
-# &Apache::lonnet::logthis("New collaborators [$collaborators] [$previous_list]");
- $Apache::lonhomework::results{"resource.$part.$id.collaborators"}=$collaborators;
- }
+ &get_collaborators($part,$id);
# Scantron
if ( &Apache::response::submitted('scantron') ) {
$increment=&Apache::response::scored_response($part,$id);
@@ -255,6 +262,16 @@
return $result;
}
+sub get_collaborators {
+ my ($part,$id) = @_;
+ my $collaborators = $env{'form.HWCOL'.$part.'_'.$id};
+ my $previous_list= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"'
+);
+ if ($collaborators ne $previous_list) {
+ $Apache::lonhomework::results{"resource.$part.$id.collaborators"}=$collaborators;
+ }
+}
+
sub format_prior_response {
my ($mode,$answer,$other_data) = @_;
my $output;
@@ -610,8 +627,16 @@
=item start_essayresponse()
+=item draft_row()
+
+=item get_collab_row()
+
+=item show_status_table()
+
=item end_essayresponse()
+=item get_collaborators()
+
=item format_prior_response()
=item file_submission()
Index: loncom/homework/externalresponse.pm
diff -u loncom/homework/externalresponse.pm:1.27 loncom/homework/externalresponse.pm:1.28
--- loncom/homework/externalresponse.pm:1.27 Thu Dec 4 15:41:30 2014
+++ loncom/homework/externalresponse.pm Sat Dec 6 17:46:40 2014
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# external style responses
#
-# $Id: externalresponse.pm,v 1.27 2014/12/04 15:41:30 raeburn Exp $
+# $Id: externalresponse.pm,v 1.28 2014/12/06 17:46:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,6 +38,7 @@
use Apache::lonhtmlcommon;
use Apache::loncommon;
use Apache::lonnavmaps;
+use Apache::essayresponse;
use LONCAPA qw(:DEFAULT :match);
BEGIN {
@@ -74,99 +75,59 @@
}
} elsif ($target eq 'meta') {
$result=&Apache::response::meta_package_write('externalresponse');
- }
- elsif ($target eq 'web' &&
- $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
+ } elsif ($target eq 'web') {
my $part= $Apache::inputtags::part;
- my $ncol= &Apache::lonnet::EXT("resource.$part".'_'."$id.maxcollaborators");
- my $coll= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"');
- my $uploadedfiletypes= &Apache::lonnet::EXT("resource.$part".'_'."$id.uploadedfiletypes");
- $uploadedfiletypes=~s/[^\w\,]//g;
- my $maxfilesize=&Apache::lonnet::EXT("resource.$part".'_'."$id.maxfilesize");
- if (!defined($maxfilesize)) {
- $maxfilesize = 10.0; #FIXME This should become a domain configuration
+ my $coll;
+ if ($Apache::lonhomework::history{"resource.$part.$id.collaborators"} =~ /\S/) {
+ $coll = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"');
}
- if($uploadedfiletypes){
+ if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
+ my $ncol= &Apache::lonnet::EXT("resource.$part".'_'."$id.maxcollaborators");
+ my $uploadedfiletypes= &Apache::lonnet::EXT("resource.$part".'_'."$id.uploadedfiletypes");
+ $uploadedfiletypes=~s/[^\w\,]//g;
+ my $maxfilesize=&Apache::lonnet::EXT("resource.$part".'_'."$id.maxfilesize");
+ if (!defined($maxfilesize)) {
+ $maxfilesize = 10.0; #FIXME This should become a domain configuration
+ }
my $hiddendraft;
+ if ($uploadedfiletypes) {
if (($Apache::lonhomework::type eq 'survey') ||
($Apache::lonhomework::type eq 'surveycred') ||
($Apache::lonhomework::type eq 'anonsurvey') ||
($Apache::lonhomework::type eq 'anonsurveycred')) {
$hiddendraft = '<input type="hidden" name="HWDRAFT'.$part.'_'.$id.'" value="yes" />';
} else {
- my $status_text = &mt('Submission type');
- if ($Apache::lonhomework::history{"resource.$part.award"} eq 'DRAFT') {
- $status_text .= '<br />'.&mt('(Currently -- draft)');
- }
- $result = &Apache::lonhtmlcommon::row_title($status_text);
- my $closure;
- unless ($ncol || $uploadedfiletypes) {
- $closure = 1;
- }
- $result.=
- '<label>'.
- '<input type="radio" name="HWDRAFT'.$part.'_'.$id.'" value="yes" checked="checked" /> '.
- &mt('Submit entries below as answer to receive credit').
- '</label> <br />'.
- '<label>'.
- '<input type="radio" name="HWDRAFT'.$part.'_'.$id.'" value="no" /> '.
- &mt('Save entries below (not submitted for credit yet)').
- '</label>'.
- &Apache::lonhtmlcommon::row_closure($closure);
+ $result = &Apache::essayresponse::draft_row($part,$id,$ncol,$uploadedfiletypes);
}
-
if ($ncol > 0) {
- $result.= &Apache::lonhtmlcommon::row_title(&mt('Collaborators')).
- '<label>'.
- &mt('Collaborators:').' <input type="text" size="70" max="80" name="HWCOL'.
- $part.'_'.$id.'" value="'.$coll.'" /><br />'.
- &mt('Enter a maximum of [quant,_1,collaborator] using username or username:domain, e.g. smithje or smithje:[_2].',$ncol,$env{'user.domain'});
- if ($ncol > 1) {
- $result .= '<br />'.&mt('If entering more than one, use spaces to separate the collaborators.');
- }
- $result .= '</label><br />';
- $result .= &Apache::essayresponse::check_collaborators($ncol,$coll) if ($coll =~ /\w+/);
- $result .= &Apache::lonhtmlcommon::row_closure();
+ $result .= &Apache::essayresponse::get_collab_row($part,$id,$coll,$ncol);
}
my $filesfrom = 'both';
my $stuname = &Apache::lonnet::EXT('user.name');
my $studom = &Apache::lonnet::EXT('user.domain');
if (!&Apache::lonnet::usertools_access($stuname,$studom,'portfolio')) {
- $filesfrom = 'uploadonly';
+ $filesfrom = 'uploadonly';
}
$result.=&Apache::inputtags::file_selector($part,$id,$uploadedfiletypes,
- $filesfrom,undef,$maxfilesize);
- if ($result) {
- $result =
- '<div>'.$hiddendraft.
- &Apache::lonhtmlcommon::start_pick_box().
- $result.
- &Apache::lonhtmlcommon::end_pick_box().'</div>';
- } else {
- $result = $hiddendraft;
+ $filesfrom,undef,$maxfilesize);
+ } else {
+ if ($ncol > 0) {
+ $result = &Apache::essayresponse::get_collab_row($part,$id,$coll,$ncol,1);
}
+ }
+ if ($result) {
+ $result =
+ '<div>'.$hiddendraft.
+ &Apache::lonhtmlcommon::start_pick_box().
+ $result.
+ &Apache::lonhtmlcommon::end_pick_box().'</div>';
+ } else {
+ $result = $hiddendraft;
+ }
+ } else {
+ $result = &Apache::essayresponse::show_status_table($part,$id,$coll);
}
- } elsif ($target eq 'web' &&
- $Apache::inputtags::status[-1] ne 'CAN_ANSWER') {
- my $part= $Apache::inputtags::part;
- my @msgs;
- if ($Apache::lonhomework::history{"resource.$part.$id.collaborators"} =~ /\S/) {
- my $coll= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"');
- $result .= '<td><i>'.&mt('Collaborated with [_1]',$coll).'</i></td>';
- }
-
- my $current_files_display = &Apache::inputtags::current_file_submissions($part,$id);
- if ($current_files_display) {
- $result .= '<td><b>'.&mt('Submitted files:').'</b><br />'.
- $current_files_display.'</td>';
- }
-
- if ($result ne '') {
- $result =
- '<table class="LC_pastsubmission"><tr>'.$result.
- '</tr></table>';
- }
- }
+ }
return $result;
}
@@ -178,6 +139,7 @@
my $id = $Apache::inputtags::response['-1'];
my $increment = 1;
if ($target eq 'grade') {
+ &Apache::essayresponse::get_collaborators($part,$id);
if ( &Apache::response::submitted('scantron') ) {
my $increment=&Apache::response::scored_response($part,$id);
} elsif ( &Apache::response::submitted() ) {
More information about the LON-CAPA-cvs
mailing list