--- loncom/homework/structuretags.pm 2005/04/01 18:08:14 1.283
+++ loncom/homework/structuretags.pm 2006/12/11 01:07:07 1.372
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.283 2005/04/01 18:08:14 albertel Exp $
+# $Id: structuretags.pm,v 1.372 2006/12/11 01:07:07 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,15 +36,19 @@ use Apache::File();
use Apache::lonmenu;
use Apache::lonlocal;
use Apache::lonxml;
+use Apache::lonenc();
use Time::HiRes qw( gettimeofday tv_interval );
+use lib '/home/httpd/lib/perl/';
+use LONCAPA;
+
BEGIN {
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag'));
}
sub start_web {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- my $bodytext=&Apache::lonxml::get_all_text("/web",$parser);
- if ($target eq 'web') {
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $bodytext=&Apache::lonxml::get_all_text("/web",$parser,$style);
+ if ($target eq 'web' || $target eq 'webgrade') {
return $bodytext;
}
return '';
@@ -55,9 +59,9 @@ sub end_web {
}
sub start_tex {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result='';
- my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser);
+ my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser,$style);
if ($target eq 'tex') {
return $bodytext.' ';
}
@@ -69,7 +73,8 @@ sub end_tex {
}
sub page_start {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name,
+ $extra_head)=@_;
my %found;
foreach my $taginside (@$tagstack) {
foreach my $taglookedfor ('html','body','form') {
@@ -77,69 +82,97 @@ sub page_start {
}
}
- my $result;
- my $head_tag_start;
- if (!defined($found{'html'})) {
- $result=&Apache::londefdef::start_html($target,$token,$tagstack,
- $parstack,$parser,$safeeval);
- $head_tag_start='
'.&Apache::lonmenu::registerurl(undef,$target).
- &Apache::lonhtmlcommon::htmlareaheaders().
- &Apache::lonhtmlcommon::spellheader().
- &Apache::lonxml::fontsettings();
- }
- my $body_tag_start;
- if (!defined($found{'body'}) && $ENV{'request.state'} eq 'construct'
- && $ENV{'environment.remote'} eq 'off') {
- $body_tag_start=&Apache::loncommon::bodytag();
- $body_tag_start.=&Apache::lonxml::message_location();
+ if ($target eq 'tex') {
+ return
+ &Apache::londefdef::start_html($target,$token,$tagstack,
+ $parstack,$parser,$safeeval);
+ }
+
+ my %body_args;
+ if (defined($found{'html'})) {
+ $body_args{'skip_phases'}{'head'}=1;
+ } else {
+
+ $extra_head .= &Apache::lonhtmlcommon::spellheader();
+
+ my $css_href = &Apache::lonnet::EXT('resource.0.cssfile');
+ if ($css_href =~ /\S/) {
+ &Apache::lonxml::extlink($css_href);
+ $extra_head .=
+ '';
+ }
+ if ($target eq 'edit') {
+ $extra_head.=&Apache::edit::js_change_detection().
+ "\n";
+ }
+ }
+
+ if (defined($found{'body'})) {
+ $body_args{'skip_phases'}{'body'}=1;
+ } elsif (!defined($found{'body'})
+ && $env{'request.state'} eq 'construct') {
+ if ($target eq 'web' || $target eq 'edit') {
+ # no extra args to bodytag
+ }
} elsif (!defined($found{'body'})) {
- $body_tag_start=''.&Apache::lonmenu::menubuttons(undef,$target,1);
- if ($ENV{'environment.texengine'} eq 'jsMath') {
- $body_tag_start.=''."\n".
- ''."\n";
- }
- if ($target eq 'web' && $ENV{'request.state'} ne 'construct') {
- my ($symb,undef,undef,undef,$publicuser)=
- &Apache::lonxml::whichuser();
- if ($symb eq '' && !$publicuser) {
- my $help = &Apache::loncommon::help_open_topic("Ambiguous_Reference");
- $help=&mt("Browsing resource, all submissions are temporary.")."
";
- $body_tag_start.=$help;
- }
+
+ my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack,
+ $safeeval);
+ if ($bgcolor eq '' ) { $bgcolor = '#FFFFFF'; }
+
+ $body_args{'bgcolor'} = $bgcolor;
+ $body_args{'no_title'} = 1;
+ $body_args{'force_register'} = 1;
+ $body_args{'add_entries'} = \%add_entries;
+ }
+ $body_args{'no_auto_mt_title'} = 1;
+ my $page_start = &Apache::loncommon::start_page($name,$extra_head,
+ \%body_args);
+
+ if (!defined($found{'body'})
+ && $env{'request.state'} ne 'construct'
+ && ($target eq 'web' || $target eq 'webgrade')) {
+
+ my ($symb,undef,undef,undef,$publicuser)= &Apache::lonnet::whichuser();
+ if ($symb eq '' && !$publicuser) {
+ my $help = &Apache::loncommon::help_open_topic("Ambiguous_Reference");
+ $help=&mt("Browsing resource, all submissions are temporary.")."
";
+ $page_start .= $help;
}
- $body_tag_start.=&Apache::lonxml::message_location();
}
+
+ if (!defined($found{'body'})) {
+ $page_start .= &Apache::lonxml::message_location();
+ }
+
my $form_tag_start;
if (!defined($found{'form'})) {
- $form_tag_start='\n".&Apache::loncommon::endbodytag()."\n";
+ &Apache::lonhtmlcommon::htmlareaselectactive(&Apache::lonhtmlcommon::get_htmlareafields()).
+ "\n\n".&Apache::loncommon::end_page();
}
sub option {
my ($value,$name) = @_;
my $result ="