version 1.70, 2002/01/30 17:39:13
|
version 1.78, 2002/05/23 21:12:44
|
Line 31
|
Line 31
|
|
|
package Apache::lonhomework; |
package Apache::lonhomework; |
use strict; |
use strict; |
use Apache::style; |
use Apache::style(); |
use Apache::lonxml; |
use Apache::lonxml(); |
use Apache::lonnet; |
use Apache::lonnet(); |
use Apache::lonplot; |
use Apache::lonplot(); |
use Apache::inputtags; |
use Apache::inputtags(); |
use Apache::structuretags; |
use Apache::structuretags(); |
use Apache::randomlabel; |
use Apache::randomlabel(); |
use Apache::response; |
use Apache::response(); |
use Apache::hint; |
use Apache::hint(); |
use Apache::outputtags; |
use Apache::outputtags(); |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
|
use HTML::Entities(); |
#use Time::HiRes qw( gettimeofday tv_interval ); |
#use Time::HiRes qw( gettimeofday tv_interval ); |
|
|
BEGIN { |
BEGIN { |
Line 60 sub get_target {
|
Line 61 sub get_target {
|
return ('web'); |
return ('web'); |
} |
} |
} elsif ($ENV{'request.state'} eq "construct") { |
} elsif ($ENV{'request.state'} eq "construct") { |
|
if ( defined($ENV{'form.grade_target'}) ) { |
|
return ($ENV{'form.grade_target'}); |
|
} |
if ( defined($ENV{'form.preview'})) { |
if ( defined($ENV{'form.preview'})) { |
if ( defined($ENV{'form.submitted'})) { |
if ( defined($ENV{'form.submitted'})) { |
return ('grade', 'web'); |
return ('grade', 'web'); |
Line 128 sub check_access {
|
Line 132 sub check_access {
|
my $type; |
my $type; |
my $passed; |
my $passed; |
&Apache::lonxml::debug("checking for part :$id:"); |
&Apache::lonxml::debug("checking for part :$id:"); |
|
&Apache::lonxml::debug("time:".time); |
foreach $temp ("opendate","duedate","answerdate") { |
foreach $temp ("opendate","duedate","answerdate") { |
$lastdate = $date; |
$lastdate = $date; |
$date = &Apache::lonnet::EXT("resource.$id.$temp"); |
$date = &Apache::lonnet::EXT("resource.$id.$temp"); |
Line 189 sub showhash {
|
Line 194 sub showhash {
|
my (%hash) = @_; |
my (%hash) = @_; |
my $resultkey; |
my $resultkey; |
foreach $resultkey (sort keys %hash) { |
foreach $resultkey (sort keys %hash) { |
&Apache::lonxml::debug("$resultkey ---- $hash{$resultkey}"); |
if (ref($hash{$resultkey})) { |
|
if ($hash{$resultkey} =~ /ARRAY/ ) { |
|
my $string="$resultkey ---- ("; |
|
foreach my $elm (@{ $hash{$resultkey} }) { |
|
$string.="$elm,"; |
|
} |
|
chop($string); |
|
&Apache::lonxml::debug("$string)"); |
|
} else { |
|
&Apache::lonxml::debug("$resultkey ---- $hash{$resultkey}"); |
|
} |
|
} else { |
|
&Apache::lonxml::debug("$resultkey ---- $hash{$resultkey}"); |
|
} |
} |
} |
&Apache::lonxml::debug("\n<br />restored values^</br>\n"); |
&Apache::lonxml::debug("\n<br />restored values^</br>\n"); |
return ''; |
return ''; |
Line 255 sub handle_save_or_undo {
|
Line 273 sub handle_save_or_undo {
|
return $error; |
return $error; |
} |
} |
|
|
|
sub analyze { |
|
my ($request,$file) = @_; |
|
&Apache::lonxml::debug("Analyze"); |
|
my $result=&Apache::lonnet::ssi($request->uri,('grade_target' => 'analyze')); |
|
&Apache::lonxml::debug(":$result:"); |
|
(my $garbage,$result)=split(/_HASH_REF__/,$result,2); |
|
&showhash(&Apache::lonnet::str2hash($result)); |
|
return $result; |
|
} |
|
|
sub editxmlmode { |
sub editxmlmode { |
my ($request,$file) = @_; |
my ($request,$file) = @_; |
my $result; |
my $result; |
Line 281 sub editxmlmode {
|
Line 309 sub editxmlmode {
|
<input type="submit" name="Undo" value="undo" /> |
<input type="submit" name="Undo" value="undo" /> |
<hr /> |
<hr /> |
<textarea rows="'.$rows.'" cols="'.$cols.'" name="editxmltext">'. |
<textarea rows="'.$rows.'" cols="'.$cols.'" name="editxmltext">'. |
$problem.'</textarea> |
&HTML::Entities::encode($problem).'</textarea> |
</form></body></html>'; |
</form></body></html>'; |
$request->print($result); |
$request->print($result); |
return ''; |
return ''; |
Line 304 sub renderpage {
|
Line 332 sub renderpage {
|
my $result = ''; |
my $result = ''; |
&Apache::inputtags::initialize_inputtags; |
&Apache::inputtags::initialize_inputtags; |
&Apache::edit::initialize_edit; |
&Apache::edit::initialize_edit; |
|
if ($target eq 'analyze') { %Apache::lonhomework::anaylze=(); } |
if ($target eq 'web') { |
if ($target eq 'web') { |
if (&Apache::lonnet::symbread() eq '') { |
my ($symb)=&Apache::lonxml::whichuser(); |
|
if ($symb eq '') { |
if ($ENV{'request.state'} eq "construct") { |
if ($ENV{'request.state'} eq "construct") { |
} else { |
} else { |
$request->print("Browsing or <a href=\"/adm/ambiguous\">ambiguous</a> reference, submissions ignored<br />"); |
$request->print("Browsing or <a href=\"/adm/ambiguous\">ambiguous</a> reference, submissions ignored<br />"); |
Line 321 sub renderpage {
|
Line 351 sub renderpage {
|
$default=''; |
$default=''; |
} |
} |
&Apache::lonxml::debug("Should be parsing now"); |
&Apache::lonxml::debug("Should be parsing now"); |
$result = &Apache::lonxml::xmlparse($target, $problem, |
$result = &Apache::lonxml::xmlparse($request, $target, $problem, |
$default.&setup_vars($target),%mystyle); |
$default.&setup_vars($target),%mystyle); |
|
|
#$request->print("Result follows:"); |
#$request->print("Result follows:"); |
if ($target eq 'modified') { |
if ($target eq 'modified') { |
&handle_save_or_undo($request,\$problem,\$result); |
&handle_save_or_undo($request,\$problem,\$result); |
} else { |
} else { |
|
if ($target eq 'analyze') { |
|
$result=&Apache::lonnet::hashref2str(\%Apache::lonhomework::analyze); |
|
undef(%Apache::lonhomework::analyze); |
|
} |
#my $td=&tv_interval($t0); |
#my $td=&tv_interval($t0); |
#if ( $Apache::lonxml::debug) { |
#if ( $Apache::lonxml::debug) { |
#$result =~ s:</body>::; |
#$result =~ s:</body>::; |
Line 435 sub handler {
|
Line 469 sub handler {
|
$Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'}); |
$Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'}); |
$Apache::lonhomework::viewgrades=&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'}); |
$Apache::lonhomework::viewgrades=&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'}); |
&Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:"); |
&Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:"); |
|
# some times multiple problemmodes are submitted, need to select |
|
# the last one |
|
if ( defined($ENV{'form.problemmode'}) && |
|
ref($ENV{'form.problemmode'}) ) { |
|
my $mode=$ENV{'form.problemmode'}->[-1]; |
|
undef $ENV{'form.problemmode'}; |
|
$ENV{'form.problemmode'}=$mode; |
|
} |
&Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'}); |
&Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'}); |
my $file=&Apache::lonnet::filelocation("",$request->uri); |
my $file=&Apache::lonnet::filelocation("",$request->uri); |
|
|
Line 460 sub handler {
|
Line 502 sub handler {
|
&renderpage($request,$file); |
&renderpage($request,$file); |
} elsif ($ENV{'form.problemmode'} eq 'EditXML') { |
} elsif ($ENV{'form.problemmode'} eq 'EditXML') { |
&editxmlmode($request,$file); |
&editxmlmode($request,$file); |
|
} elsif ($ENV{'form.problemmode'} eq 'Answer Distribution') { |
|
&analyze($request,$file); |
} else { |
} else { |
&renderpage($request,$file); |
&renderpage($request,$file); |
} |
} |
Line 469 sub handler {
|
Line 513 sub handler {
|
} |
} |
} else { |
} else { |
# just render the page normally outside of construction space |
# just render the page normally outside of construction space |
|
&Apache::lonxml::debug("not construct"); |
&renderpage($request,$file); |
&renderpage($request,$file); |
} |
} |
#my $td=&tv_interval($t0); |
#my $td=&tv_interval($t0); |