--- loncom/publisher/testbankimport.pm 2008/09/22 01:53:33 1.17
+++ loncom/publisher/testbankimport.pm 2009/03/26 16:50:12 1.20
@@ -1,5 +1,5 @@
# Handler for parsing text upload problem descriptions into .problems
-# $Id: testbankimport.pm,v 1.17 2008/09/22 01:53:33 raeburn Exp $
+# $Id: testbankimport.pm,v 1.20 2009/03/26 16:50:12 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1187,7 +1187,8 @@ sub page_footer {
- ';
+
+ ';
if ($page ne '') {
$output .= '
@@ -1327,7 +1328,6 @@ sub create_mcq {
my $qstn = ${$qstnref}[0];
my $numfoils = scalar(@{$qstnref}) - 1;
my $datestamp = localtime;
- my $timestamp = time;
my $numansrs = scalar(@{$answerref});
my $output = '
';
@@ -1610,7 +1610,7 @@ sub file_error {
}
sub parse_datafile {
- my ($r,$uname,$filename,$pathname,$dirpath,$urlpath,$page_name,$subdir) = @_;
+ my ($r,$uname,$filename,$pathname,$dirpath,$urlpath,$page_name,$subdir,$timestamp) = @_;
my ($badfile,$res,%allfiles,%codebase);
my $mm = new File::MMagic;
my ($text,$header,$css,$js);
@@ -1623,16 +1623,18 @@ sub parse_datafile {
close(TESTBANK);
} elsif ($res eq 'application/rtf') {
my $html = '';
-# my $image_uri = '..'.$pathname;
- my $image_uri = $pathname;
+ my $image_uri = $timestamp;
if ($page_name eq 'Target') {
- $image_uri = $urlpath;
+ $image_uri = $urlpath.'/'.$timestamp;
}
- $image_uri =~ s/\/$//;
my $image_dir;
if ($page_name eq 'Blocks') {
$image_dir = $dirpath;
$image_dir =~ s/\/$//;
+ $image_dir .= '/'.$timestamp;
+ if (!-e $image_dir) {
+ mkdir($image_dir,0755);
+ }
} else {
$image_dir = $r->dir_config('lonDaemons').'/tmp/'.
$env{'user.name'}.'_'.$env{'user.domain'}.
@@ -1651,10 +1653,10 @@ sub parse_datafile {
$parser->parse();
utf8::decode($html);
($text,$header,$css,$js) =
- &parse_htmlcontent($res,$subdir,$html);
+ &parse_htmlcontent($res,$subdir,$html,undef,$page_name);
} elsif ($res eq 'text/html') {
($text,$header,$css,$js) =
- &parse_htmlcontent($res,$subdir,undef,$dirpath.$filename);
+ &parse_htmlcontent($res,$subdir,undef,$dirpath.$filename,$page_name);
} else {
$badfile = 1;
}
@@ -1664,7 +1666,7 @@ sub parse_datafile {
}
sub parse_htmlcontent {
- my ($res,$subdir,$html,$fullpath) = @_;
+ my ($res,$subdir,$html,$fullpath,$page_name) = @_;
my ($p,$fh);
if ($res eq 'application/rtf') {
$p = HTML::TokeParser->new( \$html );
@@ -1702,7 +1704,10 @@ sub parse_htmlcontent {
my $contents = $token->[4];
if ($subdir ne '') {
if (($token->[1] eq 'img') && ($token->[2]->{'src'} ne '')) {
- $contents =~ s/(src=\s*["']?)/$1..\//i;
+ if (($res eq 'text/html') ||
+ ($res eq 'application/rtf') && ($page_name ne 'Target')) {
+ $contents =~ s/(src=\s*["']?)/$1..\//i;
+ }
}
}
if (($line eq '') && ($current_tag eq 'font')) {
@@ -1768,8 +1773,9 @@ sub print_header {
my $output = &Apache::loncommon::start_page($title,$javascript,
{'add_entries' => $loadentries});
if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {
- $output .= ''.&mt('Co-Author').': '.$uname.
- &mt(' at ').$udom.'
';
+ $output .= ''
+ .&mt('Co-Author [_1]:[_2]',$uname,$udom)
+ .'
';
}
return $output;
}
@@ -1812,7 +1818,7 @@ sub handler {
my ($fn,$filename);
if ($env{'form.filename'}) {
$fn=$env{'form.filename'};
- $fn=~s/^http\:\/\/[^\/]+\///;
+ $fn=~s/^https?\:\/\/[^\/]+\///;
$fn=~s/^\///;
$fn=~s{(~|priv/)($LONCAPA::username_re)}{};
$fn=~s/\/+/\//g;
@@ -1836,6 +1842,9 @@ sub handler {
$current_page = &display_control();
my @pages = ('Welcome','Blocks','Format','Target','Confirmation');
$page_name = $pages[$current_page];
+ if ($env{'form.timestamp'} eq '') {
+ $env{'form.timestamp'} = time;
+ }
if ($env{'form.newdir'} ne '') {
if ($env{'form.newdir'} =~ /^\Q$dirpath\E(.+)$/) {
$subdir = $1;
@@ -1843,7 +1852,7 @@ sub handler {
}
($res,$badfile,$textref,$header,$css,$js) =
&parse_datafile($r,$uname,$filename,$pathname,$dirpath,$urlpath,
- $page_name,$subdir);
+ $page_name,$subdir,$env{'form.timestamp'});
if ($page_name eq 'Welcome') {
&jscript_zero($webpath,\$javascript);
} elsif ($page_name eq 'Blocks') {