--- loncom/homework/inputtags.pm 2013/04/30 21:45:47 1.271.2.10
+++ loncom/homework/inputtags.pm 2012/08/03 15:15:56 1.305
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# input definitons
#
-# $Id: inputtags.pm,v 1.271.2.10 2013/04/30 21:45:47 raeburn Exp $
+# $Id: inputtags.pm,v 1.305 2012/08/03 15:15:56 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -185,16 +185,7 @@ sub start_textfield {
}
}
unless ($newvariation) {
- if ((($env{'form.grade_username'} eq '') && ($env{'form.grade_domain'} eq '')) ||
- (($env{'form.grade_username'} eq $env{'user.name'}) &&
- ($env{'form.grade_domain'} eq $env{'user.domain'}))) {
- $oldresponse = $Apache::lonhomework::history{"resource.$partid.$resid.submission"};
- } elsif (($Apache::lonhomework::history{"resource.$partid.type"} eq 'anonsurvey') ||
- ($Apache::lonhomework::history{"resource.$partid.type"} eq 'anonsurveycred')) {
- $oldresponse = '* '.&mt('only shown to submitter').' *';
- } else {
- $oldresponse = $Apache::lonhomework::history{"resource.$partid.$resid.submission"};
- }
+ $oldresponse = $Apache::lonhomework::history{"resource.$partid.$resid.submission"};
}
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
my $cols = &Apache::lonxml::get_param('cols',$parstack,$safeeval);
@@ -361,18 +352,7 @@ sub start_textline {
}
}
unless ($newvariation) {
- if ((($env{'form.grade_username'} eq '') && ($env{'form.grade_domain'} eq '')) ||
- (($env{'form.grade_username'} eq $env{'user.name'}) &&
- ($env{'form.grade_domain'} eq $env{'user.domain'}))) {
- $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"};
- } elsif (($Apache::lonhomework::history{"resource.$partid.type"} eq 'anonsurvey') ||
- ($Apache::lonhomework::history{"resource.$partid.type"} eq 'anonsurveycred') ||
- ($Apache::lonhomework::type eq 'anonsurvey') ||
- ($Apache::lonhomework::type eq 'anonsurveycred')) {
- $oldresponse = '* '.&mt('only shown to submitter').' *';
- } else {
- $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"};
- }
+ $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"};
&Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse));
if (ref($oldresponse) eq 'ARRAY') {
$oldresponse = $oldresponse->[$#Apache::inputtags::inputlist];
@@ -498,6 +478,7 @@ sub end_hiddenline {
return "";
}
+
sub start_hiddensubmission {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my $result = "";
@@ -590,13 +571,25 @@ sub file_selector {
if ($which eq 'uploadonly' || $which eq 'both') {
$result.=&mt('Submit a file: (only one file per submission)').
'
';
+ $jspart.'_'.$id.'" id="HWFILE'.$jspart.'_'.$id.'" />
';
}
if ( $which eq 'both') {
$result.='
'.''.&mt('OR:').'
';
}
- if ($which eq 'portfolioonly' || $which eq 'both') {
- $result.=$extratext.''.
+ if ($which eq 'portfolioonly' || $which eq 'both') {
+ my $symb = $env{'request.symb'};
+ (undef,undef,my $res)=&Apache::lonnet::decode_symb($symb);
+ my $showsymb;
+ # If resource is a .task and URL is unencrypted, include symb in query string
+ # for url opened in portfolio file selection window. Can be used to override
+ # blocking of portfolio access resulting from an exam event in a different course.
+ if ($res =~ /\.task$/i) {
+ my $encsymb = &Apache::lonenc::check_encrypt($symb);
+ if ($symb eq $encsymb) {
+ $showsymb = $symb;
+ }
+ }
+ $result.=$extratext.''.
&mt('Select Portfolio Files: (one or more files per submission)').'
'.
''.
'
';
@@ -747,7 +740,7 @@ sub valid_award {
'UNIT_FAIL', 'NO_UNIT',
'UNIT_NOTNEEDED', 'WANTED_NUMERIC',
'BAD_FORMULA', 'NOT_FUNCTION', 'WRONG_FORMAT',
- 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT',
+ 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT',
'MISORDERED_RANK', 'INVALID_FILETYPE',
'EXCESS_FILESIZE', 'FILENAME_INUSE',
'DRAFT', 'SUBMITTED', 'SUBMITTED_CREDIT',
@@ -765,7 +758,7 @@ sub valid_award {
'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT',
'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT',
'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'NOT_FUNCTION',
- 'WRONG_FORMAT', 'INTERNAL_ERROR',
+ 'WRONG_FORMAT', 'INTERNAL_ERROR',
'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',
'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'FILENAME_INUSE',
'DRAFT', 'SUBMITTED',
@@ -881,13 +874,13 @@ sub decideoutput {
my $part = $Apache::inputtags::part;
my $tohandgrade = &Apache::lonnet::EXT("resource.$part.handgrade");
my $handgrade = ('yes' eq lc($tohandgrade));
-
#
# Should "Computer's Answer" be displayed?
# Should not be displayed if still answerable,
# if the problem is handgraded,
# or if the problem does not give a correct answer
#
+
my $computer = ($handgrade || $nocorrect)? ''
: " ".&mt("Computer's answer now shown above.");
&Apache::lonxml::debug("handgrade has :$handgrade:");
@@ -905,7 +898,7 @@ sub decideoutput {
$css_class=$possible_class{'charged_try'};
}
if ($handgrade ||
- ($env{'request.filename'}=~ m{/res/lib/templates/(examupload|DropBox)\.problem$})) {
+ ($env{'request.filename'}=~/\/res\/lib\/templates\/(examupload|DropBox).problem$/)) {
$message = &mt("A score has been assigned.");
$added_computer_text=1;
} else {
@@ -930,7 +923,13 @@ sub decideoutput {
}
}
}
- $button=0;
+ if ($awarded >= 1) {
+ $button=0;
+ } elsif (&Apache::lonnet::EXT("resource.$part.retrypartial") !~/^1|on|yes$/i) {
+ $button=0;
+ } else {
+ $button=1;
+ }
$previousmsg='';
} elsif ($solved =~ /^excused/) {
if ($target eq 'tex') {
@@ -1066,7 +1065,7 @@ sub decideoutput {
$message = &mt("Wrong format").'.';
$css_class=$possible_class{'not_charged_try'};
$button=1;
- } elsif ($award eq 'INTERNAL_ERROR') {
+ } elsif ($award eq 'INTERNAL_ERROR') {
$message = &mt("An internal error occurred while processing your answer. Please try again later.");
$css_class=$possible_class{'not_charged_try'};
$button=1;
@@ -1089,6 +1088,7 @@ sub decideoutput {
} elsif ($award eq 'ANONYMOUS_CREDIT') {
$message = &mt("Your anonymous submission has been recorded, and credit awarded.");
$css_class=$possible_class{'correct'};
+ $button=1;
} elsif ($award eq 'DRAFT') {
$message = &mt("Copy saved but not submitted.");
$css_class=$possible_class{'not_charged_try'};
@@ -1139,7 +1139,17 @@ sub decideoutput {
if (&Apache::lonhomework::hide_problem_status()
&& $Apache::inputtags::status[-1] ne 'SHOW_ANSWER'
&& &hide_award($award)) {
- $message = &mt("Answer Submitted: Your final submission will be graded after the due date.");
+ $message = &mt("Answer Submitted: Your final submission will be graded after the due date.");
+ my @interval= &Apache::lonnet::EXT("resource.$part.interval");
+ if ($interval[0] =~ /\d+/) {
+ my $first_access=&Apache::lonnet::get_first_access($interval[1]);
+ if (defined($first_access)) {
+ my $due_date= &Apache::lonnet::EXT("resource.$part.duedate");
+ unless (($due_date) && ($due_date < $first_access + $interval[0])) {
+ $message = &mt("Answer Submitted: Your final submission will be graded when the time limit is reached.");
+ }
+ }
+ }
$css_class=$possible_class{'no_grade'};
$button=1;
}
@@ -1156,7 +1166,6 @@ sub decideoutput {
}
$message.=&mt('Submissions to practice problems are not permanently recorded.');
}
-
return ($button,$css_class,$message,$previousmsg);
}
@@ -1209,8 +1218,7 @@ sub setgradedata {
$Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') {
$Apache::lonhomework::results{"resource.$id.afterduedate"}=$award;
return '';
- } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} !~
- /^correct/
+ } elsif ( $Apache::lonhomework::history{"resource.$id.awarded"} < 1
|| $Apache::lonhomework::scantronmode
|| &Apache::lonhomework::hide_problem_status() ) {
# the student doesn't already have it correct,
@@ -1331,8 +1339,7 @@ sub setgradedata {
$Apache::lonhomework::results{"resource.$id.previous"} = '0';
}
}
- } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} =~
- /^correct/ ) {
+ } elsif ( $Apache::lonhomework::history{"resource.$id.awarded"} == 1 ) {
#delete all data as they student already has it correct
&removealldata($id);
#and since they didn't do anything we were never here
@@ -1342,14 +1349,10 @@ sub setgradedata {
if ($award eq 'SUBMITTED') {
&Apache::response::add_to_gradingqueue();
}
- if (($Apache::lonhomework::type eq 'anonsurvey') ||
- ($Apache::lonhomework::type eq 'anonsurveycred') ||
- ($Apache::lonhomework::type eq 'randomizetry')) {
- $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type;
- }
- if ($Apache::lonhomework::type eq 'randomizetry') {
- $Apache::lonhomework::results{"resource.$id.rndseed"} = $env{'form.'.$id.'.rndseed'};
- }
+ $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type;
+ $Apache::lonhomework::results{"resource.$id.duedate"} = &Apache::lonnet::EXT("resource.$id.duedate");
+ $Apache::lonhomework::results{"resource.$id.hinttries"} = &Apache::lonnet::EXT("resource.$id.hinttries");
+ $Apache::lonhomework::results{"resourse.$id.version"} = &Apache::lonnet::usedversion();
}
sub find_which_previous {
@@ -1468,24 +1471,24 @@ sub get_grade_messages {
if ($env{'request.state'} ne "construct"
&& $Apache::lonhomework::type ne 'exam'
&& $env{'form.suppress_tries'} ne 'yes') {
- $trystr ='{\vskip 1 mm \small '
+ $trystr ='{\vskip 1 mm \small '
.&mt('[_1]'.$tries_text.'[_2] [_3]'
- ,'\textit{','}',$tries.'/'.$maxtries )
+ ,'\textit{','}',$tries.'/'.$maxtries )
.'} \vskip 2 mm';
} else {
$trystr = '\vskip 0 mm ';
}
} else {
- my $trial = $tries;
+ my $trial =$tries;
if ($Apache::lonhomework::parsing_a_task) {
} elsif($env{'request.state'} ne 'construct') {
- $trial.="/$maxtries";
+ $trial.="/".&Apache::lonhtmlcommon::direct_parm_link($maxtries,$env{'request.symb'},'maxtries',$id,$target);
} else {
if (defined($Apache::inputtags::params{'maxtries'})) {
$trial.="/".$Apache::inputtags::params{'maxtries'};
}
}
- $trystr.='