--- loncom/homework/lonhomework.pm 2012/12/18 16:48:19 1.336
+++ loncom/homework/lonhomework.pm 2015/04/20 01:22:58 1.344.2.2
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.336 2012/12/18 16:48:19 raeburn Exp $
+# $Id: lonhomework.pm,v 1.344.2.2 2015/04/20 01:22:58 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -163,7 +163,7 @@ sub get_target {
}
}
#
-# End of Construction Space
+# End of Authoring Space
#
}
#
@@ -451,13 +451,14 @@ sub check_access {
$datemsg=$date;
} elsif ($type eq 'opendate') {
$status='CLOSED';
- $datemsg = &mt("will open on")." $date";
+ $datemsg = &mt('will open on [_1]',$date);
} elsif ($type eq 'duedate') {
$status='CAN_ANSWER';
- $datemsg = &mt("is due at")." $date";
+ $datemsg = &mt('is due at [_1]',$date);
} elsif ($type eq 'answerdate') {
$status='CLOSED';
- $datemsg = &mt("was due on")." $lastdate".&mt(", and answers will be available on")." $date";
+ $datemsg = &mt('was due on [_1], and answers will be available on [_2]',
+ $lastdate,$date);
}
}
if ($status eq 'CAN_ANSWER' ||
@@ -468,7 +469,6 @@ sub check_access {
if ( $tries eq '' ) { $tries = '0'; }
if ( $maxtries eq '' &&
$env{'request.state'} ne 'construct') { $maxtries = '2'; }
- $Apache::lonhomework::results{'resource.'.$id.'.maxtries'}=$maxtries;
if ($maxtries && $tries >= $maxtries) { $status = 'CANNOT_ANSWER'; }
# if (correct and show prob status) or excused then CANNOT_ANSWER
if ( ($Apache::lonhomework::history{"resource.$id.solved"}=~/^correct/)
@@ -508,7 +508,6 @@ sub check_access {
# return ('UNCHECKEDOUT','needs to be checked out');
#}
-
&Apache::lonxml::debug("sending back :$status:$datemsg:");
if (($Apache::lonhomework::browse eq 'F') && ($status eq 'CLOSED')) {
&Apache::lonxml::debug("should be allowed to browse a resource when closed");
@@ -541,7 +540,7 @@ sub due_date {
} else {
$date = $due_date;
}
- return $date
+ return $date;
}
sub seconds_to_human_length {
@@ -590,7 +589,7 @@ sub showarray {
sub showhashsubset {
my ($hash,$keyre) = @_;
my $resultkey;
- foreach $resultkey (sort keys %$hash) {
+ foreach $resultkey (sort(keys(%$hash))) {
if ($resultkey !~ /$keyre/) { next; }
if (ref($$hash{$resultkey}) eq 'ARRAY' ) {
&Apache::lonxml::debug("$resultkey ---- ".
@@ -608,6 +607,9 @@ sub showhashsubset {
sub setuppermissions {
$Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$env{'request.filename'});
+ unless ($Apache::lonhomework::browse eq 'F') {
+ $Apache::lonhomework::browse=&Apache::lonnet::allowed('bro',$env{'request.filename'});
+ }
my $viewgrades = &Apache::lonnet::allowed('vgr',$env{'request.course.id'});
if (! $viewgrades &&
exists($env{'request.course.sec'}) &&
@@ -667,7 +669,7 @@ sub setupheader {
}
sub handle_save_or_undo {
- my ($request,$problem,$result) = @_;
+ my ($request,$problem,$result,$getobjref) = @_;
my $file = &Apache::lonnet::filelocation("",$request->uri);
my $filebak =$file.".bak";
@@ -710,6 +712,30 @@ sub handle_save_or_undo {
my $fh=Apache::File->new(">$file");
if (defined($fh)) {
print $fh $$result;
+ if (ref($getobjref) eq 'SCALAR') {
+ if ($file =~ m{([^/]+)\.(html?)$}) {
+ my $fname = $1;
+ my $ext = $2;
+ my $path = $file;
+ $path =~ s/\Q$fname\E\.\Q$ext\E$//;
+ my (%allfiles,%codebase);
+ &Apache::lonnet::extract_embedded_items($file,\%allfiles,
+ \%codebase,$result);
+ if (keys(%allfiles) > 0) {
+ my $url = $request->uri;
+ my $state = <
".&mt("Completed upload of the file. This file contained references to other files.")."
". + "".&mt("Please select the locations from which the referenced files are to be uploaded.")."
". + &Apache::loncommon::ask_for_embedded_content($url,$state,\%allfiles,\%codebase, + {'error_on_invalid_names' => 1, + 'ignore_remote_references' => 1,}); + } + } + } } else { &Apache::lonxml::info(''. &mt("Unable to write to [_1]", @@ -728,7 +754,7 @@ sub analyze_header { # Breadcrumbs my $brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri), - 'text' => 'Construction Space'}, + 'text' => 'Authoring Space'}, {'href' => '', 'text' => 'Problem Testing'}, {'href' => '', @@ -962,7 +988,7 @@ sub editxmlmode { # Breadcrumbs my $brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri), - 'text' => 'Construction Space'}, + 'text' => 'Authoring Space'}, {'href' => '', 'text' => 'Problem Editing'}]; @@ -1039,13 +1065,11 @@ sub renderpage { $problem=''; my $filename=(split('/',$file))[-1]; my $error = - '' - .&mt('Unable to find [_1]', - ''.$filename.'') - ."
"; + &mt('Unable to find [_1]', + ''.$filename.''); $result.= &Apache::loncommon::simple_error_page($request,'Not available', - $error); + $error,{'no_auto_mt_msg' => 1}); return; } @@ -1106,9 +1130,10 @@ sub get_template_list { '/templates/*.'.$glob_extension); @files = map {[$_,&mt(&Apache::lonnet::metadata($_, 'title')), (&Apache::lonnet::metadata($_, 'category')?&mt(&Apache::lonnet::metadata($_, 'category')):&mt('Miscellaneous')), - &mt(&Apache::lonnet::metadata($_, 'help'))]} (@files); + &Apache::lonnet::metadata($_, 'help')]} (@files); @files = sort {$a->[2].$a->[1] cmp $b->[2].$b->[1]} (@files); my ($midpoint,$seconddiv,$numfiles); + my @noexamplelink = ('blank.problem','blank.library','script.library'); $numfiles = 0; foreach my $file (@files) { next if ($file->[1] !~ /\S/); @@ -1147,11 +1172,16 @@ sub get_template_list { if ($file->[3]) { $result.=&Apache::loncommon::help_open_topic($file->[3]); } + # Provide example link my $filename=$file->[0]; $filename=~s{^\Q$londocroot\E}{}; - $result.=' ' - .&Apache::loncommon::modal_link($filename.'?inhibitmenu=yes',&mt('Example'),600,420,'sample') - .'