".&mt("Undid changes, Switched")." $filebak ".&mt("and")." $file
"); + } else { + &Apache::lonxml::info("".&mt("Unable to undo, unable to switch")." $filebak ".&mt("and")." $file
"); + $error=1; + } + } else { + my $fs=Apache::File->new(">$filebak"); + if (defined($fs)) { + print $fs $$problem; + &Apache::lonxml::info("".&mt("Making Backup to"). + " $filebak"); + } else { + &Apache::lonxml::info("".&mt("Unable to make backup")." $filebak"); + $error=2; + } + my $fh=Apache::File->new(">$file"); + if (defined($fh)) { + print $fh $$result; + &Apache::lonxml::info("".&mt("Saving Modifications to"). + " $file"); + } else { + &Apache::lonxml::info("". + &mt("Unable to write to")." $file"); + $error|=4; + } + } + return $error; +} + +sub analyze_header { + my ($request) = @_; + my $result = + &Apache::loncommon::start_page('Analyzing a problem',undef); + + $result .= + &Apache::lonxml::message_location().' + '; + &Apache::lonxml::add_messages(\$result); + $request->print($result); + $request->rflush(); +} + +sub analyze_footer { + my ($request) = @_; + $request->print(&Apache::loncommon::end_page()); + $request->rflush(); } -sub send_header { - my ($request)= @_; - $request->print(''); - $request->print(''); - $request->print(''); +sub editxmlmode { + my ($request,$file) = @_; + my $result; + my $problem=&Apache::lonnet::getfile($file); + if ($problem eq -1) { + &Apache::lonxml::error(" ".&mt('Unable to find'). + " $file"); + $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 &mt('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"). + ' | '. + &Apache::loncommon::help_open_menu('',undef,undef,undef,5,'Authoring'). + ' |