--- loncom/interface/lonblockingmenu.pm 2014/06/07 19:13:42 1.12 +++ loncom/interface/lonblockingmenu.pm 2016/03/04 21:43:15 1.18 @@ -2,7 +2,7 @@ # Routines for configuring blocking of access to collaborative functions, # and specific resources during an exam # -# $Id: lonblockingmenu.pm,v 1.12 2014/06/07 19:13:42 raeburn Exp $ +# $Id: lonblockingmenu.pm,v 1.18 2016/03/04 21:43:15 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -561,6 +561,7 @@ 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'}.'

    ' ); @@ -913,6 +914,9 @@ sub get_block_choices { if (ref($symb_ref) eq 'HASH') { my %resources = map { $symb_ref->{$_} => 1; } (split(/,/,$env{'form.docs_resources_'.$item})); + if (exists($resources{''})) { + delete($resources{''}); + } $blocklist->{$type}->{resources} = \%resources; if (keys(%resources) > 0) { $blockdocs = 1; @@ -924,6 +928,9 @@ sub get_block_choices { if (ref($map_ref) eq 'HASH') { my %maps = map { $map_ref->{$_} => 1; } (split(/,/,$env{'form.docs_maps_'.$item})); + if (exists($maps{''})) { + delete($maps{''}); + } $blocklist->{$type}->{maps} = \%maps; if (keys(%maps) > 0) { $blockdocs = 1; @@ -1047,16 +1054,26 @@ ACT if (&Apache::lonnet::is_on_map($url)) { if ($type eq 'map') { if (ref($navmap)) { - my $res = $navmap->getResourceByUrl($item); - my $title = $res->compTitle(); + my $title; + my $resobj = $navmap->getResourceByUrl($item); + if (ref($resobj)) { + $title = $resobj->compTitle(); + } else { + $title = &Apache::lonnet::gettitle($item); + } $itemname = &mt('Timer for all items in folder: [_1]', ''. $title.''); } } else { if (ref($navmap)) { - my $res = $navmap->getBySymb($item); - my $title = $res->compTitle(); + my $title; + my $resobj = $navmap->getBySymb($item); + if (ref($resobj)) { + $title = $resobj->compTitle(); + } else { + $title = &Apache::lonnet::gettitle($item); + } $itemname = &mt('Timer for resource: [_1]', ''. $title.''); @@ -1358,6 +1375,8 @@ sub create_interval_form { if (ref($intervals->{$type}) eq 'HASH') { if (ref($navmap)) { foreach my $map (sort(keys(%{$intervals->{$type}}))) { + next if ((!&Apache::lonnet::is_on_map($map)) && + ($currkey ne $map)); my ($checked,$clickaction); if ($currkey eq $map) { $checked = ' checked="checked"'; @@ -1368,12 +1387,16 @@ sub create_interval_form { '" value="'.&HTML::Entities::encode($map,'"<>&').'"'. $checked.$clickaction.' />'; if ($currkey eq $map) { - $intervalform .= $itemname.''; + $intervalform .= $itemname.''.$iteminfo; } else { - my $res = $navmap->getResourceByUrl($map); - my $title = $res->compTitle(); - my $path; - my $hierarchy = &show_timer_path($type,$map,$navmap); + my ($resobj,$title,$path,$hierarchy); + $resobj = $navmap->getResourceByUrl($map); + if (ref($resobj)) { + $title = $resobj->compTitle(); + } else { + $title = &Apache::lonnet::gettitle($map); + } + $hierarchy = &show_timer_path($type,$map,$navmap); if ($hierarchy) { $path = ' '. &mt('(in: [_1])',$hierarchy). @@ -1383,9 +1406,6 @@ sub create_interval_form { ''.$title.''). ''.$path; } - if ($currkey eq $map) { - $intervalform .= $iteminfo; - } $intervalform .= '
    '; } } @@ -1394,22 +1414,29 @@ sub create_interval_form { if (ref($intervals->{$type}) eq 'HASH') { if (ref($navmap)) { foreach my $resource (sort(keys(%{$intervals->{$type}}))) { - my ($checked,$clickaction); + my ($checked,$clickaction,$resobj); if ($currkey eq $resource) { $checked = ' checked="checked"'; - } elsif ($jschg) { - $clickaction = ' onclick="'.$jschg.'"'; + } else { + $resobj = $navmap->getBySymb($resource); + next unless(ref($resobj)); + if ($jschg) { + $clickaction = ' onclick="'.$jschg.'"'; + } } $intervalform .= ''; + $intervalform .= $itemname.''.$iteminfo; } else { - my $res = $navmap->getBySymb($resource); - my $title = $res->compTitle(); - my $path; - my $hierarchy = &show_timer_path($type,$resource,$navmap); + my ($title,$path,$hierarchy); + if (ref($resobj)) { + $title = $resobj->compTitle(); + } else { + $title = &Apache::lonnet::gettitle($resource); + } + $hierarchy = &show_timer_path($type,$resource,$navmap); if ($hierarchy) { $path = ' '. &mt('(in: [_1])',$hierarchy). @@ -1419,9 +1446,6 @@ sub create_interval_form { ''. $path; } - if ($currkey eq $resource) { - $intervalform .= $iteminfo; - } $intervalform .= '
    '; } } @@ -1478,8 +1502,9 @@ sub blocktype_text { 'blogs' => 'Blogs', 'docs' => 'Content', 'printout' => 'Printouts', + 'passwd' => 'Change Password', ); - my $typeorder = ['com','chat','boards','port','groups','blogs','printout','docs']; + my $typeorder = ['com','chat','boards','port','groups','blogs','printout','docs','passwd']; return ($typeorder,\%types); }