--- loncom/homework/lonhomework.pm 2012/12/18 16:48:19 1.336 +++ loncom/homework/lonhomework.pm 2014/02/25 19:31:48 1.344 @@ -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 2014/02/25 19:31:48 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' || @@ -508,7 +509,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"); @@ -608,6 +608,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 +670,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 +713,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 = < + +STATE + $$getobjref = "

".&mt("Reference Warning")."

". + "

".&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 +755,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 +989,7 @@ sub editxmlmode { # Breadcrumbs my $brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri), - 'text' => 'Construction Space'}, + 'text' => 'Authoring Space'}, {'href' => '', 'text' => 'Problem Editing'}]; @@ -1039,13 +1066,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 +1131,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 +1173,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') - .'
'."\n"; + if (!(grep($filename =~ /\Q$_\E$/,@noexamplelink))) { + $result .= ' ' + .&Apache::loncommon::modal_link( + $filename.'?inhibitmenu=yes',&mt('Example'),600,420,'sample') + .''; + } + $result .= '
'."\n"; $count ++; } if ($numfiles > 0) { @@ -1188,7 +1219,7 @@ sub newproblem { my $errormsg; my $instructions; my $brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri), - 'text' => 'Construction Space'}, + 'text' => 'Authoring Space'}, {'href' => '', 'text' => "Create New $extension"}]; my $start_page =