--- loncom/interface/londocs.pm 2020/03/01 15:39:17 1.667
+++ loncom/interface/londocs.pm 2021/02/10 12:09:29 1.676
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.667 2020/03/01 15:39:17 raeburn Exp $
+# $Id: londocs.pm,v 1.676 2021/02/10 12:09:29 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -833,26 +833,27 @@ sub group_import {
}
my $ext = 'false';
if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; }
- $name = &LONCAPA::map::qtunescape($name);
- if ($name eq '') {
- $name = &LONCAPA::map::qtunescape(&mt('Web Page'));
- }
if ($url =~ m{^/uploaded/$coursedom/$coursenum/((?:docs|supplemental)/(?:default|\d+))/new\.html$}) {
my $filepath = $1;
- my $fname = $name;
- if ($fname =~ /^\W+$/) {
+ my $fname;
+ if ($name eq '') {
+ $name = &mt('Web Page');
$fname = 'web';
} else {
- $fname =~ s/\W/_/g;
- }
- if (length($fname) > 15) {
- $fname = substr($fname,0,14);
+ $fname = $name;
+ $fname=&Apache::lonnet::clean_filename($fname);
+ if ($fname eq '') {
+ $fname = 'web';
+ } elsif (length($fname) > 15) {
+ $fname = substr($fname,0,14);
+ }
}
+ my $title = &Apache::loncommon::cleanup_html($name);
my $initialtext = &mt('Replace with your own content.');
my $newhtml = <
-$name
+$title
$initialtext
@@ -874,6 +875,7 @@ END
return (&mt('Failed to save new web page.'),1);
}
}
+ $name = &LONCAPA::map::qtunescape($name);
$url = &LONCAPA::map::qtunescape($url);
$LONCAPA::map::resources[$residx] =
join(':', ($name, $url, $ext, 'normal', 'res'));
@@ -1227,7 +1229,7 @@ sub update_paste_buffer {
} elsif ($url =~ m{^/res/$match_domain/$match_username/}) {
$pasteurls{$url} = 1;
} else {
- $pasteurls{$cid.'_'.$url} = 1;
+ $pasteurls{$cid.'_'.$url} = 1;
}
}
}
@@ -4157,11 +4159,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);
@@ -4175,7 +4185,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:/)) {
@@ -4195,11 +4205,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'}) {
@@ -4854,7 +4862,7 @@ sub short_urls {
$r->rflush();
my $readonly;
if ($canedit) {
- my ($numnew,$errors) = &Apache::loncommon::make_short_symbs($cdom,$cnum,$navmap);
+ my ($numnew,$errors) = &Apache::loncommon::get_requested_shorturls($cdom,$cnum,$navmap);
if ($numnew) {
$r->print(''.&mt('Created [quant,_1,URL]',$numnew).'
');
}
@@ -4889,7 +4897,7 @@ sub contentverifyform {
&mt('No').''.(' 'x2).
'
'.
- ''.
+ ''.
''.
'
');
$r->print(&endContentScreen());
@@ -6579,13 +6587,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));
my @external = (
@@ -6631,11 +6645,11 @@ my %orderhash = (
'bb' => ['Import',$importpubform],
'cc' => ['External',$externalform],
'dd' => ['Grading',$gradingform],
+ 'ff' => ['Other',$specialdocumentsform],
);
unless ($container eq 'page') {
$orderhash{'00'} = ['Newfolder',$newfolderform];
$orderhash{'ee'} = ['Collaboration',$communityform];
- $orderhash{'ff'} = ['Other',$specialdocumentsform];
}
$hadchanges=0;
@@ -7347,7 +7361,7 @@ sub editing_js {
function makenewfolder(targetform,folderseq) {
var foldername=prompt('$js_lt{"p_mnf"}','$js_lt{"t_mnf"}');
if (foldername) {
- targetform.importdetail.value=escape(foldername)+"="+folderseq;
+ targetform.importdetail.value=encodeURIComponent(foldername)+"="+folderseq;
targetform.submit();
}
}
@@ -7355,7 +7369,7 @@ function makenewfolder(targetform,folder
function makenewpage(targetform,folderseq) {
var pagename=prompt('$js_lt{"p_mnp"}','$js_lt{"t_mnp"}');
if (pagename) {
- targetform.importdetail.value=escape(pagename)+"="+folderseq;
+ targetform.importdetail.value=encodeURIComponent(pagename)+"="+folderseq;
targetform.submit();
}
}
@@ -7364,7 +7378,7 @@ function makeexamupload() {
var title=prompt('$js_lt{"p_mxu"}');
if (title) {
this.document.forms.newexamupload.importdetail.value=
- escape(title)+'=/res/lib/templates/examupload.problem';
+ encodeURIComponent(title)+'=/res/lib/templates/examupload.problem';
this.document.forms.newexamupload.submit();
}
}
@@ -7373,7 +7387,7 @@ function makesmppage() {
var title=prompt('$js_lt{"p_msp"}');
if (title) {
this.document.forms.newsmppg.importdetail.value=
- escape(title)+'=/adm/$udom/$uname/new/smppg';
+ encodeURIComponent(title)+'=/adm/$udom/$uname/new/smppg';
this.document.forms.newsmppg.submit();
}
}
@@ -7388,7 +7402,7 @@ function makewebpage(type) {
}
if (title) {
var webpage = formname.importdetail.value;
- formname.importdetail.value = escape(title)+'='+webpage;
+ formname.importdetail.value = encodeURIComponent(title)+'='+webpage;
formname.submit();
}
}
@@ -7397,7 +7411,7 @@ function makesmpproblem() {
var title=prompt('$js_lt{"p_msb"}');
if (title) {
this.document.forms.newsmpproblem.importdetail.value=
- escape(title)+'=/res/lib/templates/simpleproblem.problem';
+ encodeURIComponent(title)+'=/res/lib/templates/simpleproblem.problem';
this.document.forms.newsmpproblem.submit();
}
}
@@ -7406,7 +7420,7 @@ function makedropbox() {
var title=prompt('$js_lt{"p_mdb"}');
if (title) {
this.document.forms.newdropbox.importdetail.value=
- escape(title)+'=/res/lib/templates/DropBox.problem';
+ encodeURIComponent(title)+'=/res/lib/templates/DropBox.problem';
this.document.forms.newdropbox.submit();
}
}
@@ -7415,7 +7429,7 @@ function makebulboard() {
var title=prompt('$js_lt{"p_mbb"}');
if (title) {
this.document.forms.newbul.importdetail.value=
- escape(title)+'=/adm/$udom/$uname/new/bulletinboard';
+ encodeURIComponent(title)+'=/adm/$udom/$uname/new/bulletinboard';
this.document.forms.newbul.submit();
}
}
@@ -8539,7 +8553,7 @@ function validImportCrsRes() {
url += fname;
}
var title = document.crsresimportform.crsrestitle.value;
- document.crsresimportform.importdetail.value=escape(title)+'='+escape(url);
+ document.crsresimportform.importdetail.value=encodeURIComponent(title)+'='+encodeURIComponent(url);
return true;
}