--- loncom/interface/londocs.pm 2013/01/14 23:14:59 1.484.2.25
+++ loncom/interface/londocs.pm 2013/01/09 04:01:16 1.528
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.484.2.25 2013/01/14 23:14:59 raeburn Exp $
+# $Id: londocs.pm,v 1.528 2013/01/09 04:01:16 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -40,6 +40,7 @@ use Apache::lonxml;
use Apache::lonclonecourse;
use Apache::lonnavmaps;
use Apache::lonnavdisplay();
+use Apache::lonuserstate();
use Apache::lonextresedit();
use HTML::Entities;
use HTML::TokeParser;
@@ -152,7 +153,7 @@ sub dumpcourse {
$r->print(&endContentScreen());
return '';
}
- my ($ca,$cd)=split(/\:/,$env{'form.authorspace'});
+ my ($ca,$cd)=split(/\@/,$env{'form.authorspace'});
$r->print('
'.&mt('Copying Files').'
');
my $title=$env{'form.authorfolder'};
$title=&clean($title);
@@ -270,9 +271,7 @@ sub dumpcourse {
sub group_import {
my ($coursenum, $coursedom, $folder, $container, $caller, @files) = @_;
- my ($donechk,$allmaps,%hierarchy,%titles,%addedmaps,%removefrommap,
- %removeparam,$importuploaded,$fixuperrors);
- $allmaps = {};
+
while (@files) {
my ($name, $url, $residx) = @{ shift(@files) };
if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$})
@@ -298,24 +297,6 @@ sub group_import {
}
}
if ($url) {
- if (($caller eq 'londocs') &&
- ($folder =~ /^default/)) {
- unless ($donechk) {
- my $chome = &Apache::lonnet::homeserver($coursenum,$coursedom);
- my $cid = $coursedom.'_'.$coursenum;
- $allmaps =
- &Apache::loncommon::allmaps_incourse($coursedom,$coursenum,
- $chome,$cid);
- $donechk = 1;
- }
- if ($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) {
- &contained_map_check($url,$folder,\%removefrommap,\%removeparam,
- \%addedmaps,\%hierarchy,\%titles,$allmaps);
- $importuploaded = 1;
- } elsif ($url =~ m{^/res/.+\.(page|sequence)$}) {
- next if ($allmaps->{$url});
- }
- }
if (!$residx
|| defined($LONCAPA::map::zombies[$residx])) {
$residx = &LONCAPA::map::getresidx($url,$residx);
@@ -329,27 +310,7 @@ sub group_import {
join(':', ($name, $url, $ext, 'normal', 'res'));
}
}
- if ($importuploaded) {
- my %import_errors;
- my %updated = (
- removefrommap => \%removefrommap,
- removeparam => \%removeparam,
- );
- &apply_fixups($folder,1,$coursedom,$coursenum,\%import_errors,\%updated);
- if (keys(%import_errors) > 0) {
- $fixuperrors =
- ''."\n".
- &mt('The following files are either dependencies of a web page or references within a folder and/or composite page for which errors occurred during import:')."\n".
- '
'."\n";
- foreach my $key (sort(keys(%import_errors))) {
- $fixuperrors .= '- '.$key.'
'."\n";
- }
- $fixuperrors .= '
'."\n";
- }
- }
- my ($errtext,$fatal) =
- &storemap($coursenum, $coursedom, $folder.'.'.$container,1);
- return ($errtext,$fatal,$fixuperrors);
+ return &storemap($coursenum, $coursedom, $folder.'.'.$container,1);
}
sub log_docs {
@@ -934,23 +895,30 @@ sub do_paste_from_buffer {
%dbcopies,%zombies,%params,%docmoves,%mapmoves,%newsubdir,%newurls);
$oldurl = $url;
if ($is_map) {
+ if ($folder =~ /^default/) {
+ my $lastchange = &Apache::lonnet::get_coursechange($coursedom,$coursenum);
+ if ($lastchange > $env{'request.course.tied'}) {
+ &reinit_role($coursedom,$coursenum,$env{"course.$env{'request.course.id'}.home"});
+ }
+ }
# If pasting a map, check if map contains other maps
- my ($allmaps,%hierarchy,%titles);
- $allmaps = {};
+ my (%allmaps,%hierarchy,%titles);
if ($folder =~ /^default/) {
- $allmaps =
- &Apache::loncommon::allmaps_incourse($coursedom,$coursenum,
- $env{"course.$env{'request.course.id'}.home"},
- $env{'request.course.id'});
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ if (defined($navmap)) {
+ foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_map() },1,0,1)) {
+ $allmaps{$res->src()} = 1;
+ }
+ }
}
&contained_map_check($url,$folder,\%removefrommap,\%removeparam,
- \%addedmaps,\%hierarchy,\%titles,$allmaps);
+ \%addedmaps,\%hierarchy,\%titles,\%allmaps);
if ($url=~ m{^/uploaded/}) {
my $newurl;
unless ($env{'form.docs.markedcopy_options'} eq 'move') {
($newurl,my $error) =
&get_newmap_url($url,$folder,$prefixchg,$coursedom,$coursenum,
- $srcdom,$srcnum,\$title,$allmaps,\%newurls);
+ $srcdom,$srcnum,\$title,\%allmaps,\%newurls);
if ($error) {
return ($error);
}
@@ -966,14 +934,14 @@ sub do_paste_from_buffer {
if (($srcdom ne $coursedom) || ($srcnum ne $coursenum) || ($prefixchg) ||
(($newurl ne '') && ($newurl ne $url))) {
unless (&url_paste_fixups($url,$folder,$prefixchg,$coursedom,$coursenum,
- $allmaps,\%rewrites,\%retitles,\%copies,\%dbcopies,
+ \%allmaps,\%rewrites,\%retitles,\%copies,\%dbcopies,
\%zombies,\%params,\%mapmoves,\%mapchanges,\%tomove,
\%newsubdir,\%newurls)) {
$mapmoves{$url} = 1;
}
$url = $newurl;
} elsif ($env{'docs.markedcopy_nested'}) {
- &url_paste_fixups($url,$folder,$prefixchg,$coursedom,$coursenum,$allmaps,\%rewrites,
+ &url_paste_fixups($url,$folder,$prefixchg,$coursedom,$coursenum,\%allmaps,\%rewrites,
\%retitles,\%copies,\%dbcopies,\%zombies,\%params,\%mapmoves,
\%mapchanges,\%tomove,\%newsubdir,\%newurls);
}
@@ -982,7 +950,7 @@ sub do_paste_from_buffer {
&Apache::lonnet::delenv('docs.markedcopy');
# if pasting published map (main content are only) check map is not already in course
if ($folder =~ /^default/) {
- if ((ref($allmaps) eq 'HASH') && ($allmaps->{$url})) {
+ if ($allmaps{$url}) {
return (&mt('Paste failed: only one instance of a particular published sequence or page is allowed within each course.'));
}
}
@@ -1048,28 +1016,11 @@ sub do_paste_from_buffer {
}
# Apply any changes to maps, or copy dependencies for uploaded HTML pages
my ($result,$save_err);
- my %updated = (
- rewrites => \%rewrites,
- zombies => \%zombies,
- removefrommap => \%removefrommap,
- removeparam => \%removeparam,
- dbcopies => \%dbcopies,
- retitles => \%retitles,
- );
- my %info = (
- newsubdir => \%newsubdir,
- params => \%params,
- before => \%before,
- after => \%after,
- );
- my %moves = (
- copies => \%copies,
- docmoves => \%docmoves,
- mapmoves => \%mapmoves,
- );
$result =
- &apply_fixups($folder,$is_map,$coursedom,$coursenum,$errors,
- \%updated,\%info,\%moves,$prefixchg,$oldurl,$url,'paste');
+ &apply_fixups($folder,$is_map,$prefixchg,$coursedom,$coursenum,$oldurl,
+ $url,\%removefrommap,\%removeparam,\%rewrites,\%retitles,
+ \%copies,\%dbcopies,\%zombies,\%params,\%docmoves,
+ \%mapmoves,\%newsubdir,$errors,\%before,\%after);
if ($result eq 'ok') {
if ($is_map) {
my ($errtext,$fatal) = &mapread($coursenum,$coursedom,
@@ -1229,7 +1180,7 @@ sub contained_map_check {
$titles->{$url}{$token->[2]->{'id'}} = $token->[2]->{'title'};
} else {
if ($allmaps->{$ressrc}) {
- $removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc;
+ $removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc;
} elsif (ref($addedmaps->{$ressrc}) eq 'ARRAY') {
$removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc;
} else {
@@ -1253,6 +1204,15 @@ sub contained_map_check {
return;
}
+sub reinit_role {
+ my ($cdom,$cnum,$chome) = @_;
+ my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");
+ unless ($ferr) {
+ &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,$cdom.'_'.$cnum);
+ }
+ return;
+}
+
sub url_paste_fixups {
my ($oldurl,$folder,$prefixchg,$cdom,$cnum,$allmaps,$rewrites,$retitles,$copies,
$dbcopies,$zombies,$params,$mapmoves,$mapchanges,$tomove,$newsubdir,$newurls) = @_;
@@ -1282,13 +1242,13 @@ sub url_paste_fixups {
my $title = $token->[2]->{'title'};
if ($checktitle) {
if ($title =~ m{\d+\Q___&&&___\E$match_username\Q___&&&___\E$match_domain\Q___&&&___\E(.+)$}) {
- $retitles->{$oldurl}{$id} = $ressrc;
+ $retitles->{$oldurl}{$ressrc} = $id;
}
}
next if ($token->[2]->{'type'} eq 'external');
if ($token->[2]->{'type'} eq 'zombie') {
next if ($skip);
- $zombies->{$oldurl}{$id} = $ressrc;
+ $zombies->{$oldurl}{$ressrc} = $id;
$changed = 1;
} elsif ($ressrc =~ m{^/uploaded/($match_domain)/($match_courseid)/(.+)$}) {
my $srcdom = $1;
@@ -1321,7 +1281,7 @@ sub url_paste_fixups {
($mapchanges->{$oldurl}) || (($newurl ne '') && ($newurl ne $oldurl))) {
if ($rem =~ /^(default|supplemental)(_?\d*).(sequence|page)$/) {
- $rewrites->{$oldurl}{$id} = $ressrc;
+ $rewrites->{$oldurl}{$ressrc} = $id;
$mapchanges->{$ressrc} = 1;
unless (&url_paste_fixups($ressrc,$folder,$prefixchg,$cdom,$cnum,$allmaps,
$rewrites,$retitles,$copies,$dbcopies,$zombies,
@@ -1331,7 +1291,7 @@ sub url_paste_fixups {
}
$changed = 1;
} else {
- $rewrites->{$oldurl}{$id} = $ressrc;
+ $rewrites->{$oldurl}{$ressrc} = $id;
$copies->{$oldurl}{$ressrc} = $id;
$changed = 1;
}
@@ -1341,7 +1301,7 @@ sub url_paste_fixups {
my $srcdom = $1;
my $srcnum = $2;
if (($srcdom ne $cdom) || ($srcnum ne $cnum)) {
- $rewrites->{$oldurl}{$id} = $ressrc;
+ $rewrites->{$oldurl}{$ressrc} = $id;
$dbcopies->{$oldurl}{$ressrc} = $id;
$changed = 1;
}
@@ -1350,7 +1310,7 @@ sub url_paste_fixups {
my $srcdom = $1;
my $srcnum = $2;
if (($srcdom ne $cdom) || ($srcnum ne $cnum)) {
- $rewrites->{$oldurl}{$id} = $ressrc;
+ $rewrites->{$oldurl}{$ressrc} = $id;
$dbcopies->{$oldurl}{$ressrc} = $id;
$changed = 1;
}
@@ -1371,72 +1331,24 @@ sub url_paste_fixups {
}
sub apply_fixups {
- my ($folder,$is_map,$cdom,$cnum,$errors,$updated,$info,$moves,$prefixchg,
- $oldurl,$url,$caller) = @_;
- my (%rewrites,%zombies,%removefrommap,%removeparam,%dbcopies,%retitles,
- %params,%newsubdir,%before,%after,%copies,%docmoves,%mapmoves);
- if (ref($updated) eq 'HASH') {
- if (ref($updated->{'rewrites'}) eq 'HASH') {
- %rewrites = %{$updated->{'rewrites'}};
- }
- if (ref($updated->{'zombies'}) eq 'HASH') {
- %zombies = %{$updated->{'zombies'}};
- }
- if (ref($updated->{'removefrommap'}) eq 'HASH') {
- %removefrommap = %{$updated->{'removefrommap'}};
- }
- if (ref($updated->{'removeparam'}) eq 'HASH') {
- %removeparam = %{$updated->{'removeparam'}};
- }
- if (ref($updated->{'dbcopies'}) eq 'HASH') {
- %dbcopies = %{$updated->{'dbcopies'}};
- }
- if (ref($updated->{'retitles'}) eq 'HASH') {
- %retitles = %{$updated->{'retitles'}};
- }
- }
- if (ref($info) eq 'HASH') {
- if (ref($info->{'newsubdir'}) eq 'HASH') {
- %newsubdir = %{$info->{'newsubdir'}};
- }
- if (ref($info->{'params'}) eq 'HASH') {
- %params = %{$info->{'params'}};
- }
- if (ref($info->{'before'}) eq 'HASH') {
- %before = %{$info->{'before'}};
- }
- if (ref($info->{'after'}) eq 'HASH') {
- %after = %{$info->{'after'}};
- }
- }
- if (ref($moves) eq 'HASH') {
- if (ref($moves->{'copies'}) eq 'HASH') {
- %copies = %{$moves->{'copies'}};
- }
- if (ref($moves->{'docmoves'}) eq 'HASH') {
- %docmoves = %{$moves->{'docmoves'}};
- }
- if (ref($moves->{'mapmoves'}) eq 'HASH') {
- %mapmoves = %{$moves->{'mapmoves'}};
- }
- }
- foreach my $key (keys(%copies),keys(%docmoves)) {
+ my ($folder,$is_map,$prefixchg,$cdom,$cnum,$oldurl,$url,$removefrommap,
+ $removeparam,$rewrites,$retitles,$copies,$dbcopies,$zombies,$params,
+ $docmoves,$mapmoves,$newsubdir,$errors,$before,$after) = @_;
+ foreach my $key (keys(%{$copies}),keys(%{$docmoves})) {
my @allcopies;
- if (exists($copies{$key})) {
- if (ref($copies{$key}) eq 'HASH') {
- my %added;
- foreach my $innerkey (keys(%{$copies{$key}})) {
- if (($innerkey ne '') && (!$added{$innerkey})) {
- push(@allcopies,$innerkey);
- $added{$innerkey} = 1;
- }
+ if (ref($copies->{$key}) eq 'HASH') {
+ my %added;
+ foreach my $innerkey (keys(%{$copies->{$key}})) {
+ if (($innerkey ne '') && (!$added{$innerkey})) {
+ push(@allcopies,$innerkey);
+ $added{$innerkey} = 1;
}
- undef(%added);
}
+ undef(%added);
}
if ($key eq $oldurl) {
- if ((exists($docmoves{$key}))) {
- unless (grep(/^\Q$oldurl\E$/,@allcopies)) {
+ if ((exists($docmoves->{$key}))) {
+ unless (grep(/^\Q$oldurl\E/,@allcopies)) {
push(@allcopies,$oldurl);
}
}
@@ -1449,16 +1361,16 @@ sub apply_fixups {
my $content = &Apache::lonnet::getfile($item);
unless ($content eq '-1') {
my $storefn;
- if (($key eq $oldurl) && (exists($docmoves{$key}))) {
- $storefn = $docmoves{$key};
+ if (($key eq $oldurl) && (ref($docmoves) eq 'HASH') && (exists($docmoves->{$key}))) {
+ $storefn = $docmoves->{$key};
} else {
$storefn = $relpath;
$storefn =~s{^/uploaded/$match_domain/$match_courseid/}{};
- if ($prefixchg && $before{'doc'} && $after{'doc'}) {
- $storefn =~ s/^\Q$before{'doc'}\E/$after{'doc'}/;
+ if ($prefixchg) {
+ $storefn =~ s/^\Q$before->{'doc'}\E/$after->{'doc'}/;
}
- if ($newsubdir{$key}) {
- $storefn =~ s#^(docs|supplemental)/\Q$oldsubdir\E/#$1/$newsubdir{$key}/#;
+ if ($newsubdir->{$key}) {
+ $storefn =~ s#^(docs|supplemental)/\Q$oldsubdir\E/#$1/$newsubdir->{$key}#;
}
}
©_dependencies($item,$storefn,$relpath,$errors,\$content);
@@ -1466,7 +1378,7 @@ sub apply_fixups {
&Apache::lonclonecourse::writefile($env{'request.course.id'},
$storefn.$fname,$content);
if ($copyurl eq '/adm/notfound.html') {
- if (exists($docmoves{$oldurl})) {
+ if ((ref($docmoves) eq 'HASH') && (exists($docmoves->{$oldurl}))) {
return &mt('Paste failed: an error occurred copying the file.');
} elsif (ref($errors) eq 'HASH') {
$errors->{$item} = 1;
@@ -1477,14 +1389,14 @@ sub apply_fixups {
}
}
}
- foreach my $key (keys(%mapmoves)) {
+ foreach my $key (keys(%{$mapmoves})) {
my $storefn=$key;
$storefn=~s{^/uploaded/$match_domain/$match_courseid/}{};
- if ($prefixchg && $before{'map'} && $after{'map'}) {
- $storefn =~ s/^\Q$before{'map'}\E/$after{'map'}/;
+ if ($prefixchg) {
+ $storefn =~ s/^\Q$before->{'map'}\E/$after->{'map'}/;
}
- if ($newsubdir{$key}) {
- $storefn =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir{$key}/;
+ if ($newsubdir->{$key}) {
+ $storefn =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir->{$key}/;
}
my $mapcontent = &Apache::lonnet::getfile($key);
if ($mapcontent eq '-1') {
@@ -1504,39 +1416,48 @@ sub apply_fixups {
}
my %updates;
if ($is_map) {
- if (ref($updated) eq 'HASH') {
- foreach my $type (keys(%{$updated})) {
- if (ref($updated->{$type}) eq 'HASH') {
- foreach my $key (keys(%{$updated->{$type}})) {
- $updates{$key} = 1;
- }
- }
- }
+ foreach my $key (keys(%{$rewrites})) {
+ $updates{$key} = 1;
+ }
+ foreach my $key (keys(%{$zombies})) {
+ $updates{$key} = 1;
+ }
+ foreach my $key (keys(%{$removefrommap})) {
+ $updates{$key} = 1;
+ }
+ foreach my $key (keys(%{$removeparam})) {
+ $updates{$key} = 1;
+ }
+ foreach my $key (keys(%{$dbcopies})) {
+ $updates{$key} = 1;
+ }
+ foreach my $key (keys(%{$retitles})) {
+ $updates{$key} = 1;
}
foreach my $key (keys(%updates)) {
my (%torewrite,%toretitle,%toremove,%remparam,%currparam,%zombie,%newdb);
- if (ref($rewrites{$key}) eq 'HASH') {
- %torewrite = %{$rewrites{$key}};
+ if (ref($rewrites->{$key}) eq 'HASH') {
+ %torewrite = %{$rewrites->{$key}};
}
- if (ref($retitles{$key}) eq 'HASH') {
- %toretitle = %{$retitles{$key}};
+ if (ref($retitles->{$key}) eq 'HASH') {
+ %toretitle = %{$retitles->{$key}};
}
- if (ref($removefrommap{$key}) eq 'HASH') {
- %toremove = %{$removefrommap{$key}};
+ if (ref($removefrommap->{$key}) eq 'HASH') {
+ %toremove = %{$removefrommap->{$key}};
}
- if (ref($removeparam{$key}) eq 'HASH') {
- %remparam = %{$removeparam{$key}};
+ if (ref($removeparam->{$key}) eq 'HASH') {
+ %remparam = %{$removeparam->{$key}};
}
- if (ref($zombies{$key}) eq 'HASH') {
- %zombie = %{$zombies{$key}};
+ if (ref($zombies->{$key}) eq 'HASH') {
+ %zombie = %{$zombies->{$key}};
}
- if (ref($dbcopies{$key}) eq 'HASH') {
- foreach my $item (keys(%{$dbcopies{$key}})) {
+ if (ref($dbcopies->{$key}) eq 'HASH') {
+ foreach my $item (keys(%{$dbcopies->{$key}})) {
$newdb{$item} = &dbcopy($item);
}
}
- if (ref($params{$key}) eq 'HASH') {
- %currparam = %{$params{$key}};
+ if (ref($params->{$key}) eq 'HASH') {
+ %currparam = %{$params->{$key}};
}
my ($errtext,$fatal) = &LONCAPA::map::mapread($key);
if ($fatal) {
@@ -1545,47 +1466,46 @@ sub apply_fixups {
for (my $i=0; $i<@LONCAPA::map::zombies; $i++) {
if (defined($LONCAPA::map::zombies[$i])) {
my ($title,$src,$ext,$type)=split(/\:/,$LONCAPA::map::zombies[$i]);
- if ($zombie{$i} eq $src) {
+ if ($zombie{$src} eq $i) {
undef($LONCAPA::map::zombies[$i]);
}
}
}
- for (my $i=0; $i<@LONCAPA::map::order; $i++) {
- my $idx = $LONCAPA::map::order[$i];
- if (defined($LONCAPA::map::resources[$idx])) {
+ for (my $i=0; $i<@LONCAPA::map::resources; $i++) {
+ if (defined($LONCAPA::map::resources[$i])) {
my $changed;
- my ($title,$src,$ext,$type)=split(/\:/,$LONCAPA::map::resources[$idx]);
- if ((exists($toremove{$idx})) && ($toremove{$idx} eq $src)) {
+ my ($title,$src,$ext,$type)=split(/\:/,$LONCAPA::map::resources[$i]);
+ if ($toremove{$src} eq $i) {
splice(@LONCAPA::map::order,$i,1);
- if (ref($currparam{$idx}) eq 'ARRAY') {
- foreach my $name (@{$currparam{$idx}}) {
- &LONCAPA::map::delparameter($idx,'parameter_'.$name);
+ if (ref($currparam{$i}) eq 'ARRAY') {
+ foreach my $name (@{$currparam{$i}}) {
+ &LONCAPA::map::delparameter($i,'parameter_'.$name);
}
}
next;
}
my $origsrc = $src;
- if ((exists($toretitle{$idx})) && ($toretitle{$idx} eq $src)) {
+ if ((exists($toretitle{$src})) && ($toretitle{$src} eq $i)) {
if ($title =~ m{^\d+\Q___&&&___\E$match_username\Q___&&&___\E$match_domain\Q___&&&___\E(.+)$}) {
$changed = 1;
}
}
- if ((exists($torewrite{$idx})) && ($torewrite{$idx} eq $src)) {
+ if ((exists($torewrite{$src})) && ($torewrite{$src} eq $i)) {
$src =~ s{^/(uploaded|adm|public)/$match_domain/$match_courseid/}{/$1/$cdom/$cnum/};
if ($origsrc =~ m{^/uploaded/}) {
- if ($prefixchg && $before{'map'} && $after{'map'}) {
+ if ($prefixchg) {
if ($src =~ /\.(page|sequence)$/) {
- $src =~ s#^(/uploaded/$match_domain/$match_courseid/)\Q$before{'map'}\E#$1$after{'map'}#;
+ $src =~ s#^(/uploaded/$match_domain/$match_courseid/)\Q$before->{'map'}\E#$1$after->{'map'}#;
} else {
- $src =~ s#^(/uploaded/$match_domain/$match_courseid/)\Q$before{'doc'}\E#$1$after{'doc'}#;
+ $src =~ s#^(/uploaded/$match_domain/$match_courseid/)\Q$before->{'doc'}\E#$1$after->{'doc'}#;
}
}
- if ($origsrc =~ /\.(page|sequence)$/) {
- if ($newsubdir{$origsrc}) {
- $src =~ s#^(/uploaded/$match_domain/$match_courseid/(?:default|supplemental)_)(\d+)#$1$newsubdir{$origsrc}#;
+ if ($newsubdir->{$origsrc}) {
+ if ($src =~ /\.(page|sequence)$/) {
+ $src =~ s#^(/uploaded/$match_domain/$match_courseid/(?:default|supplemental)_)(\d+)#$1$newsubdir->{$origsrc}#;
+ } else {
+ $src =~ s#^(/uploaded/$match_domain/$match_courseid/\w+/)(\d+)#$1$newsubdir->{$origsrc}#;
}
- } elsif ($newsubdir{$key}) {
- $src =~ s#^(/uploaded/$match_domain/$match_courseid/\w+/)(\d+)#$1$newsubdir{$key}#;
}
}
$changed = 1;
@@ -1594,7 +1514,7 @@ sub apply_fixups {
$changed = 1;
}
if ($changed) {
- $LONCAPA::map::resources[$idx] = join(':',($title,$src,$ext,$type));
+ $LONCAPA::map::resources[$i] = join(':',($title,$src,$ext,$type));
}
}
}
@@ -1612,11 +1532,11 @@ sub apply_fixups {
} else {
$storefn = $key;
$storefn=~s{^/uploaded/$match_domain/$match_courseid/}{};
- if ($prefixchg && $before{'map'} && $after{'map'}) {
- $storefn =~ s/^\Q$before{'map'}\E/$after{'map'}/;
+ if ($prefixchg) {
+ $storefn =~ s/^\Q$before->{'map'}\E/$after->{'map'}/;
}
- if ($newsubdir{$key}) {
- $storefn =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir{$key}/;
+ if ($newsubdir->{$key}) {
+ $storefn =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir->{$key}/;
}
}
my $report;
@@ -1626,9 +1546,7 @@ sub apply_fixups {
(my $outtext,$errtext) =
&LONCAPA::map::storemap("/uploaded/$cdom/$cnum/$storefn",1,$report);
if ($errtext) {
- if ($caller eq 'paste') {
- return &mt('Paste failed: an error occurred saving the folder or page.');
- }
+ return &mt('Paste failed: an error occurred saving the folder or page.');
}
}
}
@@ -1872,13 +1790,9 @@ sub editor {
push(@imports, [$name, $url, $residx]);
}
}
- ($errtext,$fatal,my $fixuperrors) =
- &group_import($coursenum, $coursedom, $folder,$container,
- 'londocs',@imports);
+ ($errtext,$fatal)=&group_import($coursenum, $coursedom, $folder,
+ $container,'londocs',@imports);
return $errtext if ($fatal);
- if ($fixuperrors) {
- $r->print($fixuperrors);
- }
}
# Loading a complete map
if ($env{'form.loadmap'}) {
@@ -3158,6 +3072,7 @@ sub startContentScreen {
if (($mode eq 'navmaps') || ($mode eq 'supplemental')) {
$output .= ' '.&mt('Content Overview').' '."\n";
$output .= ' '.&mt('Content Search').' '."\n";
+ $output .= ' '.&mt('Content Index').' '."\n";
$output .= ''.&mt('Supplemental Content').'';
} else {
$output .= ' '.&mt('Content Editor').' '."\n";
@@ -3304,11 +3219,11 @@ sub handler {
if ($env{'form.symb'} ne '') {
$env{'form.folderpath'}=
&Apache::loncommon::symb_to_docspath($env{'form.symb'});
- &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} =>
+ &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} =>
$env{'form.command'}.'_'.$env{'form.symb'}});
} elsif ($env{'form.supppath'} ne '') {
$env{'form.folderpath'}=$env{'form.supppath'};
- &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} =>
+ &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} =>
$env{'form.command'}.'_'.$env{'form.supppath'}});
}
} elsif ($env{'form.command'} eq 'editdocs') {
@@ -4416,8 +4331,8 @@ sub editing_js {
my $toplevelsupp = &supplemental_base();
my $backtourl;
- if ($env{'docs.exit.'.$env{'request.course.id'}} =~ /^direct_(.+)$/) {
- my $caller = $1;
+ if ($env{'docs.exit.'.$env{'request.course.id'}} =~ /^direct_(.+)$/) {
+ my $caller = $1;
if ($caller =~ /^supplemental/) {
$backtourl = '/adm/supplemental?folderpath='.&escape($caller);
} else {
@@ -4928,6 +4843,8 @@ Return hash with valid author names
=item contained_map_check()
+=item reinit_role()
+
=item url_paste_fixups()
=item apply_fixups()