--- loncom/interface/londocs.pm 2016/06/20 14:26:58 1.607
+++ loncom/interface/londocs.pm 2016/10/31 19:48:59 1.610
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.607 2016/06/20 14:26:58 raeburn Exp $
+# $Id: londocs.pm,v 1.610 2016/10/31 19:48:59 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3888,7 +3888,7 @@ END
}
}
- my ($editlink,$extresform);
+ my ($editlink,$extresform,$anchor);
my $orig_url = $url;
$orig_url=~s{http(:|:)//https(:|:)//}{https$2//};
$url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/};
@@ -3912,11 +3912,28 @@ END
$url='/adm/wrapper'.$url;
}
if (&Apache::lonnet::symbverify($symb,$url)) {
- $url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb);
+ my $shownsymb = $symb;
+ if ($isexternal) {
+ if ($url =~ /^([^#]+)#([^#]+)$/) {
+ $url = $1;
+ $anchor = $2;
+ if ($symb =~ m{^([^#]+)\Q#$anchor\E$}) {
+ $shownsymb = $1.&escape('#').$anchor;
+ }
+ }
+ }
+ $url.=(($url=~/\?/)?'&':'?').'symb='.&HTML::Entities::encode($shownsymb,'"<>&');
} else {
$url='';
}
}
+ } elsif ($supplementalflag) {
+ if ($isexternal) {
+ if ($url =~ /^([^#]+)#([^#]+)$/) {
+ $url = $1;
+ $anchor = $2;
+ }
+ }
}
my ($rand_pick_text,$rand_order_text);
if ($isfolder || $ispage || $extension eq 'sequence' || $extension eq 'page') {
@@ -3989,6 +4006,9 @@ $form_end;
if ((($isexternal) || ($isexttool)) && $orderidx) {
$url .= '&idx='.$orderidx;
}
+ if ($anchor ne '') {
+ $url .= '&anchor='.&HTML::Entities::encode($anchor,'"<>&');
+ }
}
my ($tdalign,$tdwidth);
if ($allowed) {
@@ -4006,13 +4026,17 @@ $form_end;
my ($cfile,$home,$switchserver,$forceedit,$forceview) =
&Apache::lonnet::can_edit_resource($fileloc,$coursenum,$coursedom,$orig_url);
if (($cfile ne '') && ($symb ne '' || $supplementalflag)) {
+ my $suppanchor;
+ if ($supplementalflag) {
+ $suppanchor = $anchor;
+ }
my $jscall =
&Apache::lonhtmlcommon::jump_to_editres($cfile,$home,
$switchserver,
$forceedit,
undef,$symb,
&escape($env{'form.folderpath'}),
- $renametitle,'','',1);
+ $renametitle,'','',1,$suppanchor);
if ($jscall) {
$editlink = ''.&mt('Edit').' '."\n";
@@ -4032,7 +4056,15 @@ $form_end;
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) {
$line.='
';
} elsif ($url) {
- $line.=&Apache::loncommon::modal_link($url.(($url=~/\?/)?'&':'?').'inhibitmenu=yes',
+ if ($anchor ne '') {
+ if ($supplementalflag) {
+ $anchor = '&anchor='.&HTML::Entities::encode($anchor,'"<>&');
+ } else {
+ $anchor = '#'.&HTML::Entities::encode($anchor,'"<>&');
+ }
+ }
+ $line.=&Apache::loncommon::modal_link($url.(($url=~/\?/)?'&':'?').'inhibitmenu=yes'.
+ (($anchor ne '')?$anchor:''),
'
',600,500);
} else {
$line.='
';
@@ -4041,7 +4073,8 @@ $form_end;
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) {
$line.=''.$title.'';
} elsif ($url) {
- $line.=&Apache::loncommon::modal_link($url.(($url=~/\?/)?'&':'?').'inhibitmenu=yes',
+ $line.=&Apache::loncommon::modal_link($url.(($url=~/\?/)?'&':'?').'inhibitmenu=yes'.
+ (($anchor ne '')?$anchor:''),
$title,600,500);
} else {
$line.=$title.' '.$reinit.'';
@@ -4908,8 +4941,6 @@ sub handler {
my $output = &Apache::lonpublisher::batchpublish($r,$srcfile,$targetfile,$nokeyref,1);
$env{'form.folder'} = $folder;
&snapshotbefore();
- my $url = $redirect;
- $url =~ s{^/priv/}{/res/};
my $title = &LONCAPA::map::qtunescape($env{'form.newresourcetitle'});
my $ext = 'false';
my $newidx = &LONCAPA::map::getresidx(&LONCAPA::map::qtunescape($url));
@@ -5394,61 +5425,11 @@ FUFORM
SEDFFORM
- my $is_home;
- my $crshome = $env{'course.'.$env{'request.course.id'}.'.home'};
- my @ids=&Apache::lonnet::current_machine_ids();
- if (grep(/^\Q$crshome\E$/,@ids)) {
- $is_home = 1;
- }
- my (%subdirs,%files,%selimport_menus);
- my $pickfile;
- my $relpath = "/res/$coursedom/$coursenum";
- &recursedirs($is_home,'res',$londocroot,$relpath,'',\%subdirs,\%files);
- my $numdirs = scalar(keys(%files));
- if ($numdirs > 1) {
- my @order = sort { lc($a) cmp lc($b) } (keys(%files));
- foreach my $key (@order) {
- if (ref($files{$key}) eq 'HASH') {
- my $shown = $key;
- if ($key eq '') {
- $shown = '/';
- }
- $selimport_menus{$key}->{'text'} = $shown;
- $selimport_menus{$key}->{'default'} = '';
- my @ordered = ('');
- $selimport_menus{$key}->{'select2'}->{''} = '';
- foreach my $file (sort { lc($a) cmp lc($b) } (keys(%{$files{$key}}))) {
- $selimport_menus{$key}->{'select2'}->{$file} = $file;
- push(@ordered,$file);
- }
- $selimport_menus{$key}->{'order'} = \@ordered;
- }
- }
- $pickfile = $lt{'dire'}.
- &Apache::loncommon::linked_select_forms('crsresimportform','
'.
- &mt('Filename: '),'',
- 'coursepath','coursefile',
- \%selimport_menus,\@order,
- "resize_scrollbox('contentscroll','1','0');",'','res').
- '
';
- } elsif ($numdirs == 1) {
- my $singledir = (keys(%files))[0];
- my $showdir = $singledir;
- if ($singledir eq '') {
- $showdir = '/';
- }
- $pickfile = $lt{'dire'}.
- '
'.
- &mt('Filename: ').'
'."\n";
- }
my $importcrsresform;
+ my ($numdirs,$pickfile) =
+ &Apache::loncommon::import_crsauthor_form('crsresimportform','coursepath','coursefile',
+ "resize_scrollbox('contentscroll','1','0');",
+ undef,'res');
if ($pickfile) {
$importcrsresform=(<