--- loncom/interface/lonexttool.pm 2017/12/22 02:00:46 1.12
+++ loncom/interface/lonexttool.pm 2017/12/30 19:51:30 1.15
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Launch External Tool Provider (LTI)
#
-# $Id: lonexttool.pm,v 1.12 2017/12/22 02:00:46 raeburn Exp $
+# $Id: lonexttool.pm,v 1.15 2017/12/30 19:51:30 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -127,28 +127,48 @@ sub handler {
return OK;
}
- my ($status,$open,$close,$msg);
+ my ($symb,$status,$open,$close,$msg,$donebuttonresult,$donemsg);
+ if (($target eq 'tex') || ($toolhash{'gradable'})) {
+ ($symb) = &Apache::lonnet::whichuser();
+ }
+ if ($target eq 'tex') {
+ my $title = &Apache::lonnet::gettitle($symb);
+ $r->print(&mt('External Tool: [_1]','\textit{'.$title.'}').'\\\\');
+ }
if ($toolhash{'gradable'}) {
$Apache::lonhomework::browse = &Apache::lonnet::allowed('bre',$r->uri);
if ($env{'form.markaccess'}) {
- my @interval=&Apache::lonnet::EXT("resource.0.interval");
+ my @interval=&Apache::lonnet::EXT('resource.0.interval',$symb);
my ($timelimit) = split(/_/,$interval[0]);
&Apache::lonnet::set_first_access($interval[1],$timelimit);
+ } elsif ($symb && $env{'form.LC_interval_done'} eq 'true') {
+ # Set the event timer to zero if the "done button" was clicked. The button is
+ # part of the doneButton form created in lonmenu.pm
+ ($donebuttonresult,$donemsg) = &Apache::lonhomework::zero_timer($symb);
+ undef($env{'form.LC_interval_done'});
+ undef($env{'form.LC_interval_done_proctorpass'});
}
- ($status,$msg) = &gradabletool_access_check();
+ ($status,$msg) = &gradabletool_access_check($target);
undef($Apache::lonhomework::browse);
if ($status eq 'SHOW_ANSWER') {
- $r->print(&display_score());
+ $r->print(&display_score($target));
+ if ($target eq 'tex') {
+ $r->print('\end{document}');
+ }
return OK;
} elsif ($status ne 'CAN_ANSWER') {
- $r->print($msg);
+ if ($target eq 'tex') {
+ $r->print('\end{document}');
+ } else {
+ $r->print($msg);
+ }
return OK;
}
} else {
my ($status,$open,$close,$msg)=&Apache::londatecheck::content_date_check();
if ($status ne 'OPEN') {
if ($target eq 'tex') {
- $r->print(&mt('Not open to be viewed'));
+ $r->print(&mt('Not open to be viewed').'\end{document}');
} else {
$r->print($msg);
}
@@ -157,7 +177,7 @@ sub handler {
($status,$msg)=&Apache::lonipcheck::ip_access_check();
if ($status ne 'OPEN') {
if ($target eq 'tex') {
- $r->print(&mt('Not open to be viewed'));
+ $r->print(&mt('Not open to be viewed').'\end{document}');
} else {
$r->print($msg);
}
@@ -167,7 +187,7 @@ sub handler {
}
my $launchok = 1;
if ($target eq 'tex') {
- $r->print(&mt('External Tool'));
+ $r->print('\end{document}');
} else {
my $now = time;
if ($toolhash{'passback'}) {
@@ -193,7 +213,7 @@ sub handler {
$url .= $toolhash{'crsappend'};
}
$r->print(&launch_html($url,$toolhash{'key'},$toolhash{'secret'},
- $submittext,\%lti));
+ $toolhash{'sigmethod'},$submittext,\%lti));
} else {
$r->print('
'.&mt('External Tool Unavailable').'
');
}
@@ -405,8 +425,8 @@ sub lti_params {
}
sub launch_html {
- my ($url,$key,$secret,$submittext,$paramsref) = @_;
- my $hashref = &LONCAPA::ltiutils::sign_params($url,$key,$secret,$paramsref);
+ my ($url,$key,$secret,$sigmethod,$submittext,$paramsref) = @_;
+ my $hashref = &LONCAPA::ltiutils::sign_params($url,$key,$secret,$sigmethod,$paramsref);
my $action = &HTML::Entities::encode($url,'<>&"');
my $form = <<"END";
@@ -441,11 +461,14 @@ ENDJS
}
sub gradabletool_access_check {
+ my ($target) = @_;
my ($result,$resource_due);
my $status;
my ($symb,$courseid,$udom,$uname) = &Apache::lonnet::whichuser();
my @targets;
- if (defined($env{'form.submitted'}) && defined($env{'form.validate'})) {
+ if ($target) {
+ @targets = ($target);
+ } elsif (defined($env{'form.submitted'}) && defined($env{'form.validate'})) {
@targets = ('grade','web');
} else {
@targets = ('web');
@@ -490,30 +513,42 @@ sub gradabletool_access_check {
}
sub display_score {
+ my ($target) = @_;
my $weight = &Apache::lonnet::EXT('resource.0.weight');
if ((!defined($weight)) || ($weight eq '')) { $weight=1; }
my $awarded = $Apache::lonhomework::history{'resource.0.awarded'};
if (!defined($awarded)) { $awarded=0; }
my $display='';
+ if ($target eq 'tex') {
+ $display = '\\\\';
+ }
if (!defined($awarded)) {
- $display = &mt('[_1] possible points.',$weight);
+ $display .= &mt('[_1] possible points.',$weight);
} else {
my $points = $awarded*$weight;
my $result = sprintf('%.2f',$points);
- $display = &mt('You have [_1] out of [quant,_2,possible point]',
+ $display .= &mt('You have [_1] out of [quant,_2,possible point]',
$result,$weight);
}
my $comment = $Apache::lonhomework::history{'resource.0.comment'};
if (!defined($comment) || $comment!~/\w/) {
$comment='';
} else {
- $comment='
';
+ if ($target eq 'tex') {
+ $comment = '\\\\'.$comment;
+ } else {
+ $comment='
';
+ }
}
my $gradeinfo = $Apache::lonhomework::history{'resource.0.gradeinfo'};
if (!defined($gradeinfo) || $gradeinfo!~/\w/) {
$gradeinfo='';
} else {
- $gradeinfo='
';
+ if ($target eq 'tex') {
+ $gradeinfo = '\\\\'.$gradeinfo;
+ } else {
+ $gradeinfo='
';
+ }
}
return $display.$comment.$gradeinfo;
}