--- loncom/publisher/testbankimport.pm 2008/06/17 13:00:19 1.15 +++ loncom/publisher/testbankimport.pm 2014/02/11 19:11:18 1.44 @@ -1,5 +1,5 @@ # Handler for parsing text upload problem descriptions into .problems -# $Id: testbankimport.pm,v 1.15 2008/06/17 13:00:19 raeburn Exp $ +# $Id: testbankimport.pm,v 1.44 2014/02/11 19:11:18 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -28,7 +28,6 @@ package Apache::testbankimport; use strict; use Apache::Constants qw(:common :http :methods); -use Apache::loncacc; use Apache::loncommon(); use Apache::lonnet; use HTML::Entities(); @@ -81,15 +80,16 @@ function createWin() { newWindow = window.open("","CreateDir","HEIGHT=400,WIDTH=750,scrollbars=yes") newWindow.document.open() newWindow.document.write('$start_page') - newWindow.document.write("[Author Header]\\n") + newWindow.document.write("[Author Header]\\n") 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("$webpath") - newWindow.document.write("
") + newWindow.document.write("") + newWindow.document.write("") + newWindow.document.write("") + newWindow.document.write("") + newWindow.document.write("$webpath") + newWindow.document.write("") newWindow.document.write('$end_page') newWindow.document.close() newWindow.focus() @@ -289,18 +289,20 @@ function colSet(caller) { else { if ((poolForm.elements[caller*5+3].options[poolForm.elements[caller*5+3].selectedIndex].value == "MC") || (poolForm.elements[caller*5+3].options[poolForm.elements[caller*5+3].selectedIndex].value == "MA") || (poolForm.elements[caller*5+3].options[poolForm.elements[caller*5+3].selectedIndex].value == "Ord")) { poolForm.elements[caller*5+4].options[0] = new Option("Select","-1",true,true) - poolForm.elements[caller*5+4].options[1] = new Option("a.","lcperiod",false,false) - poolForm.elements[caller*5+4].options[2] = new Option("A.","ucperiod",false,false) - poolForm.elements[caller*5+4].options[3] = new Option("(a)","lcparen",false,false) - poolForm.elements[caller*5+4].options[4] = new Option("(A)","ucparen",false,false) - poolForm.elements[caller*5+4].options[5] = new Option("a)","lconeparen",false,false) - poolForm.elements[caller*5+4].options[6] = new Option("A)","uconeparen",false,false) - poolForm.elements[caller*5+4].options[7] = new Option("a.)","lcdotparen",false,false) - poolForm.elements[caller*5+4].options[8] = new Option("A.)","ucdotparen",false,false) - poolForm.elements[caller*5+4].options[9] = new Option("(i)","romparen",false,false) - poolForm.elements[caller*5+4].options[10] = new Option("i)","romoneparen",false,false) - poolForm.elements[caller*5+4].options[11] = new Option("i.)","romdotparen",false,false) - poolForm.elements[caller*5+4].options[12] = new Option("i.","romperiod",false,false) + poolForm.elements[caller*5+4].options[1] = new Option("a ","lcspace",false,false) + poolForm.elements[caller*5+4].options[2] = new Option("A ","ucspace",false,false) + poolForm.elements[caller*5+4].options[3] = new Option("a.","lcperiod",false,false) + poolForm.elements[caller*5+4].options[4] = new Option("A.","ucperiod",false,false) + poolForm.elements[caller*5+4].options[5] = new Option("(a)","lcparen",false,false) + poolForm.elements[caller*5+4].options[6] = new Option("(A)","ucparen",false,false) + poolForm.elements[caller*5+4].options[7] = new Option("a)","lconeparen",false,false) + poolForm.elements[caller*5+4].options[8] = new Option("A)","uconeparen",false,false) + poolForm.elements[caller*5+4].options[9] = new Option("a.)","lcdotparen",false,false) + poolForm.elements[caller*5+4].options[10] = new Option("A.)","ucdotparen",false,false) + poolForm.elements[caller*5+4].options[11] = new Option("(i)","romparen",false,false) + poolForm.elements[caller*5+4].options[12] = new Option("i)","romoneparen",false,false) + poolForm.elements[caller*5+4].options[13] = new Option("i.)","romdotparen",false,false) + poolForm.elements[caller*5+4].options[14] = new Option("i.","romperiod",false,false) poolForm.elements[caller*5+4].selectedIndex = 0 } else { @@ -444,7 +446,7 @@ function verify() { if ($numitems > 0) { my $maxnum = $numitems - 1; my %lt = &Apache::lonlocal::texthash( - fnmb => 'File names must be unique', + fnmb => 'Filenames must be unique', isum => 'is used more than once', ); $$jsref .= qq| @@ -484,12 +486,12 @@ function backPage() { # ---------------------------------------------------------------- Display Zero sub display_zero { - my ($r,$uname,$fn,$page,$webpath) = @_; + my ($r,$fn,$page,$webpath) = @_; my $go_default = 'NextPage'; if ($fn eq '') { - $r->print(''.&mt('Incomplete file upload').' '.&mt('Return to the [_1]construction space menu[_2] to upload a file','','')); + $r->print(''.&mt('Incomplete file upload').' '.&mt('Return to the [_1]Authoring Space menu[_2] to upload a file','','')); } - $r->print(&mt('The Testbank Upload utility can be used by LON-CAPA authors to generate LON-CAPA problem files from a testbank file of questions/answers.').'
'. + $r->print(&mt('The [_1]Testbank Upload[_2] utility can be used by LON-CAPA authors to generate LON-CAPA problem files from a testbank file of questions/answers.','','').'
'. &mt('The following question types can be converted:').' '. - &page_footer($env{'form.newdir'},$uname,$fn,$page).' + &page_footer($env{'form.newdir'},$fn,$page).' '); return; } # ---------------------------------------------------------------- Display Three sub display_three { - my ($r,$uname,$fn,$page,$textref,$res,$header,$urlpath,$qcount) = @_; + my ($r,$fn,$page,$textref,$res,$header,$webpath,$qcount) = @_; my $qnumformat = $env{'form.qnumformat'}; my $filename = $env{'form.filename'}; my $source = $env{'form.go'}; @@ -681,7 +683,7 @@ sub display_three { my %lt = &Apache::lonlocal::texthash ( crt => 'Create?', typ => 'Type', - fnam => 'File Name', + fnam => 'Filename', ques => 'Question', answ => 'Answer', chka => 'check all', @@ -714,14 +716,14 @@ sub display_three { if ($header ne '') { $showheader = &HTML::Entities::decode($header); if ($res eq 'text/html') { - $showheader = &build_image_url($urlpath,$showheader); + $showheader = &build_image_url($webpath,$showheader); } } } $r->print('

'.&mt('Review and selection of problems to convert').'

'."\n". '
'."\n". &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) { $r->print($showheader.'
'); } @@ -763,18 +765,23 @@ sub display_three { if (($res eq 'application/rtf') || ($res eq 'text/html')) { $showqn = &HTML::Entities::decode($showqn); if ($res eq 'text/html') { - $showqn = &build_image_url($urlpath,$showqn); + $showqn = &build_image_url($webpath,$showqn); } } $r->print(&Apache::loncommon::start_data_table_row(). ''.$qnum.'.'."\n". - ''."\n". + ''."\n". ''.$qtype[$i].''."\n". ''. ''.$showqn.'

'."\n"); } else { my $foiltag = ''; - if ($foilformats[$i] eq "lcperiod") { + if ($foilformats[$i] eq "lcspace") { + $foiltag = $alphabet->[$k-1].' '; + } elsif ($foilformats[$i] eq "ucspace") { + $foiltag = $alphabet->[$k-1].' '; + $foiltag =~ tr/a-z/A-Z/; + } elsif ($foilformats[$i] eq "lcperiod") { $foiltag = $alphabet->[$k-1].'.'; } elsif ($foilformats[$i] eq "lcparen") { $foiltag = '('.$alphabet->[$k-1].')'; @@ -807,7 +814,7 @@ sub display_three { if ($res eq 'application/rtf' || $res eq 'text/html') { $showfoil = &HTML::Entities::decode($showfoil); if ($res eq 'text/html') { - $showfoil = &build_image_url($urlpath,$showfoil); + $showfoil = &build_image_url($webpath,$showfoil); } } $r->print("$foiltag $showfoil
\n"); @@ -829,7 +836,7 @@ sub display_three { } $r->print(&Apache::loncommon::start_data_table_row(). ''.$qnum.''."\n". - ''."\n". + ''."\n". ''.$qtype[$i].''."\n". ''."\n". ''.$items->[$j].''."\n". @@ -858,13 +865,13 @@ sub display_three { '); } } - $r->print('

'.&page_footer($env{'form.newdir'},$uname,$fn,$page).' + $r->print('

'.&page_footer($env{'form.newdir'},$fn,$page).'
'); } # ---------------------------------------------------------------- Final Display sub final_display { - my ($r,$uname,$fn,$page,$textref,$res,$header,$css,$js,$webpath,$dirpath,$subdir) = @_; + my ($r,$fn,$page,$textref,$res,$header,$css,$js,$webpath,$dirpath,$subdir) = @_; my $qnumformat = $env{'form.qnumformat'}; my $blocks = $env{'form.blocks'}; my $question_id = ''; @@ -924,7 +931,7 @@ sub final_display { $items->[$k] =~ tr/A-Z/a-z/; $items->[$k] =~ s/<\/?[^>]+>//g; $items->[$k] =~ s/\W//g; - if ($foilformats[$i] eq "lcperiod" || $foilformats[$i] eq "lcparen" || $foilformats[$i] eq "lconeparen" || $foilformats[$i] eq "lcdotparen" || $foilformats[$i] eq "ucparen" || $foilformats[$i] eq "ucperiod" || $foilformats[$i] eq "uconeparen" || $foilformats[$i] eq "ucdotparen") { + if ($foilformats[$i] eq "lcspace" || $foilformats[$i] eq "ucspace" || $foilformats[$i] eq "lcperiod" || $foilformats[$i] eq "lcparen" || $foilformats[$i] eq "lconeparen" || $foilformats[$i] eq "lcdotparen" || $foilformats[$i] eq "ucparen" || $foilformats[$i] eq "ucperiod" || $foilformats[$i] eq "uconeparen" || $foilformats[$i] eq "ucdotparen") { for (my $j=0; $j<@{$alphabet}; $j++) { if ($alphabet->[$j] eq $items->[$k]) { push @{$answers{$qnum}}, $j; @@ -957,7 +964,7 @@ sub final_display { } else { $correct =~s/\W//g; } - if ($foilformats[$i] eq "lcperiod" || $foilformats[$i] eq "lcparen" || $foilformats[$i] eq "ucparen" || $foilformats[$i] eq "ucperiod") { + if ($foilformats[$i] eq "lcspace" || $foilformats[$i] eq "ucspace" || $foilformats[$i] eq "lcperiod" || $foilformats[$i] eq "lcparen" || $foilformats[$i] eq "ucparen" || $foilformats[$i] eq "ucperiod") { if (($qtype[$i] eq "Ord") && (@tied > 0)) { my @ties; foreach my $tie (@tied) { @@ -1032,7 +1039,7 @@ sub final_display { for (my $i=0; $i<$numitems; $i++) { $r->print(''."\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; if ($destdir ne '' && $subdir ne '') { $subdir .= '/'; @@ -1041,7 +1048,7 @@ sub final_display { if (@createprobs == 0) { $state = 'unchecked'; $r->print('

'.&mt('No questions were selected for conversion.').'

'. - &page_footer($env{'form.newdir'},$uname,$fn,$page,$webpath,$subdir,$state).''); + &page_footer($env{'form.newdir'},$fn,$page,$webpath,$subdir,$state).''); } elsif (($destdir ne '') && (-e $destdir)) { my (@qn_file,@result,@numid); my $qcount = 0; @@ -1129,11 +1136,11 @@ sub final_display { $r->print('

'.&mt('The following files already existed, and were not overwritten so these problems generated from the testbank have not been saved:').'
'.$existing.'

'); $state = 'existing'; } - $r->print(&page_footer($env{'form.newdir'},$uname,$fn,$page,$webpath,$subdir,$state).''); + $r->print(&page_footer($env{'form.newdir'},$fn,$page,$webpath,$subdir,$state).''); } else { $state = 'nodir'; $r->print('

'.&mt('No destination directory was available so import of questions could not proceed.').'

'. - &page_footer($env{'form.newdir'},$uname,$fn,$page,$webpath,$subdir,$state).''); + &page_footer($env{'form.newdir'},$fn,$page,$webpath,$subdir,$state).''); } return; } @@ -1141,7 +1148,7 @@ sub final_display { sub show_uploaded_data { my ($textref,$header) = @_; my $output = '

'.&mt('Testbank data uploaded to the server').'

'."\n". - '