version 1.68, 2002/01/03 22:16:53
|
version 1.71, 2002/02/27 20:23:26
|
Line 44 use Apache::outputtags;
|
Line 44 use Apache::outputtags;
|
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
#use Time::HiRes qw( gettimeofday tv_interval ); |
#use Time::HiRes qw( gettimeofday tv_interval ); |
|
|
sub BEGIN { |
BEGIN { |
&Apache::lonxml::register_insert(); |
&Apache::lonxml::register_insert(); |
} |
} |
|
|
Line 218 sub setupheader {
|
Line 218 sub setupheader {
|
|
|
sub handle_save_or_undo { |
sub handle_save_or_undo { |
my ($request,$problem,$result) = @_; |
my ($request,$problem,$result) = @_; |
my $fileout = &Apache::lonnet::filelocation("",$request->uri); |
my $file = &Apache::lonnet::filelocation("",$request->uri); |
my $filesave=$fileout.".bak"; |
my $filebak =$file.".bak"; |
|
my $filetmp =$file.".tmp"; |
my $error=0; |
my $error=0; |
|
|
if ($ENV{'form.Undo'} eq 'undo') { |
if ($ENV{'form.Undo'} eq 'undo') { |
if (copy($filesave,$fileout)) { |
my $error=0; |
$request->print("<b>Undid changes, Copied $filesave to $fileout<br /></b>"); |
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 { |
} else { |
$request->print("<font color=\"red\" size=\"+1\"><b>Unable to undo, unable to copy $filesave to $fileout<br /></b></font>"); |
$request->print("<p><font color=\"red\" size=\"+1\"><b>Unable to undo, unable to switch $filebak and $file</b></font></p>"); |
$error=1; |
$error=1; |
} |
} |
} else { |
} else { |
my $fs=Apache::File->new(">$filesave"); |
my $fs=Apache::File->new(">$filebak"); |
if (defined($fs)) { |
if (defined($fs)) { |
print $fs $$problem; |
print $fs $$problem; |
$request->print("<b>Making Backup to $filesave</b><br />"); |
$request->print("<b>Making Backup to $filebak</b><br />"); |
} else { |
} else { |
$request->print("<font color=\"red\" size=\"+1\"><b>Unable to make backup $filesave</b></font>"); |
$request->print("<font color=\"red\" size=\"+1\"><b>Unable to make backup $filebak</b></font>"); |
$error=2; |
$error=2; |
} |
} |
my $fh=Apache::File->new(">$fileout"); |
my $fh=Apache::File->new(">$file"); |
if (defined($fh)) { |
if (defined($fh)) { |
print $fh $$result; |
print $fh $$result; |
$request->print("<b>Saving Modifications to $fileout</b><br />"); |
$request->print("<b>Saving Modifications to $file</b><br />"); |
} else { |
} else { |
$request->print("<font color=\"red\" size=\"+1\"><b>Unable to write to $fileout</b></font>"); |
$request->print("<font color=\"red\" size=\"+1\"><b>Unable to write to $file</b></font>"); |
$error|=4; |
$error|=4; |
} |
} |
} |
} |
Line 286 sub renderpage {
|
Line 291 sub renderpage {
|
my ($request,$file) = @_; |
my ($request,$file) = @_; |
|
|
my (@targets) = &get_target(); |
my (@targets) = &get_target(); |
|
&Apache::lonxml::debug("Running targets ".join(':',@targets)); |
foreach my $target (@targets) { |
foreach my $target (@targets) { |
#my $t0 = [&gettimeofday()]; |
#my $t0 = [&gettimeofday()]; |
my $problem=&Apache::lonnet::getfile($file); |
my $problem=&Apache::lonnet::getfile($file); |
Line 314 sub renderpage {
|
Line 320 sub renderpage {
|
&Apache::lonxml::error("<b>Unable to find <i>default_homework.lcpm</i></b>"); |
&Apache::lonxml::error("<b>Unable to find <i>default_homework.lcpm</i></b>"); |
$default=''; |
$default=''; |
} |
} |
|
&Apache::lonxml::debug("Should be parsing now"); |
$result = &Apache::lonxml::xmlparse($target, $problem, |
$result = &Apache::lonxml::xmlparse($target, $problem, |
$default.&setup_vars($target),%mystyle); |
$default.&setup_vars($target),%mystyle); |
|
|
Line 428 sub handler {
|
Line 435 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'} } ) { |
|
&Apache::lonxml::debug("Problem Modes ".join(':',@{ $ENV{'form.problemmode'} })); |
|
my @modes=@{ $ENV{'form.problemmode'} }; |
|
undef $ENV{'form.problemmode'}; |
|
$ENV{'form.problemmode'}=$modes[-1]; |
|
} |
&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); |
|
|