--- loncom/homework/lonhomework.pm 2004/03/09 20:37:58 1.171
+++ loncom/homework/lonhomework.pm 2004/05/27 22:25:16 1.177
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.171 2004/03/09 20:37:58 albertel Exp $
+# $Id: lonhomework.pm,v 1.177 2004/05/27 22:25:16 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -207,11 +207,11 @@ sub check_access {
if ( ! ($ENV{'form.problemstate'} eq 'CANNOT_ANSWER_correct' &&
lc($Apache::lonhomework::problemstatus) eq 'no')) {
return ('CANNOT_ANSWER',
- &mt('is in this state by royal decree.'));
+ &mt('is in this state due to author settings.'));
}
} else {
return ($ENV{'form.problemstate'},
- &mt('is in this state by royal decree.'));
+ &mt('is in this state due to author settings.'));
}
}
&Apache::lonxml::debug("in construction ignoring dates");
@@ -292,7 +292,26 @@ sub check_access {
$status = 'CANNOT_ANSWER';
}
}
-
+ if ($status eq 'CAN_ANSWER') {
+ my $interval=&Apache::lonnet::EXT("resource.$id.interval");
+ &Apache::lonxml::debug("looking for interval $interval");
+ if ($interval) {
+ my $first_access=&Apache::lonnet::get_first_access('map');
+ &Apache::lonxml::debug("looking for accesstime $first_access");
+ if (!$first_access) {
+ $status='NOT_YET_VIEWED';
+ $datemsg=' '.$interval.' seconds';
+ } else {
+ my $newdate=localtime($first_access+$interval);
+ if (time > ($first_access+$interval)) {
+ $status='CLOSED';
+ $datemsg = &mt("was due on")." $newdate".&mt(", and answers will be available on")." $date";
+ } else {
+ $datemsg = &mt("is due at")." $newdate";
+ }
+ }
+ }
+ }
#if (($status ne 'CLOSED') && ($Apache::lonhomework::type eq 'exam') &&
# (!$Apache::lonhomework::history{"resource.0.outtoken"})) {
# return ('UNCHECKEDOUT','needs to be checked out');
@@ -434,13 +453,12 @@ sub analyze_header {
'.&mt("Analyzing a problem").'
'.&Apache::lonxml::message_location().'
';
&Apache::lonxml::add_messages(\$result);
$request->print($result);
@@ -465,7 +483,8 @@ sub analyze {
my %prog_state=
&Apache::lonhtmlcommon::Create_PrgWin($request,&mt('Analyze Progress'),
&mt('Getting Problem Variants'),
- $ENV{'form.numtoanalyze'});
+ $ENV{'form.numtoanalyze'},
+ 'inline',undef);
for(my $i=1;$i<$ENV{'form.numtoanalyze'}+1;$i++) {
&Apache::lonhtmlcommon::Increment_PrgWin($request,\%prog_state,
&mt('last problem'));
@@ -490,6 +509,7 @@ sub analyze {
}
&Apache::lonhtmlcommon::Update_PrgWin($request,\%prog_state,
&mt('Analyzing Results'));
+ $request->print('
'.&mt('List of possible answers').': ');
foreach my $part (sort(keys(%allparts))) {
if (defined(@{ $overall{$part.'.answer'} })) {
my $num_cols=scalar(@{ $overall{$part.'.answer'}->[0] });
@@ -553,7 +573,7 @@ sub editxmlmode {
$result.=''.
&Apache::lonxml::message_location().'
';
&Apache::lonxml::add_messages(\$result);
$request->print($result);
@@ -668,8 +688,8 @@ sub newproblem {
copy($templatefilename,$dest);
&renderpage($request,$dest);
} else {
- my $url=$request->uri;
- my $shownurl=$url;
+ my $url=&HTML::Entities::encode($request->uri,'<>&"');
+ my $shownurl=$url;
$shownurl=~s-^/~-/priv/-;
my $dest = &Apache::lonnet::filelocation("",$request->uri);
my $errormsg;
@@ -708,7 +728,7 @@ ENDNEWPROBLEM
sub view_or_edit_menu {
my ($request) = @_;
- my $url=$request->uri;
+ my $url=&HTML::Entities::encode($request->uri,'<>&"');
my %lt=&Apache::lonlocal::texthash( 'would' => 'Would you like to',
'view' => 'View',
'Edit' => 'edit',
@@ -753,7 +773,8 @@ sub handler {
#check if we know where we are
if ($ENV{'request.course.fn'} && !&Apache::lonnet::symbread()) {
# if we are browsing we might not be able to know where we are
- if ($Apache::lonhomework::browse ne 'F') {
+ if ($Apache::lonhomework::browse ne 'F' &&
+ $ENV{'request.state'} ne "construct") {
#should know where we are, so ask
if ( &Apache::lonnet::mod_perl_version() == 2 ) {
&Apache::lonnet::cleanenv();