'.&mt('Internal Filename').' | '.&mt('Title').' | '.&mt('Save as ...').' |
');
@@ -223,12 +229,13 @@ sub dumpcourse {
my ($ext)=($_=~/\.(\w+)$/);
my $title=$hash{'title_'.$hash{
'ids_/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'.$_}};
+ $title=~s/:/:/g;
$r->print(''.($title?$title:' ').' | ');
unless ($title) {
$title=$_;
}
$title=~s/\.(\w+)$//;
- $title=~s/[^\w\/]+/\_/gs;
+ $title=&clean($title);
$title.='.'.$ext;
$r->print("\n | \n");
}
@@ -242,6 +249,7 @@ sub dumpcourse {
# ------------------------------------------------------ Generate "export" button
sub exportbutton {
+ return '';
return ''.
''.
@@ -318,8 +326,8 @@ sub exportcourse {
$outcome = ' Unfortunately you will not be able to retrieve an IMS archive of this posts at this time, because there was a problem creating a manifest file. ';
}
}
-
- $r->print('Export Course'.
+ my $html=&Apache::lonxml::xmlbegin();
+ $r->print($html.'Export Course'.
&Apache::loncommon::bodytag('Export course to IMS content package'));
$r->print($outcome);
$r->print('');
@@ -460,7 +468,8 @@ function containerCheck(item) {
|;
- $r->print('Export Course'.$scripttag.''.
+ my $html=&Apache::lonxml::xmlbegin();
+ $r->print($html.'Export Course'.$scripttag.''.
&Apache::loncommon::bodytag('Export course to IMS content package'
));
@@ -704,12 +713,9 @@ sub process_content {
if ($contents) {
$$content_file = &store_template($contents,$tempexport,$count,$content_type);
}
- } elsif ($symb =~ m-uploaded/$cdom/$cnum-) {
- $$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'uploaded');
} elsif ($symb =~ m-\.(sequence|page)___\d+___uploaded/$cdom/$cnum/-) {
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'uploaded');
- } elsif ($symb =~ m-\.(sequence|page)___\d+___([^/])/([^/])-) {
- my $coauth = $3.':'.$2.':ca';
+ } elsif ($symb =~ m-\.(sequence|page)___\d+___([^/]+)/([^/]+)-) {
my $canedit = 0;
if ($2 eq $ENV{'user.domain'} && $3 eq $ENV{'user.name'}) {
$canedit= 1;
@@ -719,6 +725,8 @@ sub process_content {
} else {
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'noedit');
}
+ } elsif ($symb =~ m-uploaded/$cdom/$cnum-) {
+ $$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'uploaded');
}
if (@uploads > 0) {
foreach my $item (@uploads) {
@@ -760,14 +768,14 @@ sub replicate_content {
if ($copiedfile = Apache::File->new('>'.$destination)) {
my $content;
if ($caller eq 'resource') {
- $content = &Apache::lonnet::getfile($url);
+ $content = &Apache::lonnet::getfile('/home/httpd/html/res/'.$url);
if ($content eq -1) {
$$message = 'Could not copy file '.$filename;
} else {
&extract_media($content,$count,$tempexport,$href,'resource');
$repstatus = 'ok';
}
- } elsif ($caller eq 'noedit' || $caller eq 'uploaded' || $caller eq 'templateupload') {
+ } elsif ($caller eq 'uploaded' || $caller eq 'templateupload') {
my $rtncode;
$repstatus = &Apache::lonnet::getuploaded('GET',$url,$cdom,$cnum,\$content,$rtncode);
if ($repstatus eq 'ok') {
@@ -777,6 +785,10 @@ sub replicate_content {
} else {
$$message = 'Could not render '.$url.' server message - '.$rtncode;
}
+ } elsif ($caller eq 'noedit') {
+# Need to render the resource without the LON-CAPA Internal header and the Post discussion footer, and then set $content equal to this.
+ $repstatus = 'ok';
+ $content = 'Not the owner of this resource';
}
if ($repstatus eq 'ok') {
print $copiedfile $content;
@@ -883,6 +895,14 @@ sub breadcrumbs {
@folders=split('&',$ENV{'form.folderpath'});
}
my $folderpath;
+ my $cpinfo='';
+ if ($ENV{'form.markedcopy_url'}) {
+ &Apache::lonnet::logthis('Found '.$ENV{'form.markedcopy_url'});
+ $cpinfo='&markedcopy_url='.
+ &Apache::lonnet::escape($ENV{'form.markedcopy_url'}).
+ '&markedcopy_title='.
+ &Apache::lonnet::escape($ENV{'form.markedcopy_title'});
+ }
while (@folders) {
my $folder=shift(@folders);
my $foldername=shift(@folders);
@@ -891,7 +911,7 @@ sub breadcrumbs {
my $url='/adm/coursedocs?folderpath='.
&Apache::lonnet::escape($folderpath);
&Apache::lonhtmlcommon::add_breadcrumb(
- {'href'=>$url,
+ {'href'=>$url.$cpinfo,
'title'=>&Apache::lonnet::unescape($foldername),
'text'=>''.
&Apache::lonnet::unescape($foldername).''
@@ -905,8 +925,6 @@ sub breadcrumbs {
sub editor {
my ($r,$coursenum,$coursedom,$folder,$allowed)=@_;
-
- $r->print(&breadcrumbs($folder));
my $errtext='';
my $fatal=0;
my $container='sequence';
@@ -919,6 +937,13 @@ sub editor {
$Apache::lonratedt::order[0]=1;
$Apache::lonratedt::resources[1]='';
}
+ if (defined($ENV{'form.markcopy'})) {
+# Mark for copying
+ my ($title,$url)=split(':',$Apache::lonratedt::resources[$Apache::lonratedt::order[$ENV{'form.markcopy'}]]);
+ $ENV{'form.markedcopy_title'}=$title;
+ $ENV{'form.markedcopy_url'}=$url;
+ }
+ $r->print(&breadcrumbs($folder));
if ($fatal) {
$r->print(''.$errtext.' ');
} else {
@@ -989,14 +1014,50 @@ sub editor {
}
}
+ if ($ENV{'form.pastemarked'}) {
+# paste resource to end of list
+ my $url=$ENV{'form.markedcopy_url'};
+ my $title=$ENV{'form.markedcopy_title'};
+# Maps need to be copied first
+ if (($url=~/\.(page|sequence)$/) || ($url=~/^\/uploaded\//)) {
+ $title=&mt('Copy of').' '.$title;
+ my $newid=$$.time;
+ $url=~/^(.+)\.(\w+)$/;
+ my $newurl=$1.$newid.'.'.$2;
+ my $storefn=$newurl;
+ $storefn=~s/^\/\w+\/\w+\/\w+\///;
+ &Apache::loncreatecourse::writefile
+ ($ENV{'request.course.id'},$storefn,
+ &Apache::lonnet::getfile($url));
+ $url=$newurl;
+ }
+ $title=~s/\\<\;/g;
+ $title=~s/\>/\>\;/g;
+ $title=~s/\:/\:/g;
+ my $ext='false';
+ if ($url=~/^http\:\/\//) { $ext='true'; }
+ $url=~s/\:/\:/g;
+# Now insert the URL at the bottom
+ my $newidx=1+$#Apache::lonratedt::resources;
+ $Apache::lonratedt::resources[$newidx]=
+ $title.':'.$url.':'.$ext.':normal:res';
+ $Apache::lonratedt::order[1+$#Apache::lonratedt::order]=$newidx;
+# Store the result
+ ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);
+ if ($fatal) {
+ $r->print(''.$errtext.' ');
+ return;
+ }
+ }
# upload a file, if present
if (($ENV{'form.uploaddoc.filename'}) &&
($ENV{'form.cmd'}=~/^upload_(\w+)/)) {
if ( ($folder=~/^$1/) || ($1 eq 'default') ) {
# this is for a course, not a user, so set coursedoc flag
# probably the only place in the system where this should be "1"
- my $url=&Apache::lonnet::userfileupload('uploaddoc',1,'docs');
+ my $newidx=$#Apache::lonratedt::resources+1;
+ my $url=&Apache::lonnet::userfileupload('uploaddoc',1,'docs/'.$newidx);
my $ext='false';
if ($url=~/^http\:\/\//) { $ext='true'; }
$url=~s/\:/\:/g;
@@ -1008,7 +1069,6 @@ sub editor {
$comment=time.'___&&&___'.$ENV{'user.name'}.'___&&&___'.
$ENV{'user.domain'}.'___&&&___'.$comment;
}
- my $newidx=$#Apache::lonratedt::resources+1;
$Apache::lonratedt::resources[$newidx]=
$comment.':'.$url.':'.$ext.':normal:res';
$Apache::lonratedt::order[$#Apache::lonratedt::order+1]=
@@ -1125,7 +1185,30 @@ sub editor {
unless ($shown) {
$r->print(' | '.&mt('Currently no documents.').' |
');
}
- $r->print('
');
+ $r->print("\n\n");
+ if ($ENV{'form.markedcopy_url'}) {
+ $r->print(<