--- loncom/interface/lonhelper.pm 2014/12/11 01:22:26 1.193
+++ loncom/interface/lonhelper.pm 2018/09/03 16:23:25 1.197.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# .helper XML handler to implement the LON-CAPA helper
#
-# $Id: lonhelper.pm,v 1.193 2014/12/11 01:22:26 raeburn Exp $
+# $Id: lonhelper.pm,v 1.197.2.1 2018/09/03 16:23:25 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -64,9 +64,11 @@ messages, resource selections, or date q
The helper tag is required to have one attribute, "title", which is the name
of the helper itself, such as "Parameter helper". The helper tag may optionally
-have a "requiredpriv" attribute, specifying the priviledge a user must have
+have a "requiredpriv" attribute, specifying the privilege a user must have
to use the helper, or get denied access. See loncom/auth/rolesplain.tab for
-useful privs. Default is full access, which is often wrong!
+useful privs. You may add the modifier &S at the end of the three letter priv
+if you want to grant access to users for whom the corresponding privilege is
+section-specific. The default is full access, which is often wrong!
=head2 State tags
@@ -283,7 +285,8 @@ sub real_handler {
my $allowed = $helper->allowedCheck();
if (!$allowed) {
- $env{'user.error.msg'} = $env{'request.uri'}.':'.$helper->{REQUIRED_PRIV}.
+ my ($priv,$modifier) = split(/\&/,$helper->{REQUIRED_PRIV});
+ $env{'user.error.msg'} = $env{'request.uri'}.':'.$priv.
":0:0:Permission denied to access this helper.";
return HTTP_NOT_ACCEPTABLE;
}
@@ -508,8 +511,13 @@ sub allowedCheck {
if (!defined($self->{REQUIRED_PRIV})) {
return 1;
}
-
- return Apache::lonnet::allowed($self->{REQUIRED_PRIV}, $env{'request.course.id'});
+ my ($priv,$modifier) = split(/\&/,$self->{REQUIRED_PRIV});
+ my $allowed = &Apache::lonnet::allowed($priv,$env{'request.course.id'});
+ if ((!$allowed) && ($modifier eq 'S') && ($env{'request.course.sec'} ne '')) {
+ $allowed = &Apache::lonnet::allowed($priv,$env{'request.course.id'}.'/'.
+ $env{'request.course.sec'});
+ }
+ return $allowed;
}
sub changeState {
@@ -1792,7 +1800,7 @@ sub render {
if (lc($time) eq 'anytime') {
$anytime=1;
$date = &get_date_object(time);
- $date->min(0);
+ $date->set_minute(0);
} elsif (defined($time) && $time ne 0) {
$date = &get_date_object($time);
} else {
@@ -1802,7 +1810,7 @@ sub render {
if (!defined($date)) {
$date = &get_date_object(time);
- $date->min(0);
+ $date->set_minute(0);
}
if ($anytime) {
@@ -2039,7 +2047,9 @@ be filtered out. The 'addstatus' attribu
and long status display columns to the display. The 'addparts'
attribute will add in a part selector beside problems that have more
than 1 part. The 'includecourse' attribute if true, will include
-the toplevel default.sequence in the results.
+the toplevel default.sequence in the results. The 'modalLink' attribute,
+if true, will cause links to be launched as modal pop-ups, instead of
+replacing the resource selection listing, currently being displayed.
=head3 SUB-TAGS
@@ -2151,6 +2161,7 @@ sub start_resource {
$paramHash->{'toponly'} = $token->[2]{'toponly'};
$paramHash->{'addstatus'} = $token->[2]{'addstatus'};
$paramHash->{'addparts'} = $token->[2]{'addparts'};
+ $paramHash->{'modalLink'} = $token->[2]{'modallink'};
if ($paramHash->{'addparts'}) {
$helper->declareVar($paramHash->{'variable'}.'_part');
}
@@ -2357,6 +2368,7 @@ BUTTONS
my $option_texts = $self->{OPTION_TEXTS};
my $option_types = $self->{OPTION_TYPES};
my $addparts = $self->{'addparts'};
+ my $modalLink = $self->{'modalLink'};
my $headings_done = 0;
# Evaluate the map url as needed
@@ -2456,7 +2468,7 @@ BUTTONS
$resource_name . "'/> ";
} else {
$col .=
- "