version 1.16, 2008/07/08 07:17:46
|
version 1.30, 2011/03/05 22:25:09
|
Line 81 function createWin() {
|
Line 81 function createWin() {
|
newWindow = window.open("","CreateDir","HEIGHT=400,WIDTH=750,scrollbars=yes") |
newWindow = window.open("","CreateDir","HEIGHT=400,WIDTH=750,scrollbars=yes") |
newWindow.document.open() |
newWindow.document.open() |
newWindow.document.write('$start_page') |
newWindow.document.write('$start_page') |
newWindow.document.write("<img border='0' src='/adm/lonInterFace/author.jpg' alt='[Author Header]'>\\n") |
newWindow.document.write("<img border='0' src='/adm/lonInterFace/author.jpg' alt='[Author Header]' />\\n") |
newWindow.document.write("<h3>$lt{'loca'}: <tt>$webpath</tt></h3><h3>$lt{'newd'}</h3>\\n") |
newWindow.document.write("<h3>$lt{'loca'}: <tt>$webpath</tt></h3><h3>$lt{'newd'}</h3>\\n") |
newWindow.document.write("<form name='fileaction' action='/adm/cfile' method='post'>\\n") |
newWindow.document.write("<form name='fileaction' action='/adm/cfile' method='post'>\\n") |
newWindow.document.write("$lt{'ente'}.<br /><br />") |
newWindow.document.write("$lt{'ente'}.<br /><br />") |
newWindow.document.write("<input type='hidden' name='filename' value='$webpath'>") |
newWindow.document.write("<input type='hidden' name='filename' value='$webpath' />") |
newWindow.document.write("<input type='hidden' name='action' value='newdir'>") |
newWindow.document.write("<input type='hidden' name='action' value='newdir' />") |
newWindow.document.write("<input type='hidden' name='callingmode' value='testbank'>") |
newWindow.document.write("<input type='hidden' name='callingmode' value='testbank' />") |
newWindow.document.write("$webpath<input type='text' name='newfilename' value=''/>") |
newWindow.document.write("<input type='hidden' name='inhibitmenu' value='yes' />") |
|
newWindow.document.write("$webpath<input type='text' name='newfilename' value='' />") |
newWindow.document.write("<input type='button' value='$lt{'go'}' onClick='document.fileaction.submit();' /></form>") |
newWindow.document.write("<input type='button' value='$lt{'go'}' onClick='document.fileaction.submit();' /></form>") |
newWindow.document.write('$end_page') |
newWindow.document.write('$end_page') |
newWindow.document.close() |
newWindow.document.close() |
Line 508 sub display_zero {
|
Line 509 sub display_zero {
|
<li>'.&mt('Review the identified questions, choose which to convert, and (optionally) override the default filename to be used for each problem file.').'</li> |
<li>'.&mt('Review the identified questions, choose which to convert, and (optionally) override the default filename to be used for each problem file.').'</li> |
<li>'.&mt('Complete the import of questions.').'</li> |
<li>'.&mt('Complete the import of questions.').'</li> |
</ol><form name="info" method="post" action="/adm/testbank">'. |
</ol><form name="info" method="post" action="/adm/testbank">'. |
&topic_bar(1,&mt('Optional: create a sub-directory in which the testbank questions will be saved')). |
&Apache::lonhtmlcommon::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:'). |
&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:'). |
' <input type="button" name="createdir" value="'.&mt('Create sub-directory').'" onClick="javascript:createWin()">'. |
' <input type="button" name="createdir" value="'.&mt('Create sub-directory').'" onClick="javascript:createWin()" />'. |
&page_footer($env{'form.newdir'},$uname,$fn,$page,$webpath).' |
&page_footer($env{'form.newdir'},$uname,$fn,$page,$webpath).' |
</form>'); |
</form>'); |
} |
} |
Line 522 sub display_one {
|
Line 523 sub display_one {
|
my %topics; |
my %topics; |
$topics{2} = &mt('Select the format of the question number - e.g., 1, 1., 1), (1 or (1) - ').' |
$topics{2} = &mt('Select the format of the question number - e.g., 1, 1., 1), (1 or (1) - ').' |
<select name="qnumformat"> |
<select name="qnumformat"> |
<option value = "-1" selected>'.&mt('Select').'</option> |
<option value="-1" selected="selected">'.&mt('Select').'</option> |
<option value="number">1</option> |
<option value="number">1</option> |
<option value="period">1.</option> |
<option value="period">1.</option> |
<option value="paren">(1)</option> |
<option value="paren">(1)</option> |
Line 533 sub display_one {
|
Line 534 sub display_one {
|
$r->print('<h3>'.&mt('Identification of blocks of questions').'</h3>'."\n". |
$r->print('<h3>'.&mt('Identification of blocks of questions').'</h3>'."\n". |
'<form method="post" name="display" action="/adm/testbank">'."\n". |
'<form method="post" name="display" action="/adm/testbank">'."\n". |
&show_uploaded_data($textref,$header)."\n". |
&show_uploaded_data($textref,$header)."\n". |
&topic_bar(2,$topics{2}).'<p>'. |
&Apache::lonhtmlcommon::topic_bar(2,$topics{2}).'<p>'. |
&mt('A number in the specified format should appear at the start of each question.').'<br />'. |
&mt('A number in the specified format should appear at the start of each question.').'<br />'. |
&mt('For multiple choice questions, the question number must begin the line that contains the question text; foils (starting (a), (i) etc.) should occur on subsequent lines.').'<br />'."\n". |
&mt('For multiple choice questions, the question number must begin the line that contains the question text; foils (starting (a), (i) etc.) should occur on subsequent lines.').'<br />'."\n". |
&mt('Correct answers should be numbered in the same way as the questions and should appear after <b>all</b> the questions (including question text and possible foils for all questions).').'<br />'."\n". |
&mt('Correct answers should be numbered in the same way as the questions and should appear after <b>all</b> the questions (including question text and possible foils for all questions).').'<br />'."\n". |
Line 556 sub display_one {
|
Line 557 sub display_one {
|
3. |
3. |
</pre>'. |
</pre>'. |
'</blockquote></p>'. |
'</blockquote></p>'. |
&topic_bar(3,$topics{3}).'<p>'. |
&Apache::lonhtmlcommon::topic_bar(3,$topics{3}).'<p>'. |
&mt('For example, you would enter <b>6</b> if your testbank file contained the following sequence of questions:').'</p><blockquote>'. |
&mt('For example, you would enter <b>6</b> if your testbank file contained the following sequence of questions:').'</p><blockquote>'. |
&mt('10 multiple choice questions').'<br />'. |
&mt('10 multiple choice questions').'<br />'. |
&mt('5 essay questions').'<br />'. |
&mt('5 essay questions').'<br />'. |
Line 608 sub display_two {
|
Line 609 sub display_two {
|
&mt('You also indicated that the <b>[quant,_1,question]</b> can be divided into <b>[quant,_2,block]</b> of questions of a particular question type.',$qcount,$blocks).'</p><p>'. |
&mt('You also indicated that the <b>[quant,_1,question]</b> can be divided into <b>[quant,_2,block]</b> of questions of a particular question type.',$qcount,$blocks).'</p><p>'. |
&mt('Provide additional information below, about the types of questions you have uploaded, and, if applicable, the format of answers and "foils" for specific types of questions.').'</p>'. |
&mt('Provide additional information below, about the types of questions you have uploaded, and, if applicable, the format of answers and "foils" for specific types of questions.').'</p>'. |
&show_uploaded_data($textref,$header). |
&show_uploaded_data($textref,$header). |
&topic_bar(4,$steptitle).'<p>'. |
&Apache::lonhtmlcommon::topic_bar(4,$steptitle).'<p>'. |
&mt('For <i>each</i> of the [_1] question blocks, specify the question numbers of the first and last questions in the block (e.g., 1 and 10), and the question type of the questions in the block.','<b>'.$blocks.'</b>').' '. |
&mt('For <i>each</i> of the [_1] question blocks, specify the question numbers of the first and last questions in the block (e.g., 1 and 10), and the question type of the questions in the block.','<b>'.$blocks.'</b>').' '. |
&mt('If required, provide additional information about foil formats and answer formats for the question types you select.').'</p><p>'. |
&mt('If required, provide additional information about foil formats and answer formats for the question types you select.').'</p><p>'. |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
Line 625 sub display_two {
|
Line 626 sub display_two {
|
$r->print(&Apache::loncommon::start_data_table_row(). |
$r->print(&Apache::loncommon::start_data_table_row(). |
'<td valign="top"> '.$iter.' </td>'."\n". |
'<td valign="top"> '.$iter.' </td>'."\n". |
'<td valign="top"> <input type="text" name="start_'.$i.'" value="'.$bl1st.'" size="5" /> </td>'."\n". |
'<td valign="top"> <input type="text" name="start_'.$i.'" value="'.$bl1st.'" size="5" /> </td>'."\n". |
'<td valign="top"> <input type="text" name="end_'.$i.'" value="'.$bl1end.'" size="5"> </td>'."\n". |
'<td valign="top"> <input type="text" name="end_'.$i.'" value="'.$bl1end.'" size="5" /> </td>'."\n". |
'<td valign="top"> |
'<td valign="top"> |
<select name="qtype_'.$i.'" onChange="colSet('.$i.')"> |
<select name="qtype_'.$i.'" onChange="colSet('.$i.')"> |
<option value= "-1" selected>'.&mt('Select').'</option>'."\n"); |
<option value="-1" selected="selected">'.&mt('Select').'</option>'."\n"); |
foreach my $qtype (@types) { |
foreach my $qtype (@types) { |
$r->print('<option value="'.$qtype.'">'.$typenames{$qtype}.'</option>'."\n"); |
$r->print('<option value="'.$qtype.'">'.$typenames{$qtype}.'</option>'."\n"); |
} |
} |
Line 721 sub display_three {
|
Line 722 sub display_three {
|
$r->print('<h3>'.&mt('Review and selection of problems to convert').'</h3>'."\n". |
$r->print('<h3>'.&mt('Review and selection of problems to convert').'</h3>'."\n". |
'<form name="dataForm" method="post" action="/adm/testbank">'."\n". |
'<form name="dataForm" method="post" action="/adm/testbank">'."\n". |
&mt('Based on your previous responses your data have been split into a total of [quant,_1,question].',$numitems). |
&mt('Based on your previous responses your data have been split into a total of [quant,_1,question].',$numitems). |
&topic_bar(5,&mt('Choose which problems to convert and names to use for individual problem files'))); |
&Apache::lonhtmlcommon::topic_bar(5,&mt('Choose which problems to convert and names to use for individual problem files'))); |
if ($showheader) { |
if ($showheader) { |
$r->print($showheader.'<br />'); |
$r->print($showheader.'<br />'); |
} |
} |
Line 768 sub display_three {
|
Line 769 sub display_three {
|
} |
} |
$r->print(&Apache::loncommon::start_data_table_row(). |
$r->print(&Apache::loncommon::start_data_table_row(). |
'<td valign="top">'.$qnum.'.</td>'."\n". |
'<td valign="top">'.$qnum.'.</td>'."\n". |
'<td valign="top"><input name="createprob" type="checkbox" "checked="checked" value="'.$j.'" /></td>'."\n". |
'<td valign="top"><input name="createprob" type="checkbox" checked="checked" value="'.$j.'" /></td>'."\n". |
'<td valign="top"><b>'.$qtype[$i].'</b></td>'."\n". |
'<td valign="top"><b>'.$qtype[$i].'</b></td>'."\n". |
'<td valign="top"><input type="textbox" name="probfile_'.$j.'" value="'.$libfile.'" size="20" /></td>'. |
'<td valign="top"><input type="textbox" name="probfile_'.$j.'" value="'.$libfile.'" size="20" /></td>'. |
'<td valign="top">'.$showqn.'<br /><br />'."\n"); |
'<td valign="top">'.$showqn.'<br /><br />'."\n"); |
Line 829 sub display_three {
|
Line 830 sub display_three {
|
} |
} |
$r->print(&Apache::loncommon::start_data_table_row(). |
$r->print(&Apache::loncommon::start_data_table_row(). |
'<td valign="top">'.$qnum.'</td>'."\n". |
'<td valign="top">'.$qnum.'</td>'."\n". |
'<td valign="top"><input name="createprob" type="checkbox" "checked="checked" value="'.$j.'" /></td>'."\n". |
'<td valign="top"><input name="createprob" type="checkbox" checked="checked" value="'.$j.'" /></td>'."\n". |
'<td valign="top"><b>'.$qtype[$i].'</b></td>'."\n". |
'<td valign="top"><b>'.$qtype[$i].'</b></td>'."\n". |
'<td valign="top"><input type="textbox" name="probfile_'.$j.'" value="'.$libfile.'" size="20" /></td>'."\n". |
'<td valign="top"><input type="textbox" name="probfile_'.$j.'" value="'.$libfile.'" size="20" /></td>'."\n". |
'<td valign="top">'.$items->[$j].'</td>'."\n". |
'<td valign="top">'.$items->[$j].'</td>'."\n". |
Line 1032 sub final_display {
|
Line 1033 sub final_display {
|
for (my $i=0; $i<$numitems; $i++) { |
for (my $i=0; $i<$numitems; $i++) { |
$r->print('<input type="hidden" name="probfile_'.$i.'" value="'.$env{'form.probfile_'.$i}.'" />'."\n"); |
$r->print('<input type="hidden" name="probfile_'.$i.'" value="'.$env{'form.probfile_'.$i}.'" />'."\n"); |
} |
} |
$r->print(&topic_bar(6,&mt('Result of conversion of testbank questions to LON-CAPA problems'))); |
$r->print(&Apache::lonhtmlcommon::topic_bar(6,&mt('Result of conversion of testbank questions to LON-CAPA problems'))); |
my $destdir = $dirpath; |
my $destdir = $dirpath; |
if ($destdir ne '' && $subdir ne '') { |
if ($destdir ne '' && $subdir ne '') { |
$subdir .= '/'; |
$subdir .= '/'; |
Line 1163 sub page_footer {
|
Line 1164 sub page_footer {
|
my $nextval = &mt('Next Page'); |
my $nextval = &mt('Next Page'); |
my $prevclick = 'javascript:backPage();'; |
my $prevclick = 'javascript:backPage();'; |
my $nextclick = 'javascript:nextPage();'; |
my $nextclick = 'javascript:nextPage();'; |
my $go = ''; |
my $go = ''; |
if ($page == 0) { |
if (($page == 0) || ($state eq 'badfile')) { |
$go = 'NextPage'; |
$go = 'NextPage'; |
$prevval = &mt('Exit Now'); |
$prevval = &mt('Exit Now'); |
$prevclick = 'javascript:location.href='."'$webpath';"; |
$prevclick = 'javascript:location.href='."'$webpath';"; |
Line 1187 sub page_footer {
|
Line 1188 sub page_footer {
|
<input type="hidden" name="filename" value="'.$fn.'" /> |
<input type="hidden" name="filename" value="'.$fn.'" /> |
<input type="hidden" name="page" value="'.$page.'" /> |
<input type="hidden" name="page" value="'.$page.'" /> |
<input type="hidden" name="phase" value="three" /> |
<input type="hidden" name="phase" value="three" /> |
<input type="hidden" name="go" value="'.$go.'" />'; |
<input type="hidden" name="go" value="'.$go.'" /> |
|
<input type="hidden" name="timestamp" value="'.$env{'form.timestamp'}.'" />'; |
if ($page ne '') { |
if ($page ne '') { |
$output .= ' |
$output .= ' |
<table border="0"> |
<table border="0"> |
Line 1195 sub page_footer {
|
Line 1197 sub page_footer {
|
<td> |
<td> |
<input type="button" name="backpage" value="'.$prevval.'" onclick="'.$prevclick.'" /> |
<input type="button" name="backpage" value="'.$prevval.'" onclick="'.$prevclick.'" /> |
</td>'; |
</td>'; |
if ($page < 4) { |
if (($page < 4) && ($state ne 'badfile')) { |
$output .= ' |
$output .= ' |
<td> </td> |
<td> </td> |
<td> |
<td> |
<input type="button" name="nextpage" value="'.$nextval.'" onclick="'.$nextclick.'"> |
<input type="button" name="nextpage" value="'.$nextval.'" onclick="'.$nextclick.'" /> |
</td>'; |
</td>'; |
} |
} |
$output .= ' </tr> |
$output .= ' </tr> |
Line 1327 sub create_mcq {
|
Line 1329 sub create_mcq {
|
my $qstn = ${$qstnref}[0]; |
my $qstn = ${$qstnref}[0]; |
my $numfoils = scalar(@{$qstnref}) - 1; |
my $numfoils = scalar(@{$qstnref}) - 1; |
my $datestamp = localtime; |
my $datestamp = localtime; |
my $timestamp = time; |
|
my $numansrs = scalar(@{$answerref}); |
my $numansrs = scalar(@{$answerref}); |
my $output = '<problem> |
my $output = '<problem>'; |
|
if ($qtype eq 'MC') { |
|
$output .= "\n".'<parameter name="maxtries" type="int_pos" default="2" description="Maximum Number of Tries" />'; |
|
} |
|
$output .= ' |
<startouttext />'; |
<startouttext />'; |
if ($res eq 'application/rtf' || $res eq 'text/html') { |
if ($res eq 'application/rtf' || $res eq 'text/html') { |
if ($header ne '') { |
if ($header ne '') { |
Line 1599 sub probfile_name {
|
Line 1604 sub probfile_name {
|
} |
} |
|
|
sub file_error { |
sub file_error { |
my ($r,$uname,$fn,$current_page); |
my ($r,$uname,$fn,$current_page,$webpath,$res) = @_; |
$r->print("No data here"); |
$r->print('<p><form name="display" method="post" action="/adm/testbank">'.&mt('The file you uploaded does not appear to be in the correct format.'). |
|
'</p><p>'.&mt('Extraction of questions is only possible for the following file types:'). |
|
'<ul><li>'.&mt('plain text').'</li><li>RTF</li><li>HTML</li></ul>'. |
|
&mt('The file type identified for the file you uploaded is [_1].','<b>'.$res.'</b>').'</p>'); |
|
$r->print(&page_footer($env{'form.newdir'},$uname,$fn,$current_page,$webpath,undef,'badfile'). |
|
'</form>'); |
|
return; |
} |
} |
|
|
sub parse_datafile { |
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 ($badfile,$res,%allfiles,%codebase); |
my $mm = new File::MMagic; |
my $mm = new File::MMagic; |
my ($text,$header,$css,$js); |
my ($text,$header,$css,$js); |
Line 1617 sub parse_datafile {
|
Line 1628 sub parse_datafile {
|
close(TESTBANK); |
close(TESTBANK); |
} elsif ($res eq 'application/rtf') { |
} elsif ($res eq 'application/rtf') { |
my $html = ''; |
my $html = ''; |
# my $image_uri = '..'.$pathname; |
my $image_uri = $timestamp; |
my $image_uri = $pathname; |
|
if ($page_name eq 'Target') { |
if ($page_name eq 'Target') { |
$image_uri = $urlpath; |
$image_uri = $urlpath.'/'.$timestamp; |
} |
} |
$image_uri =~ s/\/$//; |
|
my $image_dir; |
my $image_dir; |
if ($page_name eq 'Blocks') { |
if ($page_name eq 'Blocks') { |
$image_dir = $dirpath; |
$image_dir = $dirpath; |
$image_dir =~ s/\/$//; |
$image_dir =~ s/\/$//; |
|
$image_dir .= '/'.$timestamp; |
|
if (!-e $image_dir) { |
|
mkdir($image_dir,0755); |
|
} |
} else { |
} else { |
$image_dir = $r->dir_config('lonDaemons').'/tmp/'. |
$image_dir = $r->dir_config('lonDaemons').'/tmp/'. |
$env{'user.name'}.'_'.$env{'user.domain'}. |
$env{'user.name'}.'_'.$env{'user.domain'}. |
Line 1645 sub parse_datafile {
|
Line 1658 sub parse_datafile {
|
$parser->parse(); |
$parser->parse(); |
utf8::decode($html); |
utf8::decode($html); |
($text,$header,$css,$js) = |
($text,$header,$css,$js) = |
&parse_htmlcontent($res,$subdir,$html); |
&parse_htmlcontent($res,$subdir,$html,undef,$page_name); |
} elsif ($res eq 'text/html') { |
} elsif ($res eq 'text/html') { |
($text,$header,$css,$js) = |
($text,$header,$css,$js) = |
&parse_htmlcontent($res,$subdir,undef,$dirpath.$filename); |
&parse_htmlcontent($res,$subdir,undef,$dirpath.$filename,$page_name); |
} else { |
} else { |
$badfile = 1; |
$badfile = 1; |
} |
} |
Line 1658 sub parse_datafile {
|
Line 1671 sub parse_datafile {
|
} |
} |
|
|
sub parse_htmlcontent { |
sub parse_htmlcontent { |
my ($res,$subdir,$html,$fullpath) = @_; |
my ($res,$subdir,$html,$fullpath,$page_name) = @_; |
my ($p,$fh); |
my ($p,$fh); |
if ($res eq 'application/rtf') { |
if ($res eq 'application/rtf') { |
$p = HTML::TokeParser->new( \$html ); |
$p = HTML::TokeParser->new( \$html ); |
Line 1696 sub parse_htmlcontent {
|
Line 1709 sub parse_htmlcontent {
|
my $contents = $token->[4]; |
my $contents = $token->[4]; |
if ($subdir ne '') { |
if ($subdir ne '') { |
if (($token->[1] eq 'img') && ($token->[2]->{'src'} 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')) { |
if (($line eq '') && ($current_tag eq 'font')) { |
Line 1758 sub build_image_url {
|
Line 1774 sub build_image_url {
|
} |
} |
|
|
sub print_header { |
sub print_header { |
my ($uname,$udom,$javascript,$loadentries,$title) = @_; |
my ($uname,$udom,$javascript,$loadentries,$title,$current_page,$pagesref, |
|
$namesref) = @_; |
|
my $brcrum = [{'href' => &Apache::loncommon::authorspace(), |
|
'text' => 'Construction Space'}]; |
|
if ($env{'form.phase'} eq 'three') { |
|
if (ref($pagesref) eq 'ARRAY') { |
|
for (my $i=0; $i<$current_page; $i++) { |
|
my $goback = 1 + $i - $current_page; |
|
if (ref($namesref) eq 'HASH') { |
|
if ($namesref->{$pagesref->[$i]} ne '') { |
|
if (ref($brcrum) eq 'ARRAY') { |
|
my $text = $namesref->{$pagesref->[$i]}; |
|
my $href; |
|
if ($goback == -1) { |
|
$href = 'javascript:backPage();'; |
|
} else { |
|
$href = 'javascript:history.go('.$goback.')'; |
|
} |
|
push(@{$brcrum}, {'href' => $href, |
|
'text' => $text}); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
my $output = &Apache::loncommon::start_page($title,$javascript, |
my $output = &Apache::loncommon::start_page($title,$javascript, |
{'add_entries' => $loadentries}); |
{'bread_crumbs' => $brcrum, |
|
'add_entries' => $loadentries}); |
if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { |
if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { |
$output .= '<h3><span class="LC_error">'.&mt('Co-Author').': '.$uname. |
$output .= '<p class="LC_info">' |
&mt(' at ').$udom.'</span></h3>'; |
.&mt('Co-Author [_1]',$uname.':'.$udom) |
|
.'</p>'; |
} |
} |
return $output; |
return $output; |
} |
} |
|
|
sub topic_bar { |
|
my ($imgnum,$title) = @_; |
|
my $output = ' |
|
<div class="LC_topic_bar"> |
|
<img alt="'.&mt('Step [_1]',$imgnum). |
|
' "src="/res/adm/pages/bl_step'.$imgnum.'.gif" /> '.$title.' |
|
</div> |
|
'; |
|
return $output; |
|
} |
|
|
|
# ---------------------------------------------------------------- Main Handler |
# ---------------------------------------------------------------- Main Handler |
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
Line 1806 sub handler {
|
Line 1838 sub handler {
|
my ($fn,$filename); |
my ($fn,$filename); |
if ($env{'form.filename'}) { |
if ($env{'form.filename'}) { |
$fn=$env{'form.filename'}; |
$fn=$env{'form.filename'}; |
$fn=~s/^http\:\/\/[^\/]+\///; |
$fn=~s/^https?\:\/\/[^\/]+\///; |
$fn=~s/^\///; |
$fn=~s/^\///; |
$fn=~s{(~|priv/)($LONCAPA::username_re)}{}; |
$fn=~s{(~|priv/)($LONCAPA::username_re)}{}; |
$fn=~s/\/+/\//g; |
$fn=~s/\/+/\//g; |
Line 1824 sub handler {
|
Line 1856 sub handler {
|
my $webpath = '/priv/'.$uname.$pathname; |
my $webpath = '/priv/'.$uname.$pathname; |
my $urlpath = '/~'.$uname.$pathname; |
my $urlpath = '/~'.$uname.$pathname; |
my $dirpath = '/home/'.$uname.'/public_html'.$pathname; |
my $dirpath = '/home/'.$uname.'/public_html'.$pathname; |
my ($res,$subdir,$badfile,$textref,$header,$css,$js,%loadentries); |
my ($res,$subdir,$badfile,$textref,$header,$css,$js,%loadentries,@pages,%names); |
|
|
if ($env{'form.phase'} eq 'three') { |
if ($env{'form.phase'} eq 'three') { |
$current_page = &display_control(); |
$current_page = &display_control(); |
my @pages = ('Welcome','Blocks','Format','Target','Confirmation'); |
@pages = ('Welcome','Blocks','Format','Target','Confirmation'); |
|
%names = ( |
|
Welcome => 'Testbank Format', |
|
Blocks => 'Classification', |
|
Format => 'Selection', |
|
Target => 'Result' |
|
); |
$page_name = $pages[$current_page]; |
$page_name = $pages[$current_page]; |
|
if ($env{'form.timestamp'} eq '') { |
|
$env{'form.timestamp'} = time; |
|
} |
if ($env{'form.newdir'} ne '') { |
if ($env{'form.newdir'} ne '') { |
if ($env{'form.newdir'} =~ /^\Q$dirpath\E(.+)$/) { |
if ($env{'form.newdir'} =~ /^\Q$dirpath\E(.+)$/) { |
$subdir = $1; |
$subdir = $1; |
Line 1837 sub handler {
|
Line 1878 sub handler {
|
} |
} |
($res,$badfile,$textref,$header,$css,$js) = |
($res,$badfile,$textref,$header,$css,$js) = |
&parse_datafile($r,$uname,$filename,$pathname,$dirpath,$urlpath, |
&parse_datafile($r,$uname,$filename,$pathname,$dirpath,$urlpath, |
$page_name,$subdir); |
$page_name,$subdir,$env{'form.timestamp'}); |
if ($page_name eq 'Welcome') { |
if ($page_name eq 'Welcome') { |
&jscript_zero($webpath,\$javascript); |
&jscript_zero($webpath,\$javascript); |
} elsif ($page_name eq 'Blocks') { |
} elsif ($page_name eq 'Blocks') { |
Line 1868 sub handler {
|
Line 1909 sub handler {
|
} |
} |
} |
} |
|
|
$r->print(&print_header($uname,$udom,$javascript,\%loadentries,$title)); |
$r->print(&print_header($uname,$udom,$javascript,\%loadentries,$title, |
|
$current_page,\@pages,\%names)); |
|
|
if ($env{'form.phase'} eq 'three') { |
if (($env{'form.phase'} eq 'four') || ($env{'form.phase'} eq 'three')) { |
if ($env{'form.action'} eq 'upload_embedded') { |
if ($env{'form.phase'} eq 'four') { |
$r->print(&Apache::lonupload::phasethree($r,$fn,$uname,$udom,'testbank')); |
$r->print(&Apache::lonupload::phasefour($r,$fn,$uname,$udom,'testbank')); |
|
my $current_page = 0; |
|
my $js; |
|
&jscript_zero($webpath,\$js); |
|
$js = '<script type="text/javascript">'."\n$js\n".'</script>'; |
|
$r->print($js); |
|
&display_zero($r,$uname,$fn,$current_page,$webpath); |
|
} elsif ($env{'form.phase'} eq 'three') { |
|
if ($env{'form.action'} eq 'upload_embedded') { |
|
my ($result,$flag) = |
|
&Apache::lonupload::phasethree($r,$fn,$uname,$udom,'testbank'); |
|
$r->print($result); |
|
if ($flag eq 'modify_orightml') { |
|
undef($page_name); |
|
$r->print('<form name="testbankForm" method="post" action="/adm/testbank">'. |
|
&page_footer('',$uname,$fn).'</form>'); |
|
} |
|
} |
} |
} |
if ($badfile) { |
if ($badfile) { |
&file_error($r,$uname,$fn,$current_page); |
&file_error($r,$uname,$fn,$current_page,$webpath,$res); |
} else { |
} else { |
&display_zero ($r,$uname,$fn,$current_page,$webpath) if $page_name eq 'Welcome'; |
&display_zero ($r,$uname,$fn,$current_page,$webpath) if $page_name eq 'Welcome'; |
&display_one ($r,$uname,$fn,$current_page,$textref,$header) if $page_name eq 'Blocks'; |
&display_one ($r,$uname,$fn,$current_page,$textref,$header) if $page_name eq 'Blocks'; |
&display_two ($r,$uname,$fn,$current_page,$textref,$header,$qcount) if $page_name eq 'Format'; |
&display_two ($r,$uname,$fn,$current_page,$textref,$header,$qcount) if $page_name eq 'Format'; |