--- loncom/homework/structuretags.pm 2011/06/06 17:43:51 1.488
+++ loncom/homework/structuretags.pm 2011/12/12 11:19:53 1.497.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.488 2011/06/06 17:43:51 www Exp $
+# $Id: structuretags.pm,v 1.497.2.1 2011/12/12 11:19:53 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -129,8 +129,16 @@ sub homework_js {
<<'JS';
-ENDSCRIPT
-}
-
sub page_start {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name,
$extra_head)=@_;
@@ -232,8 +197,62 @@ sub page_start {
$extra_head .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args);
}
my $is_task = ($env{'request.uri'} =~ /\.task$/);
+ my $needs_upload;
+ my ($symb)= &Apache::lonnet::whichuser();
+ my ($map,$resid,$resurl)=&Apache::lonnet::decode_symb($symb);
if ($is_task) {
- $extra_head .= &file_delchk_js();
+ $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js();
+ } else {
+ if (&Apache::lonnet::EXT("resource.$Apache::inputtags::part.uploadedfiletypes") ne '') {
+ unless ($env{'request.state'} eq 'construct') {
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ if (ref($navmap)) {
+ my $mapres = $navmap->getResourceByUrl($map);
+ my $is_page;
+ if (ref($mapres)) {
+ $is_page = $mapres->is_page();
+ }
+ unless ($is_page) {
+ $needs_upload = 1;
+ }
+ }
+ }
+ } else {
+ unless ($env{'request.state'} eq 'construct') {
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ if (ref($navmap)) {
+ my $mapres = $navmap->getResourceByUrl($map);
+ my $is_page;
+ if (ref($mapres)) {
+ $is_page = $mapres->is_page();
+ }
+ unless ($is_page) {
+ my $res = $navmap->getBySymb($symb);
+ if (ref($res)) {
+ my $partlist = $res->parts();
+ if (ref($partlist) eq 'ARRAY') {
+ foreach my $part (@{$partlist}) {
+ my @types = $res->responseType($part);
+ my @ids = $res->responseIds($part);
+ for (my $i=0; $i < scalar(@ids); $i++) {
+ if ($types[$i] eq 'essay') {
+ my $partid = $part.'_'.$ids[$i];
+ if (&Apache::lonnet::EXT("resource.$partid.uploadedfiletypes") ne '') {
+ $needs_upload = 1;
+ last;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if ($needs_upload) {
+ $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js();
+ }
}
my %body_args;
@@ -264,7 +283,7 @@ sub page_start {
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::lonhtmlcommon::add_breadcrumb({
'text' => 'Construction Space',
- 'href' => &Apache::loncommon::authorspace(),
+ 'href' => &Apache::loncommon::authorspace($env{'request.uri'}),
});
# breadcrumbs (and tools) will be created
# in start_page->bodytag->innerregister
@@ -316,7 +335,6 @@ sub page_start {
if (!defined($found{'body'}) && $env{'request.state'} ne 'construct') {
$page_start .= &Apache::lonxml::message_location();
}
-
my $form_tag_start;
if (!defined($found{'form'})) {
$form_tag_start='
";
}
if ($target eq 'web') {
@@ -1509,54 +1539,100 @@ 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 the languageblock has no arguments, show the contents
- $result=1;
+
+ # If neither include/nor exlude is present the block is going
+ # to get rendered.
+
+ my $render=1;
my $found=0;
-# Do we have an include argument?
+
+ # If include is specified, don't render the block
+ # unless the preferred language is included in the set.
+
if ($include) {
-# If include is specified, by default, don't render the block
- $result=0;
+ $render=0;
foreach my $included_language (split(/\,/,$include)) {
-# ... but if my preferred language is included, render it
if ($included_language eq $preferred_language) {
- $result=1;
+ $render=1;
$found=1;
+ last; # Only need to find the first.
}
}
}
-# Do we have an exclude argument?
+ # 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.
+
if ($exclude) {
- $result=1;
+ $render=1;
foreach my $excluded_language (split(/\,/,$exclude)) {
if ($excluded_language eq $preferred_language) {
- $result=0;
+ $render=0;
$found=1;
+ last; # Only need to find the first.
}
}
}
- if ($found) { last; }
+ if ($found) {
+ last; # Done on any match of include or exclude.
+ }
}
- if ( ! $result ) {
+ # If $render not true skip the entire block until
+ #
+
+ if ( ! $render ) {
my $skip=&Apache::lonxml::get_all_text("/languageblock",$parser,
$style);
&Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]");
}
- $result='';
+ # 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.
+
} elsif ($target eq 'edit') {
$result .=&Apache::edit::tag_start($target,$token);
$result .=&Apache::edit::text_arg(&mt('Include Language:'),'include',
@@ -1982,7 +2058,7 @@ sub start_part {
$allow_print_points=0;
}
if (($Apache::lonhomework::type eq 'exam') && ($allow_print_points)) {
- $result .= '\vskip 10mm\fbox{\textit{'.$weight.' pt}}';
+ $result .= '\vskip 10mm\fbox{\textit{'.&mt('[quant,_1,pt,pt]',$weight ).'}}';
}
} elsif ($target eq 'web') {
@@ -2051,7 +2127,8 @@ sub end_part {
!$hidden && $in_order_show) {
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part,
$target);
- if ($Apache::lonhomework::type eq 'exam' && $target eq 'tex') {
+ if (($Apache::lonhomework::type eq 'exam' && $target eq 'tex') ||
+ ($env{'form.grade_imsexport'})) {
$gradestatus='';
}
$result.=$gradestatus;