[LON-CAPA-cvs] cvs: loncom /homework bridgetask.pm /xml scripttag.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Thu, 29 Sep 2005 19:15:49 -0000
This is a MIME encoded message
--albertel1128021349
Content-Type: text/plain
albertel Thu Sep 29 15:15:49 2005 EDT
Modified files:
/loncom/xml scripttag.pm
/loncom/homework bridgetask.pm
Log:
- full task status info and dimension grading info is now given to the student
--albertel1128021349
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20050929151549.txt"
Index: loncom/xml/scripttag.pm
diff -u loncom/xml/scripttag.pm:1.131 loncom/xml/scripttag.pm:1.132
--- loncom/xml/scripttag.pm:1.131 Thu Sep 15 14:30:11 2005
+++ loncom/xml/scripttag.pm Thu Sep 29 15:15:47 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# <script> definiton
#
-# $Id: scripttag.pm,v 1.131 2005/09/15 18:30:11 albertel Exp $
+# $Id: scripttag.pm,v 1.132 2005/09/29 19:15:47 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -501,9 +501,11 @@
@Apache::scripttag::parser_env;
my @parser;
&Apache::lonxml::newparser(\@parser,\$string);
+ &Apache::lonxml::startredirection();
my $result=&Apache::lonxml::inner_xmlparse($target,$tagstack,
$parstack,\@parser,
$safeeval,$style);
+ $result.=&Apache::lonxml::endredirection();
&Apache::lonxml::debug("target is $target xmlparse recursion ending with $result");
return $result;
}
Index: loncom/homework/bridgetask.pm
diff -u loncom/homework/bridgetask.pm:1.53 loncom/homework/bridgetask.pm:1.54
--- loncom/homework/bridgetask.pm:1.53 Thu Sep 22 18:25:35 2005
+++ loncom/homework/bridgetask.pm Thu Sep 29 15:15:47 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: bridgetask.pm,v 1.53 2005/09/22 22:25:35 albertel Exp $
+# $Id: bridgetask.pm,v 1.54 2005/09/29 19:15:47 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -265,6 +265,26 @@
}
+sub show_task {
+ my ($status,$previous)=@_;
+ if (!$previous && (
+ ( $status eq 'CLOSED' ) ||
+ ( $status eq 'BANNED') ||
+ ( $status eq 'UNAVAILABLE') ||
+ ( $status eq 'NOT_IN_A_SLOT') ||
+ ( $status eq 'NEEDS_CHECKIN') ||
+ ( $status eq 'WAITING_FOR_GRADE') ||
+ ( $status eq 'INVALID_ACCESS') )) {
+ return 0;
+ }
+ return 1;
+}
+
+sub internal_location {
+ my ($id)=@_;
+ return '<!-- LONCAPA_INTERNAL_ADD_TASK_STATUS'.$id.' -->';
+}
+
sub start_Task {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
@@ -308,14 +328,7 @@
&Apache::run::run($expression,$safeeval);
&Apache::lonxml::debug("Got $status");
$body_tag_start.=&add_previous_version_button($status);
- if (!$previous && (
- ( $status eq 'CLOSED' ) ||
- ( $status eq 'BANNED') ||
- ( $status eq 'UNAVAILABLE') ||
- ( $status eq 'NOT_IN_A_SLOT') ||
- ( $status eq 'NEEDS_CHECKIN') ||
- ( $status eq 'WAITING_FOR_GRADE') ||
- ( $status eq 'INVALID_ACCESS') )) {
+ if (!&show_task($status,$previous)) {
my $bodytext=&Apache::lonxml::get_all_text("/task",$parser);
if ( $target eq "web" ) {
$result.= $head_tag_start.'</head>'.$body_tag_start;
@@ -354,20 +367,11 @@
$result.="$head_tag_start<title>$name</title></head>
$body_tag_start \n".&style();
- my ($version,$previous)=&get_version();
- if ($Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {
- $result.='<h1><font color="red">'.&mt('Did not pass').'</font></h1>';
- if (!$previous) {
- $result.=&add_request_another_attempt_button();
- }
- }
- if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass') {
- $result.='<h1><font color="green">'.&mt('Passed').'</font></h1>';
- }
$result.=$form_tag_start.
'<input type="hidden" name="submitted" value="yes" />';
$result.=&preserve_grade_info();
-
+ $result.=&internal_location();
+ &Apache::lonxml::startredirection();
}
} elsif ( ($target eq 'grade' && $env{'form.webgrade'}) ||
$target eq 'webgrade') {
@@ -384,7 +388,6 @@
# there isn't reshow the queue....
my ($todo,$status_code)=&get_key_todo($target);
- &Apache::lonnet::logthis("got todo -$todo- stat -$status_code-");
if ($todo) {
&setup_env_for_other_user($todo,$safeeval);
my ($symb,$uname,$udom)=&decode_queue_key($todo);
@@ -448,7 +451,7 @@
my $todo;
if (defined($env{'form.reviewasubmission'})) {
- &Apache::lonnet::logthis("review a submission....");
+ &Apache::lonxml::debug("review a submission....");
$env{'form.queue'}='reviewqueue';
return (undef,'show_list');
}
@@ -547,6 +550,9 @@
($target eq 'answer') || ($target eq 'tex')
) {
if ($target eq 'web') {
+ if (&show_task($status,$previous)) {
+ $result.=&Apache::lonxml::endredirection();
+ }
if ($status eq 'CAN_ANSWER' && !$previous) {
$result.="\n".'<table border="1">'.
&Apache::inputtags::file_selector("$version.0",
@@ -558,6 +564,48 @@
"</table>";
$result.=&Apache::inputtags::gradestatus('0');
}
+ if (&show_task($status,$previous)) {
+ my $bt_status=$Apache::lonhomework::history{"resource.$version.status"};
+ my $title=&Apache::lonnet::gettitle();
+ my %slot=&Apache::lonnet::get_slot($Apache::inputtags::slot_name);
+ my $description=&Apache::slotrequest::get_description($Apache::inputtags::slot_name,\%slot);
+
+ my $status;
+ $status.="\n<div class='$bt_status'>\n";
+
+ if ($bt_status eq 'pass') {
+ $status.='<h2>You passed the '.$title.' given on '.
+ $description.'.</h2>';
+ }
+ if ($bt_status eq 'fail') {
+ $status.='<h2>You did not pass the '.$title.' given on '.
+ $description.'.</h2>';
+ if (!$previous) {
+ $status.=&add_request_another_attempt_button();
+ }
+ }
+ my $man_count=0;
+ my $opt_count=0;
+ my $opt_passed=0;
+ foreach my $dim_id (@Apache::bridgetask::dimensionlist) {
+ if ($Apache::bridgetask::dimensionmandatory{$dim_id}
+ eq 'N') {
+ $opt_count++;
+ if ($Apache::lonhomework::history{"resource.$version.$dim_id.status"} eq 'pass') {
+ $opt_passed++;
+ }
+ } else {
+ $man_count++;
+ }
+ }
+ my $opt_req=&Apache::lonxml::get_param('OptionalRequired',
+ $parstack,$safeeval);
+ if ($opt_req !~ /\S/) { $opt_req='0'; }
+ $status.="\n<p>".&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components on the bridge task.',$man_count,$opt_req,$opt_count)."</p></div>\n";
+
+ my $internal_location=&internal_location();
+ $result=~s/\Q$internal_location\E/$status/;
+ }
}
if ($target eq 'web' || $target eq 'webgrade') {
$result.=&Apache::lonxml::xmlend().'</html>';
@@ -1176,7 +1224,8 @@
undef(@Apache::bridgetask::instance);
$Apache::bridgetask::dimensionmandatory{$dim_id}=
&Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);
- return '';
+ &Apache::lonxml::startredirection();
+ return &internal_location($dim_id);
}
sub get_instance {
@@ -1192,7 +1241,7 @@
my $last_link;
sub end_Dimension {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- my $result;
+ my $result=&Apache::lonxml::endredirection();
my $dim=&get_id($parstack,$safeeval);
my $instance=&get_instance();
my $version=&get_version();
@@ -1203,6 +1252,41 @@
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'});
if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass' ||
$Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {
+
+ my $dim_status=$Apache::lonhomework::history{"resource.$version.$dim.status"};
+ my $mandatory='Mandatory';
+ if ($Apache::bridgetask::dimensionmandatory{$dim} eq 'N') {
+ $mandatory='Optional';
+ }
+ my $dim_info="<div class='$dim_status'>\n";
+ if ($dim_status eq 'pass') {
+ $dim_info.='<h3>Question : you passed this '.$mandatory.' question</h3>';
+ }
+ if ($dim_status eq 'fail') {
+ $dim_info.='<h3>Question : you did not pass this '.$mandatory.' question</h3>';
+ }
+ my $man_count=0;
+ my $opt_count=0;
+ my $opt_passed=0;
+ foreach my $id (@{$dimension{$instance.'.criterias'}}) {
+ if ($dimension{$instance.'.criteria.'.$id.'.mandatory'}
+ eq 'N') {
+ $opt_count++;
+ if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') {
+ $opt_passed++;
+ }
+ } else {
+ $man_count++;
+ }
+ }
+ my $opt_req=&Apache::lonxml::get_param('OptionalRequired',
+ $parstack,$safeeval);
+ if ($opt_req !~ /\S/) { $opt_req='0'; }
+ $dim_info.="\n<p>".&mt('You passed all of the mandatory components and [_1] of the [_2] optional components, of which you were required to pass [_3].',$opt_passed,$opt_count,$opt_req)."</p>\n</div>";
+
+ my $internal_location=&internal_location($dim);
+ $result=~s/\Q$internal_location\E/$dim_info/;
+
foreach my $id (@{$dimension{$instance.'.criterias'}}) {
my $status=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"};
my $comment=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"};
@@ -1219,10 +1303,12 @@
}
my $status_display=$status;
$status_display=~s/^([a-z])/uc($1)/e;
+ @Apache::scripttag::parser_env = @_;
$result.='<div class="'.$status.'"><h4>'.$mandatory.
- ' Criteria</h4><p>'.
- $dimension{$instance.'.criteria.'.$id}.
- '</p><p class="grade">'.$status_display.'</p>';
+ ' Criteria</h4><p>';
+ @Apache::scripttag::parser_env = @_;
+ $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id});
+ $result.='</p><p class="grade">'.$status_display.'</p>';
if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}) {
$result.='<p class="comment">'.$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}.'</p>';
}
--albertel1128021349--