--- loncom/interface/loncommon.pm 2012/06/30 23:02:20 1.1083
+++ loncom/interface/loncommon.pm 2012/07/07 21:58:14 1.1086
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.1083 2012/06/30 23:02:20 raeburn Exp $
+# $Id: loncommon.pm,v 1.1086 2012/07/07 21:58:14 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -9316,7 +9316,7 @@ sub get_env_multiple {
sub ask_for_embedded_content {
my ($actionurl,$state,$allfiles,$codebase,$args)=@_;
my (%subdependencies,%dependencies,%mapping,%existing,%newfiles,%pathchanges,
- %currsubfile,%unused);
+ %currsubfile,%unused,$rem);
my $counter = 0;
my $numnew = 0;
my $numremref = 0;
@@ -9329,6 +9329,10 @@ sub ask_for_embedded_content {
my $heading = &mt('Upload embedded files');
my $buttontext = &mt('Upload');
+ my $navmap;
+ if ($env{'request.course.id'}) {
+ $navmap = Apache::lonnavmaps::navmap->new();
+ }
if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) {
my $current_path='/';
if ($env{'form.currentpath'}) {
@@ -9358,8 +9362,15 @@ sub ask_for_embedded_content {
if (ref($args) eq 'HASH') {
$url = $args->{'docs_url'};
$toplevel = $url;
+ if ($args->{'context'} eq 'paste') {
+ ($cdom,$cnum) = ($url =~ m{^\Q/uploaded/\E($match_domain)/($match_courseid)/});
+ ($path) =
+ ($toplevel =~ m{^(\Q/uploaded/$cdom/$cnum/\E(?:docs|supplemental)/(?:default|\d+)/\d+)/});
+ $fileloc = &Apache::lonnet::filelocation('',$toplevel);
+ $fileloc =~ s{^/}{};
+ }
}
- } elsif ($actionurl eq '/adm/dependencies') {
+ } elsif ($actionurl eq '/adm/dependencies') {
if ($env{'request.course.id'} ne '') {
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
@@ -9367,6 +9378,7 @@ sub ask_for_embedded_content {
$url = $args->{'docs_url'};
$title = $args->{'docs_title'};
$toplevel = "/$url";
+ ($rem) = ($toplevel =~ m{^(.+/)[^/]+$});
($path) =
($toplevel =~ m{^(\Q/uploaded/$cdom/$cnum/\E(?:docs|supplemental)/(?:default|\d+)/\d+)/});
$fileloc = &Apache::lonnet::filelocation('',$toplevel);
@@ -9429,7 +9441,9 @@ sub ask_for_embedded_content {
my @subdir_list = grep(!/^\./,readdir($dir));
map {$currsubfile{$path}{$_} = 1;} @subdir_list;
}
- } elsif ($actionurl eq '/adm/dependencies') {
+ } elsif (($actionurl eq '/adm/dependencies') ||
+ (($actionurl eq '/adm/coursedocs') && (ref($args) eq 'HASH') &&
+ ($args->{'context'} eq 'paste'))) {
if ($env{'request.course.id'} ne '') {
my ($dir) = ($fileloc =~ m{^(.+/)[^/]+$});
if ($dir ne '') {
@@ -9465,6 +9479,12 @@ sub ask_for_embedded_content {
if (ref($currsubfile{$path}) eq 'HASH') {
foreach my $file (keys(%{$currsubfile{$path}})) {
unless ($subdependencies{$path}{$file}) {
+ next if (($rem ne '') &&
+ (($env{"httpref.$rem"."$path/$file"} ne '') ||
+ (ref($navmap) &&
+ (($navmap->getResourceByUrl($rem."$path/$file") ne '') ||
+ (($file =~ /^(.*\.s?html?)\.bak$/i) &&
+ ($navmap->getResourceByUrl($rem."$path/$1")))))));
$unused{$path.'/'.$file} = 1;
}
}
@@ -9487,7 +9507,9 @@ sub ask_for_embedded_content {
my @dir_list = grep(!/^\./,readdir($dir));
map {$currfile{$_} = 1;} @dir_list;
}
- } elsif ($actionurl eq '/adm/dependencies') {
+ } elsif (($actionurl eq '/adm/dependencies') ||
+ (($actionurl eq '/adm/coursedocs') && (ref($args) eq 'HASH') &&
+ ($args->{'context'} eq 'paste'))) {
if ($env{'request.course.id'} ne '') {
my ($dir) = ($fileloc =~ m{^(.+/)[^/]+$});
if ($dir ne '') {
@@ -9521,9 +9543,23 @@ sub ask_for_embedded_content {
unless (($file eq $filename) ||
($file eq $filename.'.bak') ||
($dependencies{$file})) {
+ if ($actionurl eq '/adm/dependencies') {
+ next if (($rem ne '') &&
+ (($env{"httpref.$rem".$file} ne '') ||
+ (ref($navmap) &&
+ (($navmap->getResourceByUrl($rem.$file) ne '') ||
+ (($file =~ /^(.*\.s?html?)\.bak$/i) &&
+ ($navmap->getResourceByUrl($rem.$1)))))));
+ }
$unused{$file} = 1;
}
}
+ if (($actionurl eq '/adm/coursedocs') && (ref($args) eq 'HASH') &&
+ ($args->{'context'} eq 'paste')) {
+ $counter = scalar(keys(%existing));
+ $numpathchg = scalar(keys(%pathchanges));
+ return ($output,$counter,$numpathchg,\%existing);
+ }
foreach my $embed_file (sort {lc($a) cmp lc($b)} keys(%newfiles)) {
if ($actionurl eq '/adm/dependencies') {
next if ($embed_file =~ m{^\w+://});
@@ -9540,7 +9576,6 @@ sub ask_for_embedded_content {
$numremref++;
} elsif ($args->{'error_on_invalid_names'}
&& $embed_file ne &Apache::lonnet::clean_filename($embed_file,{'keep_path' => 1,})) {
-
$upload_output.=''.&mt('Invalid characters').'';
$numinvalid++;
} else {
@@ -11028,7 +11063,10 @@ function dependencyCheck(form,count,offs
document.getElementById('arc_depon_'+count).style.display='block';
form.elements[depitem].options.length = 0;
form.elements[depitem].options[0] = new Option('Select','',true,true);
- for (var i=1; i