--- loncom/homework/structuretags.pm 2011/12/12 12:07:45 1.497.2.3 +++ loncom/homework/structuretags.pm 2011/12/10 17:53:45 1.498 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.497.2.3 2011/12/12 12:07:45 foxr Exp $ +# $Id: structuretags.pm,v 1.498 2011/12/10 17:53:45 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -960,6 +960,9 @@ sub reset_problem_globals { undef(%Apache::lonhomework::history); undef(%Apache::lonhomework::results); undef($Apache::inputtags::part); + if ($type eq 'Task') { + undef($Apache::inputtags::slot_name); + } #don't undef this, lonhomework.pm takes care of this, we use this to #detect if we try to do 2 problems in one file # undef($Apache::lonhomework::parsing_a_problem); @@ -1539,100 +1542,54 @@ sub end_block { } return $result; } -# -# -# ... -# -# -# This declares the intent to provide content that can be rendered in the -# set of languages in the include specificatino but not in the exclude -# specification. If a currently preferred language is in the include list -# the content in the ... is rendered -# If the currently preferred language is in the exclude list, -# the content in the ..>[2]->{'include'}; my $exclude = $token->[2]->{'exclude'}; my @preferred_languages=&Apache::lonlocal::preferred_languages(); - - # This should not even happen, since we should at least have the server language - - if (!$preferred_languages[0]) { - $preferred_languages[0]='en'; - } - - # Now loop over all languages in order of preference - +# This should not even happen, since we should at least have the server language + if (!$preferred_languages[0]) { $preferred_languages[0]='en'; } +# Now loop over all languages in order of preference foreach my $preferred_language (@preferred_languages) { - - # If neither include/nor exlude is present the block is going - # to get rendered. - - my $render=1; +# If the languageblock has no arguments, show the contents + $result=1; my $found=0; - - # If include is specified, don't render the block - # unless the preferred language is included in the set. - +# Do we have an include argument? if ($include) { - $render=0; +# If include is specified, by default, don't render the block + $result=0; foreach my $included_language (split(/\,/,$include)) { +# ... but if my preferred language is included, render it if ($included_language eq $preferred_language) { - $render=1; + $result=1; $found=1; - last; # Only need to find the first. } } } - # Do we have an exclude argument? - # If so, and one of the languages matches a preferred language - # inhibit rendering the block. Note that in the pathalogical case the - # author has specified a preferred language in both the include and exclude - # attribte exclude is preferred. - +# Do we have an exclude argument? if ($exclude) { - $render=1; + $result=1; foreach my $excluded_language (split(/\,/,$exclude)) { if ($excluded_language eq $preferred_language) { - $render=0; + $result=0; $found=1; - last; # Only need to find the first. } } } - if ($found) { - last; # Done on any match of include or exclude. - } + if ($found) { last; } } - # If $render not true skip the entire block until - # - - if ( ! $render ) { + if ( ! $result ) { my $skip=&Apache::lonxml::get_all_text("/languageblock",$parser, $style); &Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]"); } - # If $render is true, we've not skipped the contents of the - # and the normal loncapa processing flow will render it as a matter of course. - + $result=''; } elsif ($target eq 'edit') { $result .=&Apache::edit::tag_start($target,$token); $result .=&Apache::edit::text_arg(&mt('Include Language:'),'include', @@ -1657,47 +1614,9 @@ sub end_languageblock { } return $result; } -# languagblock specific tags: -{ - # For chunks of a resource that has translations, this hash contains - # the translations available indexed by language name. - # - my %available_texts; - - # starts a block of a resource that has multiple translations. - # See the tag as well. - # When is encountered if there is a translation for the - # currently preferred language, that is rendered inthe web/tex/webgrade - # targets. Otherwise, the default text is rendered. - # - # Note that is only registered for the duration of the - # ... block - # - # Pathalogical case handling: - # - If there is no that specifies a 'default' and there is no - # translation that matches a preferred language, nothing is rendered. - # - Nested ... might be linguistically supported by - # XML due to the stack nature of tag registration(?) however the rendered - # output will be incorrect because there is only one %available_texts - # has and end_translated clears it. - # - Material outside of a ... block within the - # ... block won't render either e.g.: - # - # The following will be in your preferred langauge: - # - # This section in english - # - # - # Hier es ist auf Deutsch. - # - # - # En Francais - # - # - # - # The introductory text prior to the first tag is not rendered. - # +{ + my %available_texts; sub start_translated { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; &Apache::lonxml::register('Apache::structuretags',('lang')); @@ -1723,42 +1642,7 @@ sub end_languageblock { return $result; } - # - # Specifies that the block contained within it is a translation - # for a specific language specified by the 'which' attribute. The - # 'other' attribute can be used by itself or in conjunction with - # which to specify this tag _may_ be used as a translation for some - # list of languages. e.g.: - # specifying that the block provides a translation for US (primary) - # Canadian, Australian and UK Englush. - # - # Comment: this seems a bit silly why not just support a list of languages - # e.g. and ditch the other attribute? - # - # Effect: - # The material within the .. block is stored in the - # specified set of $available_texts hash entries, the appropriate one - # is selected at time. - # - # Pathalogical case handling: - # If a language occurs multiple times within a block, - # only the last one is rendered e.g.: - # - # - # - # Red green color blindness is quite common affecting about 7.8% of - # the male population, but onloy about .65% of the female population. - # - # Red green colour blindness is quite common affecting about 7.8% of - # the male population, but onloy about .65% of the female population. - # - # - # - # renders the correct spelling of color (colour) for people who have specified - # a preferred language that is one of the British Commonwealth languages - # even though those are also listed as valid selections for the US english - # block. - # + sub start_lang { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || @@ -1789,8 +1673,7 @@ sub end_languageblock { } return ''; } -} # end langauge block specific tags. - +} sub start_instructorcomment { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;