'.&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'
));
@@ -486,6 +495,9 @@ sub create_ims_store {
if (!-e $$tempexport) {
mkdir($$tempexport,0700);
}
+ if (!-e "$$tempexport/resources") {
+ mkdir("$$tempexport/resources",0700);
+ }
# open manifest file
my $manifest = '/imsmanifest.xml';
my $manifestfilename = $$tempexport.$manifest;
@@ -609,7 +621,7 @@ sub build_package {
}
my %extras = (
caller => 'imsexport',
- tempexport => $tempexport,
+ tempexport => $tempexport.'/resources',
count => $count
);
my $discresult = &Apache::lonfeedback::list_discussion($mode,undef,$ressymb,\%extras);
@@ -655,7 +667,6 @@ sub process_content {
my $content_type;
my $message;
# find where user is author or co-author
- my %roleshash = &Apache::lonnet::get_my_roles();
my @uploads = ();
if ($curRes->is_sequence()) {
$content_type = 'sequence';
@@ -702,34 +713,25 @@ 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;
- } elsif (defined($roleshash{$coauth})) {
- if ($roleshash{$coauth} =~ /(\d+):(\d+)/) {
- if (($1 < time || $1 == 0) && ($2 == 0 || $2 >= time)) {
- $canedit = 1;
- }
- } elsif ($roleshash{$coauth} eq ':') {
- $canedit = 1;
- }
}
if ($canedit) {
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'resource');
} 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) {
my $uploadmsg = '';
- &replicate_content($cdom,$cnum,$tempexport,$item,$count,\$uploadmsg,$href,'uploaded');
+ &replicate_content($cdom,$cnum,$tempexport,$item,$count,\$uploadmsg,$href,'templateupload');
if ($uploadmsg) {
$$copyresult .= $uploadmsg."\n";
}
@@ -742,9 +744,13 @@ sub process_content {
sub replicate_content {
my ($cdom,$cnum,$tempexport,$symb,$count,$message,$href,$caller) = @_;
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- my $feedurl = &Apache::lonnet::clutter($url);
-
+ my ($map,$ind,$url);
+ if ($caller eq 'templateupload') {
+ $url = $symb;
+ $url =~ s#//#/#g;
+ } else {
+ ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
+ }
my $content;
my $filename;
my $repstatus;
@@ -762,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') {
+ } elsif ($caller eq 'uploaded' || $caller eq 'templateupload') {
my $rtncode;
$repstatus = &Apache::lonnet::getuploaded('GET',$url,$cdom,$cnum,\$content,$rtncode);
if ($repstatus eq 'ok') {
@@ -779,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;
@@ -788,7 +798,7 @@ sub replicate_content {
$$message = 'Could not open destination file for '.$filename."\n";
}
} else {
- $$message = 'Could not determine name of file for '.$url."\n";
+ $$message = 'Could not determine name of file for '.$symb."\n";
}
if ($repstatus eq 'ok') {
$content_name = $count.'/'.$filename;
@@ -808,13 +818,25 @@ sub extract_media {
sub store_template {
my ($contents,$tempexport,$count,$content_type) = @_;
if ($contents) {
- my $destination = $tempexport.'/resources/'.$count.'/'.$content_type.'.xml';
- my $storetemplate;
- if ($storetemplate = Apache::File->new('>'.$destination)) {
- print $storetemplate $contents;
- close($storetemplate);
+ if ($tempexport) {
+ if (!-e $tempexport.'/resources') {
+ mkdir($tempexport.'/resources',0700);
+ }
+ if (!-e $tempexport.'/resources/'.$count) {
+ mkdir($tempexport.'/resources/'.$count,0700);
+ }
+ my $destination = $tempexport.'/resources/'.$count.'/'.$content_type.'.xml';
+ my $storetemplate;
+ if ($storetemplate = Apache::File->new('>'.$destination)) {
+ print $storetemplate $contents;
+ close($storetemplate);
+ }
+ if ($content_type eq 'external') {
+ return $count.'/'.$content_type.'.html';
+ } else {
+ return $count.'/'.$content_type.'.xml';
+ }
}
- return $count.'/'.$content_type.'.xml';
}
}
@@ -986,7 +1008,8 @@ sub editor {
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;
@@ -998,7 +1021,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]=
@@ -1283,10 +1305,11 @@ END
$folderpath.=$folderarg.'&'.$foldername;
$url.='folderpath='.&Apache::lonnet::escape($folderpath);
$parameterset=''.&mt('Randomly Pick: ').
- ' '.' ';
+ '" />'.
+''.&mt('Store').' ';
}
if ($ispage) {
@@ -1313,21 +1336,17 @@ END
if (($allowed) && ($folder!~/^supplemental/)) {
my %lt=&Apache::lonlocal::texthash(
'hd' => 'Hidden',
- 'ec' => 'URL hidden',
- 'sp' => 'Store Parameters');
+ 'ec' => 'URL hidden');
my $enctext=
((&Apache::lonratedt::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="1"':'');
my $hidtext=
((&Apache::lonratedt::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':'');
$line.=(<
- $lt{'hd'}
+ $lt{'hd'}
- $lt{'ec'}
+ $lt{'ec'}
$parameterset
-
-
-
ENDPARMS
}
$line.="";
@@ -1442,8 +1461,8 @@ sub verifycontent {
my $r=shift;
my $loaderror=&Apache::lonnet::overloaderror($r);
if ($loaderror) { return $loaderror; }
-
- $r->print('Verify Content '.
+ my $html=&Apache::lonxml::xmlbegin();
+ $r->print($html.'Verify Content '.
&Apache::loncommon::bodytag('Verify Course Documents'));
$hashtied=0;
undef %alreadyseen;
@@ -1471,7 +1490,8 @@ sub verifycontent {
sub checkversions {
my $r=shift;
- $r->print('Check Versions '.
+ my $html=&Apache::lonxml::xmlbegin();
+ $r->print($html.'Check Versions '.
&Apache::loncommon::bodytag('Check Course Document Versions'));
my $header='';
my $startsel='';
@@ -1862,8 +1882,9 @@ sub handler {
my $now=time;
# print screen
+ my $html=&Apache::lonxml::xmlbegin();
$r->print(<
+$html
The LearningOnline Network with CAPA