--- loncom/publisher/testbankimport.pm 2008/09/22 01:53:33 1.17 +++ loncom/publisher/testbankimport.pm 2009/04/04 21:45:57 1.21 @@ -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.21 2009/04/04 21:45:57 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -85,10 +85,10 @@ function createWin() { newWindow.document.write("

$lt{'loca'}: $webpath

$lt{'newd'}

\\n") newWindow.document.write("
\\n") newWindow.document.write("$lt{'ente'}.

") - newWindow.document.write("") + newWindow.document.write("") newWindow.document.write("") - newWindow.document.write("") - newWindow.document.write("$webpath") + newWindow.document.write("") + newWindow.document.write("$webpath") newWindow.document.write("
") newWindow.document.write('$end_page') newWindow.document.close() @@ -510,7 +510,7 @@ sub display_zero {
'. &topic_bar(1,&mt('Optional: create a sub-directory in which the testbank questions will be saved')). &mt('By default, LON-CAPA problems generated from the testbank file will be stored in the current directory.').' '.&mt('To store them in a new sub-directory:'). - ' '. + ' '. &page_footer($env{'form.newdir'},$uname,$fn,$page,$webpath).'
'); } @@ -625,7 +625,7 @@ sub display_two { $r->print(&Apache::loncommon::start_data_table_row(). ' '.$iter.' '."\n". '  '."\n". - '  '."\n". + '  '."\n". ' - '; + + '; if ($page ne '') { $output .= ' @@ -1199,7 +1200,7 @@ sub page_footer { $output .= ' '; } $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') {
  - +