version 1.302, 2009/02/17 15:25:18
|
version 1.311, 2009/05/19 22:52:19
|
Line 173 sub setup_vars {
|
Line 173 sub setup_vars {
|
sub createmenu { |
sub createmenu { |
my ($which,$request)=@_; |
my ($which,$request)=@_; |
if ($which eq 'grade') { |
if ($which eq 'grade') { |
$request->print('<script language="JavaScript"> |
$request->print('<script type="text/javascript" language="JavaScript"> |
hwkmenu=window.open("/res/adm/pages/homeworkmenu.html","homeworkremote", |
hwkmenu=window.open("/res/adm/pages/homeworkmenu.html","homeworkremote", |
"height=350,width=150,menubar=no"); |
"height=350,width=150,menubar=no"); |
</script>'); |
</script>'); |
Line 297 sub check_slot_access {
|
Line 297 sub check_slot_access {
|
return ('WAITING_FOR_GRADE'); |
return ('WAITING_FOR_GRADE'); |
} |
} |
|
|
# no slot is currently open, and has been checked in for this version |
# Previously used slot is no longer open, and has been checked in for this version. |
# previous slot is therefore CLOSED, so therefore the problem is |
# However, the problem is not closed, and potentially, another slot might be |
|
# used to gain access to it to work on it, until the due date is reached, and the |
|
# problem then becomes CLOSED. Therefore return the slotstatus - |
|
# (which will be NOT_IN_SLOT). |
if (!defined($slot_name) |
if (!defined($slot_name) |
&& $checkedin |
&& $checkedin |
&& $type eq 'problem') { |
&& $type eq 'problem') { |
return ('CLOSED',$datemsg); |
return ($slotstatus); |
} |
} |
|
|
if ($slotstatus eq 'NOT_IN_A_SLOT' |
if ($slotstatus eq 'NOT_IN_A_SLOT' |
Line 686 sub analyze_header {
|
Line 689 sub analyze_header {
|
my ($request) = @_; |
my ($request) = @_; |
my $js = &Apache::structuretags::setmode_javascript(); |
my $js = &Apache::structuretags::setmode_javascript(); |
my $result = |
my $result = |
&Apache::loncommon::start_page('Analyzing a problem',$js); |
&Apache::loncommon::start_page('Analyzing a problem',$js) |
|
.&Apache::lonhtmlcommon::breadcrumbs() # FIXME add breadcrumbs |
|
.&Apache::loncommon::head_subbox( |
|
&Apache::loncommon::CSTR_pageheader()); |
$result .= |
$result .= |
&Apache::lonxml::message_location().' |
&Apache::lonxml::message_location().' |
<form name="lonhomework" method="POST" action="'. |
<form name="lonhomework" method="post" action="'. |
&HTML::Entities::encode($env{'request.uri'},'<>&"').'">'. |
&HTML::Entities::encode($env{'request.uri'},'<>&"').'">'. |
'<input type="hidden" name="problemmode" value="'. |
'<input type="hidden" name="problemmode" value="'. |
$env{'form.problemmode'}.'" />'. |
$env{'form.problemmode'}.'" />'. |
Line 777 sub analyze {
|
Line 782 sub analyze {
|
} |
} |
&Apache::lonhtmlcommon::Update_PrgWin($request,\%prog_state, |
&Apache::lonhtmlcommon::Update_PrgWin($request,\%prog_state, |
&mt('Analyzing Results')); |
&mt('Analyzing Results')); |
$request->print('<hr class="LC_edit_problem_divide" />'.&mt('List of possible answers').': '); |
$request->print('<hr class="LC_edit_problem_divide" />' |
|
.'<h3>' |
|
.&mt('List of possible answers') |
|
.'</h3>' |
|
); |
foreach my $part (sort(keys(%allparts))) { |
foreach my $part (sort(keys(%allparts))) { |
if (defined(@{ $overall{$part.'.answer'} })) { |
if (defined(@{ $overall{$part.'.answer'} })) { |
for (my $i=0;$i<scalar(@{ $overall{$part.'.answer'} });$i++) { |
for (my $i=0;$i<scalar(@{ $overall{$part.'.answer'} });$i++) { |
my $num_cols=scalar(@{ $overall{$part.'.answer'}[$i][0] }); |
my $num_cols=scalar(@{ $overall{$part.'.answer'}[$i][0] }); |
$request->print('<table class="thinborder"><tr><th colspan="'.($num_cols+1).'">'.&mt('Part').' '.$part); |
$request->print(&Apache::loncommon::start_data_table() |
|
.&Apache::loncommon::start_data_table_header_row() |
|
.'<th colspan="'.($num_cols+1).'">' |
|
.&mt('Part').' '.$part |
|
); |
if (scalar(@{ $overall{$part.'.answer'} }) > 1) { |
if (scalar(@{ $overall{$part.'.answer'} }) > 1) { |
$request->print(&mt(' Answer [_1]',$i+1)); |
$request->print(' '.&mt('Answer [_1]',$i+1)); |
} |
} |
$request->print('</th></tr>'); |
$request->print('</th>' |
|
.&Apache::loncommon::end_data_table_header_row() |
|
); |
my %frequency; |
my %frequency; |
foreach my $answer (sort {$a->[0] <=> $b->[0]} (@{ $overall{$part.'.answer'}[$i] })) { |
foreach my $answer (sort {$a->[0] <=> $b->[0]} (@{ $overall{$part.'.answer'}[$i] })) { |
$frequency{join("\0",@{ $answer })}++; |
$frequency{join("\0",@{ $answer })}++; |
} |
} |
$request->print('<tr><th colspan="'.($num_cols).'">'.&mt('Answer').'</th><th>'.&mt('Frequency').'<br />(' |
$request->print(&Apache::loncommon::start_data_table_header_row() |
.&mt('click for example').')</th></tr>'); |
.'<th colspan="'.($num_cols).'">'.&mt('Answer').'</th>' |
|
.'<th>'.&mt('Frequency').'<br />' |
|
.'('.&mt('click for example').')</th>' |
|
.&Apache::loncommon::end_data_table_header_row() |
|
); |
foreach my $answer (sort {(split("\0",$a))[0] <=> (split("\0",$b))[0]} (keys(%frequency))) { |
foreach my $answer (sort {(split("\0",$a))[0] <=> (split("\0",$b))[0]} (keys(%frequency))) { |
$request->print('<tr><td class="center">'. |
$request->print(&Apache::loncommon::start_data_table_row() |
join('</td><td class="center">',split("\0",$answer)). |
.'<td>' |
'</td><td class="center"><a href="'.$request->uri.'?rndseed='.$seedexample{join("\0",$part,$i,$answer)}.'">'.$frequency{$answer}. |
.join('</td><td>',split("\0",$answer)) |
'</a></td></tr>'); |
.'</td>' |
|
.'<td>' |
|
.'<a href="'.$request->uri.'?rndseed='.$seedexample{join("\0",$part,$i,$answer)}.'">'.$frequency{$answer}.'</a>' |
|
.'</td>' |
|
.&Apache::loncommon::end_data_table_row() |
|
); |
} |
} |
$request->print('</table>'); |
$request->print(&Apache::loncommon::end_data_table()); |
} |
} |
} else { |
} else { |
$request->print('<p>'.&mt('Response').' '.$part.' '. |
$request->print('<p class="LC_warning">' |
&mt('is not analyzable at this time').'</p>'); |
.&mt('Response [_1] is not analyzable at this time.',$part) |
|
.'</p>' |
|
); |
} |
} |
} |
} |
if (scalar(keys(%allparts)) == 0 ) { |
if (scalar(keys(%allparts)) == 0 ) { |
$request->print('<p>'.&mt('Found no analyzable responses in this problem, currently only Numerical, Formula and String response styles are supported.').'</p>'); |
$request->print('<p class="LC_warning">' |
|
.&mt('Found no analyzable responses in this problem.' |
|
.' Currently only Numerical, Formula and String response styles are supported.') |
|
.'</p>' |
|
); |
} |
} |
&Apache::lonhtmlcommon::Close_PrgWin($request,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($request,\%prog_state); |
&analyze_footer($request); |
&analyze_footer($request); |
Line 855 sub editxmlmode {
|
Line 885 sub editxmlmode {
|
my $result; |
my $result; |
my $problem=&Apache::lonnet::getfile($file); |
my $problem=&Apache::lonnet::getfile($file); |
if ($problem eq -1) { |
if ($problem eq -1) { |
&Apache::lonxml::error("<b> ".&mt('Unable to find'). |
&Apache::lonxml::error( |
" <i>$file</i></b>"); |
'<b> ' |
|
.&mt('Unable to find [_1]', |
|
'<span class="LC_filename">'.$file.'</span>') |
|
.'</b>'); |
|
|
$problem=''; |
$problem=''; |
} |
} |
if (defined($env{'form.editxmltext'}) || defined($env{'form.Undo'})) { |
if (defined($env{'form.editxmltext'}) || defined($env{'form.Undo'})) { |
Line 871 sub editxmlmode {
|
Line 905 sub editxmlmode {
|
&renderpage($request,$file); |
&renderpage($request,$file); |
} else { |
} else { |
my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem); |
my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem); |
my $xml_help = '<table><tr><td>'. |
|
&Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index", |
|
"Problem Editing Help"). |
|
'</td><td>'. |
|
&Apache::loncommon::help_open_menu(undef,undef,5,'Authoring'). |
|
'</td></tr></table>'; |
|
if ($cols > 80) { $cols = 80; } |
if ($cols > 80) { $cols = 80; } |
if ($cols < 70) { $cols = 70; } |
if ($cols < 70) { $cols = 70; } |
if ($rows < 20) { $rows = 20; } |
if ($rows < 20) { $rows = 20; } |
Line 896 sub editxmlmode {
|
Line 924 sub editxmlmode {
|
'onresize' => q[resize_textarea('LC_editxmltext','LC_aftertextarea')], |
'onresize' => q[resize_textarea('LC_editxmltext','LC_aftertextarea')], |
'onload' => q[resize_textarea('LC_editxmltext','LC_aftertextarea')], |
'onload' => q[resize_textarea('LC_editxmltext','LC_aftertextarea')], |
}}); |
}}); |
$result.=$start_page. |
|
&renderpage($request,$file,['no_output_web'],1). |
$result=$start_page |
'<form '.&Apache::edit::form_change_detection().' name="lonhomework" method="POST" action="'. |
.&Apache::lonhtmlcommon::breadcrumbs() # FIXME add breadcrumbs |
|
.&Apache::loncommon::head_subbox( |
|
&Apache::loncommon::CSTR_pageheader()); |
|
$result.=&renderpage($request,$file,['no_output_web'],1). |
|
'<form '.&Apache::edit::form_change_detection().' name="lonhomework" method="post" action="'. |
&HTML::Entities::encode($env{'request.uri'},'<>&"').'">'. |
&HTML::Entities::encode($env{'request.uri'},'<>&"').'">'. |
&Apache::structuretags::remember_problem_state().' |
&Apache::structuretags::remember_problem_state().' |
<div class="LC_edit_problem_editxml_header"> |
<div class="LC_edit_problem_editxml_header"> |
Line 969 sub renderpage {
|
Line 1001 sub renderpage {
|
my $filename=(split('/',$file))[-1]; |
my $filename=(split('/',$file))[-1]; |
my $error = |
my $error = |
"<b> ".&mt('Unable to find [_1]', |
"<b> ".&mt('Unable to find [_1]', |
' <span class="LC_filename">'.$filename.'</span>') |
'<span class="LC_filename">'.$filename.'</span>') |
."</b>"; |
."</b>"; |
$result.= |
$result.= |
&Apache::loncommon::simple_error_page($request,'Not available', |
&Apache::loncommon::simple_error_page($request,'Not available', |
Line 1110 sub newproblem {
|
Line 1142 sub newproblem {
|
my $instructions; |
my $instructions; |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page("Create New $extension"); |
&Apache::loncommon::start_page("Create New $extension"); |
$request->print(" |
|
$start_page |
$request->print( |
<h1>".&mt("Creating a new $extension resource.")."</h1> |
$start_page |
|
.&Apache::lonhtmlcommon::breadcrumbs() # FIXME add breadcrumbs |
|
.&Apache::loncommon::head_subbox( |
|
&Apache::loncommon::CSTR_pageheader()) |
|
.'<h1>'.&mt("Creating a new $extension resource.")."</h1> |
$errormsg |
$errormsg |
".&mt("The requested file [_1] currently does not exist.", |
".&mt("The requested file [_1] currently does not exist.", |
"<tt>$shownurl</tt>")." |
'<span class="LC_filename">'.$shownurl.'</span>')." |
<p> |
<p> |
<b> |
<b> |
".&mt("To create a new $extension, select a template from the". |
".&mt("To create a new $extension, select a template from the". |
" list below. Then click on the \"Create $extension\" button.")."</b> |
" list below. Then click on the \"Create $extension\" button.").'</b> |
</p><form action=\"$url\" method=\"POST\">"); |
</p><form action="'.$url.'" method="post">'); |
|
|
if (defined($templatelist)) { |
if (defined($templatelist)) { |
$request->print($templatelist); |
$request->print($templatelist); |
Line 1140 sub update_construct_style {
|
Line 1176 sub update_construct_style {
|
&& !defined($env{'form.newrandomization'})) { |
&& !defined($env{'form.newrandomization'})) { |
if ((!$env{'form.style_file'} && $env{'construct.style'}) |
if ((!$env{'form.style_file'} && $env{'construct.style'}) |
||$env{'form.clear_style_file'}) { |
||$env{'form.clear_style_file'}) { |
&Apache::lonnet::delenv('construct\\.style'); |
&Apache::lonnet::delenv('construct.style'); |
} elsif ($env{'form.style_file'} |
} elsif ($env{'form.style_file'} |
&& $env{'construct.style'} ne $env{'form.style_file'}) { |
&& $env{'construct.style'} ne $env{'form.style_file'}) { |
&Apache::lonnet::appenv({'construct.style' => |
&Apache::lonnet::appenv({'construct.style' => |