--- loncom/homework/structuretags.pm 2007/09/11 23:53:05 1.397
+++ loncom/homework/structuretags.pm 2007/10/16 23:20:25 1.404
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.397 2007/09/11 23:53:05 albertel Exp $
+# $Id: structuretags.pm,v 1.404 2007/10/16 23:20:25 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -92,6 +92,31 @@ sub end_tex {
return '';
}
+sub homework_js {
+ return &Apache::loncommon::resize_textarea_js().
+ <<'JS';
+
+JS
+}
+
sub page_start {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name,
$extra_head)=@_;
@@ -108,13 +133,7 @@ sub page_start {
$parstack,$parser,$safeeval);
}
- $extra_head.= '
-
-';
+ $extra_head .= &homework_js();
my %body_args;
if (defined($found{'html'})) {
@@ -139,7 +158,9 @@ function setSubmittedPart (part) {
} elsif (!defined($found{'body'})
&& $env{'request.state'} eq 'construct') {
if ($target eq 'web' || $target eq 'edit') {
- # no extra args to bodytag
+ if ($env{'environment.remote'} ne 'off') {
+ $body_args{'only_body'} = 1;
+ }
}
} elsif (!defined($found{'body'})) {
my %add_entries;
@@ -1143,27 +1164,38 @@ sub start_languageblock {
$target eq 'tex' || $target eq 'analyze' || $target eq 'webgrade') {
my $include = $token->[2]->{'include'};
my $exclude = $token->[2]->{'exclude'};
- my $preferred_language=(&Apache::loncommon::preferred_languages)[0];
+ my @preferred_languages=&Apache::loncommon::preferred_languages();
# This should not even happen, since we should at least have the server language
- if (!$preferred_language) { $preferred_language='en'; }
+ if (!$preferred_languages[0]) { $preferred_languages[0]='en'; }
+# Now loop over all languages in order of preference
+ foreach my $preferred_language (@preferred_languages) {
# If the languageblock has no arguments, show the contents
- $result='1';
+ $result=1;
+ my $found=0;
# Do we have an include argument?
- if ($include) {
+ if ($include) {
# If include is specified, by default, don't render the block
- $result='';
- foreach my $included_language (split(/\,/,$include)) {
+ $result=0;
+ foreach my $included_language (split(/\,/,$include)) {
# ... but if my preferred language is included, render it
- if ($included_language eq $preferred_language) { $result='1'; }
- }
- }
+ if ($included_language eq $preferred_language) {
+ $result=1;
+ $found=1;
+ }
+ }
+ }
# Do we have an exclude argument?
- if ($exclude) {
- $result='1';
- foreach my $excluded_language (split(/\,/,$exclude)) {
- if ($excluded_language eq $preferred_language) { $result='0'; }
- }
- }
+ if ($exclude) {
+ $result=1;
+ foreach my $excluded_language (split(/\,/,$exclude)) {
+ if ($excluded_language eq $preferred_language) {
+ $result=0;
+ $found=1;
+ }
+ }
+ }
+ if ($found) { last; }
+ }
if ( ! $result ) {
my $skip=&Apache::lonxml::get_all_text("/languageblock",$parser,
$style);
@@ -1457,6 +1489,8 @@ sub start_part {
@Apache::inputtags::previous=();
@Apache::inputtags::previous_version=();
$Apache::lonhomework::problemstatus=&get_problem_status($id);
+ &Apache::response::reset_params();
+
my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part);
my $newtype=&Apache::lonnet::EXT("resource.$id.type");
if ($newtype) { $Apache::lonhomework::type=$newtype; }
@@ -1713,6 +1747,13 @@ sub start_startouttext {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my @result=(''.'');
if ($target eq 'edit' || $target eq 'modified' ) { @result=('','no'); }
+
+ my $nesting =
+ &Apache::lonxml::set_state('outtext',
+ &Apache::lonxml::get_state('outtext')+1);
+ if ($nesting > 1 && $env{'request.state'} eq 'construct') {
+ &Apache::lonxml::error("Nesting of <startouttext /> not allowed, on line ".$token->[5]);
+ }
return (@result);
}
@@ -1752,6 +1793,14 @@ sub start_endouttext {
$result=''.
&Apache::edit::handle_insertafter('startouttext');
}
+
+ my $nesting =
+ &Apache::lonxml::set_state('outtext',
+ &Apache::lonxml::get_state('outtext')-1);
+ if ($nesting < 0 && $env{'request.state'} eq 'construct') {
+ &Apache::lonxml::error(" Extraneous <endouttext /> not allowed on line ".$token->[5]);
+ &Apache::lonxml::set_state('outtext', 0);
+ }
return $result;
}