--- loncom/interface/londocs.pm 2022/10/27 20:30:11 1.685
+++ loncom/interface/londocs.pm 2023/03/11 21:58:18 1.695
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.685 2022/10/27 20:30:11 raeburn Exp $
+# $Id: londocs.pm,v 1.695 2023/03/11 21:58:18 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -205,7 +205,7 @@ sub validate_supppath {
$backto .= '&'.$items[$i];
my $is_hidden;
unless ($got_supp) {
- my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom);
+ my ($supplemental) = &Apache::loncommon::get_supplemental($coursenum,$coursedom);
if (ref($supplemental) eq 'HASH') {
if (ref($supplemental->{'hidden'}) eq 'HASH') {
%supphidden = %{$supplemental->{'hidden'}};
@@ -1207,7 +1207,13 @@ sub docs_change_log {
}
$r->print('');
if ($docslog{$id}{'logentry'}{'parameter_res'}) {
- $r->print(&LONCAPA::map::qtescape((split(/\:/,$docslog{$id}{'logentry'}{'parameter_res'}))[0]).':
');
+ my ($title,$url) = split(/\:/,$docslog{$id}{'logentry'}{'parameter_res'},3);
+ if ($title eq '') {
+ ($title) = ($url =~ m{/([^/]+)$});
+ } elsif ($is_supp) {
+ $title = &Apache::loncommon::parse_supplemental_title($title);
+ }
+ $r->print(&LONCAPA::map::qtescape($title).':');
foreach my $parameter ('randompick','hiddenresource','encrypturl','randomorder','gradable') {
if ($docslog{$id}{'logentry'}{'parameter_action_'.$parameter}) {
# FIXME: internationalization seems wrong here
@@ -3109,7 +3115,7 @@ sub update_parameter {
my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);
$name=&LONCAPA::map::qtescape($name);
$url=&LONCAPA::map::qtescape($url);
- next unless ($name && $url);
+ next unless $url;
my $is_map;
if ($url =~ m{/uploaded/.+\.(page|sequence)$}) {
$is_map = 1;
@@ -3562,7 +3568,7 @@ sub editor {
}
if ((!$allowed) && ($folder =~ /^supplemental_\d+$/)) {
- my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom);
+ my ($supplemental) = &Apache::loncommon::get_supplemental($coursenum,$coursedom);
if (ref($supplemental) eq 'HASH') {
if ((ref($supplemental->{'hidden'}) eq 'HASH') &&
(ref($supplemental->{'ids'}) eq 'HASH')) {
@@ -3992,11 +3998,13 @@ sub entryline {
my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,
$crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups,
$ltitoolsref,$canedit,$isencrypted,$ishidden,$navmapref,$hostname)=@_;
- my ($foldertitle,$renametitle,$oldtitle);
+ my ($foldertitle,$renametitle,$oldtitle,$encodedtitle);
if (&is_supplemental_title($title)) {
($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);
+ $encodedtitle=$title;
} else {
$title=&HTML::Entities::encode($title,'"<>&\'');
+ $encodedtitle=$title;
$renametitle=$title;
$foldertitle=$title;
}
@@ -4368,6 +4376,17 @@ END
}
$nomodal = 1;
}
+ } elsif (($uploaded) && (!$allowed) && ($url ne '/adm/supplemental?')) {
+ my $embstyle=&Apache::loncommon::fileembstyle($extension);
+ unless ($embstyle eq 'ssi') {
+ if (($embstyle eq 'img')
+ || ($embstyle eq 'emb')
+ || ($embstyle eq 'wrp')) {
+ $url='/adm/wrapper'.$url;
+ } elsif ($url !~ /\.(sequence|page)$/) {
+ $url='/adm/coursedocs/showdoc'.$url;
+ }
+ }
}
unless ($allowed && $env{'request.role.adv'}) {
if ($ishidden || (&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) {
@@ -4472,7 +4491,7 @@ $form_end;
$url .= ($url =~ /\?/) ? '&':'?';
$url .= 'folderpath='.&HTML::Entities::encode($esc_path,'<>&"');
if ($title) {
- $url .= '&title='.&HTML::Entities::encode($renametitle,'<>&"');
+ $url .= '&title='.$encodedtitle;
}
if ((($isexternal) || ($isexttool)) && $orderidx) {
$url .= '&idx='.$orderidx;
@@ -4633,7 +4652,7 @@ $form_end;
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')) {
+ if (($ishash) && (ref($filtersref->{'hiddenresource'}) eq 'ARRAY')) {
push(@{$filtersref->{'hiddenresource'}},$orderidx);
}
}
@@ -5773,7 +5792,7 @@ sub handler {
}
# If allowed and user's role is not advanced check folderpath is not hidden
my $hidden_and_empty;
- if (($allowed) && (!$env{'request.role.adv'}) && ($env{'form.folderpath'} ne '')) {
+ if (($allowed) && (!$env{'request.role.adv'}) && ($env{'form.folderpath'} ne '')) {
my ($folderurl,$foldername,$hiddenfolder);
my @pathitems = split(/\&/,$env{'form.folderpath'});
my $folder = $pathitems[-2];
@@ -5789,7 +5808,7 @@ sub handler {
if ($supplementalflag) {
($foldername,$hiddenfolder) = ($pathitems[-1] =~ /^([^:]*)::(|1):::$/);
$foldername = &HTML::Entities::decode(&unescape($foldername));
- my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom);
+ my ($supplemental) = &Apache::loncommon::get_supplemental($coursenum,$coursedom);
if (ref($supplemental) eq 'HASH') {
my ($suppmap,$suppmapnum);
if ($folder eq 'supplemental') {
@@ -5978,7 +5997,8 @@ sub handler {
if ($showdoc) {
my $args;
if ($supplementalflag) {
- my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$env{'form.title'},1);
+ my $title = &HTML::Entities::encode($env{'form.title'},'\'"<>&');
+ my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1);
$args = {'bread_crumbs' => $brcrum};
} else {
$args = {'force_register' => $showdoc};
@@ -6121,6 +6141,7 @@ sub handler {
'stpr' => 'Standard Problem',
'news' => 'New sub-directory',
'crpr' => 'Create Problem',
+ 'swit' => 'Switch Server',
'drbx' => 'Drop Box',
'scuf' => 'External Scores (handgrade, upload, clicker)',
'bull' => 'Discussion Board',
@@ -6279,12 +6300,12 @@ FUFORM
SEDFFORM
my $importcrsresform;
my ($numdirs,$pickfile) =
- &Apache::loncommon::import_crsauthor_form('crsresimportform','coursepath','coursefile',
+ &Apache::loncommon::import_crsauthor_form('coursepath','coursefile',
"resize_scrollbox('contentscroll','1','0');",
undef,'res');
if ($pickfile) {
$importcrsresform=(<