--- loncom/interface/londocs.pm 2019/08/16 16:12:37 1.484.2.82
+++ loncom/interface/londocs.pm 2020/09/02 02:09:17 1.484.2.89
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.484.2.82 2019/08/16 16:12:37 raeburn Exp $
+# $Id: londocs.pm,v 1.484.2.89 2020/09/02 02:09:17 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1059,13 +1059,19 @@ sub update_paste_buffer {
# Construct identifiers for current contents of user's paste buffer
if (@currpaste) {
foreach my $suffix (@currpaste) {
- my $cid = $env{'docs.markedcopy_crs_'.$suffix};
- my $url = $env{'docs.markedcopy_url_'.$suffix};
- my $mapidx = $env{'docs.markedcopy_map_'.$suffix};
- if (($cid =~ /^$match_domain(?:_)$match_courseid$/) &&
- ($url ne '')) {
- $pasteurls{$cid.'_'.$url.'_'.$mapidx} = 1;
- }
+ my $cid = $env{'docs.markedcopy_crs_'.$suffix};
+ my $url = $env{'docs.markedcopy_url_'.$suffix};
+ my $mapidx = $env{'docs.markedcopy_map_'.$suffix};
+ if (($cid =~ /^$match_domain(?:_)$match_courseid$/) &&
+ ($url ne '')) {
+ if ($url eq '/res/lib/templates/simpleproblem.problem') {
+ $pasteurls{$cid.'_'.$mapidx} = 1;
+ } elsif ($url =~ m{^/res/$match_domain/$match_username/}) {
+ $pasteurls{$url} = 1;
+ } else {
+ $pasteurls{$cid.'_'.$url} = 1;
+ }
+ }
}
}
@@ -1074,7 +1080,7 @@ sub update_paste_buffer {
my @pathitems = split(/\&/,$env{'form.folderpath'});
my @folderconf = split(/\:/,$pathitems[-1]);
- my $ispage = $folderconf[4];
+ my $ispage = $folderconf[5];
foreach my $item (@possibles) {
my ($orderidx,$cmd) = split(/:/,$item);
@@ -1087,7 +1093,13 @@ sub update_paste_buffer {
$env{'form.folderpath'},\%curr_groups);
next if ($denied{'copy'});
$url=~s{http(:|:)//https(:|:)//}{https$2//};
- next if (exists($pasteurls{$coursedom.'_'.$coursenum.'_'.$mapidx}));
+ if ($url eq '/res/lib/templates/simpleproblem.problem') {
+ next if (exists($pasteurls{$coursedom.'_'.$coursenum.'_'.$mapidx}));
+ } elsif ($url =~ m{^/res/$match_domain/$match_username/}) {
+ next if (exists($pasteurls{$url}));
+ } else {
+ next if (exists($pasteurls{$coursedom.'_'.$coursenum.'_'.$url}));
+ }
my ($suffix,$errortxt,$locknotfreed) =
&new_timebased_suffix($env{'user.domain'},$env{'user.name'},'paste');
if ($suffix ne '') {
@@ -2122,7 +2134,7 @@ sub copy_templated_files {
if (grep(/^\Q$qtype\E$/,@simpleprobqtypes)) {
my %newdata = (
$newprefix.'questiontype' => $qtype,
- )
+ );
foreach my $type (@simpleprobqtypes) {
if ($type eq $qtype) {
$newdata{"$weightprefix.$type.weight"}=1;
@@ -3874,11 +3886,19 @@ END
my ($editlink,$extresform,$anchor,$hiddenres,$nomodal);
my $orig_url = $url;
$orig_url=~s{http(:|:)//https(:|:)//}{https$2//};
- $url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/};
+ if ($container eq 'page') {
+ $url=~s{^http(|s)(:|:)//}{/ext/};
+ } else {
+ $url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/};
+ }
if (!$supplementalflag && $residx && $symb) {
if ((!$isfolder) && (!$ispage)) {
(undef,undef,$url)=&Apache::lonnet::decode_symb($symb);
- $url=&Apache::lonnet::clutter($url);
+ if (($url =~ m{^ext/}) && ($container eq 'page')) {
+ $url=&Apache::lonnet::clutter_with_no_wrapper($url);
+ } else {
+ $url=&Apache::lonnet::clutter($url);
+ }
if ($url=~/^\/*uploaded\//) {
$url=~/\.(\w+)$/;
my $embstyle=&Apache::loncommon::fileembstyle($1);
@@ -3892,7 +3912,7 @@ END
} elsif ($url=~m{^(|/adm/wrapper)/ext/([^#]+)}) {
my $wrapped = $1;
my $exturl = $2;
- if ($wrapped eq '') {
+ if (($wrapped eq '') && ($container ne 'page')) {
$url='/adm/wrapper'.$url;
}
if (($ENV{'SERVER_PORT'} == 443) && ($exturl !~ /^https:/)) {
@@ -3910,11 +3930,9 @@ END
if (&Apache::lonnet::symbverify($symb,$url)) {
my $shownsymb = $symb;
if ($isexternal) {
- if ($url =~ /^([^#]+)#([^#]+)$/) {
- $url = $1;
- $anchor = $2;
- my $escan = &escape('#');
- $shownsymb =~ s/^([^\#]+)#([^\#]+)$/$1$escan$2/;
+ $url =~ s/\#[^#]+$//;
+ if ($container eq 'page') {
+ $url = &Apache::lonnet::clutter($url);
}
}
unless ($env{'request.role.adv'}) {
@@ -5229,7 +5247,7 @@ sub handler {
undef($env{'form.folderpath'});
} else {
$folderurl = "uploaded/$coursedom/$coursenum/$folder";
- if ((split(/\:/,$pathitems[-1]))[4]) {
+ if ((split(/\:/,$pathitems[-1]))[5]) {
$folderurl .= '.page';
} else {
$folderurl .= '.sequence';
@@ -5690,6 +5708,7 @@ HIDDENFORM
#
my $savefolderpath;
+ my $hostname = $r->hostname();
if ($allowed) {
my $folder=$env{'form.folder'};
@@ -5881,13 +5900,19 @@ NSYLFORM
$help{'Group Portfolio'}
NGFFORM
- @specialdocumentsforma=(
+ if ($container eq 'page') {
+ @specialdocumentsforma=(
+ {''=>$newwebpageform},
+ );
+ } else {
+ @specialdocumentsforma=(
{'
'=>$newpageform},
{'
'=>$newsylform},
{'
'=>$newnavform},
{'
'=>$newsmppageform},
{'
'=>$newwebpageform},
- );
+ );
+ }
$specialdocumentsform = &create_form_ul(&create_list_elements(@specialdocumentsforma));
@@ -5925,18 +5950,18 @@ my %orderhash = (
'aa' => ['Upload',$fileuploadform],
'bb' => ['Import',$importpubform],
'cc' => ['Grading',$gradingform],
+ 'ee' => ['Other',$specialdocumentsform],
);
unless ($container eq 'page') {
$orderhash{'00'} = ['Newfolder',$newfolderform];
$orderhash{'dd'} = ['Collaboration',$communityform];
- $orderhash{'ee'} = ['Other',$specialdocumentsform];
}
$hadchanges=0;
unless (($supplementalflag || $toolsflag)) {
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,
$supplementalflag,\%orderhash,$iconpath,$pathitem,
- $canedit,\$navmap,$hiddentop);
+ $canedit,$hostname,\$navmap,$hiddentop);
undef($navmap);
if ($error) {
$r->print('
'.$error.'
'); @@ -6074,7 +6099,7 @@ my %suporderhash = ( if ($supplementalflag) { my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, $supplementalflag,\%suporderhash,$iconpath,$pathitem, - $canedit); + $canedit,$hostname); if ($error) { $r->print(''.$error.'
'); } else { @@ -6094,7 +6119,7 @@ my %suporderhash = ( } } elsif ($supplementalflag) { my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, - $supplementalflag,'',$iconpath,$pathitem); + $supplementalflag,'',$iconpath,$pathitem,'',$hostname); if ($error) { $r->print(''.$error.'
'); } @@ -6547,8 +6572,13 @@ sub editing_js { } else { $url = $res; } - $backtourl = &HTML::Entities::encode(&Apache::lonnet::clutter($url),'<>&"').'?symb='. - &HTML::Entities::encode($caller,'<>&"'); + $backtourl = &HTML::Entities::encode(&Apache::lonnet::clutter($url),'<>&"'); + if ($backtourl =~ m{^\Q/uploaded/$coursedom/$coursenum/\Edefault_\d+\.sequence$}) { + $backtourl .= '?navmap=1'; + } else { + $backtourl .= '?symb='. + &HTML::Entities::encode($caller,'<>&"'); + } if ($backtourl =~ m{^\Q/public/$coursedom/$coursenum/syllabus\E}) { if (($ENV{'SERVER_PORT'} == 443) && ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) {