version 1.138, 2004/08/22 18:15:54
|
version 1.156, 2004/12/14 21:10:58
|
Line 40 use Apache::lonnavmaps;
|
Line 40 use Apache::lonnavmaps;
|
use HTML::Entities; |
use HTML::Entities; |
use GDBM_File; |
use GDBM_File; |
use Apache::lonlocal; |
use Apache::lonlocal; |
|
use Cwd; |
|
|
my $iconpath; |
my $iconpath; |
|
|
Line 254 sub exportcourse {
|
Line 255 sub exportcourse {
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef); |
my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef); |
my $curRes; |
my $curRes; |
|
my $outcome; |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['finishexport']); |
['finishexport']); |
Line 277 sub exportcourse {
|
Line 279 sub exportcourse {
|
$discussions[0] = $ENV{'form.discussion'}; |
$discussions[0] = $ENV{'form.discussion'}; |
} |
} |
} |
} |
my $curRes; |
if (@exportitems == 0 && @discussions == 0) { |
my $count; |
$outcome = '<br />As you did not select any content items or discussions for export, an IMS package has not been created. Please <a href="javascript:history.go(-1)">go back</a> to select either content items or discussions for export'; |
my %symbs; |
} else { |
my $display; |
my $now = time; |
while ($curRes = $it->next()) { |
my $count = 0; |
if (ref($curRes)) { |
my %symbs; |
$count ++; |
my $manifestok = 0; |
$symbs{$count} = $curRes->symb(); |
my $imsresources; |
if (grep/^$count$/,@exportitems) { |
my $tempexport; |
$display.= 'Export content item '.$curRes->title()."<br />\n"; |
my $copyresult; |
|
my $ims_manifest = &create_ims_store($now,\$manifestok,\$outcome,\$tempexport); |
|
if ($manifestok) { |
|
&build_package($now,$navmap,\@exportitems,\@discussions,\$outcome,\$tempexport,\$copyresult,$ims_manifest); |
|
close($ims_manifest); |
|
|
|
#Create zip file in prtspool |
|
my $imszipfile = '/prtspool/'. |
|
$ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'. |
|
time.'_'.rand(1000000000).'.zip'; |
|
# zip can cause an sh launch which can pass along all of %ENV |
|
# which can be too large for /bin/sh to handle |
|
my %oldENV=%ENV; |
|
undef(%ENV); |
|
my $cwd = &Cwd::getcwd(); |
|
my $imszip = '/home/httpd/'.$imszipfile; |
|
chdir $tempexport; |
|
open(OUTPUT, "zip -r $imszip * 2> /dev/null |"); |
|
close(OUTPUT); |
|
chdir $cwd; |
|
%ENV=%oldENV; |
|
undef(%oldENV); |
|
$outcome .= 'Download the zip file from <a href="'.$imszipfile.'">IMS course archive</a><br />'; |
|
if ($copyresult) { |
|
$outcome .= 'The following errors occurred during export - '.$copyresult; |
} |
} |
if (grep/^$count$/,@discussions) { |
} else { |
$display.= 'Export discussion posts '.$curRes->title()."<br />\n"; |
$outcome = '<br />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.<br />'; |
} |
|
} |
} |
} |
} |
|
|
$r->print('<html><head><title>Export Course</title></head>'. |
$r->print('<html><head><title>Export Course</title></head>'. |
&Apache::loncommon::bodytag('Export course to IMS or SCORM content package' |
&Apache::loncommon::bodytag('Export course to IMS or SCORM content package')); |
)); |
$r->print($outcome); |
|
|
my $exportfile; |
|
$r->print($display); |
|
$r->print('</body></html>'); |
$r->print('</body></html>'); |
} else { |
} else { |
my $display; |
my $display; |
Line 433 function containerCheck(item) {
|
Line 455 function containerCheck(item) {
|
} |
} |
} |
} |
|
|
|
sub create_ims_store { |
|
my ($now,$manifestok,$outcome,$tempexport) = @_; |
|
$$tempexport = $Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/ims_exports'; |
|
my $ims_manifest; |
|
if (!-e $$tempexport) { |
|
mkdir($$tempexport,0700); |
|
} |
|
$$tempexport .= '/'.$now; |
|
if (!-e $$tempexport) { |
|
mkdir($$tempexport,0700); |
|
} |
|
$$tempexport .= '/'.$ENV{'user.domain'}.'_'.$ENV{'user.name'}; |
|
if (!-e $$tempexport) { |
|
mkdir($$tempexport,0700); |
|
} |
|
# open manifest file |
|
my $manifest = '/imsmanifest.xml'; |
|
my $manifestfilename = $$tempexport.$manifest; |
|
if ($ims_manifest = Apache::File->new('>'.$manifestfilename)) { |
|
$$manifestok=1; |
|
print $ims_manifest |
|
'<?xml version="1.0" encoding="UTF-8"?>'."\n". |
|
'<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"'. |
|
' xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2"'. |
|
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'. |
|
' identifier="MANIFEST-'.$ENV{'request.course.id'}.'-'.$now.'"'. |
|
' xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1imscp_v1p1.xsd'. |
|
' http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd">'."\n". |
|
' <organizations default="ORG-."'.$ENV{'request,course.id'}.'-'.$now.'">'."\n". |
|
' <organization identifier="ORG-'.$ENV{'request.course.id'}.'-'.$now.'"'. |
|
' structure="hierarchical">'."\n". |
|
' <title>'.$ENV{'request.'.$ENV{'request.course.id'}.'.description'}.'</title>' |
|
} else { |
|
$$outcome .= 'An error occurred opening the IMS manifest file.<br />' |
|
; |
|
} |
|
return $ims_manifest; |
|
} |
|
|
|
sub build_package { |
|
my ($now,$navmap,$exportitems,$discussions,$outcome,$tempexport,$copyresult,$ims_manifest) = @_; |
|
# first iterator to look for dependencies |
|
my $it = $navmap->getIterator(undef,undef,undef,1,undef,undef); |
|
my $curRes; |
|
my $count = 0; |
|
my $depth = 0; |
|
my $lastcontainer = 0; |
|
my %parent = (); |
|
my @dependencies = (); |
|
my $cnum = $ENV{'request.'.$ENV{'request.course.id'}.'.num'}; |
|
my $cdom = $ENV{'request.'.$ENV{'request.course.id'}.'.domain'}; |
|
while ($curRes = $it->next()) { |
|
if (ref($curRes)) { |
|
$count ++; |
|
} |
|
if ($curRes == $it->BEGIN_MAP()) { |
|
$depth++; |
|
$parent{$depth} = $lastcontainer; |
|
} |
|
if ($curRes == $it->END_MAP()) { |
|
$depth--; |
|
$lastcontainer = $parent{$depth}; |
|
} |
|
if (ref($curRes)) { |
|
if ($curRes->is_sequence() || $curRes->is_page()) { |
|
$lastcontainer = $count; |
|
} |
|
if (grep/^$count$/,@$exportitems) { |
|
&get_dependencies($exportitems,\%parent,$depth,\@dependencies); |
|
} |
|
} |
|
} |
|
# second iterator to build manifest and store resources |
|
$it = $navmap->getIterator(undef,undef,undef,1,undef,undef); |
|
$depth = 0; |
|
my $prevdepth; |
|
$count = 0; |
|
my $imsresources; |
|
my $pkgdepth; |
|
if ($curRes == $it->BEGIN_MAP()) { |
|
$prevdepth = $depth; |
|
$depth++; |
|
} |
|
if ($curRes == $it->END_MAP()) { |
|
$prevdepth = $depth; |
|
$depth--; |
|
} |
|
|
|
if (ref($curRes)) { |
|
if ((grep/^$count$/,@$exportitems) || (grep/^$count$/,@dependencies)) { |
|
my $symb = $curRes->symb(); |
|
my $isvisible = 'true'; |
|
my $resourceref; |
|
if ($curRes->randomout()) { |
|
$isvisible = 'false'; |
|
} |
|
unless ($curRes->is_sequence()) { |
|
$resourceref = 'identifierref="RES-'.$ENV{'request.course.id'}.'-'.$count.'"'; |
|
} |
|
if (($depth <= $prevdepth) && ($count > 1)) { |
|
print $ims_manifest ' </item>'."\n"; |
|
} |
|
$prevdepth = $depth; |
|
|
|
my $itementry = |
|
'<item identifier="ITEM-'.$ENV{'request.course.id'}.'-'.$count. |
|
'" isvisible="'.$isvisible.'" '.$resourceref.'>'. |
|
'<title>'.$curRes->title().'</title>'; |
|
print $ims_manifest "\n".$itementry; |
|
|
|
unless ($curRes->is_sequence()) { |
|
my $content_file; |
|
my @hrefs = (); |
|
&process_content($count,$curRes,$cdom,$cnum,$symb,$content_file,\@hrefs,$copyresult,$tempexport); |
|
if ($content_file) { |
|
$imsresources .= "\n". |
|
' <resource identifier="RES-'.$ENV{'request.course.id'}.'-'.$count. |
|
'" type="webcontent" href="'.$content_file.'">'."\n". |
|
' <file href="'.$content_file.'" />'."\n"; |
|
foreach (@hrefs) { |
|
$imsresources .= |
|
' <file href="'.$_.'" />'."\n"; |
|
} |
|
$imsresources .= ' </resource>'."\n"; |
|
} |
|
} |
|
$pkgdepth = $depth; |
|
} |
|
} |
|
while ($pkgdepth > -1) { |
|
print $ims_manifest " </item>\n"; |
|
$pkgdepth --; |
|
} |
|
my $resource_text = qq| |
|
</organization> |
|
</organizations> |
|
<resources> |
|
$imsresources |
|
</resources> |
|
</manifest> |
|
|; |
|
print $ims_manifest $resource_text; |
|
} |
|
|
|
sub get_dependencies { |
|
my ($exportitems,$parent,$depth,$dependencies) = @_; |
|
if ($depth > 1) { |
|
unless (grep/^$$parent{$depth}$/,@$exportitems || grep/^$$parent{$depth}$/,@$dependencies) { |
|
push @$dependencies, $$parent{$depth}; |
|
if ($depth > 2) { |
|
&get_dependencies($exportitems,$parent,$depth-1,$dependencies); |
|
} |
|
} |
|
} |
|
} |
|
|
|
sub process_content { |
|
my ($count,$curRes,$cdom,$cnum,$symb,$content_file,$href,$copyresult,$tempexport) = @_; |
|
my $content_type; |
|
my $message; |
|
# find where user is author or co-author |
|
my %roleshash = &Appache::lonnet::get_my_roles(); |
|
if ($curRes->is_page()) { |
|
$content_type = 'page'; |
|
} elsif ($symb =~ m-public/$cdom/$cnum/syllabus$-) { |
|
$content_type = 'syllabus'; |
|
} elsif ($symb =~ m-\.sequence____\d+____ext-) { |
|
$content_type = 'external'; |
|
} elsif ($symb =~ m-adm/navmaps$-) { |
|
$content_type = 'navmap'; |
|
} elsif ($symb =~ m-adm/$cdom/$cnum/\d+/smppg$-) { |
|
$content_type = 'simplepage'; |
|
} elsif ($symb =~ m-$-) { |
|
$content_type = 'simpleproblem'; |
|
} elsif ($symb =~ m-adm/$cdom/$cnum/\d+/bulletinboard$-) { |
|
$content_type = 'bulletinboard'; |
|
} elsif ($symb =~ m-adm/$cdom/$cnum/\d+/aboutme$-) { |
|
$content_type = 'aboutme'; |
|
} elsif ($symb =~ m-uploaded/$cdom/$cnum-) { |
|
&replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,'uploaded'); |
|
} elsif ($symb =~ m-\.sequence____\d+____([^/])/([^/])-) { |
|
my $coauth = $2.':'.$1.':ca'; |
|
my $canedit = 0; |
|
if ($1 eq $ENV{'user.domain'} && $2 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) { |
|
&replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,'resource'); |
|
} else { |
|
&replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,'noedit'); |
|
} |
|
} |
|
$$copyresult .= $message."\n"; |
|
} |
|
|
|
sub replicate_content { |
|
my ($cdom,$cnum,$tempexport,$symb,$count,$message,$caller) = @_; |
|
my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
|
my $feedurl = &Apache::lonnet::clutter($url); |
|
|
|
my $content; |
|
my $filename; |
|
my $repstatus; |
|
if ($url =~ m-[^/]/(.+)$-) { |
|
$filename = $1; |
|
if (!-e $tempexport.'/resources') { |
|
mkdir($tempexport.'/resources',0700); |
|
} |
|
if (!-e $tempexport.'/resources') { |
|
mkdir($tempexport.'/resources/'.$count,0700); |
|
} |
|
my $destination = $$tempexport.'/resources/'.$count.'/'.$filename; |
|
my $copiedfile; |
|
if ($copiedfile = Apache::File->new('>'.$destination)) { |
|
my $content; |
|
if ($caller eq 'uploaded' || $caller eq 'resource') { |
|
$content = &Apache::lonnet::getfile($url); |
|
if ($content eq -1) { |
|
$$message = 'Could not copy file '.$filename; |
|
} else { |
|
$repstatus = 'ok'; |
|
} |
|
} elsif ($caller eq 'noedit') { |
|
my $rtncode; |
|
$repstatus = &getuploaded('GET',$url,$cdom,$cnum,$content,$rtncode); |
|
unless ($repstatus eq 'ok') { |
|
$$message = 'Could not render '.$url.' server message - '.$rtncode; |
|
} |
|
} |
|
if ($repstatus eq 'ok') { |
|
print $copiedfile $content; |
|
} |
|
close($copiedfile); |
|
} else { |
|
$$message = 'Could not open destination file for '.$filename."\n"; |
|
} |
|
} else { |
|
$$message = 'Could not determine name of file for '; |
|
} |
|
return $repstatus; |
|
} |
|
|
# Imports the given (name, url) resources into the course |
# Imports the given (name, url) resources into the course |
# coursenum, coursedom, and folder must precede the list |
# coursenum, coursedom, and folder must precede the list |
Line 440 sub group_import {
|
Line 711 sub group_import {
|
my $coursenum = shift; |
my $coursenum = shift; |
my $coursedom = shift; |
my $coursedom = shift; |
my $folder = shift; |
my $folder = shift; |
|
my $container = shift; |
|
my $caller = shift; |
while (@_) { |
while (@_) { |
my $name = shift; |
my $name = shift; |
my $url = shift; |
my $url = shift; |
|
if (($url =~ m#^/uploaded/$coursedom/$coursenum/(default_\d+\.)(page|sequence)$#) && ($caller eq 'londocs')) { |
|
my $errtext = ''; |
|
my $fatal = 0; |
|
my $newmapstr = '<map>'."\n". |
|
'<resource id="1" src="" type="start"></resource>'."\n". |
|
'<link from="1" to="2" index="1"></link>'."\n". |
|
'<resource id="2" src="" type="finish"></resource>'."\n". |
|
'</map>'; |
|
$ENV{'form.output'}=$newmapstr; |
|
my $home=&Apache::lonnet::homeserver($coursenum,$coursedom); |
|
my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$home, |
|
'output',$1.$2); |
|
if ($result != m|^/uploaded/|) { |
|
$errtext.='Map not saved: A network error occured when trying to save the new map. '; |
|
$fatal = 2; |
|
} |
|
if ($fatal) { |
|
return ($errtext,$fatal); |
|
} |
|
} |
if ($url) { |
if ($url) { |
my $idx = $#Apache::lonratedt::resources + 1; |
my $idx = $#Apache::lonratedt::resources + 1; |
$Apache::lonratedt::order[$#Apache::lonratedt::order+1]=$idx; |
$Apache::lonratedt::order[$#Apache::lonratedt::order+1]=$idx; |
Line 454 sub group_import {
|
Line 747 sub group_import {
|
join ':', ($name, $url, $ext, 'normal', 'res'); |
join ':', ($name, $url, $ext, 'normal', 'res'); |
} |
} |
} |
} |
return &storemap($coursenum, $coursedom, $folder.'.sequence'); |
return &storemap($coursenum, $coursedom, $folder.'.'.$container); |
} |
} |
|
|
sub breadcrumbs { |
sub breadcrumbs { |
my ($where)=@_; |
my ($where)=@_; |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
my (@folders)=split('&',$ENV{'form.folderpath'}); |
my (@folders); |
|
if ($ENV{'form.pagepath'}) { |
|
@folders = split('&',$ENV{'form.pagepath'}); |
|
} else { |
|
@folders=split('&',$ENV{'form.folderpath'}); |
|
} |
my $folderpath; |
my $folderpath; |
while (@folders) { |
while (@folders) { |
my $folder=shift(@folders); |
my $folder=shift(@folders); |
Line 488 sub editor {
|
Line 786 sub editor {
|
$r->print(&breadcrumbs($folder)); |
$r->print(&breadcrumbs($folder)); |
my $errtext=''; |
my $errtext=''; |
my $fatal=0; |
my $fatal=0; |
|
my $container='sequence'; |
|
if ($ENV{'form.pagepath'}) { |
|
$container='page'; |
|
} |
($errtext,$fatal)= |
($errtext,$fatal)= |
&mapread($coursenum,$coursedom,$folder.'.sequence'); |
&mapread($coursenum,$coursedom,$folder.'.'.$container); |
if ($#Apache::lonratedt::order<1) { |
if ($#Apache::lonratedt::order<1) { |
$Apache::lonratedt::order[0]=1; |
$Apache::lonratedt::order[0]=1; |
$Apache::lonratedt::resources[1]=''; |
$Apache::lonratedt::resources[1]=''; |
Line 557 sub editor {
|
Line 859 sub editor {
|
} |
} |
# store the changed version |
# store the changed version |
|
|
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.sequence'); |
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container); |
if ($fatal) { |
if ($fatal) { |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
return; |
return; |
Line 589 sub editor {
|
Line 891 sub editor {
|
$Apache::lonratedt::order[$#Apache::lonratedt::order+1]= |
$Apache::lonratedt::order[$#Apache::lonratedt::order+1]= |
$newidx; |
$newidx; |
|
|
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.sequence'); |
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container); |
if ($fatal) { |
if ($fatal) { |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
return; |
return; |
Line 623 sub editor {
|
Line 925 sub editor {
|
$Apache::lonratedt::order[$idx]=$i; |
$Apache::lonratedt::order[$idx]=$i; |
} |
} |
} elsif ($cmd eq 'rename') { |
} elsif ($cmd eq 'rename') { |
|
my $ratstr = $Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]]; |
my ($rtitle,@rrest)=split(/\:/, |
my ($rtitle,@rrest)=split(/\:/, |
$Apache::lonratedt::resources[ |
$Apache::lonratedt::resources[ |
$Apache::lonratedt::order[$idx]]); |
$Apache::lonratedt::order[$idx]]); |
Line 631 sub editor {
|
Line 934 sub editor {
|
$comment=~s/\</\<\;/g; |
$comment=~s/\</\<\;/g; |
$comment=~s/\>/\>\;/g; |
$comment=~s/\>/\>\;/g; |
$comment=~s/\:/\:/g; |
$comment=~s/\:/\:/g; |
$Apache::lonratedt::resources[ |
if ($comment=~/\S/) { |
|
$Apache::lonratedt::resources[ |
$Apache::lonratedt::order[$idx]]= |
$Apache::lonratedt::order[$idx]]= |
$comment.':'.join(':',@rrest); |
$comment.':'.join(':',@rrest); |
|
} |
} |
} |
# Store the changed version |
# Store the changed version |
($errtext,$fatal)=&storemap($coursenum,$coursedom, |
($errtext,$fatal)=&storemap($coursenum,$coursedom, |
$folder.'.sequence'); |
$folder.'.'.$container); |
if ($fatal) { |
if ($fatal) { |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
return; |
return; |
Line 657 sub editor {
|
Line 961 sub editor {
|
} |
} |
# Store the changed version |
# Store the changed version |
($errtext,$fatal)=group_import($coursenum, $coursedom, $folder, |
($errtext,$fatal)=group_import($coursenum, $coursedom, $folder, |
@imports); |
$container,'londocs',@imports); |
if ($fatal) { |
if ($fatal) { |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
return; |
return; |
Line 675 sub editor {
|
Line 979 sub editor {
|
|
|
# Store the changed version |
# Store the changed version |
($errtext,$fatal)=&storemap($coursenum,$coursedom, |
($errtext,$fatal)=&storemap($coursenum,$coursedom, |
$folder.'.sequence'); |
$folder.'.'.$container); |
if ($fatal) { |
if ($fatal) { |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
$r->print('<p><font color="red">'.$errtext.'</font></p>'); |
return; |
return; |
Line 685 sub editor {
|
Line 989 sub editor {
|
# ---------------------------------------------------------------- End commands |
# ---------------------------------------------------------------- End commands |
# ---------------------------------------------------------------- Print screen |
# ---------------------------------------------------------------- Print screen |
my $idx=0; |
my $idx=0; |
|
my $shown=0; |
$r->print('<table>'); |
$r->print('<table>'); |
foreach (@Apache::lonratedt::order) { |
foreach (@Apache::lonratedt::order) { |
my ($name,$url)=split(/\:/,$Apache::lonratedt::resources[$_]); |
my ($name,$url)=split(/\:/,$Apache::lonratedt::resources[$_]); |
unless ($name) { $name=(split(/\//,$url))[-1]; } |
unless ($name) { $name=(split(/\//,$url))[-1]; } |
unless ($name) { next; } |
unless ($name) { $idx++; next; } |
$r->print(&entryline($idx,$name,$url,$folder,$allowed,$_,$coursenum)); |
$r->print(&entryline($idx,$name,$url,$folder,$allowed,$_,$coursenum)); |
$idx++; |
$idx++; |
|
$shown++; |
} |
} |
unless ($idx) { |
unless ($shown) { |
$r->print('<tr><td>'.&mt('Currently no documents.').'</td></tr>'); |
$r->print('<tr><td>'.&mt('Currently no documents.').'</td></tr>'); |
} |
} |
$r->print('</table>'); |
$r->print('</table>'); |
Line 709 sub entryline {
|
Line 1015 sub entryline {
|
&Apache::lonnet::unescape($title)),'"<>&\''); |
&Apache::lonnet::unescape($title)),'"<>&\''); |
my $renametitle=$title; |
my $renametitle=$title; |
my $foldertitle=$title; |
my $foldertitle=$title; |
|
my $pagetitle=$title; |
my $orderidx=$Apache::lonratedt::order[$index]; |
my $orderidx=$Apache::lonratedt::order[$index]; |
if ($title=~ /^(\d+)___&&&___(\w+)___&&&___(\w+)___&&&___(.*)$/ ) { |
if ($title=~ /^(\d+)___&&&___(\w+)___&&&___(\w+)___&&&___(.*)$/ ) { |
$foldertitle=&Apache::lontexconvert::msgtexconverted($4); |
$foldertitle=&Apache::lontexconvert::msgtexconverted($4); |
Line 720 sub entryline {
|
Line 1027 sub entryline {
|
$renametitle=~s/\"\;/\\\"/g; |
$renametitle=~s/\"\;/\\\"/g; |
my $line='<tr>'; |
my $line='<tr>'; |
# Edit commands |
# Edit commands |
|
my $container; |
my $folderpath; |
my $folderpath; |
if ($ENV{'form.folderpath'}) { |
if ($ENV{'form.folderpath'}) { |
|
$container = 'sequence'; |
$folderpath=&Apache::lonnet::escape($ENV{'form.folderpath'}); |
$folderpath=&Apache::lonnet::escape($ENV{'form.folderpath'}); |
# $htmlfoldername=&HTML::Entities::encode($ENV{'form.foldername'},'<>&"'); |
# $htmlfoldername=&HTML::Entities::encode($ENV{'form.foldername'},'<>&"'); |
} |
} |
|
my ($pagepath,$pagesymb); |
|
if ($ENV{'form.pagepath'}) { |
|
$container = 'page'; |
|
$pagepath=&Apache::lonnet::escape($ENV{'form.pagepath'}); |
|
$pagesymb=&Apache::lonnet::escape($ENV{'form.pagesymb'}); |
|
} |
if ($allowed) { |
if ($allowed) { |
my $incindex=$index+1; |
my $incindex=$index+1; |
my $selectbox=''; |
my $selectbox=''; |
Line 746 sub entryline {
|
Line 1061 sub entryline {
|
'dw' => 'Move Down', |
'dw' => 'Move Down', |
'rm' => 'Remove', |
'rm' => 'Remove', |
'rn' => 'Rename'); |
'rn' => 'Rename'); |
$line.=(<<END); |
if ($ENV{'form.pagepath'}) { |
|
$line.=(<<END); |
|
<form name="entry_$index" action="/adm/coursedocs" method="post"> |
|
<input type="hidden" name="pagepath" value="$ENV{'form.pagepath'}" /> |
|
<input type="hidden" name="pagesymb" value="$ENV{'form.pagesymb'}" /> |
|
<input type="hidden" name="setparms" value="$orderidx" /> |
|
<td><table border='0' cellspacing='2' cellpadding='0'> |
|
<tr><td bgcolor="#DDDDDD"> |
|
<a href='/adm/coursedocs?cmd=up_$index&pagepath=$pagepath&pagesymb=$pagesymb'> |
|
<img src="${iconpath}move_up.gif" alt='$lt{'up'}' border='0' /></a></td></tr> |
|
<tr><td bgcolor="#DDDDDD"> |
|
<a href='/adm/coursedocs?cmd=down_$index&pagepath=$pagepath&pagesymb=$pagesymb'> |
|
<img src="${iconpath}move_down.gif" alt='$lt{'dw'}' border='0' /></a></td></tr> |
|
</table></td> |
|
<td>$selectbox |
|
</td><td bgcolor="#DDDDDD"> |
|
<a href='javascript:removeres("$pagepath","$index","$renametitle","page","$pagesymb");'> |
|
<font size="-2" color="#990000">$lt{'rm'}</font></a> |
|
<a href='javascript:changename("$pagepath","$index","$renametitle","page","$pagesymb");'> |
|
<font size="-2" color="#009900">$lt{'rn'}</font></a></td> |
|
END |
|
} else { |
|
$line.=(<<END); |
<form name="entry_$index" action="/adm/coursedocs" method="post"> |
<form name="entry_$index" action="/adm/coursedocs" method="post"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
<input type="hidden" name="setparms" value="$orderidx" /> |
<input type="hidden" name="setparms" value="$orderidx" /> |
Line 760 sub entryline {
|
Line 1097 sub entryline {
|
</table></td> |
</table></td> |
<td>$selectbox |
<td>$selectbox |
</td><td bgcolor="#DDDDDD"> |
</td><td bgcolor="#DDDDDD"> |
<a href='javascript:removeres("$folderpath","$index","$renametitle");'> |
<a href='javascript:removeres("$folderpath","$index","$renametitle","sequence");'> |
<font size="-2" color="#990000">$lt{'rm'}</font></a> |
<font size="-2" color="#990000">$lt{'rm'}</font></a> |
<a href='javascript:changename("$folderpath","$index","$renametitle");'> |
<a href='javascript:changename("$folderpath","$index","$renametitle","sequence");'> |
<font size="-2" color="#009900">$lt{'rn'}</font></a></td> |
<font size="-2" color="#009900">$lt{'rn'}</font></a></td> |
END |
END |
|
} |
} |
} |
# Figure out what kind of a resource this is |
# Figure out what kind of a resource this is |
my ($extension)=($url=~/\.(\w+)$/); |
my ($extension)=($url=~/\.(\w+)$/); |
my $uploaded=($url=~/^\/*uploaded\//); |
my $uploaded=($url=~/^\/*uploaded\//); |
my $icon=&Apache::loncommon::icon($url); |
my $icon=&Apache::loncommon::icon($url); |
my $isfolder=0; |
my $isfolder=0; |
|
my $ispage=0; |
my $folderarg; |
my $folderarg; |
|
my $pagearg; |
|
my $pagefile; |
if ($uploaded) { |
if ($uploaded) { |
if ($extension eq 'sequence') { |
if ($extension eq 'sequence') { |
$icon=$iconpath.'/folder_closed.gif'; |
$icon=$iconpath.'/folder_closed.gif'; |
Line 779 END
|
Line 1120 END
|
$url='/adm/coursedocs?'; |
$url='/adm/coursedocs?'; |
$folderarg=$1; |
$folderarg=$1; |
$isfolder=1; |
$isfolder=1; |
|
} elsif ($extension eq 'page') { |
|
$icon=$iconpath.'/page.gif'; |
|
$url=~/$coursenum\/([\/\w]+)\.page$/; |
|
$pagearg=$1; |
|
$url='/adm/coursedocs?'; |
|
$ispage=1; |
} else { |
} else { |
&Apache::lonnet::allowuploaded('/adm/coursedoc',$url); |
&Apache::lonnet::allowuploaded('/adm/coursedoc',$url); |
} |
} |
} |
} |
$url=~s/^http\&colon\;\/\//\/adm\/wrapper\/ext\//; |
$url=~s/^http\&colon\;\/\//\/adm\/wrapper\/ext\//; |
if ((!$isfolder) && ($residx) && ($folder!~/supplemental/)) { |
if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) { |
my $symb=&Apache::lonnet::symbclean( |
my $symb=&Apache::lonnet::symbclean( |
&Apache::lonnet::declutter('uploaded/'. |
&Apache::lonnet::declutter('uploaded/'. |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.'/'. |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.'/'. |
Line 804 END
|
Line 1151 END
|
} elsif ($url!~/\.(sequence|page)$/) { |
} elsif ($url!~/\.(sequence|page)$/) { |
$url='/adm/coursedocs/showdoc'.$url; |
$url='/adm/coursedocs/showdoc'.$url; |
} |
} |
|
} elsif ($url=~m|^/ext/|) { |
|
$url='/adm/wrapper'.$url; |
} |
} |
$url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb); |
$url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb); |
|
if ($container eq 'page') { |
|
my $symb=$ENV{'form.pagesymb'}; |
|
|
|
$url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]); |
|
$url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb); |
|
} |
} |
} |
my $parameterset=' '; |
my $parameterset=' '; |
if ($isfolder) { |
if ($isfolder) { |
Line 814 END
|
Line 1169 END
|
if ($folderpath) { $folderpath.='&' }; |
if ($folderpath) { $folderpath.='&' }; |
$folderpath.=$folderarg.'&'.$foldername; |
$folderpath.=$folderarg.'&'.$foldername; |
$url.='folderpath='.&Apache::lonnet::escape($folderpath); |
$url.='folderpath='.&Apache::lonnet::escape($folderpath); |
$parameterset=&mt('Randomly Pick: '). |
$parameterset='<label>'.&mt('Randomly Pick: '). |
'<input type="text" size="4" name="randpick_'.$orderidx.'" value="'. |
'<input type="text" size="4" name="randpick_'.$orderidx.'" value="'. |
(&Apache::lonratedt::getparameter($orderidx,'parameter_randompick'))[0].'" />'; |
(&Apache::lonratedt::getparameter($orderidx, |
|
'parameter_randompick'))[0]. |
|
'" />'.'</label>'; |
|
|
|
} |
|
if ($ispage) { |
|
my $pagename=&Apache::lonnet::escape($pagetitle); |
|
my $pagepath; |
|
my $folderpath=$ENV{'form.folderpath'}; |
|
if ($folderpath) { $pagepath = $folderpath.'&' }; |
|
$pagepath.=$pagearg.'&'.$pagename; |
|
my $symb=$ENV{'form.pagesymb'}; |
|
if (!$symb) { |
|
my $path='uploaded/'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.'/'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.'/'; |
|
$symb=&Apache::lonnet::encode_symb($path.$folder.'.sequence', |
|
$residx, |
|
$path.$pagearg.'.page'); |
|
} |
|
$url.='pagepath='.&Apache::lonnet::escape($pagepath). |
|
'&pagesymb='.&Apache::lonnet::escape($symb); |
} |
} |
$line.='<td bgcolor="#FFFFBB"><a href="'.$url.'"><img src="'.$icon. |
$line.='<td bgcolor="#FFFFBB"><a href="'.$url.'"><img src="'.$icon. |
'" border="0"></a></td>'. |
'" border="0"></a></td>'. |
Line 832 END
|
Line 1208 END
|
((&Apache::lonratedt::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':''); |
((&Apache::lonratedt::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':''); |
$line.=(<<ENDPARMS); |
$line.=(<<ENDPARMS); |
<td bgcolor="#BBBBFF"><font size='-2'> |
<td bgcolor="#BBBBFF"><font size='-2'> |
<input type="checkbox" name="hidprs_$orderidx" $hidtext/> $lt{'hd'}</td> |
<nobr><label><input type="checkbox" name="hidprs_$orderidx" $hidtext/> $lt{'hd'}</label></nobr></td> |
<td bgcolor="#BBBBFF"><font size='-2'> |
<td bgcolor="#BBBBFF"><font size='-2'> |
<input type="checkbox" name="encprs_$orderidx" $enctext/> $lt{'ec'}</td> |
<nobr><label><input type="checkbox" name="encprs_$orderidx" $enctext/> $lt{'ec'}</label></nobr></td> |
<td bgcolor="#BBBBFF"><font size="-2">$parameterset</font></td> |
<td bgcolor="#BBBBFF"><font size="-2">$parameterset</font></td> |
<td bgcolor="#BBBBFF"><font size='-2'> |
<td bgcolor="#BBBBFF"><font size='-2'> |
<input type="submit" value="$lt{'sp'}" /> |
<input type="submit" value="$lt{'sp'}" /> |
Line 874 sub untiehash {
|
Line 1250 sub untiehash {
|
|
|
sub checkonthis { |
sub checkonthis { |
my ($r,$url,$level,$title)=@_; |
my ($r,$url,$level,$title)=@_; |
|
$url=&Apache::lonnet::unescape($url); |
$alreadyseen{$url}=1; |
$alreadyseen{$url}=1; |
$r->rflush(); |
$r->rflush(); |
if (($url) && ($url!~/^\/uploaded\//) && ($url!~/\*$/)) { |
if (($url) && ($url!~/^\/uploaded\//) && ($url!~/\*$/)) { |
Line 960 sub verifycontent {
|
Line 1337 sub verifycontent {
|
%alreadyseen=(); |
%alreadyseen=(); |
&tiehash(); |
&tiehash(); |
foreach (keys %hash) { |
foreach (keys %hash) { |
if (($_=~/^src\_(.+)$/) && (!$alreadyseen{$hash{$_}})) { |
if ($hash{$_}=~/\.(page|sequence)$/) { |
|
if (($_=~/^src_/) && ($alreadyseen{&Apache::lonnet::unescape($hash{$_})})) { |
|
$r->print('<hr /><font color="red">'. |
|
&mt('The following sequence or page is included more than once in your course: '). |
|
&Apache::lonnet::unescape($hash{$_}).'</font><br />'. |
|
&mt('Note that grading records for problems included in this sequence or folder will overlap.<hr />')); |
|
} |
|
} |
|
if (($_=~/^src\_(.+)$/) && (!$alreadyseen{&Apache::lonnet::unescape($hash{$_})})) { |
&checkonthis($r,$hash{$_},0,$hash{'title_'.$1}); |
&checkonthis($r,$hash{$_},0,$hash{'title_'.$1}); |
} |
} |
} |
} |
Line 1238 sub is_hash_old {
|
Line 1623 sub is_hash_old {
|
sub changewarning { |
sub changewarning { |
my ($r,$postexec)=@_; |
my ($r,$postexec)=@_; |
if (!&is_hash_old()) { return; } |
if (!&is_hash_old()) { return; } |
|
my $pathvar='folderpath'; |
|
my $path=&Apache::lonnet::escape($ENV{'form.folderpath'}); |
|
if (defined($ENV{'form.pagepath'})) { |
|
$pathvar='pagepath'; |
|
$path=&Apache::lonnet::escape($ENV{'form.pagepath'}); |
|
$path.='&symb='.&Apache::lonnet::escape($ENV{'form.pagesymb'}); |
|
} |
$r->print( |
$r->print( |
'<script>function reinit(tf) { tf.submit();'.$postexec.' }</script>'. |
'<script>function reinit(tf) { tf.submit();'.$postexec.' }</script>'. |
'<form method="post" action="/adm/roles" target="loncapaclient">'. |
'<form method="post" action="/adm/roles" target="loncapaclient">'. |
'<input type="hidden" name="orgurl" value="/adm/coursedocs?folderpath='. |
'<input type="hidden" name="orgurl" value="/adm/coursedocs?'. |
&Apache::lonnet::escape($ENV{'form.folderpath'}). |
$pathvar.'='.$path. |
'" /><input type="hidden" name="selectrole" value="1" /><h3><font color="red">'. |
'" /><input type="hidden" name="selectrole" value="1" /><h3><font color="red">'. |
&mt('Changes will become active for your current session after'). |
&mt('Changes will become active for your current session after'). |
' <input type="hidden" name="'. |
' <input type="hidden" name="'. |
Line 1262 sub handler {
|
Line 1654 sub handler {
|
foreach ('Adding_Course_Doc','Main_Course_Documents', |
foreach ('Adding_Course_Doc','Main_Course_Documents', |
'Adding_External_Resource','Navigate_Content', |
'Adding_External_Resource','Navigate_Content', |
'Adding_Folders','Docs_Overview', 'Load_Map', |
'Adding_Folders','Docs_Overview', 'Load_Map', |
'Supplemental', 'Score_Upload_Form', |
'Supplemental','Score_Upload_Form','Adding_Pages', |
'Importing_LON-CAPA_Resource','Uploading_From_Harddrive', |
'Importing_LON-CAPA_Resource','Uploading_From_Harddrive', |
'Check_Resource_Versions','Verify_Content') { |
'Check_Resource_Versions','Verify_Content') { |
$help{$_}=&Apache::loncommon::help_open_topic('Docs_'.$_); |
$help{$_}=&Apache::loncommon::help_open_topic('Docs_'.$_); |
Line 1279 sub handler {
|
Line 1671 sub handler {
|
$help{'My Personal Info'} = &Apache::loncommon::help_open_topic( |
$help{'My Personal Info'} = &Apache::loncommon::help_open_topic( |
'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); |
'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); |
$help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); |
$help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); |
|
|
if ($ENV{'form.verify'}) { |
if ($ENV{'form.verify'}) { |
&verifycontent($r); |
&verifycontent($r); |
} elsif ($ENV{'form.versions'}) { |
} elsif ($ENV{'form.versions'}) { |
Line 1292 sub handler {
|
Line 1684 sub handler {
|
# is this a standard course? |
# is this a standard course? |
|
|
my $standard=($ENV{'request.course.uri'}=~/^\/uploaded\//); |
my $standard=($ENV{'request.course.uri'}=~/^\/uploaded\//); |
my $forcestandard; |
my $forcestandard = 0; |
my $forcesupplement; |
my $forcesupplement; |
my $script=''; |
my $script=''; |
my $allowed; |
my $allowed; |
my $events=''; |
my $events=''; |
my $showdoc=0; |
my $showdoc=0; |
|
my $containertag; |
|
my $uploadtag; |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['folderpath']); |
['folderpath','pagepath','pagesymb']); |
if ($ENV{'form.folderpath'}) { |
if ($ENV{'form.folderpath'}) { |
my (@folderpath)=split('&',$ENV{'form.folderpath'}); |
my (@folderpath)=split('&',$ENV{'form.folderpath'}); |
$ENV{'form.foldername'}=&Apache::lonnet::unescape(pop(@folderpath)); |
$ENV{'form.foldername'}=&Apache::lonnet::unescape(pop(@folderpath)); |
$ENV{'form.folder'}=pop(@folderpath); |
$ENV{'form.folder'}=pop(@folderpath); |
} |
} |
|
if ($ENV{'form.pagepath'}) { |
|
my (@pagepath)=split('&',$ENV{'form.pagepath'}); |
|
$ENV{'form.pagename'}=&Apache::lonnet::unescape(pop(@pagepath)); |
|
$ENV{'form.folder'}=pop(@pagepath); |
|
$containertag = '<input type="hidden" name="pagepath" value="" />'. |
|
'<input type="hidden" name="pagesymb" value="" />'; |
|
$uploadtag = '<input type="hidden" name="pagepath" value="'.$ENV{'form.pagepath'}.'" />'. |
|
'<input type="hidden" name="pagesymb" value="'.$ENV{'form.pagesymb'}.'" />'; |
|
} |
if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { |
if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { |
$showdoc='/'.$1; |
$showdoc='/'.$1; |
} |
} |
unless ($showdoc) { # got called from remote |
unless ($showdoc) { # got called from remote |
$forcestandard=($ENV{'form.folder'}=~/^default_/); |
if (($ENV{'form.folder'}=~/^default_/) || |
|
($ENV{'form.folder'} =~ m#^\d+/(pages|sequences)/#)) { |
|
$forcestandard = 1; |
|
} |
$forcesupplement=($ENV{'form.folder'}=~/^supplemental_/); |
$forcesupplement=($ENV{'form.folder'}=~/^supplemental_/); |
|
|
# does this user have privileges to post, etc? |
# does this user have privileges to post, etc? |
Line 1362 function makenewfolder(targetform,folder
|
Line 1768 function makenewfolder(targetform,folder
|
} |
} |
} |
} |
|
|
|
function makenewpage(targetform,folderseq) { |
|
var pagename=prompt('Name of New Page','New Page'); |
|
if (pagename) { |
|
targetform.importdetail.value=pagename+"="+folderseq; |
|
targetform.submit(); |
|
} |
|
} |
|
|
function makenewext(targetname) { |
function makenewext(targetname) { |
this.document.forms.extimport.useform.value=targetname; |
this.document.forms.extimport.useform.value=targetname; |
window.open('/adm/rat/extpickframe.html'); |
window.open('/adm/rat/extpickframe.html'); |
Line 1435 function finishpick() {
|
Line 1849 function finishpick() {
|
'";this.document.forms.'+form+'.submit();'); |
'";this.document.forms.'+form+'.submit();'); |
} |
} |
|
|
function changename(folderpath,index,oldtitle) { |
function changename(folderpath,index,oldtitle,container,pagesymb) { |
var title=prompt('New Title',oldtitle); |
var title=prompt('New Title',oldtitle); |
if (title) { |
if (title) { |
this.document.forms.renameform.title.value=title; |
this.document.forms.renameform.title.value=title; |
this.document.forms.renameform.cmd.value='rename_'+index; |
this.document.forms.renameform.cmd.value='rename_'+index; |
this.document.forms.renameform.folderpath.value=folderpath; |
if (container == 'sequence') { |
|
this.document.forms.renameform.folderpath.value=folderpath; |
|
} |
|
if (container == 'page') { |
|
this.document.forms.renameform.pagepath.value=folderpath; |
|
this.document.forms.renameform.pagesymb.value=pagesymb; |
|
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
} |
} |
|
|
function removeres(folderpath,index,oldtitle) { |
function removeres(folderpath,index,oldtitle,container,pagesymb) { |
if (confirm('Remove "'+oldtitle+'"?')) { |
if (confirm('Remove "'+oldtitle+'"?')) { |
this.document.forms.renameform.cmd.value='del_'+index; |
this.document.forms.renameform.cmd.value='del_'+index; |
this.document.forms.renameform.folderpath.value=folderpath; |
if (container == 'sequence') { |
|
this.document.forms.renameform.folderpath.value=folderpath; |
|
} |
|
if (container == 'page') { |
|
this.document.forms.renameform.pagepath.value=folderpath; |
|
this.document.forms.renameform.pagesymb.value=pagesymb; |
|
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
} |
} |
Line 1475 ENDNEWSCRIPT
|
Line 1901 ENDNEWSCRIPT
|
'selm' => 'Select Map', |
'selm' => 'Select Map', |
'load' => 'Load Map', |
'load' => 'Load Map', |
'newf' => 'New Folder', |
'newf' => 'New Folder', |
|
'newp' => 'New Composite Page', |
'extr' => 'External Resource', |
'extr' => 'External Resource', |
'syll' => 'Syllabus', |
'syll' => 'Syllabus', |
'navc' => 'Navigate Contents', |
'navc' => 'Navigate Contents', |
Line 1506 ENDNEWSCRIPT
|
Line 1933 ENDNEWSCRIPT
|
&Apache::lonnet::escape(&mt('Main Course Documents')); |
&Apache::lonnet::escape(&mt('Main Course Documents')); |
} |
} |
} |
} |
|
unless ($ENV{'form.pagepath'}) { |
|
$containertag = '<input type="hidden" name="folderpath" value="" />'; |
|
$uploadtag = '<input type="hidden" name="folderpath" value="'.$folderpath.'" />'; |
|
} |
|
|
$r->print(<<ENDCOURSEVERIFY); |
$r->print(<<ENDCOURSEVERIFY); |
<form name="renameform" method="post" action="/adm/coursedocs"> |
<form name="renameform" method="post" action="/adm/coursedocs"> |
<input type="hidden" name="title" /> |
<input type="hidden" name="title" /> |
<input type="hidden" name="cmd" /> |
<input type="hidden" name="cmd" /> |
<input type="hidden" name="folderpath" /> |
$containertag |
</form> |
</form> |
<form name="simpleedit" method="post" action="/adm/coursedocs"> |
<form name="simpleedit" method="post" action="/adm/coursedocs"> |
<input type=hidden name="importdetail" value=""> |
<input type=hidden name="importdetail" value=""> |
<input type="hidden" name="folderpath" value="$folderpath" /> |
$uploadtag |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="courseverify"> |
<form action="/adm/coursedocs" method="post" name="courseverify"> |
<table bgcolor="#AAAAAA" width="100%" cellspacing="4" cellpadding="4"> |
<table bgcolor="#AAAAAA" width="100%" cellspacing="4" cellpadding="4"> |
Line 1555 ENDCOURSEVERIFY
|
Line 1987 ENDCOURSEVERIFY
|
&changewarning($r,$postexec); |
&changewarning($r,$postexec); |
my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. |
my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. |
'.sequence'; |
'.sequence'; |
|
my $pageseq = '/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. |
|
'.page'; |
|
|
$r->print(<<ENDFORM); |
$r->print(<<ENDFORM); |
<table cellspacing=4 cellpadding=4><tr> |
<table cellspacing=4 cellpadding=4><tr> |
<th bgcolor="#DDDDDD">$lt{'uplm'}</th> |
<th bgcolor="#DDDDDD">$lt{'uplm'}</th> |
Line 1568 $lt{'file'}:<br />
|
Line 2003 $lt{'file'}:<br />
|
<br /> |
<br /> |
$lt{'title'}:<br /> |
$lt{'title'}:<br /> |
<input type="text" size="50" name="comment"> |
<input type="text" size="50" name="comment"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type="hidden" name="cmd" value="upload_default"> |
<input type="hidden" name="cmd" value="upload_default"> |
<nobr> |
<nobr> |
<input type="submit" value="$lt{'upld'}"> |
<input type="submit" value="$lt{'upld'}"> |
Line 1578 $lt{'title'}:<br />
|
Line 2013 $lt{'title'}:<br />
|
</td> |
</td> |
<td bgcolor="#DDDDDD"> |
<td bgcolor="#DDDDDD"> |
<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> |
<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=button onClick="javascript:groupsearch()" value="$lt{'srch'}"> |
<input type=button onClick="javascript:groupsearch()" value="$lt{'srch'}"> |
<nobr> |
<nobr> |
<input type=button onClick="javascript:groupimport();" value="$lt{'impo'}"> |
<input type=button onClick="javascript:groupimport();" value="$lt{'impo'}"> |
Line 1593 value="$lt{'selm'}"> <input type="submit
|
Line 2028 value="$lt{'selm'}"> <input type="submit
|
$help{'Load_Map'}</nobr> |
$help{'Load_Map'}</nobr> |
</p> |
</p> |
</form> |
</form> |
</td><td bgcolor="#DDDDDD"> |
</td> |
|
<td bgcolor="#DDDDDD"> |
|
ENDFORM |
|
unless ($ENV{'form.pagepath'}) { |
|
$r->print(<<ENDFORM); |
<form action="/adm/coursedocs" method="post" name="newfolder"> |
<form action="/adm/coursedocs" method="post" name="newfolder"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
<input type=hidden name="importdetail" value=""> |
<input type=hidden name="importdetail" value=""> |
Line 1603 onClick="javascript:makenewfolder(this.f
|
Line 2042 onClick="javascript:makenewfolder(this.f
|
value="$lt{'newf'}" />$help{'Adding_Folders'} |
value="$lt{'newf'}" />$help{'Adding_Folders'} |
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newext"> |
<form action="/adm/coursedocs" method="post" name="newpage"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
<input type=hidden name="importdetail" value=""> |
<input type=hidden name="importdetail" value=""> |
<nobr> |
<nobr> |
|
<input name="newpage" type="button" |
|
onClick="javascript:makenewpage(this.form,'$pageseq');" |
|
value="$lt{'newp'}" />$help{'Adding_Pages'} |
|
</nobr> |
|
</form> |
|
<form action="/adm/coursedocs" method="post" name="newext"> |
|
$uploadtag |
|
<input type=hidden name="importdetail" value=""> |
|
<nobr> |
<input name="newext" type="button" onClick="javascript:makenewext('newext');" |
<input name="newext" type="button" onClick="javascript:makenewext('newext');" |
value="$lt{'extr'}" /> $help{'Adding_External_Resource'} |
value="$lt{'extr'}" /> $help{'Adding_External_Resource'} |
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newsyl"> |
<form action="/adm/coursedocs" method="post" name="newsyl"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=hidden name="importdetail" |
<input type=hidden name="importdetail" |
value="Syllabus=/public/$coursedom/$coursenum/syllabus"> |
value="Syllabus=/public/$coursedom/$coursenum/syllabus"> |
<nobr> |
<nobr> |
Line 1621 value="Syllabus=/public/$coursedom/$cour
|
Line 2069 value="Syllabus=/public/$coursedom/$cour
|
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newnav"> |
<form action="/adm/coursedocs" method="post" name="newnav"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=hidden name="importdetail" |
<input type=hidden name="importdetail" |
value="Navigate Content=/adm/navmaps"> |
value="Navigate Content=/adm/navmaps"> |
<nobr> |
<nobr> |
Line 1630 $help{'Navigate_Content'}
|
Line 2078 $help{'Navigate_Content'}
|
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=hidden name="importdetail" value=""> |
<input type=hidden name="importdetail" value=""> |
<nobr> |
<nobr> |
<input name="newsmppg" type="button" value="$lt{'sipa'}" |
<input name="newsmppg" type="button" value="$lt{'sipa'}" |
Line 1638 onClick="javascript:makesmppage();" /> $
|
Line 2086 onClick="javascript:makesmppage();" /> $
|
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=hidden name="importdetail" value=""> |
<input type=hidden name="importdetail" value=""> |
<nobr> |
<nobr> |
<input name="newsmpproblem" type="button" value="$lt{'sipr'}" |
<input name="newsmpproblem" type="button" value="$lt{'sipr'}" |
Line 1646 onClick="javascript:makesmpproblem();" /
|
Line 2094 onClick="javascript:makesmpproblem();" /
|
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newexamupload"> |
<form action="/adm/coursedocs" method="post" name="newexamupload"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=hidden name="importdetail" value=""> |
<input type=hidden name="importdetail" value=""> |
<nobr> |
<nobr> |
<input name="newexamupload" type="button" value="$lt{'scuf'}" |
<input name="newexamupload" type="button" value="$lt{'scuf'}" |
Line 1655 $help{'Score_Upload_Form'}
|
Line 2103 $help{'Score_Upload_Form'}
|
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newbul"> |
<form action="/adm/coursedocs" method="post" name="newbul"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=hidden name="importdetail" value=""> |
<input type=hidden name="importdetail" value=""> |
<nobr> |
<nobr> |
<input name="newbulletin" type="button" value="$lt{'bull'}" |
<input name="newbulletin" type="button" value="$lt{'bull'}" |
Line 1664 $help{'Bulletin Board'}
|
Line 2112 $help{'Bulletin Board'}
|
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=hidden name="importdetail" |
<input type=hidden name="importdetail" |
value="$plainname=/adm/$udom/$uname/aboutme"> |
value="$plainname=/adm/$udom/$uname/aboutme"> |
<nobr> |
<nobr> |
Line 1673 $help{'My Personal Info'}
|
Line 2121 $help{'My Personal Info'}
|
</nobr> |
</nobr> |
</form> |
</form> |
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
<input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" /> |
$uploadtag |
<input type=hidden name="importdetail" value=""> |
<input type=hidden name="importdetail" value=""> |
<nobr> |
<nobr> |
<input name="newaboutsomeone" type="button" value="$lt{'abou'}" |
<input name="newaboutsomeone" type="button" value="$lt{'abou'}" |
onClick="javascript:makeabout();" /> |
onClick="javascript:makeabout();" /> |
</nobr> |
</nobr> |
|
ENDFORM |
|
} |
|
if ($ENV{'form.pagepath'}) { |
|
$r->print(<<ENDBLOCK); |
|
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
|
$uploadtag |
|
<input type=hidden name="importdetail" value=""> |
|
<nobr> |
|
<input name="newsmpproblem" type="button" value="$lt{'sipr'}" |
|
onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} |
|
</nobr> |
|
</form> |
|
<form action="/adm/coursedocs" method="post" name="newexamupload"> |
|
$uploadtag |
|
<input type=hidden name="importdetail" value=""> |
|
<nobr> |
|
<input name="newexamupload" type="button" value="$lt{'scuf'}" |
|
onClick="javascript:makeexamupload();" /> |
|
$help{'Score_Upload_Form'} |
|
</nobr> |
|
</form> |
|
ENDBLOCK |
|
} else { |
|
$r->print(<<ENDFORM); |
</form> |
</form> |
<form action="/adm/imsimportdocs" method="post" name="ims"> |
<form action="/adm/imsimportdocs" method="post" name="ims"> |
<input type="hidden" name="folder" value="$folder" /> |
<input type="hidden" name="folder" value="$folder" /> |
<input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" /> |
<input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" /> |
</nobr> |
</nobr> |
</form> |
</form> |
</td></tr> |
|
</table> |
|
ENDFORM |
ENDFORM |
|
} |
|
$r->print('</td></tr>'."\n". |
|
'</table>'); |
$r->print('</td></tr>'); |
$r->print('</td></tr>'); |
} |
} |
# ----------------------------------------------------- Supplemental documents |
# ----------------------------------------------------- Supplemental documents |
Line 1778 ENDSUPFORM
|
Line 2251 ENDSUPFORM
|
$r->print('</table>'); |
$r->print('</table>'); |
} else { |
} else { |
# -------------------------------------------------------- This is showdoc mode |
# -------------------------------------------------------- This is showdoc mode |
$r->print("<h1>".&mt('Uploaded Document').'</h1><p>'. |
$r->print("<h1>".&mt('Uploaded Document').' - '. |
|
&Apache::lonnet::gettitle($r->uri).'</h1><p>'. |
&mt('It is recommended that you use an up-to-date virus scanner before handling this file.')."</p><p><table>". |
&mt('It is recommended that you use an up-to-date virus scanner before handling this file.')."</p><p><table>". |
&entryline(0,&mt("Click to download or use your browser's Save Link function"),$showdoc).'</table></p>'); |
&entryline(0,&mt("Click to download or use your browser's Save Link function"),$showdoc).'</table></p>'); |
} |
} |