[LON-CAPA-cvs] cvs: loncom /homework lonhomework.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Thu, 18 Sep 2003 19:59:15 -0000
This is a MIME encoded message
--albertel1063915155
Content-Type: text/plain
albertel Thu Sep 18 15:59:15 2003 EDT
Modified files:
/loncom/homework lonhomework.pm
Log:
- retabinate
--albertel1063915155
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20030918155915.txt"
Index: loncom/homework/lonhomework.pm
diff -u loncom/homework/lonhomework.pm:1.144 loncom/homework/lonhomework.pm:1.145
--- loncom/homework/lonhomework.pm:1.144 Wed Sep 17 14:16:39 2003
+++ loncom/homework/lonhomework.pm Thu Sep 18 15:59:15 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.144 2003/09/17 18:16:39 albertel Exp $
+# $Id: lonhomework.pm,v 1.145 2003/09/18 19:59:15 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -57,91 +57,91 @@
#use Time::HiRes qw( gettimeofday tv_interval );
BEGIN {
- &Apache::lonxml::register_insert();
+ &Apache::lonxml::register_insert();
}
sub get_target {
- if (($ENV{'request.state'} eq "published") ||
- ($ENV{'request.state'} eq "uploaded")) {
- if ( defined($ENV{'form.grade_target'} )
- && ($ENV{'form.grade_target'} eq 'tex')) {
- return ($ENV{'form.grade_target'});
- } elsif ( defined($ENV{'form.grade_target'} )
- && ($Apache::lonhomework::viewgrades eq 'F' )) {
- return ($ENV{'form.grade_target'});
- }
-
- if ( defined($ENV{'form.submitted'}) &&
- ( !defined($ENV{'form.resetdata'})) &&
- ( !defined($ENV{'form.newrandomization'}))) {
- return ('grade', 'web');
- } else {
- return ('web');
- }
- } 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.submitted'})) {
- return ('grade', 'web');
- } else {
- return ('web');
- }
- } else {
- if ( $ENV{'form.problemmode'} eq 'View' ||
- $ENV{'form.problemmode'} eq 'Discard Edits and View') {
+ if (($ENV{'request.state'} eq "published") ||
+ ($ENV{'request.state'} eq "uploaded")) {
+ if ( defined($ENV{'form.grade_target'} )
+ && ($ENV{'form.grade_target'} eq 'tex')) {
+ return ($ENV{'form.grade_target'});
+ } elsif ( defined($ENV{'form.grade_target'} )
+ && ($Apache::lonhomework::viewgrades eq 'F' )) {
+ return ($ENV{'form.grade_target'});
+ }
+
if ( defined($ENV{'form.submitted'}) &&
- (!defined($ENV{'form.resetdata'})) &&
- (!defined($ENV{'form.newrandomization'}))) {
- return ('grade', 'web','answer');
- } else {
- return ('web','answer');
- }
- } elsif ( $ENV{'form.problemmode'} eq 'Edit' ) {
- if ( $ENV{'form.submitted'} eq 'edit' ) {
- if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
- return ('modified','web','answer');
- } else {
- return ('modified','edit');
- }
- } else {
- return ('edit');
- }
- } else {
- return ('web');
- }
+ ( !defined($ENV{'form.resetdata'})) &&
+ ( !defined($ENV{'form.newrandomization'}))) {
+ return ('grade', 'web');
+ } else {
+ return ('web');
+ }
+ } 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.submitted'})) {
+ return ('grade', 'web');
+ } else {
+ return ('web');
+ }
+ } else {
+ if ( $ENV{'form.problemmode'} eq 'View' ||
+ $ENV{'form.problemmode'} eq 'Discard Edits and View') {
+ if ( defined($ENV{'form.submitted'}) &&
+ (!defined($ENV{'form.resetdata'})) &&
+ (!defined($ENV{'form.newrandomization'}))) {
+ return ('grade', 'web','answer');
+ } else {
+ return ('web','answer');
+ }
+ } elsif ( $ENV{'form.problemmode'} eq 'Edit' ) {
+ if ( $ENV{'form.submitted'} eq 'edit' ) {
+ if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
+ return ('modified','web','answer');
+ } else {
+ return ('modified','edit');
+ }
+ } else {
+ return ('edit');
+ }
+ } else {
+ return ('web');
+ }
+ }
}
- }
- return ();
+ return ();
}
sub setup_vars {
- my ($target) = @_;
- return ';'
+ my ($target) = @_;
+ return ';'
# return ';$external::target='.$target.';';
}
sub send_header {
- my ($request)= @_;
- $request->print(&Apache::lontexconvert::header());
+ my ($request)= @_;
+ $request->print(&Apache::lontexconvert::header());
# $request->print('<form name='.$ENV{'form.request.prefix'}.'lonhomework method="POST" action="'.$request->uri.'">');
}
sub createmenu {
- my ($which,$request)=@_;
- if ($which eq 'grade') {
- $request->print('<script language="JavaScript">
+ my ($which,$request)=@_;
+ if ($which eq 'grade') {
+ $request->print('<script language="JavaScript">
hwkmenu=window.open("/res/adm/pages/homeworkmenu.html","homeworkremote",
"height=350,width=150,menubar=no");
</script>');
- }
+ }
}
sub send_footer {
- my ($request)= @_;
+ my ($request)= @_;
# $request->print('</form>');
- $request->print(&Apache::lontexconvert::footer());
+ $request->print(&Apache::lontexconvert::footer());
}
$Apache::lonxml::browse='';
@@ -149,83 +149,83 @@
# JB, 9/24/2002: Any changes in this function may require a change
# in lonnavmaps::resource::getDateStatus.
sub check_access {
- my ($id) = @_;
- my $date ='';
- my $status;
- my $datemsg = '';
- my $lastdate = '';
- my $temp;
- my $type;
- my $passed;
-
- if ($ENV{'request.state'} eq "construct") {
- &Apache::lonxml::debug("in construction ignoring dates");
- $status='CAN_ANSWER';
- $datemsg='is in under construction';
- return ($status,$datemsg);
- }
-
- &Apache::lonxml::debug("checking for part :$id:");
- &Apache::lonxml::debug("time:".time);
- foreach $temp ("opendate","duedate","answerdate") {
- $lastdate = $date;
- $date = &Apache::lonnet::EXT("resource.$id.$temp");
- my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type");
- if ($thistype =~ /^(con_lost|no_such_host)/ ||
- $date =~ /^(con_lost|no_such_host)/) {
- $status='UNAVAILABLE';
- $date="may open later.";
- return($status,$date);
- }
- if ($thistype eq 'date_interval') {
- if ($temp eq 'opendate') {
- $date=&Apache::lonnet::EXT("resource.$id.duedate")-$date;
- }
- if ($temp eq 'answerdate') {
- $date=&Apache::lonnet::EXT("resource.$id.duedate")+$date;
- }
- }
- &Apache::lonxml::debug("found :$date: for :$temp:");
- if ($date eq '') {
- $date = "an unknown date"; $passed = 0;
- } elsif ($date eq 'con_lost') {
- $date = "an indeterminate date"; $passed = 0;
- } else {
- if (time < $date) { $passed = 0; } else { $passed = 1; }
- $date = localtime $date;
+ my ($id) = @_;
+ my $date ='';
+ my $status;
+ my $datemsg = '';
+ my $lastdate = '';
+ my $temp;
+ my $type;
+ my $passed;
+
+ if ($ENV{'request.state'} eq "construct") {
+ &Apache::lonxml::debug("in construction ignoring dates");
+ $status='CAN_ANSWER';
+ $datemsg='is in under construction';
+ return ($status,$datemsg);
+ }
+
+ &Apache::lonxml::debug("checking for part :$id:");
+ &Apache::lonxml::debug("time:".time);
+ foreach $temp ("opendate","duedate","answerdate") {
+ $lastdate = $date;
+ $date = &Apache::lonnet::EXT("resource.$id.$temp");
+ my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type");
+ if ($thistype =~ /^(con_lost|no_such_host)/ ||
+ $date =~ /^(con_lost|no_such_host)/) {
+ $status='UNAVAILABLE';
+ $date="may open later.";
+ return($status,$date);
+ }
+ if ($thistype eq 'date_interval') {
+ if ($temp eq 'opendate') {
+ $date=&Apache::lonnet::EXT("resource.$id.duedate")-$date;
+ }
+ if ($temp eq 'answerdate') {
+ $date=&Apache::lonnet::EXT("resource.$id.duedate")+$date;
+ }
+ }
+ &Apache::lonxml::debug("found :$date: for :$temp:");
+ if ($date eq '') {
+ $date = "an unknown date"; $passed = 0;
+ } elsif ($date eq 'con_lost') {
+ $date = "an indeterminate date"; $passed = 0;
+ } else {
+ if (time < $date) { $passed = 0; } else { $passed = 1; }
+ $date = localtime $date;
+ }
+ if (!$passed) { $type=$temp; last; }
}
- if (!$passed) { $type=$temp; last; }
- }
- &Apache::lonxml::debug("have :$type:$passed:");
- if ($passed) {
- $status='SHOW_ANSWER';
- $datemsg=$date;
- } elsif ($type eq 'opendate') {
- $status='CLOSED';
- $datemsg = "will open on $date";
- } elsif ($type eq 'duedate') {
- $status='CAN_ANSWER';
- $datemsg = "is due at $date";
- } elsif ($type eq 'answerdate') {
- $status='CLOSED';
- $datemsg = "was due on $lastdate, and answers will be available on $date";
- }
- if ($status eq 'CAN_ANSWER') {
- #check #tries, and if correct.
- my $tries = $Apache::lonhomework::history{"resource.$id.tries"};
- my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries");
- if ( $tries eq '' ) { $tries = '0'; }
- if ( $maxtries eq '' ) { $maxtries = '2'; }
- if ($tries >= $maxtries) { $status = 'CANNOT_ANSWER'; }
- # if (correct and show prob status) or excused then CANNOT_ANSWER
- if(($Apache::lonhomework::history{"resource.$id.solved"}=~/^correct/
- &&
- lc($Apache::lonhomework::problemstatus) ne 'no')
- ||
- $Apache::lonhomework::history{"resource.$id.solved"}=~/^excused/) {
- $status = 'CANNOT_ANSWER';
+ &Apache::lonxml::debug("have :$type:$passed:");
+ if ($passed) {
+ $status='SHOW_ANSWER';
+ $datemsg=$date;
+ } elsif ($type eq 'opendate') {
+ $status='CLOSED';
+ $datemsg = "will open on $date";
+ } elsif ($type eq 'duedate') {
+ $status='CAN_ANSWER';
+ $datemsg = "is due at $date";
+ } elsif ($type eq 'answerdate') {
+ $status='CLOSED';
+ $datemsg = "was due on $lastdate, and answers will be available on $date";
+ }
+ if ($status eq 'CAN_ANSWER') {
+ #check #tries, and if correct.
+ my $tries = $Apache::lonhomework::history{"resource.$id.tries"};
+ my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries");
+ if ( $tries eq '' ) { $tries = '0'; }
+ if ( $maxtries eq '' ) { $maxtries = '2'; }
+ if ($tries >= $maxtries) { $status = 'CANNOT_ANSWER'; }
+ # if (correct and show prob status) or excused then CANNOT_ANSWER
+ if(($Apache::lonhomework::history{"resource.$id.solved"}=~/^correct/
+ &&
+ lc($Apache::lonhomework::problemstatus) ne 'no')
+ ||
+ $Apache::lonhomework::history{"resource.$id.solved"}=~/^excused/) {
+ $status = 'CANNOT_ANSWER';
+ }
}
- }
#if (($status ne 'CLOSED') && ($Apache::lonhomework::type eq 'exam') &&
# (!$Apache::lonhomework::history{"resource.0.outtoken"})) {
@@ -233,20 +233,20 @@
#}
- &Apache::lonxml::debug("sending back :$status:$datemsg:");
- if (($Apache::lonhomework::browse eq 'F') && ($status eq 'CLOSED')) {
- &Apache::lonxml::debug("should be allowed to browse a resource when closed");
- $status='CAN_ANSWER';
- $datemsg='is closed but you are allowed to view it';
- }
+ &Apache::lonxml::debug("sending back :$status:$datemsg:");
+ if (($Apache::lonhomework::browse eq 'F') && ($status eq 'CLOSED')) {
+ &Apache::lonxml::debug("should be allowed to browse a resource when closed");
+ $status='CAN_ANSWER';
+ $datemsg='is closed but you are allowed to view it';
+ }
- return ($status,$datemsg);
+ return ($status,$datemsg);
}
sub showhash {
- my (%hash) = @_;
- &showhashsubset(\%hash,'.');
- return '';
+ my (%hash) = @_;
+ &showhashsubset(\%hash,'.');
+ return '';
}
sub showarray {
@@ -267,40 +267,40 @@
}
sub showhashsubset {
- my ($hash,$keyre) = @_;
- my $resultkey;
- foreach $resultkey (sort keys %$hash) {
- if ($resultkey =~ /$keyre/) {
- if (ref($$hash{$resultkey})) {
- if ($$hash{$resultkey} =~ /ARRAY/ ) {
- &Apache::lonxml::debug("$resultkey ---- ".
- &showarray($$hash{$resultkey}));
- } elsif ($$hash{$resultkey} =~ /HASH/ ) {
- &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
- &showhashsubset($$hash{$resultkey},'.');
- } else {
- &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
- }
- } else {
- &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
- }
- }
- }
- &Apache::lonxml::debug("\n<br />restored values^</br>\n");
- return '';
+ my ($hash,$keyre) = @_;
+ my $resultkey;
+ foreach $resultkey (sort keys %$hash) {
+ if ($resultkey =~ /$keyre/) {
+ if (ref($$hash{$resultkey})) {
+ if ($$hash{$resultkey} =~ /ARRAY/ ) {
+ &Apache::lonxml::debug("$resultkey ---- ".
+ &showarray($$hash{$resultkey}));
+ } elsif ($$hash{$resultkey} =~ /HASH/ ) {
+ &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
+ &showhashsubset($$hash{$resultkey},'.');
+ } else {
+ &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
+ }
+ } else {
+ &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
+ }
+ }
+ }
+ &Apache::lonxml::debug("\n<br />restored values^</br>\n");
+ return '';
}
sub setuppermissions {
- $Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'});
- my $viewgrades = &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
- if (! $viewgrades &&
- exists($ENV{'request.course.sec'}) &&
- $ENV{'request.course.sec'} !~ /^\s*$/) {
- $viewgrades = &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'}.
+ $Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'});
+ my $viewgrades = &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
+ if (! $viewgrades &&
+ exists($ENV{'request.course.sec'}) &&
+ $ENV{'request.course.sec'} !~ /^\s*$/) {
+ $viewgrades = &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'}.
'/'.$ENV{'request.course.sec'});
- }
- $Apache::lonhomework::viewgrades = $viewgrades;
- return ''
+ }
+ $Apache::lonhomework::viewgrades = $viewgrades;
+ return ''
}
sub setupheader {
@@ -320,42 +320,42 @@
}
sub handle_save_or_undo {
- my ($request,$problem,$result) = @_;
- my $file = &Apache::lonnet::filelocation("",$request->uri);
- my $filebak =$file.".bak";
- my $filetmp =$file.".tmp";
- my $error=0;
-
- if ($ENV{'form.Undo'} eq 'undo') {
+ my ($request,$problem,$result) = @_;
+ my $file = &Apache::lonnet::filelocation("",$request->uri);
+ my $filebak =$file.".bak";
+ my $filetmp =$file.".tmp";
my $error=0;
- if (!copy($file,$filetmp)) { $error=1; }
- if ((!$error) && (!copy($filebak,$file))) { $error=1; }
- if ((!$error) && (!move($filetmp,$filebak))) { $error=1; }
- if (!$error) {
- $request->print("<p><b>Undid changes, Switched $filebak and $file</b></p>");
- } else {
- $request->print("<p><font color=\"red\" size=\"+1\"><b>Unable to undo, unable to switch $filebak and $file</b></font></p>");
- $error=1;
- }
- } else {
- my $fs=Apache::File->new(">$filebak");
- if (defined($fs)) {
- print $fs $$problem;
- $request->print("<b>Making Backup to $filebak</b><br />");
- } else {
- $request->print("<font color=\"red\" size=\"+1\"><b>Unable to make backup $filebak</b></font>");
- $error=2;
- }
- my $fh=Apache::File->new(">$file");
- if (defined($fh)) {
- print $fh $$result;
- $request->print("<b>Saving Modifications to $file</b><br />");
+
+ if ($ENV{'form.Undo'} eq 'undo') {
+ my $error=0;
+ if (!copy($file,$filetmp)) { $error=1; }
+ if ((!$error) && (!copy($filebak,$file))) { $error=1; }
+ if ((!$error) && (!move($filetmp,$filebak))) { $error=1; }
+ if (!$error) {
+ $request->print("<p><b>Undid changes, Switched $filebak and $file</b></p>");
+ } else {
+ $request->print("<p><font color=\"red\" size=\"+1\"><b>Unable to undo, unable to switch $filebak and $file</b></font></p>");
+ $error=1;
+ }
} else {
- $request->print("<font color=\"red\" size=\"+1\"><b>Unable to write to $file</b></font>");
- $error|=4;
+ my $fs=Apache::File->new(">$filebak");
+ if (defined($fs)) {
+ print $fs $$problem;
+ $request->print("<b>Making Backup to $filebak</b><br />");
+ } else {
+ $request->print("<font color=\"red\" size=\"+1\"><b>Unable to make backup $filebak</b></font>");
+ $error=2;
+ }
+ my $fh=Apache::File->new(">$file");
+ if (defined($fh)) {
+ print $fh $$result;
+ $request->print("<b>Saving Modifications to $file</b><br />");
+ } else {
+ $request->print("<font color=\"red\" size=\"+1\"><b>Unable to write to $file</b></font>");
+ $error|=4;
+ }
}
- }
- return $error;
+ return $error;
}
sub analyze_header {
@@ -364,7 +364,7 @@
<head><title>Analyzing a problem</title></head>
<body bgcolor="#FFFFFF">
<form name="lonhomework" method="POST" action="'.
- $ENV{'request.uri'}.'">
+ $ENV{'request.uri'}.'">
<input type="submit" name="problemmode" value="EditXML" />
<input type="submit" name="problemmode" value="Edit" />
<hr />
@@ -452,33 +452,33 @@
}
sub editxmlmode {
- my ($request,$file) = @_;
- my $result;
- my $problem=&Apache::lonnet::getfile($file);
- if ($problem eq -1) {
- &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
- $problem='';
- }
- if (defined($ENV{'form.editxmltext'}) || defined($ENV{'form.Undo'})) {
- my $error=&handle_save_or_undo($request,\$problem,
- \$ENV{'form.editxmltext'});
- if (!$error) { $problem=&Apache::lonnet::getfile($file); }
- }
- &Apache::lonhomework::showhashsubset(\%ENV,'^form');
- if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
+ my ($request,$file) = @_;
+ my $result;
+ my $problem=&Apache::lonnet::getfile($file);
+ if ($problem eq -1) {
+ &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
+ $problem='';
+ }
+ if (defined($ENV{'form.editxmltext'}) || defined($ENV{'form.Undo'})) {
+ my $error=&handle_save_or_undo($request,\$problem,
+ \$ENV{'form.editxmltext'});
+ if (!$error) { $problem=&Apache::lonnet::getfile($file); }
+ }
&Apache::lonhomework::showhashsubset(\%ENV,'^form');
- $ENV{'form.problemmode'}='View';
- &renderpage($request,$file);
- } else {
- my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem);
- my $xml_help = Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index",
- "Problem Editing Help");
- if ($cols > 80) { $cols = 80; }
- if ($cols < 70) { $cols = 70; }
- if ($rows < 20) { $rows = 20; }
- $result.='<html><body bgcolor="#FFFFFF">
+ if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
+ &Apache::lonhomework::showhashsubset(\%ENV,'^form');
+ $ENV{'form.problemmode'}='View';
+ &renderpage($request,$file);
+ } else {
+ my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem);
+ my $xml_help = Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index",
+ "Problem Editing Help");
+ if ($cols > 80) { $cols = 80; }
+ if ($cols < 70) { $cols = 70; }
+ if ($rows < 20) { $rows = 20; }
+ $result.='<html><body bgcolor="#FFFFFF">
<form name="lonhomework" method="POST" action="'.
- $ENV{'request.uri'}.'">
+ $ENV{'request.uri'}.'">
<input type="hidden" name="problemmode" value="EditXML" />
<input type="submit" name="problemmode" value="Discard Edits and View" />
<input type="submit" name="problemmode" value="Edit" />
@@ -489,78 +489,78 @@
<hr />
' . $xml_help . '
<textarea rows="'.$rows.'" cols="'.$cols.'" name="editxmltext">'.
- &HTML::Entities::encode($problem).'</textarea>
+ &HTML::Entities::encode($problem).'</textarea>
</form></body></html>';
- $request->print($result);
- }
- return '';
+ $request->print($result);
+ }
+ return '';
}
sub renderpage {
- my ($request,$file) = @_;
+ my ($request,$file) = @_;
- my (@targets) = &get_target();
- &Apache::lonxml::debug("Running targets ".join(':',@targets));
- foreach my $target (@targets) {
- #my $t0 = [&gettimeofday()];
- my $problem=&Apache::lonnet::getfile($file);
- if ($problem eq -1) {
- &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
- $problem='';
- }
+ my (@targets) = &get_target();
+ &Apache::lonxml::debug("Running targets ".join(':',@targets));
+ foreach my $target (@targets) {
+ #my $t0 = [&gettimeofday()];
+ my $problem=&Apache::lonnet::getfile($file);
+ if ($problem eq -1) {
+ &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
+ $problem='';
+ }
- my %mystyle;
- my $result = '';
- if ($target eq 'analyze') { %Apache::lonhomework::analyze=(); }
- if ($target eq 'answer') { &showhash(%Apache::lonhomework::history); }
- if ($target eq 'web') {&Apache::lonhomework::showhashsubset(\%ENV,'^form');}
-
- &Apache::lonxml::debug("Should be parsing now");
- $result = &Apache::lonxml::xmlparse($request, $target, $problem,
- &setup_vars($target),%mystyle);
- undef($Apache::lonhomework::parsing_a_problem);
- #$request->print("Result follows:");
- if ($target eq 'modified') {
- &handle_save_or_undo($request,\$problem,\$result);
- } else {
- if ($target eq 'analyze') {
- $result=&Apache::lonnet::hashref2str(\%Apache::lonhomework::analyze);
- undef(%Apache::lonhomework::analyze);
- }
- #my $td=&tv_interval($t0);
- #if ( $Apache::lonxml::debug) {
- #$result =~ s:</body>::;
- #$result.="<br />Spent $td seconds processing target $target\n</body>";
- #}
- $request->print($result);
- $request->rflush();
+ my %mystyle;
+ my $result = '';
+ if ($target eq 'analyze') { %Apache::lonhomework::analyze=(); }
+ if ($target eq 'answer') { &showhash(%Apache::lonhomework::history); }
+ if ($target eq 'web') {&Apache::lonhomework::showhashsubset(\%ENV,'^form');}
+
+ &Apache::lonxml::debug("Should be parsing now");
+ $result = &Apache::lonxml::xmlparse($request, $target, $problem,
+ &setup_vars($target),%mystyle);
+ undef($Apache::lonhomework::parsing_a_problem);
+ #$request->print("Result follows:");
+ if ($target eq 'modified') {
+ &handle_save_or_undo($request,\$problem,\$result);
+ } else {
+ if ($target eq 'analyze') {
+ $result=&Apache::lonnet::hashref2str(\%Apache::lonhomework::analyze);
+ undef(%Apache::lonhomework::analyze);
+ }
+ #my $td=&tv_interval($t0);
+ #if ( $Apache::lonxml::debug) {
+ #$result =~ s:</body>::;
+ #$result.="<br />Spent $td seconds processing target $target\n</body>";
+ #}
+ $request->print($result);
+ $request->rflush();
+ }
+ #$request->print(":Result ends");
+ #my $td=&tv_interval($t0);
}
- #$request->print(":Result ends");
- #my $td=&tv_interval($t0);
- }
}
# with no arg it returns a HTML <option> list of the template titles
# with one arg it returns the filename associated with the arg passed
sub get_template_list {
- my ($namewanted,$extension) = @_;
- my $result;
- my @allnames;
- &Apache::lonxml::debug("Looking for :$extension:");
- foreach my $file (</home/httpd/html/res/adm/includes/templates/*.$extension>) {
- my $name=&Apache::lonnet::metadata($file,'title');
- if ($namewanted && ($name eq $namewanted)) {
- $result=$file;
- last;
- } else {
- if ($name) { push (@allnames, $name); }
+ my ($namewanted,$extension) = @_;
+ my $result;
+ my @allnames;
+ &Apache::lonxml::debug("Looking for :$extension:");
+ foreach my $file (</home/httpd/html/res/adm/includes/templates/*.$extension>) {
+ my $name=&Apache::lonnet::metadata($file,'title');
+ if ($namewanted && ($name eq $namewanted)) {
+ $result=$file;
+ last;
+ } else {
+ if ($name) { push (@allnames, $name); }
+ }
+ }
+ if (@allnames && !$result) {
+ $result="<option>Select a $extension template</option>\n<option>".
+ join('</option><option>',sort(@allnames)).'</option>';
}
- }
- if (@allnames && !$result) {
- $result="<option>Select a $extension template</option>\n<option>".
- join('</option><option>',sort(@allnames)).'</option>';
- }
- return $result;
+ return $result;
}
sub newproblem {
@@ -614,9 +614,9 @@
}
sub view_or_edit_menu {
- my ($request) = @_;
- my $url=$request->uri;
- $request->print(<<EDITMENU);
+ my ($request) = @_;
+ my $url=$request->uri;
+ $request->print(<<EDITMENU);
<body bgcolor="#FFFFFF">
<form action="$url" method="POST">
Would you like to <input type="submit" name="problemmode" value="View"> or
@@ -627,85 +627,85 @@
}
sub handler {
- #my $t0 = [&gettimeofday()];
- my $request=$_[0];
+ #my $t0 = [&gettimeofday()];
+ my $request=$_[0];
+
+ $Apache::lonxml::debug=$ENV{'user.debug'};
- $Apache::lonxml::debug=$ENV{'user.debug'};
+ if (&setupheader($request)) { return OK; }
+ $ENV{'request.uri'}=$request->uri;
- if (&setupheader($request)) { return OK; }
- $ENV{'request.uri'}=$request->uri;
+ #setup permissions
+ $Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'});
+ $Apache::lonhomework::viewgrades=&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
+ &Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:");
+ # some times multiple problemmodes are submitted, need to select
+ # the last one
+ &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});
+ if ( defined($ENV{'form.problemmode'}) &&
+ ref($ENV{'form.problemmode'}) ) {
+ &Apache::lonxml::debug("Problem Mode ".join(",",@$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'});
+ my $file=&Apache::lonnet::filelocation("",$request->uri);
+
+ #check if we know where we are
+ if ($ENV{'request.course.fn'} && !&Apache::lonnet::symbread()) {
+ # if we are browsing we might not be able to know where we are
+ if ($Apache::lonhomework::browse ne 'F') {
+ #should know where we are, so ask
+ if ( &Apache::lonnet::mod_perl_version() == 2 ) {
+ &Apache::lonnet::cleanenv();
+ }
+ $request->internal_redirect('/adm/ambiguous'); return;
+ }
+ }
- #setup permissions
- $Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'});
- $Apache::lonhomework::viewgrades=&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
- &Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:");
- # some times multiple problemmodes are submitted, need to select
- # the last one
- &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});
- if ( defined($ENV{'form.problemmode'}) &&
- ref($ENV{'form.problemmode'}) ) {
- &Apache::lonxml::debug("Problem Mode ".join(",",@$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'});
- my $file=&Apache::lonnet::filelocation("",$request->uri);
-
- #check if we know where we are
- if ($ENV{'request.course.fn'} && !&Apache::lonnet::symbread()) {
- # if we are browsing we might not be able to know where we are
- if ($Apache::lonhomework::browse ne 'F') {
- #should know where we are, so ask
- if ( &Apache::lonnet::mod_perl_version() == 2 ) {
- &Apache::lonnet::cleanenv();
- }
- $request->internal_redirect('/adm/ambiguous'); return;
- }
- }
-
- my ($symb) = &Apache::lonxml::whichuser();
- &Apache::lonxml::debug('symb is '.$symb);
- if ($ENV{'request.state'} eq "construct" || $symb eq '') {
- if ($ENV{'form.resetdata'} eq 'Reset Submissions' ||
- $ENV{'form.resetdata'} eq 'New Problem Variation' ||
- $ENV{'form.newrandomization'} eq 'New Randomization') {
- my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
- &Apache::lonnet::tmpreset($symb,'',$domain,$name);
-&Apache::lonxml::debug("Attempt reset");
- }
- }
- if ($ENV{'request.state'} eq "construct") {
- if ( -e $file ) {
- &Apache::loncommon::get_unprocessed_cgi
- ($ENV{'QUERY_STRING'},['problemmode']);
- if (!(defined $ENV{'form.problemmode'})) {
- #first visit to problem in construction space
- #&view_or_edit_menu($request);
- $ENV{'form.problemmode'}='View';
- &renderpage($request,$file);
- } elsif ($ENV{'form.problemmode'} eq 'EditXML') {
- &editxmlmode($request,$file);
- } elsif ($ENV{'form.problemmode'} eq 'Calculate answers') {
- &analyze($request,$file);
- } else {
- &renderpage($request,$file);
- }
+ my ($symb) = &Apache::lonxml::whichuser();
+ &Apache::lonxml::debug('symb is '.$symb);
+ if ($ENV{'request.state'} eq "construct" || $symb eq '') {
+ if ($ENV{'form.resetdata'} eq 'Reset Submissions' ||
+ $ENV{'form.resetdata'} eq 'New Problem Variation' ||
+ $ENV{'form.newrandomization'} eq 'New Randomization') {
+ my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
+ &Apache::lonnet::tmpreset($symb,'',$domain,$name);
+ &Apache::lonxml::debug("Attempt reset");
+ }
+ }
+ if ($ENV{'request.state'} eq "construct") {
+ if ( -e $file ) {
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
+ ['problemmode']);
+ if (!(defined $ENV{'form.problemmode'})) {
+ #first visit to problem in construction space
+ #&view_or_edit_menu($request);
+ $ENV{'form.problemmode'}='View';
+ &renderpage($request,$file);
+ } elsif ($ENV{'form.problemmode'} eq 'EditXML') {
+ &editxmlmode($request,$file);
+ } elsif ($ENV{'form.problemmode'} eq 'Calculate answers') {
+ &analyze($request,$file);
+ } else {
+ &renderpage($request,$file);
+ }
+ } else {
+ # requested file doesn't exist in contruction space
+ &newproblem($request);
+ }
} else {
- # requested file doesn't exist in contruction space
- &newproblem($request);
+ # just render the page normally outside of construction space
+ &Apache::lonxml::debug("not construct");
+ &renderpage($request,$file);
}
- } else {
- # just render the page normally outside of construction space
- &Apache::lonxml::debug("not construct");
- &renderpage($request,$file);
- }
- #my $td=&tv_interval($t0);
- #&Apache::lonxml::debug("Spent $td seconds processing");
- # &Apache::lonhomework::send_footer($request);
- # always turn off debug messages
- $Apache::lonxml::debug=0;
- return OK;
+ #my $td=&tv_interval($t0);
+ #&Apache::lonxml::debug("Spent $td seconds processing");
+ # &Apache::lonhomework::send_footer($request);
+ # always turn off debug messages
+ $Apache::lonxml::debug=0;
+ return OK;
}
--albertel1063915155--