--- loncom/interface/londocs.pm 2021/04/23 01:37:14 1.677 +++ loncom/interface/londocs.pm 2022/10/22 17:24:54 1.684 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.677 2021/04/23 01:37:14 raeburn Exp $ +# $Id: londocs.pm,v 1.684 2022/10/22 17:24:54 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -91,7 +91,7 @@ sub storemap { if ($map =~ /^default/) { $hadchanges=1; - } else { + } elsif ($contentchg) { $suppchanges=1; } return ($errtext,0); @@ -955,7 +955,6 @@ END &storemap($coursenum, $coursedom, $folder.'.'.$container,1); unless ($fatal) { if ($folder =~ /^supplemental/) { - &Apache::lonnet::get_numsuppfiles($coursenum,$coursedom,1); my ($errtext,$fatal) = &mapread($coursenum,$coursedom, $folder.'.'.$container); } @@ -1495,7 +1494,7 @@ sub print_paste_buffer { } $pasteitems .= ''; if ($nopaste) { - $pasteitems .= $nopaste; + $pasteitems .= ' '.$nopaste.''; } else { if ($othercrs) { $pasteitems .= $othercrs; @@ -2800,6 +2799,15 @@ sub apply_fixups { $storefn =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir{$key}/; } my $mapcontent = &Apache::lonnet::getfile($key); + if (($mapcontent eq '-1') && ($before{'map'} eq 'supplemental') && + ($after{'map'} eq 'default') && + ($key =~ m{^/uploaded/$match_domain/$match_courseid/supplemental_\d+\.sequence$})) { + $mapcontent = ''; + } if ($mapcontent eq '-1') { if (ref($errors) eq 'HASH') { $errors->{$key} = 1; @@ -3269,11 +3277,28 @@ sub editor { return $errtext if ($fatal); } + my (%supphidden,%suppids,$suppmapid); + if ($#LONCAPA::map::order<1) { my $idx=&LONCAPA::map::getresidx(); if ($idx<=0) { $idx=1; } $LONCAPA::map::order[0]=$idx; $LONCAPA::map::resources[$idx]=''; + } elsif ($supplementalflag && !$allowed) { + my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom); + if (ref($supplemental) eq 'HASH') { + if (ref($supplemental->{'hidden'}) eq 'HASH') { + %supphidden = %{$supplemental->{'hidden'}}; + } + if (ref($supplemental->{'ids'}) eq 'HASH') { + %suppids = %{$supplemental->{'ids'}}; + } + } + if ($folder eq 'supplemental') { + $suppmapid = 0; + } elsif ($folder =~ /^supplemental_(\d+)$/) { + $suppmapid = $1; + } } # ------------------------------------------------------------ Process commands @@ -3557,11 +3582,15 @@ sub editor { push(@allmapidx,$res); } + if (($supplementalflag) && (!$allowed) && (!$env{'request.role.adv'})) { + next if ($supphidden{$suppmapid.':'.$res}); + } $output .= &entryline($idx,$name,$url,$folder,$allowed,$res, $coursenum,$coursedom,$crstype, $pathitem,$supplementalflag,$container, \%filters,\%curr_groups,$ltitoolsref,$canedit, - $isencrypted,$navmapref,$hostname); + $isencrypted,$navmapref,$hostname, + \%supphidden,\%suppids,$suppmapid); $idx++; $shown++; } @@ -3570,10 +3599,14 @@ sub editor { my $need_save; if ($allowed || ($supplementalflag && $folder eq 'supplemental')) { my $toolslink; - if ($allowed) { + if ($allowed || $canedit) { + my $helpitem = 'Navigation_Screen'; + if (!$allowed) { + $helpitem = 'Supplemental_Navigation'; + } $toolslink = '
' .&Apache::loncommon::help_open_menu('Navigation Screen', - 'Navigation_Screen',undef,'RAT') + $helpitem,undef,'RAT') .' | '.&mt('Tools:').' | ' .'
| ';
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) {
$line.=''.$title.'';
+ if (!$allowed && $supplementalflag && $canedit && $isfolder) {
+ my $editicon = &Apache::loncommon::lonhttpdurl('/res/adm/pages').'/editmap.png';
+ my $editurl = $url;
+ $editurl =~ s{^\Q/adm/supplemental?\E}{/adm/coursedocs?command=direct&forcesupplement=1&};
+ $line .= ' '.''.
+ ' | ';
$rand_pick_text = ' ' if ($rand_pick_text eq '');
$rand_order_text = ' ' if ($rand_order_text eq '');
- if (($allowed) && ($folder!~/^supplemental/)) {
- my %lt=&Apache::lonlocal::texthash(
- 'hd' => 'Hidden',
- 'ec' => 'URL hidden');
- my ($enctext,$hidtext);
- if ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i) {
- $enctext = ' checked="checked"';
- if (($ishash) && (ref($filtersref->{'encrypturl'}) eq 'ARRAY')) {
- push(@{$filtersref->{'encrypturl'}},$orderidx);
- }
- }
+ if ($allowed) {
+ my %lt=&Apache::lonlocal::texthash(
+ 'hd' => 'Hidden',
+ 'ec' => 'URL hidden');
+ my ($enctext,$hidtext,$formhidden,$formurlhidden);
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) {
$hidtext = ' checked="checked"';
if (($ishash) && (ref($filtersref->{'randomorder'}) eq 'ARRAY')) {
push(@{$filtersref->{'hiddenresource'}},$orderidx);
}
}
- my $formhidden = 'edit_hiddenresource_'.$orderidx;
- my $formurlhidden = 'edit_encrypturl_'.$orderidx;
- $line.=(<