';
- }
}
my ($errtext,$fatal) =
&storemap($coursenum, $coursedom, $folder.'.'.$container,1);
@@ -490,7 +435,7 @@ sub docs_change_log {
}
my $folderpath=$env{'form.folderpath'};
if ($folderpath eq '') {
- $folderpath = 'default&'.&escape(&mt('Main '.$crstype.' Content').':::::');
+ $folderpath = 'default&'.&escape(&mt('Main '.$crstype.' Documents').':::::');
}
$pathitem = '';
@@ -655,115 +600,57 @@ sub docs_change_log {
sub update_paste_buffer {
my ($coursenum,$coursedom,$folder) = @_;
- my (@possibles,%removals,%cuts);
- if ($env{'form.multiremove'}) {
- $env{'form.multiremove'} =~ s/,$//;
- map { $removals{$_} = 1; } split(/,/,$env{'form.multiremove'});
- }
- if (($env{'form.multicopy'}) || ($env{'form.multicut'})) {
- if ($env{'form.multicut'}) {
- $env{'form.multicut'} =~ s/,$//;
- foreach my $item (split(/,/,$env{'form.multicut'})) {
- unless ($removals{$item}) {
- $cuts{$item} = 1;
- push(@possibles,$item.':cut');
- }
- }
- }
- if ($env{'form.multicopy'}) {
- $env{'form.multicopy'} =~ s/,$//;
- foreach my $item (split(/,/,$env{'form.multicopy'})) {
- unless ($removals{$item} || $cuts{$item}) {
- push(@possibles,$item.':copy');
- }
- }
- }
- } elsif ($env{'form.markcopy'}) {
- @possibles = split(/,/,$env{'form.markcopy'});
- }
- return if (@possibles == 0);
+ return if (!defined($env{'form.markcopy'}));
return if (!defined($env{'form.copyfolder'}));
+ return if ($env{'form.markcopy'} < 0);
my ($errtext,$fatal) = &mapread($coursenum,$coursedom,
$env{'form.copyfolder'});
- return if ($fatal);
-
- my %curr_groups = &Apache::longroup::coursegroups();
-# Retrieve current paste buffer suffixes.
- my @currpaste = split(/,/,$env{'docs.markedcopies'});
- my (%pasteurls,@newpaste);
-
-# 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};
- if (($cid =~ /^$match_domain(?:_)$match_courseid$/) &&
- ($url ne '')) {
- $pasteurls{$cid.'_'.$url};
- }
- }
- }
+ return if ($fatal);
-# Mark items for copying (skip any items already in user's paste buffer)
- my %addtoenv;
-
- foreach my $item (@possibles) {
- my ($orderidx,$cmd) = split(/:/,$item);
- next if ($orderidx =~ /\D/);
- next unless (($cmd eq 'cut') || ($cmd eq 'copy') || ($cmd eq 'remove'));
- my ($title,$url)=split(':',$LONCAPA::map::resources[$orderidx]);
- my %denied = &action_restrictions($coursenum,$coursedom,
- &LONCAPA::map::qtescape($url),
- $env{'form.folderpath'},\%curr_groups);
- next if ($denied{'copy'});
- $url=~s{http(:|:)//https(:|:)//}{https$2//};
- next if (exists($pasteurls{$coursedom.'_'.$coursenum.'_'.$url}));
- my ($suffix,$errortxt,$locknotfreed) =
- &new_timebased_suffix($env{'user.domain'},$env{'user.name'},'paste');
- push(@newpaste,$suffix);
- if ($locknotfreed) {
- return $locknotfreed;
- last;
- }
- if (&is_supplemental_title($title)) {
- &Apache::lonnet::appenv({'docs.markedcopy_supplemental_'.$suffix => $title});
- ($title) = &Apache::loncommon::parse_supplemental_title($title);
- }
-
- $addtoenv{'docs.markedcopy_title_'.$suffix} = $title,
- $addtoenv{'docs.markedcopy_url_'.$suffix} = $url,
- $addtoenv{'docs.markedcopy_cmd_'.$suffix} = $cmd,
- $addtoenv{'docs.markedcopy_crs_'.$suffix} = $env{'request.course.id'};
-
- if ($url =~ m{^/uploaded/$match_domain/$match_courseid/(default|supplemental)_?(\d*)\.(page|sequence)$}) {
- my $prefix = $1;
- my $subdir =$2;
- if ($subdir eq '') {
- $subdir = $prefix;
- }
- my (%addedmaps,%removefrommap,%removeparam,%hierarchy,%titles,%allmaps);
- &contained_map_check($url,$folder,\%removefrommap,\%removeparam,\%addedmaps,
- \%hierarchy,\%titles,\%allmaps);
- if (ref($hierarchy{$url}) eq 'HASH') {
- my ($nested,$nestednames);
- &recurse_uploaded_maps($url,$subdir,\%hierarchy,\%titles,\$nested,\$nestednames);
- $nested =~ s/\&$//;
- $nestednames =~ s/\Q___&&&___\E$//;
- if ($nested ne '') {
- $addtoenv{'docs.markedcopy_nested_'.$suffix} = $nested;
- }
- if ($nestednames ne '') {
- $addtoenv{'docs.markedcopy_nestednames_'.$suffix} = $nestednames;
- }
+# Mark for copying
+ my ($title,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$env{'form.markcopy'}]]);
+ if (&is_supplemental_title($title)) {
+ &Apache::lonnet::appenv({'docs.markedcopy_supplemental' => $title});
+ ($title) = &Apache::loncommon::parse_supplemental_title($title);
+ } elsif ($env{'docs.markedcopy_supplemental'}) {
+ &Apache::lonnet::delenv('docs.markedcopy_supplemental');
+ }
+ $url=~s{http(:|:)//https(:|:)//}{https$2//};
+
+ (my $cmd,undef)=split('_',$env{'form.cmd'});
+
+ my %addtoenv = (
+ 'docs.markedcopy_title' => $title,
+ 'docs.markedcopy_url' => $url,
+ 'docs.markedcopy_cmd' => $cmd,
+ );
+ &Apache::lonnet::delenv('docs.markedcopy_nested');
+ &Apache::lonnet::delenv('docs.markedcopy_nestednames');
+ if ($url =~ m{^/uploaded/$match_domain/$match_courseid/(default|supplemental)_?(\d*)\.(page|sequence)$}) {
+ my $prefix = $1;
+ my $subdir =$2;
+ if ($subdir eq '') {
+ $subdir = $prefix;
+ }
+ my (%addedmaps,%removefrommap,%removeparam,%hierarchy,%titles,%allmaps);
+ &contained_map_check($url,$folder,\%removefrommap,\%removeparam,\%addedmaps,
+ \%hierarchy,\%titles,\%allmaps);
+ if (ref($hierarchy{$url}) eq 'HASH') {
+ my ($nested,$nestednames);
+ &recurse_uploaded_maps($url,$subdir,\%hierarchy,\%titles,\$nested,\$nestednames);
+ $nested =~ s/\&$//;
+ $nestednames =~ s/\Q___&&&___\E$//;
+ if ($nested ne '') {
+ $addtoenv{'docs.markedcopy_nested'} = $nested;
+ }
+ if ($nestednames ne '') {
+ $addtoenv{'docs.markedcopy_nestednames'} = $nestednames;
}
}
}
- if (@newpaste) {
- $addtoenv{'docs.markedcopies'} = join(',',(@currpaste,@newpaste));
- }
&Apache::lonnet::appenv(\%addtoenv);
delete($env{'form.markcopy'});
}
@@ -795,200 +682,138 @@ sub recurse_uploaded_maps {
sub print_paste_buffer {
my ($r,$container,$folder,$coursedom,$coursenum) = @_;
- return if (!defined($env{'docs.markedcopies'}));
+ return if (!defined($env{'docs.markedcopy_url'}));
- unless (($env{'form.pastemarked'}) || ($env{'form.clearmarked'})) {
- return if ($env{'docs.markedcopies'} eq '');
+ my ($is_external,$othercourse,$fromsupp,$is_uploaded_map,$parent);
+ my $extension = (split(/\./,$env{'docs.markedcopy_url'}))[-1];
+ if ($env{'docs.markedcopy_url'} =~ m{^(?:/adm/wrapper/ext|(?:http|https)(?::|:))//} ) {
+ $is_external = 1;
}
- my @currpaste = split(/,/,$env{'docs.markedcopies'});
- my ($pasteitems,@pasteable);
+ my ($canpaste,$nopaste,$othercrs,$areachange);
+ if ($folder =~ /^supplemental/) {
+ $canpaste = &supp_pasteable($env{'docs.markedcopy_url'});
+ unless ($canpaste) {
+ $nopaste = &mt('Paste into Supplemental Content unavailable for this type of content.');
+ }
+ } else {
+ $canpaste = 1;
+ }
-# Construct identifiers for current contents of user's paste buffer
- foreach my $suffix (@currpaste) {
- next if ($suffix =~ /\D/);
- my $cid = $env{'docs.markedcopy_crs_'.$suffix};
- my $url = $env{'docs.markedcopy_url_'.$suffix};
- if (($cid =~ /^$match_domain\_$match_courseid$/) &&
- ($url ne '')) {
- my ($is_external,$othercourse,$fromsupp,$is_uploaded_map,$parent,
- $canpaste,$nopaste,$othercrs,$areachange);
- my $extension = (split(/\./,$env{'docs.markedcopy_url_'.$suffix}))[-1];
- if ($url =~ m{^(?:/adm/wrapper/ext|(?:http|https)(?::|:))//} ) {
- $is_external = 1;
- }
- if ($folder =~ /^supplemental/) {
- $canpaste = &supp_pasteable($env{'docs.markedcopy_url_'.$suffix});
- unless ($canpaste) {
- $nopaste = &mt('Paste into Supplemental Content unavailable.');
+ if ($canpaste) {
+ if ($env{'docs.markedcopy_url'} =~ m{^/uploaded/($match_domain)/($match_courseid)/(.+)$}) {
+ my $srcdom = $1;
+ my $srcnum = $2;
+ my $rem = $3;
+ if (($srcdom ne $coursedom) || ($srcnum ne $coursenum)) {
+ $othercourse = 1;
+ if ($env{"user.priv.cm./$srcdom/$srcnum"} =~ /\Q:mdc&F\E/) {
+ if ($canpaste) {
+ $othercrs = ' '.&mt('(from another course).');
+ }
+ } else {
+ $canpaste = 0;
+ $nopaste = &mt('Paste from another course unavailable.')
}
- } else {
- $canpaste = 1;
}
- if ($canpaste) {
- if ($url =~ m{^/uploaded/($match_domain)/($match_courseid)/(.+)$}) {
- my $srcdom = $1;
- my $srcnum = $2;
- my $rem = $3;
- if (($srcdom ne $coursedom) || ($srcnum ne $coursenum)) {
- $othercourse = 1;
- if ($env{"user.priv.cm./$srcdom/$srcnum"} =~ /\Q:mdc&F\E/) {
- if ($canpaste) {
- $othercrs = ' '.&mt('(from another course)');
- }
- } else {
- $canpaste = 0;
- $nopaste = &mt('Paste from another course unavailable.');
+ if ($rem =~ m{^(default|supplemental)_?(\d*)\.(?:page|sequence)$}) {
+ my $prefix = $1;
+ $parent = $2;
+ if ($folder !~ /^\Q$prefix\E/) {
+ $areachange = 1;
+ }
+ $is_uploaded_map = 1;
+ }
+ }
+ }
+
+ $r->print('');
}
sub recurse_print {
- my ($outputref,$dir,$deps,$display) = @_;
- $$outputref .= $display->{$dir}."\n";
+ my ($r,$dir,$deps,$display) = @_;
+ $r->print($display->{$dir}."\n");
if (ref($deps->{$dir}) eq 'ARRAY') {
foreach my $subdir (@{$deps->{$dir}}) {
- &recurse_print($outputref,$subdir,$deps,$display);
+ &recurse_print($r,$subdir,$deps,$display);
}
}
}
@@ -1007,485 +832,286 @@ sub supp_pasteable {
sub paste_popup_js {
my %lt = &Apache::lonlocal::texthash(
- show => 'Show Options',
- hide => 'Hide Options',
- none => 'No items selected from clipboard.',
+ show => 'Show Paste Options',
+ hide => 'Hide Paste Options',
);
return <<"END";
-function showPasteOptions(suffix) {
- document.getElementById('pasteoptions_'+suffix).style.display='block';
- document.getElementById('pasteoptionstext_'+suffix).innerHTML = ' $lt{'hide'}';
- return;
-}
-
-function hidePasteOptions(suffix) {
- document.getElementById('pasteoptions_'+suffix).style.display='none';
- document.getElementById('pasteoptionstext_'+suffix).innerHTML =' $lt{'show'}';
+function showPasteOptions() {
+ document.getElementById('pasteoptions').style.display='block';
+ document.getElementById('pasteoptions').style.textAlign='left';
+ document.getElementById('pasteoptions').style.textFace='normal';
+ document.getElementById('pasteoptionstext').innerHTML ='$lt{'hide'} ';
return;
}
-function showOptions(caller,suffix) {
- if (document.getElementById('pasteoptionstext_'+suffix)) {
- if (caller.checked) {
- document.getElementById('pasteoptionstext_'+suffix).innerHTML =' $lt{'show'}';
- } else {
- document.getElementById('pasteoptionstext_'+suffix).innerHTML ='';
- }
- if (document.getElementById('pasteoptions_'+suffix)) {
- document.getElementById('pasteoptions_'+suffix).style.display='none';
- }
- }
+function hidePasteOptions() {
+ document.getElementById('pasteoptions').style.display='none';
+ document.getElementById('pasteoptionstext').innerHTML ='$lt{'show'}';
return;
}
-function validateClipboard() {
- var numchk = 0;
- if (document.pasteform.pasting.length > 1) {
- for (var i=0; i 0) {
- return true;
- } else {
- alert("$lt{'none'}");
- return false;
- }
-}
-
END
}
+
sub do_paste_from_buffer {
my ($coursenum,$coursedom,$folder,$container,$errors) = @_;
-# Array of items in paste buffer
- my (@currpaste,%pastebuffer,%allerrors);
- @currpaste = split(/,/,$env{'docs.markedcopies'});
-
# Early out if paste buffer is empty
- if (@currpaste == 0) {
+ if (!$env{'form.pastemarked'}) {
return ();
- }
- map { $pastebuffer{$_} = 1; } @currpaste;
-
-# Array of items selected items to paste
- my @reqpaste = &Apache::loncommon::get_env_multiple('form.pasting');
-
-# Early out if nothing selected to paste
- if (@reqpaste == 0) {
- return();
- }
- my @topaste;
- foreach my $suffix (@reqpaste) {
- next if ($suffix =~ /\D/);
- next unless (exists($pastebuffer{$suffix}));
- push(@topaste,$suffix);
}
-# Early out if nothing available to paste
- if (@topaste == 0) {
- return();
- }
-
- my (%msgs,%before,%after,@dopaste,%is_map,%notinsupp,%notincrs,%duplicate,
- %prefixchg,%srcdom,%srcnum,%marktomove,$save_err,$lockerrors,$allresult,
- %msgs);
-
- foreach my $suffix (@topaste) {
- my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url_'.$suffix});
# Supplemental content may only include certain types of content
# Early out if pasted content is not supported in Supplemental area
- if ($folder =~ /^supplemental/) {
- unless (&supp_pasteable($url)) {
- $notinsupp{$suffix} = 1;
- next;
- }
+ if ($folder =~ /^supplemental/) {
+ unless (&supp_pasteable($env{'docs.markedcopy_url'})) {
+ return (&mt('Paste failed: content type is not supported within Supplemental Content'));
}
- if ($url =~ m{^/uploaded/($match_domain)/($match_courseid)/}) {
- my $srcd = $1;
- my $srcn = $2;
+ }
+
+# Prepare to paste resource at end of list
+ my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url'});
+ my $title=&LONCAPA::map::qtescape($env{'docs.markedcopy_title'});
+
+ my ($is_map,$srcdom,$srcnum,$prefixchg,%before,%after,%mapchanges,%tomove);
+ if ($url=~/\.(page|sequence)$/) {
+ $is_map = 1;
+ }
+ if ($url =~ m{^/uploaded/($match_domain)/($match_courseid)/([^/]+)}) {
+ $srcdom = $1;
+ $srcnum = $2;
+ my $oldprefix = $3;
# When paste buffer was populated using an active role in a different course
-# check for mdc privilege in the course from which the resource was pasted
- if (($srcd ne $coursedom) || ($srcn ne $coursenum)) {
- unless ($env{"user.priv.cm./$srcd/$srcn"} =~ /\Q:mdc&F\E/) {
- $notincrs{$suffix} = 1;
- next;
- }
+# check for mdc privilege in the course from which the resource was pasted
+ if (($srcdom ne $coursedom) || ($srcnum ne $coursenum)) {
+ unless ($env{"user.priv.cm./$srcdom/$srcnum"} =~ /\Q:mdc&F\E/) {
+ return (&mt('Paste failed: Item is from a different course which you do not have rights to edit.'));
}
- $srcdom{$suffix} = $srcd;
- $srcnum{$suffix} = $srcn;
- }
-
- push(@dopaste,$suffix);
- if ($url=~/\.(page|sequence)$/) {
- $is_map{$suffix} = 1;
}
-
- if ($url =~ m{^/uploaded/$match_domain/$match_courseid/([^/]+)}) {
- my $oldprefix = $1;
# When pasting content from Main Content to Supplemental Content and vice versa
# URLs will contain different paths (which depend on whether pasted item is
# a folder/page or a document.
- if (($folder =~ /^supplemental/) && (($oldprefix =~ /^default/) || ($oldprefix eq 'docs'))) {
- $prefixchg{$suffix} = 'docstosupp';
- } elsif (($folder =~ /^default/) && ($oldprefix =~ /^supplemental/)) {
- $prefixchg{$suffix} = 'supptodocs';
- }
+ if (($folder =~ /^supplemental/) && (($oldprefix =~ /^default/) || ($oldprefix eq 'docs'))) {
+ $prefixchg = 1;
+ %before = ( map => 'default',
+ doc => 'docs');
+ %after = ( map => 'supplemental',
+ doc => 'supplemental' );
+ } elsif (($folder =~ /^default/) && ($oldprefix =~ /^supplemental/)) {
+ $prefixchg = 1;
+ %before = ( map => 'supplemental',
+ doc => 'supplemental');
+ %after = ( map => 'default',
+ doc => 'docs');
+ }
# If pasting an uploaded map, get list of contained uploaded maps.
- if ($env{'docs.markedcopy_nested_'.$suffix}) {
- my @nested;
- my ($type) = ($oldprefix =~ /^(default|supplemental)/);
- my @items = split(/\&/,$env{'docs.markedcopy_nested_'.$suffix});
- my @deps = map { /\d+:([\d,]+$)/ } @items;
- foreach my $dep (@deps) {
- if ($dep =~ /,/) {
- push(@nested,split(/,/,$dep));
- } else {
- push(@nested,$dep);
- }
+ my @nested;
+ if ($env{'docs.markedcopy_nested'}) {
+ my ($type) = ($oldprefix =~ /^(default|supplemental)/);
+ my @items = split(/\&/,$env{'docs.markedcopy_nested'});
+ my @deps = map { /\d+:([\d,]+$)/ } @items;
+ foreach my $dep (@deps) {
+ if ($dep =~ /,/) {
+ push(@nested,split(/,/,$dep));
+ } else {
+ push(@nested,$dep);
}
- foreach my $item (@nested) {
- if ($env{'form.docs.markedcopy_'.$suffix.'_'.$item} eq 'move') {
- push(@{$marktomove{$suffix}},$type.'_'.$item);
- }
+ }
+ foreach my $item (@nested) {
+ if ($env{'form.docs.markedcopy_'.$item} eq 'move') {
+ $tomove{$type.'_'.$item} = 1;
}
}
}
}
-# Early out if nothing available to paste
- if (@dopaste == 0) {
- return ();
- }
-
-# Populate message hash and hashes used for main content <=> supplemental content
-# changes
-
- %msgs = &Apache::lonlocal::texthash (
- notinsupp => 'Paste failed: content type is not supported within Supplemental Content',
- notincrs => 'Paste failed: Item is from a different course which you do not have rights to edit.',
- duplicate => 'Paste failed: only one instance of a particular published sequence or page is allowed within each course.',
- );
-
- %before = (
- docstosupp => {
- map => 'default',
- doc => 'docs',
- },
- supptodocs => {
- map => 'supplemental',
- doc => 'supplemental',
- },
- );
-
- %after = (
- docstosupp => {
- map => 'supplemental',
- doc => 'supplemental'
- },
- supptodocs => {
- map => 'default',
- doc => 'docs',
- },
- );
-
-# Retrieve information about all course maps in main content area
-
- my $allmaps = {};
- if ($folder =~ /^default/) {
- $allmaps =
- &Apache::loncommon::allmaps_incourse($coursedom,$coursenum,
- $env{"course.$env{'request.course.id'}.home"},
- $env{'request.course.id'});
- }
-
- my (@toclear,%mapurls,%lockerrs,%msgerrs,%results);
-
-# Loop over the items to paste
- foreach my $suffix (@dopaste) {
# Maps need to be copied first
- my (%removefrommap,%removeparam,%addedmaps,%rewrites,%retitles,%copies,
- %dbcopies,%zombies,%params,%docmoves,%mapmoves,%mapchanges,%newsubdir,
- %newurls,%tomove);
- if (ref($marktomove{$suffix}) eq 'ARRAY') {
- map { $tomove{$_} = 1; } @{$marktomove{$suffix}};
- }
- my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url_'.$suffix});
- my $title=&LONCAPA::map::qtescape($env{'docs.markedcopy_title_'.$suffix});
- my $oldurl = $url;
- if ($is_map{$suffix}) {
+ my ($oldurl,%removefrommap,%removeparam,%addedmaps,%rewrites,%retitles,%copies,
+ %dbcopies,%zombies,%params,%docmoves,%mapmoves,%newsubdir,%newurls);
+ $oldurl = $url;
+ if ($is_map) {
# If pasting a map, check if map contains other maps
- my (%hierarchy,%titles);
- &contained_map_check($url,$folder,\%removefrommap,\%removeparam,
- \%addedmaps,\%hierarchy,\%titles,$allmaps);
- if ($url=~ m{^/uploaded/}) {
- my $newurl;
- unless ($env{'form.docs.markedcopy_options_'.$suffix} eq 'move') {
- ($newurl,my $error) =
- &get_newmap_url($url,$folder,$prefixchg{$suffix},$coursedom,
- $coursenum,$srcdom{$suffix},$srcnum{$suffix},
- \$title,$allmaps,\%newurls);
- if ($error) {
- $allerrors{$suffix} = $error;
- next;
- }
- if ($newurl ne '') {
- if ($newurl ne $url) {
- if ($newurl =~ /(?:default|supplemental)_(\d+).(?:sequence|page)$/) {
- $newsubdir{$url} = $1;
- }
- $mapchanges{$url} = 1;
+ my ($allmaps,%hierarchy,%titles);
+ $allmaps = {};
+ if ($folder =~ /^default/) {
+ $allmaps =
+ &Apache::loncommon::allmaps_incourse($coursedom,$coursenum,
+ $env{"course.$env{'request.course.id'}.home"},
+ $env{'request.course.id'});
+ }
+ &contained_map_check($url,$folder,\%removefrommap,\%removeparam,
+ \%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);
+ if ($error) {
+ return ($error);
+ }
+ if ($newurl ne '') {
+ if ($newurl ne $url) {
+ if ($newurl =~ /(?:default|supplemental)_(\d+).(?:sequence|page)$/) {
+ $newsubdir{$url} = $1;
}
- }
- }
- if (($srcdom{$suffix} ne $coursedom) ||
- ($srcnum{$suffix} ne $coursenum) ||
- ($prefixchg{$suffix}) || (($newurl ne '') && ($newurl ne $url))) {
- unless (&url_paste_fixups($url,$folder,$prefixchg{$suffix},
- $coursedom,$coursenum,$srcdom{$suffix},
- $srcnum{$suffix},$allmaps,\%rewrites,
- \%retitles,\%copies,\%dbcopies,
- \%zombies,\%params,\%mapmoves,
- \%mapchanges,\%tomove,\%newsubdir,
- \%newurls)) {
- $mapmoves{$url} = 1;
- }
- $url = $newurl;
- } elsif ($env{'docs.markedcopy_nested_'.$suffix}) {
- &url_paste_fixups($url,$folder,$prefixchg{$suffix},$coursedom,
- $coursenum,$srcdom{$suffix},$srcnum{$suffix},
- $allmaps,\%rewrites,\%retitles,\%copies,\%dbcopies,
- \%zombies,\%params,\%mapmoves,\%mapchanges,
- \%tomove,\%newsubdir,\%newurls);
- }
- } elsif ($url=~m {^/res/}) {
-# published map can only exists once, so remove from paste buffer when done
- push(@toclear,$suffix);
-# if pasting published map (main content area only) check map not already in course
- if ($folder =~ /^default/) {
- if ((ref($allmaps) eq 'HASH') && ($allmaps->{$url})) {
- $duplicate{$suffix} = 1;
- next;
+ $mapchanges{$url} = 1;
}
}
}
- }
- if ($url=~ m{/(bulletinboard|smppg)$}) {
- my $prefix = $1;
- #need to copy the db contents to a new one, unless this is a move.
- my %info = (
- src => $url,
- cdom => $coursedom,
- cnum => $coursenum,
- );
- unless ($env{'form.docs.markedcopy_options_'.$suffix} eq 'move') {
- my (%lockerr,$msg);
- my ($newurl,$result,$errtext) =
- &dbcopy(\%info,$coursedom,$coursenum,\%lockerr);
- if ($result eq 'ok') {
- $url = $newurl;
- $title=&mt('Copy of').' '.$title;
- } else {
- if ($prefix eq 'smppg') {
- $msg = &mt('Paste failed: An error occurred when copying the simple page.').' '.$errtext;
- } elsif ($prefix eq 'bulletinboard') {
- $msg = &mt('Paste failed: An error occurred when copying the bulletin board.').' '.$errtext;
- }
- $results{$suffix} = $result;
- $msgerrs{$suffix} = $msg;
- $lockerrs{$suffix} = $lockerr{$prefix};
- next;
- }
- if ($lockerr{$prefix}) {
- $lockerrs{$suffix} = $lockerr{$prefix};
+ 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,
+ \%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,
+ \%retitles,\%copies,\%dbcopies,\%zombies,\%params,\%mapmoves,
+ \%mapchanges,\%tomove,\%newsubdir,\%newurls);
+ }
+ } elsif ($url=~m {^/res/}) {
+# published maps can only exists once, so remove it from paste buffer when done
+ &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})) {
+ return (&mt('Paste failed: only one instance of a particular published sequence or page is allowed within each course.'));
}
}
}
- $title = &LONCAPA::map::qtunescape($title);
- my $ext='false';
- if ($url=~m{^http(|s)://}) { $ext='true'; }
- if ($env{'docs.markedcopy_supplemental_'.$suffix}) {
- if ($folder !~ /^supplemental/) {
- (undef,undef,$title) =
- &Apache::loncommon::parse_supplemental_title($env{'docs.markedcopy_supplemental_'.$suffix});
- }
- } else {
- if ($folder=~/^supplemental/) {
- $title=time.'___&&&___'.$env{'user.name'}.'___&&&___'.
- $env{'user.domain'}.'___&&&___'.$title;
+ }
+ if ($url=~ m{/smppg$}) {
+ my $db_name = &Apache::lonsimplepage::get_db_name($url);
+ if ($db_name =~ /^smppage_/) {
+ #simple pages, need to copy the db contents to a new one.
+ my %contents=&Apache::lonnet::dump($db_name,$coursedom,$coursenum);
+ my $now = time();
+ $db_name =~ s{_\d*$ }{_$now}x;
+ my $dbresult=&Apache::lonnet::put($db_name,\%contents,
+ $coursedom,$coursenum);
+ if ($dbresult eq 'ok') {
+ $url =~ s{/(\d*)/smppg$ }{/$now/smppg}x;
+ $title=&mt('Copy of').' '.$title;
+ } else {
+ return (&mt('Paste failed: An error occurred when copying the simple page.'));
}
- }
+ }
+ }
+ $title = &LONCAPA::map::qtunescape($title);
+ my $ext='false';
+ if ($url=~m{^http(|s)://}) { $ext='true'; }
+ $url = &LONCAPA::map::qtunescape($url);
# For uploaded files (excluding pages/sequences) path in copied file is changed
# if paste is from Main to Supplemental (or vice versa), or if pasting between
# courses.
- unless ($is_map{$suffix}) {
- my $newidx;
+ my $newidx;
+ unless ($is_map) {
# Now insert the URL at the bottom
- $newidx = &LONCAPA::map::getresidx(&LONCAPA::map::qtunescape($url));
- if ($url =~ m{^/uploaded/$match_domain/$match_courseid/(?:docs|supplemental)/(.+)$}) {
- my $relpath = $1;
- if ($relpath ne '') {
- my ($prefix,$subdir,$rem) = ($relpath =~ m{^(default|\d+)/(\d+)/(.+)$});
- my ($newloc,$newdocsdir) = ($folder =~ /^(default|supplemental)_?(\d*)/);
- my $newprefix = $newloc;
- if ($newloc eq 'default') {
- $newprefix = 'docs';
- }
- if ($newdocsdir eq '') {
- $newdocsdir = 'default';
- }
- if (($prefixchg{$suffix}) ||
- ($srcdom{$suffix} ne $coursedom) ||
- ($srcnum{$suffix} ne $coursenum) ||
- ($env{'form.docs.markedcopy_options_'.$suffix} ne 'move')) {
- my $newpath = "$newprefix/$newdocsdir/$newidx/$rem";
- $url =
- &Apache::lonclonecourse::writefile($env{'request.course.id'},$newpath,
- &Apache::lonnet::getfile($oldurl));
- if ($url eq '/adm/notfound.html') {
- $msgs{$suffix} = &mt('Paste failed: an error occurred saving the file.');
- next;
- } else {
- my ($newsubpath) = ($newpath =~ m{^(.*/)[^/]*$});
- $newsubpath =~ s{/+$}{/};
- $docmoves{$oldurl} = $newsubpath;
- }
+ $newidx = &LONCAPA::map::getresidx($url);
+ if ($url =~ m{^/uploaded/$match_domain/$match_courseid/(?:docs|supplemental)/(.+)$}) {
+ my $relpath = $1;
+ if ($relpath ne '') {
+ my ($prefix,$subdir,$rem) = ($relpath =~ m{^(default|\d+)/(\d+)/(.+)$});
+ my ($newloc,$newdocsdir) = ($folder =~ /^(default|supplemental)_?(\d*)/);
+ my $newprefix = $newloc;
+ if ($newloc eq 'default') {
+ $newprefix = 'docs';
+ }
+ if ($newdocsdir eq '') {
+ $newdocsdir = 'default';
+ }
+ if (($prefixchg) || ($srcdom ne $coursedom) || ($srcnum ne $coursenum)) {
+ my $newpath = "$newprefix/$newdocsdir/$newidx/$rem";
+ $url =
+ &Apache::lonclonecourse::writefile($env{'request.course.id'},$newpath,
+ &Apache::lonnet::getfile($oldurl));
+ if ($url eq '/adm/notfound.html') {
+ return (&mt('Paste failed: an error occurred saving the file.'));
+ } else {
+ my ($newsubpath) = ($newpath =~ m{^(.*/)[^/]*$});
+ $newsubpath =~ s{/+$}{/};
+ $docmoves{$oldurl} = $newsubpath;
}
}
}
- $LONCAPA::map::resources[$newidx]=$title.':'.&LONCAPA::map::qtunescape($url).
- ':'.$ext.':normal:res';
- push(@LONCAPA::map::order,$newidx);
-# Store the result
- my ($errtext,$fatal) =
- &storemap($coursenum,$coursedom,$folder.'.'.$container,1);
- if ($fatal) {
- $save_err .= $errtext;
- $allresult = 'fail';
- }
}
-
+ }
# Apply any changes to maps, or copy dependencies for uploaded HTML pages
- unless ($allresult eq 'fail') {
- my %updated = (
- rewrites => \%rewrites,
- zombies => \%zombies,
- removefrommap => \%removefrommap,
- removeparam => \%removeparam,
- dbcopies => \%dbcopies,
- retitles => \%retitles,
- );
- my %info = (
- newsubdir => \%newsubdir,
- params => \%params,
- );
- if ($prefixchg{$suffix}) {
- $info{'before'} = $before{$prefixchg{$suffix}};
- $info{'after'} = $after{$prefixchg{$suffix}};
- }
- my %moves = (
- copies => \%copies,
- docmoves => \%docmoves,
- mapmoves => \%mapmoves,
- );
- (my $result,$msgs{$suffix},my $lockerror) =
- &apply_fixups($folder,$is_map{$suffix},$coursedom,$coursenum,$errors,
- \%updated,\%info,\%moves,$prefixchg{$suffix},$oldurl,
- $url,'paste');
- $lockerrors .= $lockerror;
- if ($result eq 'ok') {
- if ($is_map{$suffix}) {
- my ($errtext,$fatal) = &mapread($coursenum,$coursedom,
- $folder.'.'.$container);
- if ($fatal) {
- $allresult = 'failread';
- } else {
- if ($#LONCAPA::map::order<1) {
- my $idx=&LONCAPA::map::getresidx();
- if ($idx<=0) { $idx=1; }
- $LONCAPA::map::order[0]=$idx;
- $LONCAPA::map::resources[$idx]='';
- }
- my $newidx = &LONCAPA::map::getresidx(&LONCAPA::map::qtunescape($url));
- $LONCAPA::map::resources[$newidx]=$title.':'.&LONCAPA::map::qtunescape($url).
- ':'.$ext.':normal:res';
- push(@LONCAPA::map::order,$newidx);
-
-# Store the result
- my ($errtext,$fatal) =
- &storemap($coursenum,$coursedom,$folder.'.'.$container,1);
- if ($fatal) {
- $save_err .= $errtext;
- $allresult = 'failstore';
- }
- }
- }
- if ($env{'form.docs.markedcopy_options_'.$suffix} eq 'move') {
- push(@toclear,$suffix);
- }
+ 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');
+ if ($result eq 'ok') {
+ if ($is_map) {
+ my ($errtext,$fatal) = &mapread($coursenum,$coursedom,
+ $folder.'.'.$container);
+ return $errtext if ($fatal);
+
+ if ($#LONCAPA::map::order<1) {
+ my $idx=&LONCAPA::map::getresidx();
+ if ($idx<=0) { $idx=1; }
+ $LONCAPA::map::order[0]=$idx;
+ $LONCAPA::map::resources[$idx]='';
}
+ $newidx = &LONCAPA::map::getresidx($url);
}
- }
- &clear_from_buffer(\@toclear,\@currpaste);
- my $msgsarray;
- foreach my $suffix (keys(%msgs)) {
- if (ref($msgs{$suffix}) eq 'ARRAY') {
- $msgsarray .= join(',',@{$msgs{$suffix}});
- }
- }
- return ($allresult,$save_err,$msgsarray,$lockerrors);
-}
+ if ($env{'docs.markedcopy_supplemental'}) {
+ if ($folder !~ /^supplemental/) {
+ (undef,undef,$title) =
+ &Apache::loncommon::parse_supplemental_title($env{'docs.markedcopy_supplemental'});
+ }
+ } else {
+ if ($folder=~/^supplemental/) {
+ $title=time.'___&&&___'.$env{'user.name'}.'___&&&___'.
+ $env{'user.domain'}.'___&&&___'.$title;
+ }
+ }
+ $LONCAPA::map::resources[$newidx]= $title.':'.$url.':'.$ext.':normal:res';
+ push(@LONCAPA::map::order, $newidx);
-sub do_buffer_empty {
- my @currpaste = split(/,/,$env{'docs.markedcopies'});
- if (@currpaste == 0) {
- return &mt('Clipboard is already empty');
- }
- my @toclear = &Apache::loncommon::get_env_multiple('form.pasting');
- if (@toclear == 0) {
- return &mt('Nothing selected to clear from clipboard');
+# Store the result
+ my ($errtext,$fatal) =
+ &storemap($coursenum,$coursedom,$folder.'.'.$container,1);
+ if ($fatal) {
+ $save_err = $errtext;
+ }
}
- my $numdel = &clear_from_buffer(\@toclear,\@currpaste);
- if ($numdel) {
- return &mt('[quant,_1,item] cleared from clipboard',$numdel);
- } else {
- return &mt('Clipboard unchanged');
+
+ if ($env{'form.docs.markedcopy_options'} eq 'move') {
+ &Apache::lonnet::delenv('docs.markedcopy');
+ &Apache::lonnet::delenv('docs.markedcopy_nested');
+ &Apache::lonnet::delenv('docs.markedcopy_nestednames');
}
- return;
-}
-
-sub clear_from_buffer {
- my ($toclear,$currpaste) = @_;
- return unless ((ref($toclear) eq 'ARRAY') && (ref($currpaste) eq 'ARRAY'));
- my %pastebuffer;
- map { $pastebuffer{$_} = 1; } @{$currpaste};
- my $numdel = 0;
- foreach my $suffix (@{$toclear}) {
- next if ($suffix =~ /\D/);
- next unless (exists($pastebuffer{$suffix}));
- my $regexp = 'docs.markedcopy_[a-z]+_'.$suffix;
- if (&Apache::lonnet::delenv($regexp,1) eq 'ok') {
- delete($pastebuffer{$suffix});
- $numdel ++;
- }
- }
- my $newbuffer = join(',',sort(keys(%pastebuffer)));
- &Apache::lonnet::appenv({'docs.markedcopies' => $newbuffer});
- return $numdel;
+ return ($result,$save_err);
}
sub get_newmap_url {
@@ -1549,96 +1175,20 @@ sub get_newmap_url {
}
sub dbcopy {
- my ($dbref,$coursedom,$coursenum,$lockerrorsref) = @_;
- my ($url,$result,$errtext);
- my $url = $dbref->{'src'};
- if (ref($dbref) eq 'HASH') {
- if ($url =~ m{/(smppg|bulletinboard)$}) {
- my $prefix = $1;
- if (($dbref->{'cdom'} =~ /^$match_domain$/) &&
- ($dbref->{'cnum'} =~ /^$match_courseid$/)) {
- my $db_name;
- my $marker = (split(m{/},$url))[4];
- $marker=~s/\D//g;
- if ($dbref->{'src'} =~ m{/smppg$}) {
- $db_name =
- &Apache::lonsimplepage::get_db_name($url,$marker,
- $dbref->{'cdom'},
- $dbref->{'cnum'});
- } else {
- $db_name = 'bulletinpage_'.$marker;
- }
- my ($suffix,$freedlock,$error) =
- &Apache::lonnet::get_timebased_id($prefix,'num','templated',
- $coursedom,$coursenum,
- 'concat');
- if (!$suffix) {
- if ($prefix eq 'smppg') {
- $errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a simple page [_1].',$url);
- } else {
- $errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a bulletin board [_1].',$url);
- }
- if ($error) {
- $errtext .= ' '.$error;
- }
- } else {
- #need to copy the db contents to a new one.
- my %contents=&Apache::lonnet::dump($db_name,
- $dbref->{'cdom'},
- $dbref->{'cnum'});
- if (exists($contents{'uploaded.photourl'})) {
- my $photo = $contents{'uploaded.photourl'};
- my ($subdir,$fname) =
- ($photo =~ m{^/uploaded/$match_domain/$match_courseid/+(bulletin|simplepage)/(?:|\d+/)([^/]+)$});
- my $newphoto;
- if ($fname ne '') {
- my $content = &Apache::lonnet::getfile($photo);
- unless ($content eq '-1') {
- $env{'form.'.$suffix.'.photourl'} = $content;
- $newphoto =
- &Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$suffix.'.photourl',"$subdir/$suffix/$fname");
- delete($env{'form.'.$suffix.'.photourl'});
- }
- }
- if ($newphoto =~ m{^/uploaded/}) {
- $contents{'uploaded.photourl'} = $newphoto;
- }
- }
- $db_name =~ s{_\d*$ }{_$suffix}x;
- $result=&Apache::lonnet::put($db_name,\%contents,
- $coursedom,$coursenum);
- if ($result eq 'ok') {
- $url =~ s{/(\d*)/(smppg|bulletinboard)$}{/$suffix/$2}x;
- }
- }
- if (($freedlock ne 'ok') && (ref($lockerrorsref) eq 'HASH')) {
- $lockerrorsref->{$prefix} =
- '
'.
- &mt('There was a problem removing a lockfile.');
- if ($prefix eq 'smppg') {
- $lockerrorsref->{$prefix} .=
- &mt('This will prevent creation of additional simple pages in this course.');
- } else {
- $lockerrorsref->{$prefix} .= &mt('This will prevent creation of additional bulletin boards in this course.');
- }
- $lockerrorsref->{$prefix} .= &mt('Please contact the domain coordinator for your LON-CAPA domain.').'
');
- }
- if ($save_error ne '') {
- return $save_error;
- }
- if ($paste_res) {
- my %errortext = &Apache::lonlocal::texthash (
- fail => 'Storage of folder contents failed',
- failread => 'Reading folder contents failed',
- failstore => 'Storage of folder contents failed',
- );
- if ($errortext{$paste_res}) {
- $r->print('
'.$errortext{$paste_res}.'
');
+ if ($save_error ne '') {
+ return $save_error;
}
+ if ($paste_res ne 'ok') {
+ $r->print('
'.$paste_res.'
');
}
if (keys(%paste_errors) > 0) {
- $r->print('
'."\n".
+ $r->print('
'."\n".
&mt('The following files are either dependencies of a web page or references within a folder and/or composite page which could not be copied during the paste operation:')."\n".
'
'."\n");
foreach my $key (sort(keys(%paste_errors))) {
@@ -2410,91 +1838,28 @@ sub editor {
}
$r->print('
'."\n");
}
- } elsif ($env{'form.clearmarked'}) {
- my $output = &do_buffer_empty();
- if ($output) {
- $r->print('
'.$output.'
');
- }
- }
+ }
$r->print($upload_output);
-# Rename, cut, copy or remove a single resource
if (&handle_edit_cmd()) {
my $contentchg;
- if ($env{'form.cmd'} =~ m{^(del|cut)_}) {
+ if ($env{'form.cmd'} =~ /^(del|cut)_/) {
$contentchg = 1;
}
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container,$contentchg);
return $errtext if ($fatal);
}
-
-# Cut, copy and/or remove multiple resources
- if ($env{'form.multichange'}) {
- my %allchecked = (
- cut => {},
- remove => {},
- );
- my $needsupdate;
- foreach my $which (keys(%allchecked)) {
- $env{'form.multi'.$which} =~ s/,$//;
- if ($env{'form.multi'.$which}) {
- map { $allchecked{$which}{$_} = 1; } split(/,/,$env{'form.multi'.$which});
- if (ref($allchecked{$which}) eq 'HASH') {
- $needsupdate += scalar(keys(%{$allchecked{$which}}));
- }
- }
- }
- if ($needsupdate) {
- my $haschanges = 0;
- my %curr_groups = &Apache::longroup::coursegroups();
- my $total = scalar(@LONCAPA::map::order) - 1;
- for (my $i=$total; $i>=0; $i--) {
- my $res = $LONCAPA::map::order[$i];
- my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);
- $name=&LONCAPA::map::qtescape($name);
- $url=&LONCAPA::map::qtescape($url);
- next unless ($name && $url);
- my %denied =
- &action_restrictions($coursenum,$coursedom,$url,
- $env{'form.folderpath'},\%curr_groups);
- foreach my $which (keys(%allchecked)) {
- next if ($denied{$which});
- next unless ($allchecked{$which}{$res});
- if ($which eq 'remove') {
- if (($url=~m|/+uploaded/\Q$coursedom\E/\Q$coursenum\E/|) &&
- ($url!~/$LONCAPA::assess_page_seq_re/)) {
- &Apache::lonnet::removeuploadedurl($url);
- } else {
- &LONCAPA::map::makezombie($res);
- }
- splice(@LONCAPA::map::order,$i,1);
- $haschanges ++;
- } elsif ($which eq 'cut') {
- &LONCAPA::map::makezombie($res);
- splice(@LONCAPA::map::order,$i,1);
- $haschanges ++;
- }
- }
- }
- if ($haschanges) {
- ($errtext,$fatal) =
- &storemap($coursenum,$coursedom,$folder.'.'.$container,1);
- return $errtext if ($fatal);
- }
- }
- }
-
# Group import/search
if ($env{'form.importdetail'}) {
my @imports;
foreach my $item (split(/\&/,$env{'form.importdetail'})) {
if (defined($item)) {
my ($name,$url,$residx)=
- map { &unescape($_); } split(/\=/,$item);
- if ($url =~ m{^\Q/uploaded/$coursedom/$coursenum/\E(default|supplemental)_new\.(sequence|page)$}) {
- my ($suffix,$errortxt,$locknotfreed) =
- &new_timebased_suffix($coursedom,$coursenum,'map',$1,$2);
+ map {&unescape($_)} split(/\=/,$item);
+ if ($url=~ m{^\Q/uploaded/$coursedom/$coursenum/\E(default|supplemental)_new\.(sequence|page)$}) {
+ my ($suffix,$errortxt,$locknotfreed) =
+ &newmap_suffix($1,$2,$coursedom,$coursenum);
if ($locknotfreed) {
$r->print($locknotfreed);
}
@@ -2503,34 +1868,6 @@ sub editor {
} else {
return $errortxt;
}
- } elsif ($url =~ m{^/adm/$match_domain/$match_username/new/(smppg|bulletinboard)$}) {
- my $type = $1;
- my ($suffix,$errortxt,$locknotfreed) =
- &new_timebased_suffix($coursedom,$coursenum,$type);
- if ($locknotfreed) {
- $r->print($locknotfreed);
- }
- if ($suffix) {
- $url =~ s{^(/adm/$match_domain/$match_username)/new}{$1/$suffix};
- } else {
- return $errortxt;
- }
- } elsif ($url =~ m{^/uploaded/$coursedom/$coursenum/(docs|supplemental)/(default|\d+)/new.html$}) {
- if ($supplementalflag) {
- next unless ($1 eq 'supplemental');
- if ($folder eq 'supplemental') {
- next unless ($2 eq 'default');
- } else {
- next unless ($folder eq 'supplemental_'.$2);
- }
- } else {
- next unless ($1 eq 'docs');
- if ($folder eq 'default') {
- next unless ($2 eq 'default');
- } else {
- next unless ($folder eq 'default_'.$2);
- }
- }
}
push(@imports, [$name, $url, $residx]);
}
@@ -2597,17 +1934,8 @@ sub editor {
$r->print('');
}
- my ($to_show,$output,@allidx,@allmapidx,%filters,%lists,%curr_groups);
- %filters = (
- canremove => [],
- cancut => [],
- cancopy => [],
- hiddenresource => [],
- encrypturl => [],
- randomorder => [],
- randompick => [],
- );
- %curr_groups = &Apache::longroup::coursegroups();
+ my ($to_show,$output);
+
&Apache::loncommon::start_data_table_count(); #setup a row counter
foreach my $res (@LONCAPA::map::order) {
my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);
@@ -2615,20 +1943,14 @@ sub editor {
$url=&LONCAPA::map::qtescape($url);
unless ($name) { $name=(split(/\//,$url))[-1]; }
unless ($name) { $idx++; next; }
- push(@allidx,$res);
- if ($url =~ m{/uploaded/.+\.(page|sequence)$}) {
- push(@allmapidx,$res);
- }
$output .= &entryline($idx,$name,$url,$folder,$allowed,$res,
$coursenum,$coursedom,$crstype,
- $pathitem,$supplementalflag,$container,
- \%filters,\%curr_groups);
+ $pathitem,$supplementalflag,$container);
$idx++;
$shown++;
}
&Apache::loncommon::end_data_table_count();
- my $need_save;
if (($allowed) || ($supplementalflag && $folder eq 'supplemental')) {
my $toolslink = '