--- loncom/homework/structuretags.pm 2011/12/12 11:19:53 1.497.2.1 +++ loncom/homework/structuretags.pm 2011/12/20 22:46:40 1.499 @@ -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.1 2011/12/12 11:19:53 foxr Exp $ +# $Id: structuretags.pm,v 1.499 2011/12/20 22:46:40 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); @@ -1129,6 +1132,9 @@ sub start_problem { ( $status eq 'BANNED') || ( $status eq 'UNAVAILABLE') || ( $status eq 'NOT_IN_A_SLOT') || + ( $status eq 'NOTRESERVABLE') || + ( $status eq 'RESERVABLE') || + ( $status eq 'RESERVABLE_LATER') || ( $status eq 'INVALID_ACCESS')) { my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, $style); @@ -1138,9 +1144,12 @@ sub start_problem { $msg.='

'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'

'; } elsif ($status eq 'NOT_IN_A_SLOT') { $msg.='

'.&mt('You are not currently signed up to work at this time and/or place.').'

'; + } elsif (($status eq 'RESERVABLE') || ($status eq 'RESERVABLE_LATER') || + ($status eq 'NOTRESERVABLE')) { + $msg.='

'.&mt('Access requires reservation to work at specific time/place.').'

'; } elsif ($status ne 'NOT_YET_VIEWED') { $msg.='

'.&mt('Not open to be viewed').'

'; - } + } if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { $msg.=&mt('The problem ').$accessmsg; } elsif ($status eq 'UNCHECKEDOUT') { @@ -1149,6 +1158,16 @@ sub start_problem { $msg.=&firstaccess_msg($accessmsg,$symb); } elsif ($status eq 'NOT_IN_A_SLOT') { $msg.=&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); + } elsif ($status eq 'RESERVABLE') { + $msg.=&mt('Available to make a reservation.').' '.&mt('Reservation window closes [_1].', + &Apache::lonnavmaps::timeToHumanString($accessmsg,'end')). + '
'. + &Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); + } elsif ($status eq 'RESERVABLE_LATER') { + $msg.=&mt('Window to make a reservation will open [_1].', + &Apache::lonnavmaps::timeToHumanString($accessmsg,'start')); + } elsif ($status eq 'NOTRESERVABLE') { + $msg.=&mt('Not available to make a reservation.'); } $result.=$msg.'
'; } elsif ($target eq 'tex') { @@ -1539,100 +1558,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',