--- loncom/interface/lonblockingmenu.pm 2024/12/30 00:30:49 1.14.2.4
+++ loncom/interface/lonblockingmenu.pm 2015/09/13 21:48:05 1.15
@@ -2,7 +2,7 @@
# Routines for configuring blocking of access to collaborative functions,
# and specific resources during an exam
#
-# $Id: lonblockingmenu.pm,v 1.14.2.4 2024/12/30 00:30:49 raeburn Exp $
+# $Id: lonblockingmenu.pm,v 1.15 2015/09/13 21:48:05 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -105,19 +105,6 @@ block (including deletion), or when a ne
=over
-=item &get_permission()
-
-Returns information about permission user has to set/modify exam
-blocking events.
-
-Inputs: None
-
-Outputs: 2
- $readonly - true if modification of blocking events is prohibited.
-
- $allowed - true if blocking events information can be shown.
-
-
=item &get_timed_items()
Provides perl data structure with information about timed interval
@@ -235,7 +222,7 @@ Side Effects: &update_released_required(
Generates web form elements used to display, cancel, or modify
existing blocking events.
-Inputs: 8
+Inputs: 7
- $r - Apache request object
- $records - Reference to hash of current blocks
@@ -251,9 +238,6 @@ Inputs: 8
- $blockcount - number of existing blocking events in course
- - $readonly - if true, modification not allowed.
-
-
Output: None
Side Effects: prints web form elements (in a table) for current blocks.
@@ -318,16 +302,13 @@ Creates web form elements used to select
items in the course for use in an exam block of type: "Triggered by
Activating Timer".
-Inputs: 8 (four required, last four optional)
+Inputs: 7 (three required, last four optional)
- $intervals - Reference to hash of parameters for timed intervals
- $parmcount - numeric ID of current block
- $navmap - navmaps object
- - $context - this will be "accesstimes" if called by lonaccesstimes.pm,
- or "blocking" if called internally by lonblockingmenu.pm
-
- $currkey - current interval (where this is a block already using
an interval-based trigger).
@@ -342,34 +323,6 @@ Inputs: 8 (four required, last four opti
Outputs: 1 - $intervalform - web form elements used to select a time interval
-=item &interval_details()
-
-Creates name/scope of current interval and expandable/collapsible
-showing which interval parameters apply to the current folder/resource
-
-Inputs: 6
-
- - $item - course, map url, or resource symb
-
- - $type - course, map, or resource
-
- - $url - url of item (null if item is course).
-
- - $navmap - navmaps object
-
- - $intervals - Reference to hash of parameters for timed intervals
-
- - $parmcount - unique ID for current element.
-
-
-Outputs: 2
-
- - $itemname - name/scope of interval (timer) parameter
-
- - $iteminfo - Expandable/collapsible block showing which interval
- (timer) parameters affect the current folder or resource.
-
-
=item &trigger_details_toggle()
Creates link used to expand item showing information about timer for current
@@ -379,7 +332,6 @@ Inputs: 1 - $parmcount - numericID of ex
Outputs: 1 - returns HTML for link to display contents of information item
-
=item &show_timer_path()
Display hierarchy of names of folders/sub-folders containing the current
@@ -424,21 +376,12 @@ Output: 1 - Javascript (with tags) for functions used to:
- toggle visibility of unordered list for display of detailed
- information about intervals.
-=back
+=back
=cut
@@ -479,10 +422,11 @@ sub handler {
# ----------------------------------------------------------- Permissions check
- my ($readonly,$allowed) = &get_permission();
- unless ($allowed) {
+ unless ((&Apache::lonnet::allowed('dcm',$env{'request.course.id'})) ||
+ (&Apache::lonnet::allowed('dcm',$env{'request.course.id'}.
+ '/'.$env{'request.course.sec'}))) {
$env{'user.error.msg'}=
- "/adm/setblock:dcm:0:0:Cannot view/set blocking of communications in a course";
+ "/adm/setblock:dcm:0:0:Cannot set blocking of communications in a course";
return HTTP_NOT_ACCEPTABLE;
}
@@ -527,7 +471,7 @@ sub handler {
$r->print(&Apache::loncourserespicker::create_picker($navmap,
'examblock','resourceblocks',$crstype,
\%blockedmaps,\%blockedresources,
- $env{'form.block'},'','',undef,$readonly));
+ $env{'form.block'}));
} else {
$r->print($errormsg);
}
@@ -536,12 +480,10 @@ sub handler {
# -------------------------- Store changes and retrieve latest block information
my $storeresult;
- unless ($readonly) {
- if ($env{'form.action'} eq 'store') {
- (my $numchanges,$storeresult) = &blockstore($r,$crstype,$blockcount,\%records);
- if ($numchanges > 0) {
- $blockcount = &get_blockdates(\%records);
- }
+ if ($env{'form.action'} eq 'store') {
+ (my $numchanges,$storeresult) = &blockstore($r,$crstype,$blockcount,\%records);
+ if ($numchanges > 0) {
+ $blockcount = &get_blockdates(\%records);
}
}
@@ -561,8 +503,7 @@ sub handler {
({href=>'/adm/setblock',
text=>'Blocking communication/content access'});
- my $js = &blockingmenu_javascript($blockcount).
- &details_javascript();
+ my $js = &blockingmenu_javascript($blockcount);
$r->print(
&Apache::loncommon::start_page('Blocking communication/content access',$js).
@@ -620,7 +561,6 @@ sub handler {
'
'.&mt('accessing content in LON-CAPA portfolios or blogs').'
'."\n".
'
'.&mt("generating printouts of $lctype content").'
'.
'
'.&mt("accessing $lctype content in specified folders or resources").'
'.
- '
'.&mt("changing user's own password").'
'.
''.
'
'.$lt{'blca'}.' '.$lt{'pobl'}.'
'
);
@@ -628,10 +568,8 @@ sub handler {
# ------------------------ Choose between modifying existing block or adding new
$r->print('
END
- }
- $r->print(''.
- &Apache::loncommon::end_page());
+ $r->print(&Apache::loncommon::end_page());
return OK;
}
-sub get_permission {
- my %permission;
- my $allowed = 0;
- my $readonly = 0;
- return ($readonly,$allowed) unless ($env{'request.course.id'});
- if ((&Apache::lonnet::allowed('dcm',$env{'request.course.id'})) ||
- (&Apache::lonnet::allowed('dcm',$env{'request.course.id'}.'/'.
- $env{'request.course.sec'}))) {
- $allowed = 1;
- } elsif ((&Apache::lonnet::allowed('vcb',$env{'request.course.id'})) ||
- (&Apache::lonnet::allowed('vcb',$env{'request.course.id'}.'/'.
- $env{'request.course.sec'}))) {
- $readonly = 1;
- $allowed = 1;
- }
- return ($readonly,$allowed);
-}
-
sub get_timed_items {
my ($cdom,$cnum) = @_;
my ($cid,%intervals);
@@ -719,7 +629,7 @@ sub get_timed_items {
my $resourcedata=&Apache::lonparmset::readdata($cnum,$cdom);
if (ref($resourcedata) eq 'HASH') {
foreach my $key (keys(%{$resourcedata})) {
- if ($key =~ /^\Q$cid\E(.*)\.0\.interval$/) {
+ if ($key =~ /^\Q$cid\E(.+)\.0\.interval$/) {
my $middle = $1;
if ($middle eq '') {
$intervals{'course'}{'all'} = $resourcedata->{$key};
@@ -963,7 +873,8 @@ sub update_releasereq {
}
$modified_courses = [];
}
- return OK;
+ undef($registered_cleanup);
+ return;
}
sub get_dates_from_form {
@@ -1039,7 +950,7 @@ sub get_block_choices {
sub check_release_required {
my ($value,$chomemajor,$chomeminor) = @_;
- my $needsrelease = $Apache::lonnet::needsrelease{'course:commblock:'.$value};
+ my $needsrelease = $Apache::lonnet::needsrelease{'course:commblock:'.$value.':'};
if ($needsrelease) {
my ($needsmajor,$needsminor) = split(/\./,$needsrelease);
if (($chomemajor < $needsmajor) ||
@@ -1063,9 +974,9 @@ sub check_release_required {
}
sub display_blocker_status {
- my ($r,$records,$ltext,$intervals,$navmap,$errormsg,$blockcount,$readonly) = @_;
+ my ($r,$records,$ltext,$intervals,$navmap,$errormsg,$blockcount) = @_;
my $parmcount = 0;
- my (%map_url,%resource_symb,%titles,%lookups,$disabled);
+ my (%map_url,%resource_symb,%titles,%lookups);
&Apache::loncourserespicker::enumerate_course_contents($navmap,\%map_url,\%resource_symb,\%titles,'examblock');
%{$lookups{'maps'}} = reverse(%map_url);
%{$lookups{'resources'}} = reverse(%resource_symb);
@@ -1075,13 +986,10 @@ sub display_blocker_status {
'noch' => 'No change',
);
$r->print('