--- loncom/interface/londocs.pm 2012/12/13 00:51:34 1.484.2.12
+++ loncom/interface/londocs.pm 2012/12/13 04:11:51 1.484.2.17
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.484.2.12 2012/12/13 00:51:34 raeburn Exp $
+# $Id: londocs.pm,v 1.484.2.17 2012/12/13 04:11:51 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -454,7 +454,8 @@ sub docs_change_log {
if ($folderpath eq '') {
$folderpath = 'default&'.&escape(&mt('Main '.$crstype.' Documents'));
}
- $pathitem = '';
+ $pathitem = '';
}
my $readfile="/uploaded/$coursedom/$coursenum/$folder.$container";
my $jumpto = $readfile;
@@ -1743,7 +1744,7 @@ sub handle_edit_cmd {
sub editor {
my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$crstype,
- $supplementalflag,$orderhash,$iconpath,$uploadtag)=@_;
+ $supplementalflag,$orderhash,$iconpath,$pathitem)=@_;
my $container= ($env{'form.pagepath'}) ? 'page'
: 'sequence';
@@ -1828,6 +1829,18 @@ sub editor {
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) =
+ &newmap_suffix($1,$2,$coursedom,$coursenum);
+ if ($locknotfreed) {
+ $r->print($locknotfreed);
+ }
+ if ($suffix) {
+ $url =~ s/_new\./_$suffix./;
+ } else {
+ return $errortxt;
+ }
+ }
push(@imports, [$name, $url, $residx]);
}
}
@@ -1900,7 +1913,7 @@ sub editor {
unless ($name) { $idx++; next; }
$output .= &entryline($idx,$name,$url,$folder,$allowed,$res,
$coursenum,$coursedom,$crstype,
- $uploadtag,$supplementalflag);
+ $pathitem,$supplementalflag);
$idx++;
$shown++;
}
@@ -1949,7 +1962,7 @@ sub editor {
&Apache::lonhtmlcommon::add_item_funclist(
''.
- ''.
+ ''.
''.$funcname.'').
&Apache::lonhtmlcommon::end_funclist()));
}
@@ -2118,7 +2131,7 @@ sub is_supplemental_title {
sub entryline {
my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,
- $crstype,$uploadtag,$supplementalflag)=@_;
+ $crstype,$pathitem,$supplementalflag)=@_;
my ($foldertitle,$pagetitle,$renametitle);
if (&is_supplemental_title($title)) {
($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);
@@ -2151,9 +2164,13 @@ sub entryline {
$esc_path=&escape($env{'form.pagepath'});
$path = &HTML::Entities::encode($env{'form.pagepath'},'<>&"');
}
+ my $isexternal;
if (!$supplementalflag && $residx) {
my $currurl = $url;
$currurl =~ s{^http(|s)(:|:)//}{/adm/wrapper/ext/};
+ if ($currurl =~ m{^/adm/wrapper/ext/}) {
+ $isexternal = 1;
+ }
my $path = 'uploaded/'.
$env{'course.'.$env{'request.course.id'}.'.domain'}.'/'.
$env{'course.'.$env{'request.course.id'}.'.num'}.'/';
@@ -2258,9 +2275,7 @@ sub entryline {
$nocopy=1;
}
}
- my $copylink=' ';
- my $cutlink=' ';
- my $removelink=' ';
+ my ($copylink,$cutlink,$removelink,$renamelink);
my $skip_confirm = 0;
if ( $folder =~ /^supplemental/
@@ -2269,26 +2284,40 @@ sub entryline {
|/aboutme$
|/navmaps$
|/bulletinboard$
- |\.html$
- |^/adm/wrapper/ext)}x)) {
+ |\.html$)}x)
+ || $isexternal) {
$skip_confirm = 1;
}
-
- if (!$nocopy) {
- $copylink=(<$lt{'cp'}
+ENDCOPY
+ } else {
+ $copylink=(<$lt{'cp'}
ENDCOPY
}
- if (!$nocut) {
- $cutlink=(<$lt{'ct'}
+ENDCUT
+ } else {
+ $cutlink=(<$lt{'ct'}
ENDCUT
}
- if (!$noremove) {
+ if ($noremove) {
+ $removelink=(<$lt{'rm'}
+ENDREM
+ } else {
$removelink=(<$lt{'rm'}
ENDREM
}
+ $renamelink=(<$lt{'rn'}
+ENDREN
$form_start = '
EXTLNK
} else {
- my ($cfile,$home,$switchserver,$uploaded) =
- &Apache::lonnet::can_edit_resource($fileloc,$coursenum,$coursedom);
- if (($cfile ne '') && ($symb ne '')) {
+ my ($cfile,$home,$switchserver,$forceedit,$forceview) =
+ &Apache::lonnet::can_edit_resource($fileloc,$coursenum,$coursedom,$orig_url);
+ my $geteditlink;
+ if ($supplementalflag) {
+ if ($orig_url eq "/adm/$env{'user.domain'}/$env{'user.name'}/aboutme") {
+ $geteditlink = 1;
+ }
+ } elsif (($cfile ne '') && ($symb ne '')) {
+ $geteditlink = 1;
+ }
+ if ($geteditlink) {
my $jscall =
&Apache::lonhtmlcommon::jump_to_editres($cfile,$home,
$switchserver,
- $uploaded,$symb);
+ $forceedit,
+ undef,$symb);
if ($jscall) {
$editlink = ' '.&mt('Edit').'';
@@ -2536,6 +2575,30 @@ ENDPARMS
return $line;
}
+sub newmap_suffix {
+ my ($area,$container,$coursedom,$coursenum) = @_;
+ my ($prefix,$idtype,$errtext,$locknotfreed);
+ $prefix = 'docs';
+ if ($area eq 'supplemental') {
+ $prefix = 'supp';
+ }
+ $prefix .= $container;
+ $idtype = 'concat';
+ my ($suffix,$freedlock,$error) =
+ &Apache::lonnet::get_timebased_id($prefix,'num','uploadedmaps',
+ $coursedom,$coursenum);
+ if (!$suffix) {
+ $errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new folder/page.');
+ if ($error) {
+ $errtext .= ' '.$error;
+ }
+ }
+ if ($freedlock ne 'ok') {
+ $locknotfreed = '
'.&mt('There was a problem removing a lockfile. This will prevent creation of additional folders or composite pages in this course. Please contact the domain coordinator for your LON-CAPA domain.').'