--- loncom/homework/lonhomework.pm 2007/10/31 17:40:00 1.281
+++ loncom/homework/lonhomework.pm 2007/11/03 00:52:06 1.282
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.281 2007/10/31 17:40:00 albertel Exp $
+# $Id: lonhomework.pm,v 1.282 2007/11/03 00:52:06 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -49,11 +49,11 @@ use Apache::matchresponse();
use Apache::chemresponse();
use Apache::drawimage();
use Apache::Constants qw(:common);
-use HTML::Entities();
use Apache::loncommon();
use Apache::lonlocal;
use Time::HiRes qw( gettimeofday tv_interval );
-use Apache::lonnet();
+use HTML::Entities();
+use File::Copy();
# FIXME - improve commenting
@@ -1059,52 +1059,49 @@ sub finished_parsing {
undef($Apache::lonhomework::parsing_a_task);
}
-# with no arg it returns a HTML \n';
+ my $glob_extension = $extension;
+ if ($extension eq 'survey' || $extension eq 'exam') {
+ $glob_extension = 'problem';
+ }
+ my @files = glob($Apache::lonnet::perlvar{'lonIncludes'}.
+ '/templates/*.'.$glob_extension);
+ @files = map {[$_,&mt(&Apache::lonnet::metadata($_, 'title'))]} (@files);
+ @files = sort {$a->[1] cmp $b->[1]} (@files);
+ foreach my $file (@files) {
+ next if ($file->[1] !~ /\S/);
+ $result .=
+ '
';
}
return $result;
}
sub newproblem {
my ($request) = @_;
- my $extension=$request->uri;
- $extension=~s:^.*\.([\w]+)$:$1:;
- &Apache::lonxml::debug("Looking for :$extension:");
- my $templatelist=&get_template_list('',$extension);
- if ($env{'form.template'} &&
- $env{'form.template'} ne "Select a $extension template") {
- use File::Copy;
- my $file = &get_template_list($env{'form.template'},$extension);
+
+ if ($env{'form.template'}) {
+ my $file = $env{'form.template'};
my $dest = &Apache::lonnet::filelocation("",$request->uri);
- copy($file,$dest);
+ &File::Copy::copy($file,$dest);
&renderpage($request,$dest);
- } elsif($env{'form.newfile'} && !$templatelist) {
- # I don't like hard-coded filenames but for now, this will work.
- use File::Copy;
+ return;
+ }
+
+ my ($extension) = ($request->uri =~ m/\.(\w+)$/);
+ &Apache::lonxml::debug("Looking for :$extension:");
+ my $templatelist=&get_template_list($extension);
+ if ($env{'form.newfile'} && !$templatelist) {
+ # no templates found
my $templatefilename =
$request->dir_config('lonIncludes').'/templates/blank.'.$extension;
&Apache::lonxml::debug("$templatefilename");
my $dest = &Apache::lonnet::filelocation("",$request->uri);
- copy($templatefilename,$dest);
+ &File::Copy::copy($templatefilename,$dest);
&renderpage($request,$dest);
} else {
my $url=&HTML::Entities::encode($request->uri,'<>&"');
@@ -1112,9 +1109,6 @@ sub newproblem {
$shownurl=~s-^/~-/priv/-;
my $dest = &Apache::lonnet::filelocation("",$request->uri);
my $errormsg;
- if ($env{'form.newfile'}) {
- $errormsg='
'.&mt('You did not select a template.').'
'."\n"; - } my $instructions; my $start_page = &Apache::loncommon::start_page("Create New $extension"); @@ -1127,16 +1121,17 @@ $errormsg".&mt("To create a new $extension, select a template from the". - "pull-down menu below. Then click on the \"Create $extension\" button.")." + " list below. Then click on the \"Create $extension\" button.")."
".&Apache::loncommon::end_page()); } - return ''; + return; } sub update_construct_style {