version 1.317, 2008/11/21 20:31:48
|
version 1.353, 2009/03/08 21:49:33
|
Line 59 my $hadchanges;
|
Line 59 my $hadchanges;
|
my %help=(); |
my %help=(); |
|
|
|
|
|
|
sub mapread { |
sub mapread { |
my ($coursenum,$coursedom,$map)=@_; |
my ($coursenum,$coursedom,$map)=@_; |
return |
return |
Line 84 sub authorhosts {
|
Line 83 sub authorhosts {
|
my %outhash=(); |
my %outhash=(); |
my $home=0; |
my $home=0; |
my $other=0; |
my $other=0; |
foreach (keys %env) { |
foreach my $key (keys(%env)) { |
if ($_=~/^user\.role\.(au|ca)\.(.+)$/) { |
if ($key=~/^user\.role\.(au|ca)\.(.+)$/) { |
my $role=$1; |
my $role=$1; |
my $realm=$2; |
my $realm=$2; |
my ($start,$end)=split(/\./,$env{$_}); |
my ($start,$end)=split(/\./,$env{$key}); |
if (($start) && ($start>time)) { next; } |
if (($start) && ($start>time)) { next; } |
if (($end) && (time>$end)) { next; } |
if (($end) && (time>$end)) { next; } |
my $ca; my $cd; |
my ($ca,$cd); |
if ($1 eq 'au') { |
if ($1 eq 'au') { |
$ca=$env{'user.name'}; |
$ca=$env{'user.name'}; |
$cd=$env{'user.domain'}; |
$cd=$env{'user.domain'}; |
Line 120 sub dumpbutton {
|
Line 119 sub dumpbutton {
|
my $type = &Apache::loncommon::course_type(); |
my $type = &Apache::loncommon::course_type(); |
if ($home+$other==0) { return ''; } |
if ($home+$other==0) { return ''; } |
if ($home) { |
if ($home) { |
return '<div>'. |
return '<input type="submit" name="dumpcourse" value="'. |
'<input type="submit" name="dumpcourse" value="'. |
|
&mt('Dump '.$type.' DOCS to Construction Space').'" />'. |
&mt('Dump '.$type.' DOCS to Construction Space').'" />'. |
&Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs'). |
&Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs'); |
'</div>'; |
|
} else { |
} else { |
return '<div>'. |
return '<div>'. |
&mt('Dump '.$type. |
&mt('Dump '.$type. |
Line 136 sub dumpbutton {
|
Line 133 sub dumpbutton {
|
sub clean { |
sub clean { |
my ($title)=@_; |
my ($title)=@_; |
$title=~s/[^\w\/\!\$\%\^\*\-\_\=\+\;\:\,\\\|\`\~]+/\_/gs; |
$title=~s/[^\w\/\!\$\%\^\*\-\_\=\+\;\:\,\\\|\`\~]+/\_/gs; |
return $title; |
return $title; |
} |
} |
|
|
|
|
Line 159 sub dumpcourse {
|
Line 156 sub dumpcourse {
|
my $title=$env{'form.authorfolder'}; |
my $title=$env{'form.authorfolder'}; |
$title=&clean($title); |
$title=&clean($title); |
my %replacehash=(); |
my %replacehash=(); |
foreach (keys %env) { |
foreach my $key (keys(%env)) { |
if ($_=~/^form\.namefor\_(.+)/) { |
if ($key=~/^form\.namefor\_(.+)/) { |
$replacehash{$1}=$env{$_}; |
$replacehash{$1}=$env{$key}; |
} |
} |
} |
} |
my $crs='/uploaded/'.$env{'request.course.id'}.'/'; |
my $crs='/uploaded/'.$env{'request.course.id'}.'/'; |
$crs=~s/\_/\//g; |
$crs=~s/\_/\//g; |
foreach (keys %replacehash) { |
foreach my $item (keys(%replacehash)) { |
my $newfilename=$title.'/'.$replacehash{$_}; |
my $newfilename=$title.'/'.$replacehash{$item}; |
$newfilename=~s/\.(\w+)$//; |
$newfilename=~s/\.(\w+)$//; |
my $ext=$1; |
my $ext=$1; |
$newfilename=&clean($newfilename); |
$newfilename=&clean($newfilename); |
Line 178 sub dumpcourse {
|
Line 175 sub dumpcourse {
|
my $fail=0; |
my $fail=0; |
for (my $i=0;$i<$#dirs;$i++) { |
for (my $i=0;$i<$#dirs;$i++) { |
$makepath.='/'.$dirs[$i]; |
$makepath.='/'.$dirs[$i]; |
unless (-e $makepath) { |
unless (-e $makepath) { |
unless(mkdir($makepath,0777)) { $fail=1; } |
unless(mkdir($makepath,0777)) { $fail=1; } |
} |
} |
} |
} |
$r->print('<br /><tt>'.$_.'</tt> => <tt>'.$newfilename.'</tt>: '); |
$r->print('<br /><tt>'.$item.'</tt> => <tt>'.$newfilename.'</tt>: '); |
if (my $fh=Apache::File->new('>'.$path.'/'.$newfilename)) { |
if (my $fh=Apache::File->new('>'.$path.'/'.$newfilename)) { |
if ($_=~/\.(sequence|page|html|htm|xml|xhtml)$/) { |
if ($item=~/\.(sequence|page|html|htm|xml|xhtml)$/) { |
print $fh &Apache::lonclonecourse::rewritefile( |
print $fh &Apache::lonclonecourse::rewritefile( |
&Apache::lonclonecourse::readfile($env{'request.course.id'},$_), |
&Apache::lonclonecourse::readfile($env{'request.course.id'},$item), |
(%replacehash,$crs => '') |
(%replacehash,$crs => '') |
); |
); |
} else { |
} else { |
print $fh |
print $fh |
&Apache::lonclonecourse::readfile($env{'request.course.id'},$_); |
&Apache::lonclonecourse::readfile($env{'request.course.id'},$item); |
} |
} |
$fh->close(); |
$fh->close(); |
} else { |
} else { |
Line 209 sub dumpcourse {
|
Line 206 sub dumpcourse {
|
$r->print( |
$r->print( |
'<h3>'.&mt('Select the Construction Space').'</h3><select name="authorspace">'); |
'<h3>'.&mt('Select the Construction Space').'</h3><select name="authorspace">'); |
} |
} |
foreach (sort keys %outhash) { |
foreach my $key (sort(keys(%outhash))) { |
if ($_=~/^home_(.+)$/) { |
if ($key=~/^home_(.+)$/) { |
if ($home==1) { |
if ($home==1) { |
$r->print( |
$r->print( |
'<input type="hidden" name="authorspace" value="'.$1.'" />'); |
'<input type="hidden" name="authorspace" value="'.$1.'" />'); |
Line 236 sub dumpcourse {
|
Line 233 sub dumpcourse {
|
.'<th>'.&mt('Title').'</th>' |
.'<th>'.&mt('Title').'</th>' |
.'<th>'.&mt('Save as ...').'</th>' |
.'<th>'.&mt('Save as ...').'</th>' |
.&Apache::loncommon::end_data_table_header_row()); |
.&Apache::loncommon::end_data_table_header_row()); |
foreach (&Apache::lonclonecourse::crsdirlist($origcrsid,'userfiles')) { |
foreach my $file (&Apache::lonclonecourse::crsdirlist($origcrsid,'userfiles')) { |
$r->print(&Apache::loncommon::start_data_table_row() |
$r->print(&Apache::loncommon::start_data_table_row() |
.'<td>'.$_.'</td>'); |
.'<td>'.$file.'</td>'); |
my ($ext)=($_=~/\.(\w+)$/); |
my ($ext)=($file=~/\.(\w+)$/); |
my $title=$hash{'title_'.$hash{ |
my $title=$hash{'title_'.$hash{ |
'ids_/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'.$_}}; |
'ids_/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'.$file}}; |
$r->print('<td>'.($title?$title:' ').'</td>'); |
$r->print('<td>'.($title?$title:' ').'</td>'); |
if (!$title) { |
if (!$title) { |
$title=$_; |
$title=$file; |
} else { |
} else { |
$title=~s|/|_|g; |
$title=~s|/|_|g; |
} |
} |
$title=~s/\.(\w+)$//; |
$title=~s/\.(\w+)$//; |
$title=&clean($title); |
$title=&clean($title); |
$title.='.'.$ext; |
$title.='.'.$ext; |
$r->print("\n<td><input type='text' size='60' name='namefor_".$_."' value='".$title."' /></td>" |
$r->print("\n<td><input type='text' size='60' name='namefor_".$file."' value='".$title."' /></td>" |
.&Apache::loncommon::end_data_table_row()); |
.&Apache::loncommon::end_data_table_row()); |
} |
} |
$r->print(&Apache::loncommon::end_data_table()); |
$r->print(&Apache::loncommon::end_data_table()); |
Line 265 sub dumpcourse {
|
Line 262 sub dumpcourse {
|
|
|
sub exportbutton { |
sub exportbutton { |
my $type = &Apache::loncommon::course_type(); |
my $type = &Apache::loncommon::course_type(); |
return '<div>'. |
return '<input type="submit" name="exportcourse" value="'. |
'<input type="submit" name="exportcourse" value="'. |
|
&mt('Export '.$type.' to IMS').'" />'. |
&mt('Export '.$type.' to IMS').'" />'. |
&Apache::loncommon::help_open_topic('Docs_Export_Course_Docs').'</div>'; |
&Apache::loncommon::help_open_topic('Docs_Export_Course_Docs'); |
} |
} |
|
|
|
|
Line 278 sub exportcourse {
|
Line 274 sub exportcourse {
|
my $type = &Apache::loncommon::course_type(); |
my $type = &Apache::loncommon::course_type(); |
my %discussiontime = &Apache::lonnet::dump('discussiontimes', |
my %discussiontime = &Apache::lonnet::dump('discussiontimes', |
$env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); |
$env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); |
my $numdisc = keys %discussiontime; |
my $numdisc = keys(%discussiontime); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (!defined($navmap)) { |
|
$r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package'). |
|
'<h2>IMS Export Failed</h2>'. |
|
'<div class="LC_error">'. |
|
&mt('Unable to retrieve information about course contents'). |
|
'</div><a href="/adm/coursedocs">'.&mt('Return to Course Editor').'</a>'); |
|
&Apache::lonnet::logthis('IMS export failed - could not create navmap object in '.lc($type).':'.$env{'request.course.id'}); |
|
return; |
|
} |
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; |
my $outcome; |
Line 448 function containerCheck(item) {
|
Line 453 function containerCheck(item) {
|
} |
} |
|; |
|; |
|
|
foreach my $container (sort { $a <=> $b } keys %children) { |
foreach my $container (sort { $a <=> $b } (keys(%children))) { |
my @contents = split/:/,$children{$container}; |
my @contents = split(/:/,$children{$container}); |
for (my $i=0; $i<@contents; $i ++) { |
for (my $i=0; $i<@contents; $i ++) { |
$scripttag .= ' parents['.$container.']['.$i.'] = '.$contents[$i]."\n"; |
$scripttag .= ' parents['.$container.']['.$i.'] = '.$contents[$i]."\n"; |
} |
} |
Line 471 function containerCheck(item) {
|
Line 476 function containerCheck(item) {
|
$r->print($display.'</table>'. |
$r->print($display.'</table>'. |
'<p><input type="hidden" name="finishexport" value="1">'. |
'<p><input type="hidden" name="finishexport" value="1">'. |
'<input type="submit" name="exportcourse" value="'. |
'<input type="submit" name="exportcourse" value="'. |
&mt('Export '.$type.' DOCS').'" /></p></form>'. |
&mt('Export '.$type.' DOCS').'" /></p></form>'); |
&Apache::loncommon::end_page()); |
|
} |
} |
} |
} |
|
|
Line 557 sub build_package {
|
Line 561 sub build_package {
|
if ($curRes->is_sequence() || $curRes->is_page()) { |
if ($curRes->is_sequence() || $curRes->is_page()) { |
$lastcontainer = $count; |
$lastcontainer = $count; |
} |
} |
if (grep/^$count$/,@$exportitems) { |
if (grep(/^$count$/,@$exportitems)) { |
&get_dependencies($exportitems,\%parent,$depth,\@dependencies); |
&get_dependencies($exportitems,\%parent,$depth,\@dependencies); |
} |
} |
} |
} |
Line 581 sub build_package {
|
Line 585 sub build_package {
|
|
|
if (ref($curRes)) { |
if (ref($curRes)) { |
$count ++; |
$count ++; |
if ((grep/^$count$/,@$exportitems) || (grep/^$count$/,@dependencies)) { |
if ((grep(/^$count$/,@$exportitems)) || (grep(/^$count$/,@dependencies))) { |
my $symb = $curRes->symb(); |
my $symb = $curRes->symb(); |
my $isvisible = 'true'; |
my $isvisible = 'true'; |
my $resourceref; |
my $resourceref; |
Line 615 sub build_package {
|
Line 619 sub build_package {
|
' <resource identifier="RES-'.$env{'request.course.id'}.'-'.$count. |
' <resource identifier="RES-'.$env{'request.course.id'}.'-'.$count. |
'" type="webcontent" href="'.$content_file.'">'."\n". |
'" type="webcontent" href="'.$content_file.'">'."\n". |
' <file href="'.$content_file.'" />'."\n"; |
' <file href="'.$content_file.'" />'."\n"; |
foreach (@hrefs) { |
foreach my $item (@hrefs) { |
$imsresources .= |
$imsresources .= |
' <file href="'.$_.'" />'."\n"; |
' <file href="'.$item.'" />'."\n"; |
} |
} |
if (grep/^$count$/,@$discussions) { |
if (grep(/^$count$/,@$discussions)) { |
my $ressymb = $symb; |
my $ressymb = $symb; |
my $mode; |
my $mode; |
if ($ressymb =~ m|adm/($match_domain)/($match_username)/(\d+)/bulletinboard$|) { |
if ($ressymb =~ m|adm/($match_domain)/($match_username)/(\d+)/bulletinboard$|) { |
Line 660 sub build_package {
|
Line 664 sub build_package {
|
sub get_dependencies { |
sub get_dependencies { |
my ($exportitems,$parent,$depth,$dependencies) = @_; |
my ($exportitems,$parent,$depth,$dependencies) = @_; |
if ($depth > 1) { |
if ($depth > 1) { |
if ((!grep/^$$parent{$depth}$/,@$exportitems) && (!grep/^$$parent{$depth}$/,@$dependencies)) { |
if ((!grep(/^$$parent{$depth}$/,@$exportitems)) && (!grep(/^$$parent{$depth}$/,@$dependencies))) { |
push @$dependencies, $$parent{$depth}; |
push(@{$dependencies},$$parent{$depth}); |
if ($depth > 2) { |
if ($depth > 2) { |
&get_dependencies($exportitems,$parent,$depth-1,$dependencies); |
&get_dependencies($exportitems,$parent,$depth-1,$dependencies); |
} |
} |
Line 755 sub replicate_content {
|
Line 759 sub replicate_content {
|
if ($caller eq 'templateupload') { |
if ($caller eq 'templateupload') { |
$url = $symb; |
$url = $symb; |
$url =~ s#//#/#g; |
$url =~ s#//#/#g; |
} else { |
} else { |
($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
} |
} |
my $content; |
my $content; |
Line 795 sub replicate_content {
|
Line 799 sub replicate_content {
|
$$message = 'Could not render '.$url.' server message - '.$rtncode."<br />\n"; |
$$message = 'Could not render '.$url.' server message - '.$rtncode."<br />\n"; |
} |
} |
} elsif ($caller eq 'noedit') { |
} 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. |
# 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'; |
$repstatus = 'ok'; |
$content = 'Not the owner of this resource'; |
$content = 'Not the owner of this resource'; |
} |
} |
if ($repstatus eq 'ok') { |
if ($repstatus eq 'ok') { |
print $copiedfile $content; |
print $copiedfile $content; |
Line 848 sub extract_media {
|
Line 852 sub extract_media {
|
} |
} |
} |
} |
if ($caller eq 'resource') { |
if ($caller eq 'resource') { |
my $respath = $Apache::lonnet::perlvar{'lonDocRoot'}.'/res'; |
my $respath = $Apache::lonnet::perlvar{'lonDocRoot'}.'/res'; |
my $embed_path = &Apache::lonnet::filelocation($respath,$embed_url); |
my $embed_path = &Apache::lonnet::filelocation($respath,$embed_url); |
$embed_content = &Apache::lonnet::getfile($embed_path); |
$embed_content = &Apache::lonnet::getfile($embed_path); |
unless ($embed_content eq -1) { |
unless ($embed_content eq -1) { |
$repstatus = 'ok'; |
$repstatus = 'ok'; |
Line 867 sub extract_media {
|
Line 871 sub extract_media {
|
my $copiedfile; |
my $copiedfile; |
if ($copiedfile = Apache::File->new('>'.$destination)) { |
if ($copiedfile = Apache::File->new('>'.$destination)) { |
print $copiedfile $embed_content; |
print $copiedfile $embed_content; |
push @{$href}, 'resources/'.$count.'/res/'.$filename; |
push(@{$href},'resources/'.$count.'/res/'.$filename); |
my $attrib_regexp = ''; |
my $attrib_regexp = ''; |
if (@{$allfiles{$embed_file}} > 1) { |
if (@{$allfiles{$embed_file}} > 1) { |
$attrib_regexp = join('|',@{$allfiles{$embed_file}}); |
$attrib_regexp = join('|',@{$allfiles{$embed_file}}); |
Line 917 sub group_import {
|
Line 921 sub group_import {
|
|
|
while (@files) { |
while (@files) { |
my ($name, $url, $residx) = @{ shift(@files) }; |
my ($name, $url, $residx) = @{ shift(@files) }; |
if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) |
if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) |
&& ($caller eq 'londocs') |
&& ($caller eq 'londocs') |
&& (!&Apache::lonnet::stat_file($url))) { |
&& (!&Apache::lonnet::stat_file($url))) { |
|
|
Line 940 sub group_import {
|
Line 944 sub group_import {
|
} |
} |
} |
} |
if ($url) { |
if ($url) { |
if (!$residx |
if (!$residx |
|| defined($LONCAPA::map::zombies[$residx])) { |
|| defined($LONCAPA::map::zombies[$residx])) { |
$residx = &LONCAPA::map::getresidx($url,$residx); |
$residx = &LONCAPA::map::getresidx($url,$residx); |
push(@LONCAPA::map::order, $residx); |
push(@LONCAPA::map::order, $residx); |
Line 949 sub group_import {
|
Line 953 sub group_import {
|
if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; } |
if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; } |
$url = &LONCAPA::map::qtunescape($url); |
$url = &LONCAPA::map::qtunescape($url); |
$name = &LONCAPA::map::qtunescape($name); |
$name = &LONCAPA::map::qtunescape($name); |
$LONCAPA::map::resources[$residx] = |
$LONCAPA::map::resources[$residx] = |
join(':', ($name, $url, $ext, 'normal', 'res')); |
join(':', ($name, $url, $ext, 'normal', 'res')); |
} |
} |
} |
} |
Line 980 sub breadcrumbs {
|
Line 984 sub breadcrumbs {
|
my $url='/adm/coursedocs?folderpath='. |
my $url='/adm/coursedocs?folderpath='. |
&escape($folderpath); |
&escape($folderpath); |
my $name=&unescape($foldername); |
my $name=&unescape($foldername); |
# randompick number, hidden, encrypted, random order, is appended with ":"s to the foldername |
# randompick number, hidden, encrypted, random order, is appended with ":"s to the foldername |
$name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)$//; |
$name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)$//; |
if ($1 ne '') { |
if ($1 ne '') { |
$randompick=$1; |
$randompick=$1; |
} else { |
} else { |
$randompick=-1; |
$randompick=-1; |
Line 1046 sub log_docs {
|
Line 1050 sub log_docs {
|
'currentfolder' => $env{'form.folder'}); |
'currentfolder' => $env{'form.folder'}); |
if ($parmidx) { |
if ($parmidx) { |
$storehash{'parameter_res'}=$oldresources[$parmidx]; |
$storehash{'parameter_res'}=$oldresources[$parmidx]; |
foreach my $parm (keys %parmaction) { |
foreach my $parm (keys(%parmaction)) { |
$storehash{'parameter_action_'.$parm}=$parmaction{$parm}; |
$storehash{'parameter_action_'.$parm}=$parmaction{$parm}; |
$storehash{'parameter_value_'.$parm}=$parmvalue{$parm}; |
$storehash{'parameter_value_'.$parm}=$parmvalue{$parm}; |
} |
} |
Line 1121 sub docs_change_log {
|
Line 1125 sub docs_change_log {
|
foreach my $key (@changes) { |
foreach my $key (@changes) { |
$wholeentry.=':'.$docslog{$id}{'logentry'}{$key}; |
$wholeentry.=':'.$docslog{$id}{'logentry'}{$key}; |
} |
} |
if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; } |
if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; } |
} |
} |
my $count = 0; |
my $count = 0; |
my $time = |
my $time = |
Line 1219 sub update_paste_buffer {
|
Line 1223 sub update_paste_buffer {
|
&Apache::lonnet::appenv({'docs.markedcopy_supplemental' => $title}); |
&Apache::lonnet::appenv({'docs.markedcopy_supplemental' => $title}); |
($title) = &parse_supplemental_title($title); |
($title) = &parse_supplemental_title($title); |
} elsif ($env{'docs.markedcopy_supplemental'}) { |
} elsif ($env{'docs.markedcopy_supplemental'}) { |
&Apache::lonnet::delenv('docs\\.markedcopy_supplemental'); |
&Apache::lonnet::delenv('docs.markedcopy_supplemental'); |
} |
} |
$url=~s{http(:|:)//https(:|:)//}{https$2//}; |
$url=~s{http(:|:)//https(:|:)//}{https$2//}; |
|
|
Line 1270 ENDPASTE
|
Line 1274 ENDPASTE
|
sub do_paste_from_buffer { |
sub do_paste_from_buffer { |
my ($coursenum,$coursedom,$folder) = @_; |
my ($coursenum,$coursedom,$folder) = @_; |
|
|
return 0 if (!$env{'form.pastemarked'}); |
if (!$env{'form.pastemarked'}) { |
|
return; |
|
} |
|
|
# paste resource to end of list |
# paste resource to end of list |
my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url'}); |
my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url'}); |
Line 1278 sub do_paste_from_buffer {
|
Line 1284 sub do_paste_from_buffer {
|
# Maps need to be copied first |
# Maps need to be copied first |
if (($url=~/\.(page|sequence)$/) && ($url=~/^\/uploaded\//)) { |
if (($url=~/\.(page|sequence)$/) && ($url=~/^\/uploaded\//)) { |
$title=&mt('Copy of').' '.$title; |
$title=&mt('Copy of').' '.$title; |
my $newid=$$.time; |
my $newid=$$.int(rand(100)).time; |
$url=~/^(.+)\.(\w+)$/; |
my ($oldid,$ext) = ($url=~/^(.+)\.(\w+)$/); |
my $newurl=$1.$newid.'.'.$2; |
if ($oldid =~ m{^(/uploaded/\Q$coursedom\E/\Q$coursenum\E/)(\D+)(\d+)$}) { |
|
my $path = $1; |
|
my $prefix = $2; |
|
my $ancestor = $3; |
|
if (length($ancestor) > 10) { |
|
$ancestor = substr($ancestor,-10,10); |
|
} |
|
$oldid = $path.$prefix.$ancestor; |
|
} |
|
my $counter = 0; |
|
my $newurl=$oldid.$newid.'.'.$ext; |
|
my $is_unique = &uniqueness_check($newurl); |
|
while (!$is_unique && $counter < 100) { |
|
$counter ++; |
|
$newid ++; |
|
$newurl = $oldid.$newid; |
|
$is_unique = &uniqueness_check($newurl); |
|
} |
|
if (!$is_unique) { |
|
if ($url=~/\.page$/) { |
|
return &mt('Paste failed: an error occurred creating a unique URL for the composite page'); |
|
} else { |
|
return &mt('Paste failed: an error occurred creating a unique URL for the folder'); |
|
} |
|
} |
my $storefn=$newurl; |
my $storefn=$newurl; |
$storefn=~s{^/\w+/$match_domain/$match_username/}{}; |
$storefn=~s{^/\w+/$match_domain/$match_username/}{}; |
&Apache::lonclonecourse::writefile($env{'request.course.id'},$storefn, |
my $paste_map_result = |
&Apache::lonnet::getfile($url)); |
&Apache::lonclonecourse::writefile($env{'request.course.id'},$storefn, |
|
&Apache::lonnet::getfile($url)); |
|
if ($paste_map_result eq '/adm/notfound.html') { |
|
if ($url=~/\.page$/) { |
|
return &mt('Paste failed: an error occurred saving the composite page'); |
|
} else { |
|
return &mt('Paste failed: an error occurred saving the folder'); |
|
} |
|
} |
$url = $newurl; |
$url = $newurl; |
} |
} |
# published maps can only exists once, so remove it from paste buffer when done |
# published maps can only exists once, so remove it from paste buffer when done |
if (($url=~/\.(page|sequence)$/) && ($url=~m {^/res/})) { |
if (($url=~/\.(page|sequence)$/) && ($url=~m {^/res/})) { |
&Apache::lonnet::delenv('docs\\.markedcopy'); |
&Apache::lonnet::delenv('docs.markedcopy'); |
} |
} |
if ($url=~ m{/smppg$}) { |
if ($url=~ m{/smppg$}) { |
my $db_name = &Apache::lonsimplepage::get_db_name($url); |
my $db_name = &Apache::lonsimplepage::get_db_name($url); |
Line 1300 sub do_paste_from_buffer {
|
Line 1338 sub do_paste_from_buffer {
|
$db_name =~ s{_\d*$ }{_$now}x; |
$db_name =~ s{_\d*$ }{_$now}x; |
my $result=&Apache::lonnet::put($db_name,\%contents, |
my $result=&Apache::lonnet::put($db_name,\%contents, |
$coursedom,$coursenum); |
$coursedom,$coursenum); |
$url =~ s{/(\d*)/smppg$ }{/$now/smppg}x; |
$url =~ s{/(\d*)/smppg$ }{/$now/smppg}x; |
$title=&mt('Copy of').' '.$title; |
$title=&mt('Copy of').' '.$title; |
} |
} |
} |
} |
Line 1314 sub do_paste_from_buffer {
|
Line 1352 sub do_paste_from_buffer {
|
if ($folder =~ /^supplemental/) { |
if ($folder =~ /^supplemental/) { |
$title = $env{'docs.markedcopy_supplemental'}; |
$title = $env{'docs.markedcopy_supplemental'}; |
} else { |
} else { |
(undef,undef,$title) = |
(undef,undef,$title) = |
&parse_supplemental_title($env{'docs.markedcopy_supplemental'}); |
&parse_supplemental_title($env{'docs.markedcopy_supplemental'}); |
} |
} |
} else { |
} else { |
Line 1326 sub do_paste_from_buffer {
|
Line 1364 sub do_paste_from_buffer {
|
|
|
$LONCAPA::map::resources[$newidx]= $title.':'.$url.':'.$ext.':normal:res'; |
$LONCAPA::map::resources[$newidx]= $title.':'.$url.':'.$ext.':normal:res'; |
push(@LONCAPA::map::order, $newidx); |
push(@LONCAPA::map::order, $newidx); |
|
return 'ok'; |
# Store the result |
# Store the result |
} |
} |
|
|
|
sub uniqueness_check { |
|
my ($newurl) = @_; |
|
my $unique = 1; |
|
foreach my $res (@LONCAPA::map::order) { |
|
my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]); |
|
$url=&LONCAPA::map::qtescape($url); |
|
if ($newurl eq $url) { |
|
$unique = 0; |
|
last; |
|
} |
|
} |
|
return $unique; |
|
} |
|
|
my %parameter_type = ( 'randompick' => 'int_pos', |
my %parameter_type = ( 'randompick' => 'int_pos', |
'hiddenresource' => 'string_yesno', |
'hiddenresource' => 'string_yesno', |
'encrypturl' => 'string_yesno', |
'encrypturl' => 'string_yesno', |
Line 1377 sub handle_edit_cmd {
|
Line 1430 sub handle_edit_cmd {
|
&LONCAPA::map::makezombie($LONCAPA::map::order[$idx]); |
&LONCAPA::map::makezombie($LONCAPA::map::order[$idx]); |
splice(@LONCAPA::map::order, $idx, 1); |
splice(@LONCAPA::map::order, $idx, 1); |
|
|
} elsif ($cmd eq 'up' |
} elsif ($cmd eq 'up' |
&& ($idx) && (defined($LONCAPA::map::order[$idx-1]))) { |
&& ($idx) && (defined($LONCAPA::map::order[$idx-1]))) { |
@LONCAPA::map::order[$idx-1,$idx] = @LONCAPA::map::order[$idx,$idx-1]; |
@LONCAPA::map::order[$idx-1,$idx] = @LONCAPA::map::order[$idx,$idx-1]; |
|
|
Line 1444 sub editor {
|
Line 1497 sub editor {
|
} |
} |
|
|
if ($env{'form.pastemarked'}) { |
if ($env{'form.pastemarked'}) { |
&do_paste_from_buffer($coursenum,$coursedom,$folder); |
my $paste_res = |
($errtext,$fatal) = &storemap($coursenum,$coursedom,$folder.'.'.$container); |
&do_paste_from_buffer($coursenum,$coursedom,$folder); |
return $errtext if ($fatal); |
if ($paste_res eq 'ok') { |
|
($errtext,$fatal) = &storemap($coursenum,$coursedom,$folder.'.'.$container); |
|
return $errtext if ($fatal); |
|
} elsif ($paste_res ne '') { |
|
$r->print('<p><span class="LC_error">'.$paste_res.'</span></p>'); |
|
} |
} |
} |
|
|
$r->print($upload_output); |
$r->print($upload_output); |
Line 1458 sub editor {
|
Line 1516 sub editor {
|
# Group import/search |
# Group import/search |
if ($env{'form.importdetail'}) { |
if ($env{'form.importdetail'}) { |
my @imports; |
my @imports; |
foreach (split(/\&/,$env{'form.importdetail'})) { |
foreach my $item (split(/\&/,$env{'form.importdetail'})) { |
if (defined($_)) { |
if (defined($item)) { |
my ($name,$url,$residx)= |
my ($name,$url,$residx)= |
map {&unescape($_)} split(/\=/,$_); |
map {&unescape($_)} split(/\=/,$item); |
push(@imports, [$name, $url, $residx]); |
push(@imports, [$name, $url, $residx]); |
} |
} |
} |
} |
Line 1602 sub process_file_upload {
|
Line 1660 sub process_file_upload {
|
<input type="hidden" name="phasetwo" value="'.$total_embedded.'" />'; |
<input type="hidden" name="phasetwo" value="'.$total_embedded.'" />'; |
$phase_status = 'phasetwo'; |
$phase_status = 'phasetwo'; |
|
|
$$upload_output .= |
$$upload_output .= |
'This file contains embedded multimedia objects, which need to be uploaded to LON-CAPA.<br />'. |
'This file contains embedded multimedia objects, which need to be uploaded to LON-CAPA.<br />'. |
&Apache::loncommon::ask_for_embedded_content( |
&Apache::loncommon::ask_for_embedded_content( |
'/adm/coursedocs',$state,$allfiles,$codebase); |
'/adm/coursedocs',$state,$allfiles,$codebase); |
Line 1705 sub entryline {
|
Line 1763 sub entryline {
|
my $incindex=$index+1; |
my $incindex=$index+1; |
my $selectbox=''; |
my $selectbox=''; |
if (($folder!~/^supplemental/) && |
if (($folder!~/^supplemental/) && |
($#LONCAPA::map::order>0) && |
($#LONCAPA::map::order>0) && |
((split(/\:/, |
((split(/\:/, |
$LONCAPA::map::resources[$LONCAPA::map::order[0]]))[1] |
$LONCAPA::map::resources[$LONCAPA::map::order[0]]))[1] |
ne '') && |
ne '') && |
((split(/\:/, |
((split(/\:/, |
$LONCAPA::map::resources[$LONCAPA::map::order[1]]))[1] |
$LONCAPA::map::resources[$LONCAPA::map::order[1]]))[1] |
ne '')) { |
ne '')) { |
$selectbox= |
$selectbox= |
'<input type="hidden" name="currentpos" value="'.$incindex.'" />'. |
'<input type="hidden" name="currentpos" value="'.$incindex.'" />'. |
Line 1738 sub entryline {
|
Line 1796 sub entryline {
|
# no copy for published maps |
# no copy for published maps |
$nocopy = 1; |
$nocopy = 1; |
} else { |
} else { |
foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$url),1)) { |
foreach my $item (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$url),1)) { |
my ($title,$url,$ext,$type)=split(/\:/,$_); |
my ($title,$url,$ext,$type)=split(/\:/,$item); |
if (($url=~/\.(page|sequence)/) && ($type ne 'zombie')) { |
if (($url=~/\.(page|sequence)/) && ($type ne 'zombie')) { |
$nocopy=1; |
$nocopy=1; |
last; |
last; |
Line 1747 sub entryline {
|
Line 1805 sub entryline {
|
} |
} |
} |
} |
} |
} |
if ($url=~/^\/res\/lib\/templates\//) { |
if ($url=~/^\/res\/lib\/templates\//) { |
$nocopy=1; |
$nocopy=1; |
$nocut=1; |
$nocut=1; |
} |
} |
my $copylink=' '; |
my $copylink=' '; |
Line 1841 END
|
Line 1899 END
|
} |
} |
|
|
my $orig_url = $url; |
my $orig_url = $url; |
|
$orig_url=~s{http(:|:)//https(:|:)//}{https$2//}; |
my $external = ($url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/}); |
my $external = ($url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/}); |
if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) { |
if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) { |
my $symb=&Apache::lonnet::symbclean( |
my $symb=&Apache::lonnet::symbclean( |
Line 1862 END
|
Line 1921 END
|
} elsif ($url!~/\.(sequence|page)$/) { |
} elsif ($url!~/\.(sequence|page)$/) { |
$url='/adm/coursedocs/showdoc'.$url; |
$url='/adm/coursedocs/showdoc'.$url; |
} |
} |
} elsif ($url=~m|^/ext/|) { |
} elsif ($url=~m|^/ext/|) { |
$url='/adm/wrapper'.$url; |
$url='/adm/wrapper'.$url; |
$external = 1; |
$external = 1; |
} |
} |
Line 1883 END
|
Line 1942 END
|
my $foldername=&escape($foldertitle); |
my $foldername=&escape($foldertitle); |
my $folderpath=$env{'form.folderpath'}; |
my $folderpath=$env{'form.folderpath'}; |
if ($folderpath) { $folderpath.='&' }; |
if ($folderpath) { $folderpath.='&' }; |
# Append randompick number, hidden, and encrypted with ":" to foldername, |
# Append randompick number, hidden, and encrypted with ":" to foldername, |
# so it gets transferred between levels |
# so it gets transferred between levels |
$folderpath.=$folderarg.'&'.$foldername.':'.(&LONCAPA::map::getparameter($orderidx, |
$folderpath.=$folderarg.'&'.$foldername.':'.(&LONCAPA::map::getparameter($orderidx, |
'parameter_randompick'))[0] |
'parameter_randompick'))[0] |
Line 1903 END
|
Line 1962 END
|
my $ro_set= |
my $ro_set= |
((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); |
((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); |
$rand_order_text =' |
$rand_order_text =' |
<nobr><label><input type="checkbox" name="randomorder_'.$orderidx.'" onClick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></nobr>'; |
<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onClick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></span>'; |
} |
} |
if ($ispage) { |
if ($ispage) { |
my $pagename=&escape($pagetitle); |
my $pagename=&escape($pagetitle); |
Line 2049 sub checkonthis {
|
Line 2108 sub checkonthis {
|
} |
} |
my $dependencies= |
my $dependencies= |
&Apache::lonnet::metadata($url,'dependencies'); |
&Apache::lonnet::metadata($url,'dependencies'); |
foreach (split(/\,/,$dependencies)) { |
foreach my $dep (split(/\,/,$dependencies)) { |
if (($_=~/^\/res\//) && (!$alreadyseen{$_})) { |
if (($dep=~/^\/res\//) && (!$alreadyseen{$dep})) { |
&checkonthis($r,$_,$level+1); |
&checkonthis($r,$dep,$level+1); |
} |
} |
} |
} |
} elsif ($result eq 'unavailable') { |
} elsif ($result eq 'unavailable') { |
Line 2082 List Symbs
|
Line 2141 List Symbs
|
sub list_symbs { |
sub list_symbs { |
my ($r) = @_; |
my ($r) = @_; |
|
|
|
my $type = &Apache::loncommon::course_type(); |
$r->print(&Apache::loncommon::start_page('Symb List')); |
$r->print(&Apache::loncommon::start_page('Symb List')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Symb List')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Symb List')); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
$r->print("<pre>\n"); |
if (!defined($navmap)) { |
foreach my $res ($navmap->retrieveResources()) { |
$r->print('<h2>'.&mt('Retrieval of List Failed').'</h2>'. |
$r->print($res->compTitle()."\t".$res->symb()."\n"); |
'<div class="LC_error">'. |
|
&mt('Unable to retrieve information about course contents'). |
|
'</div>'); |
|
&Apache::lonnet::logthis('Symb list failed - could not create navmap object in '.lc($type).':'.$env{'request.course.id'}); |
|
} else { |
|
$r->print("<pre>\n"); |
|
foreach my $res ($navmap->retrieveResources()) { |
|
$r->print($res->compTitle()."\t".$res->symb()."\n"); |
|
} |
|
$r->print("\n</pre>\n"); |
} |
} |
$r->print("\n</pre>\n"); |
|
$r->print('<a href="/adm/coursedocs">'.&mt('Return to DOCS').'</a>'); |
$r->print('<a href="/adm/coursedocs">'.&mt('Return to DOCS').'</a>'); |
} |
} |
|
|
|
|
|
|
sub verifycontent { |
sub verifycontent { |
my ($r) = @_; |
my ($r) = @_; |
my $type = &Apache::loncommon::course_type(); |
my $type = &Apache::loncommon::course_type(); |
Line 2106 sub verifycontent {
|
Line 2173 sub verifycontent {
|
undef %alreadyseen; |
undef %alreadyseen; |
%alreadyseen=(); |
%alreadyseen=(); |
&tiehash(); |
&tiehash(); |
foreach (keys %hash) { |
foreach my $key (keys(%hash)) { |
if ($hash{$_}=~/\.(page|sequence)$/) { |
if ($hash{$key}=~/\.(page|sequence)$/) { |
if (($_=~/^src_/) && ($alreadyseen{&unescape($hash{$_})})) { |
if (($key=~/^src_/) && ($alreadyseen{&unescape($hash{$key})})) { |
$r->print('<hr /><span class="LC_error">'. |
$r->print('<hr /><span class="LC_error">'. |
&mt('The following sequence or page is included more than once in your '.$type.': '). |
&mt('The following sequence or page is included more than once in your '.$type.': '). |
&unescape($hash{$_}).'</span><br />'. |
&unescape($hash{$key}).'</span><br />'. |
&mt('Note that grading records for problems included in this sequence or folder will overlap.<hr />')); |
&mt('Note that grading records for problems included in this sequence or folder will overlap.<hr />')); |
} |
} |
} |
} |
if (($_=~/^src\_(.+)$/) && (!$alreadyseen{&unescape($hash{$_})})) { |
if (($key=~/^src\_(.+)$/) && (!$alreadyseen{&unescape($hash{$key})})) { |
&checkonthis($r,$hash{$_},0,$hash{'title_'.$1}); |
&checkonthis($r,$hash{$key},0,$hash{'title_'.$1}); |
} |
} |
} |
} |
&untiehash(); |
&untiehash(); |
Line 2154 sub checkversions {
|
Line 2221 sub checkversions {
|
my %newsetversions=(); |
my %newsetversions=(); |
if ($env{'form.setmostrecent'}) { |
if ($env{'form.setmostrecent'}) { |
$haschanged=1; |
$haschanged=1; |
foreach (keys %hash) { |
foreach my $key (keys(%hash)) { |
if ($_=~/^ids\_(\/res\/.+)$/) { |
if ($key=~/^ids\_(\/res\/.+)$/) { |
$newsetversions{$1}='mostrecent'; |
$newsetversions{$1}='mostrecent'; |
&devalidateversioncache($1); |
&devalidateversioncache($1); |
} |
} |
} |
} |
} elsif ($env{'form.setcurrent'}) { |
} elsif ($env{'form.setcurrent'}) { |
$haschanged=1; |
$haschanged=1; |
foreach (keys %hash) { |
foreach my $key (keys(%hash)) { |
if ($_=~/^ids\_(\/res\/.+)$/) { |
if ($key=~/^ids\_(\/res\/.+)$/) { |
my $getvers=&Apache::lonnet::getversion($1); |
my $getvers=&Apache::lonnet::getversion($1); |
if ($getvers>0) { |
if ($getvers>0) { |
$newsetversions{$1}=$getvers; |
$newsetversions{$1}=$getvers; |
Line 2173 sub checkversions {
|
Line 2240 sub checkversions {
|
} |
} |
} elsif ($env{'form.setversions'}) { |
} elsif ($env{'form.setversions'}) { |
$haschanged=1; |
$haschanged=1; |
foreach (keys %env) { |
foreach my $key (keys(%env)) { |
if ($_=~/^form\.set_version_(.+)$/) { |
if ($key=~/^form\.set_version_(.+)$/) { |
my $src=$1; |
my $src=$1; |
if (($env{$_}) && ($env{$_} ne $setversions{$src})) { |
if (($env{$key}) && ($env{$key} ne $setversions{$src})) { |
$newsetversions{$src}=$env{$_}; |
$newsetversions{$src}=$env{$key}; |
&devalidateversioncache($src); |
&devalidateversioncache($src); |
} |
} |
} |
} |
Line 2186 sub checkversions {
|
Line 2253 sub checkversions {
|
if ($haschanged) { |
if ($haschanged) { |
if (&Apache::lonnet::put('resourceversions',\%newsetversions, |
if (&Apache::lonnet::put('resourceversions',\%newsetversions, |
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
$env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') { |
$env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') { |
$r->print('<h1>'.&mt('Your Version Settings have been Saved').'</h1>'); |
$r->print('<h1>'.&mt('Your Version Settings have been Saved').'</h1>'); |
} else { |
} else { |
$r->print('<h1><span class="LC_error">'.&mt('An Error Occured while Attempting to Save your Version Settings').'</span></h1>'); |
$r->print('<h1><span class="LC_error">'.&mt('An Error Occured while Attempting to Save your Version Settings').'</span></h1>'); |
Line 2198 sub checkversions {
|
Line 2265 sub checkversions {
|
# show all documents |
# show all documents |
$header=&mt('All Documents in '.$type); |
$header=&mt('All Documents in '.$type); |
$allsel=1; |
$allsel=1; |
foreach (keys %hash) { |
foreach my $key (keys(%hash)) { |
if ($_=~/^ids\_(\/res\/.+)$/) { |
if ($key=~/^ids\_(\/res\/.+)$/) { |
my $src=$1; |
my $src=$1; |
$changes{$src}=1; |
$changes{$src}=1; |
} |
} |
Line 2209 sub checkversions {
|
Line 2276 sub checkversions {
|
%changes=&Apache::lonnet::dump |
%changes=&Apache::lonnet::dump |
('versionupdate',$env{'course.'.$env{'request.course.id'}.'.domain'}, |
('versionupdate',$env{'course.'.$env{'request.course.id'}.'.domain'}, |
$env{'course.'.$env{'request.course.id'}.'.num'}); |
$env{'course.'.$env{'request.course.id'}.'.num'}); |
my $firstkey=(keys %changes)[0]; |
my $firstkey=(keys(%changes))[0]; |
unless ($firstkey=~/^error\:/) { |
unless ($firstkey=~/^error\:/) { |
unless ($env{'form.timerange'}) { |
unless ($env{'form.timerange'}) { |
$env{'form.timerange'}=604800; |
$env{'form.timerange'}=604800; |
Line 2273 sub checkversions {
|
Line 2340 sub checkversions {
|
<input type="submit" name="setversions" value="$lt{'sv'}" /> |
<input type="submit" name="setversions" value="$lt{'sv'}" /> |
<table border="0"> |
<table border="0"> |
ENDHEADERS |
ENDHEADERS |
foreach (sort keys %changes) { |
foreach my $key (sort(keys(%changes))) { |
if ($changes{$_}>$starttime) { |
if ($changes{$key}>$starttime) { |
my ($root,$extension)=($_=~/^(.*)\.(\w+)$/); |
my ($root,$extension)=($key=~/^(.*)\.(\w+)$/); |
my $currentversion=&Apache::lonnet::getversion($_); |
my $currentversion=&Apache::lonnet::getversion($key); |
if ($currentversion<0) { |
if ($currentversion<0) { |
$currentversion=&mt('Could not be determined.'); |
$currentversion=&mt('Could not be determined.'); |
} |
} |
my $linkurl=&Apache::lonnet::clutter($_); |
my $linkurl=&Apache::lonnet::clutter($key); |
$r->print( |
$r->print( |
'<tr><td colspan="5"><br /><br /><font size="+1"><b>'. |
'<tr><td colspan="5"><br /><br /><font size="+1"><b>'. |
&Apache::lonnet::gettitle($linkurl). |
&Apache::lonnet::gettitle($linkurl). |
Line 2338 ENDHEADERS
|
Line 2405 ENDHEADERS
|
$entries_per_col = $num_entries/4 + 1; |
$entries_per_col = $num_entries/4 + 1; |
} |
} |
my $entries_count = 0; |
my $entries_count = 0; |
$r->print('<td valign="top"><font size="-2">'); |
$r->print('<td valign="top"><font size="-2">'); |
my $cols_output = 1; |
my $cols_output = 1; |
for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) { |
for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) { |
my $url=$root.'.'.$prevvers.'.'.$extension; |
my $url=$root.'.'.$prevvers.'.'.$extension; |
Line 2417 sub changewarning {
|
Line 2484 sub changewarning {
|
$message='Changes will become active for your current session after [_1], or the next time you log in.'; |
$message='Changes will become active for your current session after [_1], or the next time you log in.'; |
} |
} |
$r->print("\n\n". |
$r->print("\n\n". |
'<script type="text/javascript">function reinit(tf) { tf.submit();'.$postexec.' }</script>'."\n". |
'<script type="text/javascript">function reinit(tf) { tf.submit();'.$postexec.' }</script>'."\n". |
'<form name="reinitform" method="post" action="/adm/roles" target="loncapaclient">'. |
'<form name="reinitform" method="post" action="/adm/roles" target="loncapaclient">'. |
'<input type="hidden" name="orgurl" value="'.$url. |
'<input type="hidden" name="orgurl" value="'.$url. |
'" /><input type="hidden" name="selectrole" value="1" /><h3><span class="LC_warning">'. |
'" /><input type="hidden" name="selectrole" value="1" /><h3><span class="LC_warning">'. |
Line 2452 sub handler {
|
Line 2519 sub handler {
|
return OK if $r->header_only; |
return OK if $r->header_only; |
my $type = &Apache::loncommon::course_type(); |
my $type = &Apache::loncommon::course_type(); |
|
|
|
|
# --------------------------------------------- Initialize help topics for this |
# --------------------------------------------- Initialize help topics for this |
foreach ('Adding_Course_Doc','Main_Course_Documents', |
foreach my $topic ('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','Adding_Pages', |
'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{$topic}=&Apache::loncommon::help_open_topic('Docs_'.$topic); |
} |
} |
# Composite help files |
# Composite help files |
$help{'Syllabus'} = &Apache::loncommon::help_open_topic( |
$help{'Syllabus'} = &Apache::loncommon::help_open_topic( |
Line 2470 sub handler {
|
Line 2538 sub handler {
|
'Option_Response_Simple'); |
'Option_Response_Simple'); |
$help{'Bulletin Board'} = &Apache::loncommon::help_open_topic( |
$help{'Bulletin Board'} = &Apache::loncommon::help_open_topic( |
'Docs_About_Bulletin_Board,Docs_Editing_Templated_Pages'); |
'Docs_About_Bulletin_Board,Docs_Editing_Templated_Pages'); |
$help{'My Personal Info'} = &Apache::loncommon::help_open_topic( |
$help{'My Personal Information Page'} = &Apache::loncommon::help_open_topic( |
'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); |
'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); |
$help{'Group Files'} = &Apache::loncommon::help_open_topic('Docs_About_Group_Files'); |
$help{'Group Portfolio'} = &Apache::loncommon::help_open_topic('Docs_About_Group_Files'); |
$help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); |
$help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); |
|
|
# does this user have privileges to modify docs |
# does this user have privileges to modify docs |
Line 2505 sub handler {
|
Line 2573 sub handler {
|
my $showdoc=0; |
my $showdoc=0; |
my $containertag; |
my $containertag; |
my $uploadtag; |
my $uploadtag; |
|
|
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['folderpath','pagepath', |
['folderpath','pagepath', |
'pagesymb']); |
'pagesymb']); |
Line 2546 sub handler {
|
Line 2616 sub handler {
|
$showdoc='/'.$1; |
$showdoc='/'.$1; |
} |
} |
unless ($showdoc) { # got called from remote |
unless ($showdoc) { # got called from remote |
if (($env{'form.folder'}=~/^(?:group|default)_/) || |
if (($env{'form.folder'}=~/^(?:group|default)_/) || |
($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { |
($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { |
$forcestandard = 1; |
$forcestandard = 1; |
} |
} |
$forcesupplement=($env{'form.folder'}=~/^supplemental_/); |
$forcesupplement=($env{'form.folder'}=~/^supplemental_/); |
|
|
if ($allowed) { |
if ($allowed) { |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']); |
$script=&Apache::lonratedt::editscript('simple'); |
$script=&Apache::lonratedt::editscript('simple'); |
} |
} |
} else { # got called in sequence from course |
} else { # got called in sequence from course |
$allowed=0; |
$allowed=0; |
Line 2564 sub handler {
|
Line 2634 sub handler {
|
my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
|
# get personal data |
# get personal data |
my $uname=$env{'user.name'}; |
my $uname=$env{'user.name'}; |
my $udom=$env{'user.domain'}; |
my $udom=$env{'user.domain'}; |
my $plainname=&escape(&Apache::loncommon::plainname($uname,$udom)); |
my $plainname=&escape(&Apache::loncommon::plainname($uname,$udom)); |
Line 2578 sub handler {
|
Line 2648 sub handler {
|
} |
} |
# -------------------------------------------------------------------- Body tag |
# -------------------------------------------------------------------- Body tag |
$script = '<script type="text/javascript">'."\n".$script."\n".'</script>'; |
$script = '<script type="text/javascript">'."\n".$script."\n".'</script>'; |
|
my $brcrum = [{href=>"/adm/createuser",text=>"$type Documents"}]; |
$r->print(&Apache::loncommon::start_page("$type Documents", $script, |
$r->print(&Apache::loncommon::start_page("$type Documents", $script, |
{'force_register' => $showdoc,}). |
{'force_register' => $showdoc, |
|
'bread_crumbs' => $brcrum}). |
&Apache::loncommon::help_open_menu('','',273,'RAT')); |
&Apache::loncommon::help_open_menu('','',273,'RAT')); |
|
|
my %allfiles = (); |
my %allfiles = (); |
Line 2588 sub handler {
|
Line 2660 sub handler {
|
if ($allowed) { |
if ($allowed) { |
if (($env{'form.uploaddoc.filename'}) && |
if (($env{'form.uploaddoc.filename'}) && |
($env{'form.cmd'}=~/^upload_(\w+)/)) { |
($env{'form.cmd'}=~/^upload_(\w+)/)) { |
# Process file upload - phase one - upload and parse primary file. |
# Process file upload - phase one - upload and parse primary file. |
undef($hadchanges); |
undef($hadchanges); |
$upload_result = &process_file_upload(\$upload_output,$coursenum, |
$upload_result = &process_file_upload(\$upload_output,$coursenum, |
$coursedom,\%allfiles, |
$coursedom,\%allfiles, |
Line 2613 sub handler {
|
Line 2685 sub handler {
|
$newname{$i} = &process_secondary_uploads(\$upload_output,$coursedom,$coursenum,'embedded_item_',$i,$residx); |
$newname{$i} = &process_secondary_uploads(\$upload_output,$coursedom,$coursenum,'embedded_item_',$i,$residx); |
$origname{$i} = &unescape($env{'form.embedded_orig_'.$i}); |
$origname{$i} = &unescape($env{'form.embedded_orig_'.$i}); |
if (exists($env{'form.embedded_codebase_'.$i})) { |
if (exists($env{'form.embedded_codebase_'.$i})) { |
$javacodebase = &unescape($env{'form.embedded_codebase_'.$i}); |
$javacodebase = &unescape($env{'form.embedded_codebase_'.$i}); |
$origname{$i} =~ s#^\Q$javacodebase\E/##; |
$origname{$i} =~ s#^\Q$javacodebase\E/##; |
} |
} |
my @attributes = (); |
my @attributes = (); |
if ($env{'form.embedded_attrib_'.$i} =~ /:/) { |
if ($env{'form.embedded_attrib_'.$i} =~ /:/) { |
@attributes = split/:/,$env{'form.embedded_attrib_'.$i}; |
@attributes = split(/:/,$env{'form.embedded_attrib_'.$i}); |
} else { |
} else { |
@attributes = ($env{'form.embedded_attrib_'.$i}); |
@attributes = ($env{'form.embedded_attrib_'.$i}); |
} |
} |
foreach (@attributes) { |
foreach my $attr (@attributes) { |
push(@{$attribs{$i}},&unescape($_)); |
push(@{$attribs{$i}},&unescape($attr)); |
} |
} |
if ($javacodebase) { |
if ($javacodebase) { |
$codebase{$i} = $javacodebase; |
$codebase{$i} = $javacodebase; |
Line 2641 sub handler {
|
Line 2713 sub handler {
|
my $updateflag = 0; |
my $updateflag = 0; |
my $getstatus = &Apache::lonnet::getuploaded('GET',$primary_url,$coursedom,$coursenum,\$content,\$rtncode); |
my $getstatus = &Apache::lonnet::getuploaded('GET',$primary_url,$coursedom,$coursenum,\$content,\$rtncode); |
if ($getstatus eq 'ok') { |
if ($getstatus eq 'ok') { |
foreach my $item (keys %newname) { |
foreach my $item (keys(%newname)) { |
if ($newname{$item} ne $origname{$item}) { |
if ($newname{$item} ne $origname{$item}) { |
my $attrib_regexp = ''; |
my $attrib_regexp = ''; |
if (@{$attribs{$item}} > 1) { |
if (@{$attribs{$item}} > 1) { |
Line 2651 sub handler {
|
Line 2723 sub handler {
|
} |
} |
if ($content =~ m#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#) { |
if ($content =~ m#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#) { |
} |
} |
$content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi; |
$content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi; |
} |
} |
if (exists($codebase{$item})) { |
if (exists($codebase{$item})) { |
$content =~ s/(codebase\s*=\s*["']?)\Q$codebase{$item}\E(["']?)/$1.$2/i; #' stupid emacs |
$content =~ s/(codebase\s*=\s*["']?)\Q$codebase{$item}\E(["']?)/$1.$2/i; #' stupid emacs |
Line 2663 sub handler {
|
Line 2735 sub handler {
|
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $url = &Apache::lonnet::store_edited_file($primary_url,$content,$docudom,$docuname,\$saveresult); |
my $url = &Apache::lonnet::store_edited_file($primary_url,$content,$docudom,$docuname,\$saveresult); |
} else { |
} else { |
&Apache::lonnet::logthis('retrieval of uploaded file - '.$primary_url.' - for editing, failed: '.$getstatus); |
&Apache::lonnet::logthis('retrieval of uploaded file - '.$primary_url.' - for editing, failed: '.$getstatus); |
} |
} |
} |
} |
} |
} |
Line 2675 sub handler {
|
Line 2747 sub handler {
|
'uplm' => 'Upload a new main '.lc($type).' document', |
'uplm' => 'Upload a new main '.lc($type).' document', |
'upls' => 'Upload a new supplemental '.lc($type).' document', |
'upls' => 'Upload a new supplemental '.lc($type).' document', |
'impp' => 'Import a document', |
'impp' => 'Import a document', |
'pubd' => 'Published documents', |
'pubd' => 'Published Documents', |
'copm' => 'All documents out of a published map into this folder', |
'copm' => 'All documents out of a published map into this folder', |
'spec' => 'Special documents', |
|
'upld' => 'Upload Document', |
'upld' => 'Upload Document', |
'srch' => 'Search', |
'srch' => 'Search', |
'impo' => 'Import', |
'impo' => 'Import', |
Line 2690 sub handler {
|
Line 2761 sub handler {
|
'extr' => 'External Resource', |
'extr' => 'External Resource', |
'syll' => 'Syllabus', |
'syll' => 'Syllabus', |
'navc' => 'Navigate Contents', |
'navc' => 'Navigate Contents', |
'sipa' => 'Simple Page', |
'sipa' => 'Simple Course Page', |
'sipr' => 'Simple Problem', |
'sipr' => 'Simple Problem', |
'drbx' => 'Drop Box', |
'drbx' => 'Drop Box', |
'scuf' => 'Score Upload Form', |
'scuf' => 'Score Upload Form', |
'bull' => 'Bulletin Board', |
'bull' => 'Discussion Board', |
'mypi' => 'My Personal Info', |
'mypi' => 'My Personal Information Page', |
'grpo' => 'Group Files', |
'grpo' => 'Group Portfolio', |
'rost' => 'Course Roster', |
'rost' => 'Course Roster', |
'abou' => 'About User', |
'abou' => 'Personal Information Page for a User', |
'imsf' => 'Import IMS package', |
'imsf' => 'Import IMS package', |
'file' => 'File', |
'file' => 'File', |
'title' => 'Title', |
'title' => 'Title', |
'comment' => 'Comment', |
'comment' => 'Comment', |
'parse' => 'If HTML file, upload embedded images/multimedia files' |
'parse' => 'Upload embedded images/multimedia files if HTML file!', |
|
'nd' => 'New Document', |
|
'pm' => 'Published Map', |
|
'sd' => 'Special Document', |
|
'mo' => 'More Options', |
|
'hao' => 'Hide all Options' |
); |
); |
# ----------------------------------------------------------------------------- |
# ----------------------------------------------------------------------------- |
|
my $fileupload=(<<FIUP); |
|
$lt{'file'}:<br /> |
|
<input type="file" name="uploaddoc" size="40" /> |
|
FIUP |
|
|
|
my $checkbox=(<<CHBO); |
|
<!-- <label>$lt{'parse'}? |
|
<input type="checkbox" name="parserflag" /> |
|
</label> --> |
|
<label> |
|
<input type="checkbox" name="parserflag" checked="checked" /> $lt{'parse'} |
|
</label> |
|
CHBO |
|
|
|
my $fileuploadform=(<<FUFORM); |
|
<form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data"> |
|
$fileupload |
|
<br /> |
|
$lt{'title'}:<br /> |
|
<input type="text" size="50" name="comment" /> |
|
$uploadtag |
|
<input type="hidden" name="cmd" value="upload_default" /> |
|
<br /> |
|
<span class="LC_nobreak"> |
|
$checkbox |
|
</span> |
|
<br /> |
|
<br /> |
|
<span class="LC_nobreak"> |
|
<input type="submit" value="$lt{'upld'}" /> |
|
$help{'Uploading_From_Harddrive'} |
|
</span> |
|
</form> |
|
FUFORM |
|
|
|
my $simpleeditdefaultform=(<<SEDFFORM); |
|
<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> |
|
$lt{'pubd'}<br /> |
|
$uploadtag |
|
<input type="button" onClick="javascript:groupsearch()" value="$lt{'srch'}" /> |
|
<br /> |
|
<span class="LC_nobreak"> |
|
<input type="button" onClick="javascript:groupimport();" value="$lt{'impo'}" /> |
|
$help{'Importing_LON-CAPA_Resource'} |
|
</span> |
|
<br /> |
|
<input type="button" onClick="javascript:groupopen(0,1,1);" value="$lt{'book'}" /> |
|
<hr /> |
|
<p> |
|
$lt{'copm'}<br /> |
|
<input type="text" size="40" name="importmap" /><br /> |
|
<span class="LC_nobreak"><input type="button" |
|
onClick="javascript:openbrowser('simpleeditdefault','importmap','sequence,page','')" |
|
value="$lt{'selm'}" /> <input type="submit" name="loadmap" value="$lt{'load'}" /> |
|
$help{'Load_Map'}</span> |
|
</p> |
|
</form> |
|
SEDFFORM |
|
|
|
my $extresourcesform=(<<ERFORM); |
|
<form action="/adm/coursedocs" method="post" name="newext"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" value="" /> |
|
<span class="LC_nobreak"> |
|
<input name="newext" type="button" onClick="javascript:makenewext('newext');" |
|
value="$lt{'extr'}" /> $help{'Adding_External_Resource'} |
|
</span> |
|
</form> |
|
ERFORM |
|
|
if ($allowed) { |
if ($allowed) { |
&update_paste_buffer($coursenum,$coursedom); |
&update_paste_buffer($coursenum,$coursedom); |
my $dumpbut=&dumpbutton(); |
|
my $exportbut=&exportbutton(); |
|
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'vc' => 'Verify Content', |
'vc' => 'Verify Content', |
'cv' => 'Check/Set Resource Versions', |
'cv' => 'Check/Set Resource Versions', |
Line 2729 sub handler {
|
Line 2873 sub handler {
|
$containertag = '<input type="hidden" name="folderpath" value="" />'; |
$containertag = '<input type="hidden" name="folderpath" value="" />'; |
$uploadtag = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($folderpath,'<>&"').'" />'; |
$uploadtag = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($folderpath,'<>&"').'" />'; |
} |
} |
|
$r->print(<<HIDDENFORM); |
$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="markcopy" /> |
<input type="hidden" name="markcopy" /> |
<input type="hidden" name="copyfolder" /> |
<input type="hidden" name="copyfolder" /> |
$containertag |
$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="" /> |
$uploadtag |
$uploadtag |
</form> |
</form> |
HIDDENFORM |
<form action="/adm/coursedocs" method="post" name="courseverify"> |
} |
<div class="LC_docs_course_commands"> |
# --------------------------------------------------------- Main tab structure |
|
my $activeClass = 1; |
<div> |
$r->print('<ul class="LC_TabContentBigger" id="mainnav">'); |
<input type="submit" name="verify" value="$lt{'vc'}" />$help{'Verify_Content'} |
if (($standard) && ($allowed) && (!$forcesupplement)) { |
</div> |
my $active = ''; |
<div> |
if($activeClass == 1){ |
<input type="submit" name="versions" value="$lt{'cv'}" />$help{'Check_Resource_Versions'} |
$active = 'class="active"'; |
</div> |
$activeClass = 0; |
$dumpbut |
} |
$exportbut |
$r->print('<li '.$active.'onclick="javascript:showPage(this,\'Main Course Documents\',\'mainnav\',\'maincoursedoc\');">'.&mt('Main Course Documents').'</li>'); |
<div> |
} |
<input type="submit" name="listsymbs" value="$lt{'ls'}" /> |
if (!$forcestandard) { |
</div> |
my $active = ''; |
<div> |
if($activeClass == 1){ |
<input type="hidden" name="folder" value="$env{'form.folder'}" /> |
$active = 'class="active"'; |
<input type="submit" name="docslog" value="$lt{'sl'}" /> |
} |
</div> |
$r->print('<li '.$active.'onclick="javascript:showPage(this,\'Supplemental Course Documents\',\'mainnav\',\'maincoursedoc\');">'.&mt('Supplemental Course Documents').'</li>'); |
</div> |
|
</form> |
|
<div style="clear: both; height: 0px;"> </div> |
|
ENDCOURSEVERIFY |
|
$r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc', |
|
&mt('Editing the Table of Contents for your '.$type))); |
|
} |
} |
|
$r->print('<li onclick="javascript:showPage(this,\'Special Admin Options\',\'mainnav\',\'maincoursedoc\');">'.&mt('Special Admin Options').'</li>'); |
|
$r->print('</ul><div class="LC_ContentBoxSpecial" style="margin:0 0;padding:0 0;"><div id="maincoursedoc" style="margin:0 0;padding:0 0;">'); |
# --------------------------------------------------------- Standard documents |
# --------------------------------------------------------- Standard documents |
$r->print('<table class="LC_docs_documents">'); |
|
|
|
if (($standard) && ($allowed) && (!$forcesupplement)) { |
if (($standard) && ($allowed) && (!$forcesupplement)) { |
$r->print('<tr><td class="LC_docs_document">'); |
my $active = 'style="display: none;"'; |
# '<h2>'.&mt('Main Course Documents'). |
if($activeClass == 0){ |
# ($allowed?' '.$help{'Main_Course_Documents'}:'').'</h2>'); |
$active = 'style="display: block;"'; |
|
} |
|
$r->print('<div class="LC_ContentBox" id="Main Course Documents" '.$active.'>'); |
|
$r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc', |
|
&mt('Editing the Table of Contents for your '.$type))); |
my $folder=$env{'form.folder'}; |
my $folder=$env{'form.folder'}; |
if ($folder eq '' || $folder eq 'supplemental') { |
if ($folder eq '' || $folder eq 'supplemental') { |
$folder='default'; |
$folder='default'; |
Line 2787 ENDCOURSEVERIFY
|
Line 2929 ENDCOURSEVERIFY
|
} else { |
} else { |
#$postexec='self.close();'; |
#$postexec='self.close();'; |
} |
} |
$hadchanges=0; |
|
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed, |
|
$upload_output,$type); |
|
if ($error) { |
|
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
|
} |
|
if ($hadchanges) { |
|
&mark_hash_old() |
|
} |
|
&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. |
my $pageseq = '/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. |
Line 2806 ENDCOURSEVERIFY
|
Line 2938 ENDCOURSEVERIFY
|
$container='page'; |
$container='page'; |
} |
} |
my $readfile='/uploaded/'.$coursedom.'/'.$coursenum.'/'.$folder.'.'.$container; |
my $readfile='/uploaded/'.$coursedom.'/'.$coursenum.'/'.$folder.'.'.$container; |
$r->print(<<ENDFORM); |
|
<table class="LC_docs_adddocs"> |
|
<tr> |
|
<th>$lt{'uplm'}</th> |
my $recoverform=(<<RFORM); |
<th>$lt{'impp'}</th> |
<form action="/adm/groupsort" method="post" name="recover"> |
<th>$lt{'spec'}</th> |
<input type="button" name="recovermap" onClick="javascript:groupopen('$readfile',1,0)" value="$lt{'reco'}" /> |
</tr> |
</form> |
<tr> |
RFORM |
<td> |
|
$lt{'file'}:<br /> |
my $imspform=(<<IMSPFORM); |
<form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data"> |
<form action="/adm/imsimportdocs" method="post" name="ims"> |
<input type="file" name="uploaddoc" size="40" /> |
<input type="hidden" name="folder" value="$folder" /> |
<br /> |
<input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" /> |
$lt{'title'}:<br /> |
</form> |
<input type="text" size="50" name="comment" /> |
IMSPFORM |
$uploadtag |
|
<input type="hidden" name="cmd" value="upload_default" /> |
my $newnavform=(<<NNFORM); |
<br /> |
<form action="/adm/coursedocs" method="post" name="newnav"> |
<span class="LC_nobreak"> |
$uploadtag |
<label>$lt{'parse'}? |
<input type="hidden" name="importdetail" |
<input type="checkbox" name="parserflag" checked="checked" /> |
value="$lt{'navc'}=/adm/navmaps" /> |
</label> |
<span class="LC_nobreak"> |
</span> |
<input name="newnav" type="submit" value="$lt{'navc'}" /> |
<br /> |
$help{'Navigate_Content'} |
<br /> |
</span> |
<span class="LC_nobreak"> |
</form> |
<input type="submit" value="$lt{'upld'}" /> |
NNFORM |
$help{'Uploading_From_Harddrive'} |
my $newsmppageform=(<<NSPFORM); |
</span> |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
</form> |
$uploadtag |
</td> |
<input type="hidden" name="importdetail" value="" /> |
<td> |
<span class="LC_nobreak"> |
<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> |
<input name="newsmppg" type="button" value="$lt{'sipa'}" |
$lt{'pubd'}<br /> |
onClick="javascript:makesmppage();" /> $help{'Simple Page'} |
$uploadtag |
</span> |
<input type="button" onClick="javascript:groupsearch()" value="$lt{'srch'}" /> |
</form> |
<br /> |
NSPFORM |
<span class="LC_nobreak"> |
|
<input type="button" onClick="javascript:groupimport();" value="$lt{'impo'}" /> |
my $newsmpproblemform=(<<NSPROBFORM); |
$help{'Importing_LON-CAPA_Resource'} |
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
</span> |
$uploadtag |
<br /> |
<input type="hidden" name="importdetail" value="" /> |
<input type="button" onClick="javascript:groupopen(0,1,1);" value="$lt{'book'}" /> |
<span class="LC_nobreak"> |
<hr /> |
<input name="newsmpproblem" type="button" value="$lt{'sipr'}" |
<p> |
onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} |
$lt{'copm'}<br /> |
</span> |
<input type="text" size="40" name="importmap" /><br /> |
</form> |
<span class="LC_nobreak"><input type="button" |
|
onClick="javascript:openbrowser('simpleeditdefault','importmap','sequence,page','')" |
NSPROBFORM |
value="$lt{'selm'}" /> <input type="submit" name="loadmap" value="$lt{'load'}" /> |
|
$help{'Load_Map'}</span> |
my $newdropboxform=(<<NDBFORM); |
</p> |
<form action="/adm/coursedocs" method="post" name="newdropbox"> |
</form> |
$uploadtag |
<hr /> |
<input type="hidden" name="importdetail" value="" /> |
<form action="/adm/groupsort" method="post" name="recover"> |
<span class="LC_nobreak"> |
<input type="button" name="recovermap" onClick="javascript:groupopen('$readfile',1,0)" value="$lt{'reco'}" /> |
<input name="newdropbox" type="button" value="$lt{'drbx'}" |
</form> |
onClick="javascript:makedropbox();" /> |
ENDFORM |
</span> |
unless ($env{'form.pagepath'}) { |
</form> |
$r->print(<<ENDFORM); |
NDBFORM |
<hr /> |
|
<form action="/adm/coursedocs" method="post" name="newext"> |
my $newexuploadform=(<<NEXUFORM); |
$uploadtag |
<form action="/adm/coursedocs" method="post" name="newexamupload"> |
<input type="hidden" name="importdetail" value="" /> |
$uploadtag |
<span class="LC_nobreak"> |
<input type="hidden" name="importdetail" value="" /> |
<input name="newext" type="button" onClick="javascript:makenewext('newext');" |
<span class="LC_nobreak"> |
value="$lt{'extr'}" /> $help{'Adding_External_Resource'} |
<input name="newexamupload" type="button" value="$lt{'scuf'}" |
</span> |
onClick="javascript:makeexamupload();" /> |
</form> |
$help{'Score_Upload_Form'} |
<br /><form action="/adm/imsimportdocs" method="post" name="ims"> |
</span> |
<input type="hidden" name="folder" value="$folder" /> |
</form> |
<input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" /> |
NEXUFORM |
</form> |
|
ENDFORM |
my $newbulform=(<<NBFORM); |
} |
<form action="/adm/coursedocs" method="post" name="newbul"> |
$r->print('</td><td>'); |
$uploadtag |
|
<input type="hidden" name="importdetail" value="" /> |
|
<span class="LC_nobreak"> |
|
<input name="newbulletin" type="button" value="$lt{'bull'}" |
|
onClick="javascript:makebulboard();" /> |
|
$help{'Bulletin Board'} |
|
</span> |
|
</form> |
|
NBFORM |
|
|
|
my $newaboutmeform=(<<NAMFORM); |
|
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" |
|
value="$plainname=/adm/$udom/$uname/aboutme" /> |
|
<span class="LC_nobreak"> |
|
<input name="newaboutme" type="submit" value="$lt{'mypi'}" /> |
|
$help{'My Personal Information Page'} |
|
</span> |
|
</form> |
|
NAMFORM |
|
|
|
my $newaboutsomeoneform=(<<NASOFORM); |
|
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" value="" /> |
|
<span class="LC_nobreak"> |
|
<input name="newaboutsomeone" type="button" value="$lt{'abou'}" |
|
onClick="javascript:makeabout();" /> |
|
</span> |
|
</form> |
|
NASOFORM |
|
|
|
|
|
my $newrosterform=(<<NROSTFORM); |
|
<form action="/adm/coursedocs" method="post" name="newroster"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" |
|
value="$lt{'rost'}=/adm/viewclasslist" /> |
|
<span class="LC_nobreak"> |
|
<input name="newroster" type="submit" value="$lt{'rost'}" /> |
|
$help{'Course Roster'} |
|
</span> |
|
</form> |
|
NROSTFORM |
|
|
|
my $specialdocumentsform; |
|
my $newfolderform; |
|
|
unless ($env{'form.pagepath'}) { |
unless ($env{'form.pagepath'}) { |
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
$r->print(<<ENDFORM); |
|
<br /><form action="/adm/coursedocs" method="post" name="newfolder"> |
my $newpageform=(<<NPFORM); |
<input type="hidden" name="folderpath" value="$path" /> |
<form action="/adm/coursedocs" method="post" name="newpage"> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<span class="LC_nobreak"> |
<input type="hidden" name="importdetail" value="" /> |
<input name="newfolder" type="button" |
<span class="LC_nobreak"> |
onClick="javascript:makenewfolder(this.form,'$folderseq');" |
<input name="newpage" type="button" |
value="$lt{'newf'}" />$help{'Adding_Folders'} |
onClick="javascript:makenewpage(this.form,'$pageseq');" |
</span> |
value="$lt{'newp'}" />$help{'Adding_Pages'} |
</form> |
</span> |
<br /><form action="/adm/coursedocs" method="post" name="newpage"> |
</form> |
<input type="hidden" name="folderpath" value="$path" /> |
NPFORM |
<input type="hidden" name="importdetail" value="" /> |
|
<span class="LC_nobreak"> |
$newfolderform=(<<NFFORM); |
<input name="newpage" type="button" |
<form action="/adm/coursedocs" method="post" name="newfolder"> |
onClick="javascript:makenewpage(this.form,'$pageseq');" |
<input type="hidden" name="folderpath" value="$path" /> |
value="$lt{'newp'}" />$help{'Adding_Pages'} |
<input type="hidden" name="importdetail" value="" /> |
</span> |
<span class="LC_nobreak"> |
</form> |
<input name="newfolder" type="button" |
<br /><form action="/adm/coursedocs" method="post" name="newsyl"> |
onClick="javascript:makenewfolder(this.form,'$folderseq');" |
$uploadtag |
value="$lt{'newf'}" />$help{'Adding_Folders'} |
<input type="hidden" name="importdetail" |
</span> |
value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" /> |
</form> |
<span class="LC_nobreak"> |
NFFORM |
<input name="newsyl" type="submit" value="$lt{'syll'}" /> |
|
$help{'Syllabus'} |
my $newsylform=(<<NSYLFORM); |
</span> |
<form action="/adm/coursedocs" method="post" name="newsyl"> |
</form> |
$uploadtag |
<br /><form action="/adm/coursedocs" method="post" name="newnav"> |
<input type="hidden" name="importdetail" |
$uploadtag |
value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" /> |
<input type="hidden" name="importdetail" |
<span class="LC_nobreak"> |
value="$lt{'navc'}=/adm/navmaps" /> |
<input name="newsyl" type="submit" value="$lt{'syll'}" /> |
<span class="LC_nobreak"> |
$help{'Syllabus'} |
<input name="newnav" type="submit" value="$lt{'navc'}" /> |
</span> |
$help{'Navigate_Content'} |
</form> |
</span> |
NSYLFORM |
</form> |
|
<br /><form action="/adm/coursedocs" method="post" name="newsmppg"> |
my $newgroupfileform=(<<NGFFORM); |
$uploadtag |
<form action="/adm/coursedocs" method="post" name="newgroupfiles"> |
<input type="hidden" name="importdetail" value="" /> |
$uploadtag |
<span class="LC_nobreak"> |
<input type="hidden" name="importdetail" |
<input name="newsmppg" type="button" value="$lt{'sipa'}" |
value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> |
onClick="javascript:makesmppage();" /> $help{'Simple Page'} |
<span class="LC_nobreak"> |
</span> |
<input name="newgroupfiles" type="submit" value="$lt{'grpo'}" /> |
</form> |
$help{'Group Portfolio'} |
<br /><form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
</span> |
$uploadtag |
</form> |
<input type="hidden" name="importdetail" value="" /> |
NGFFORM |
<span class="LC_nobreak"> |
|
<input name="newsmpproblem" type="button" value="$lt{'sipr'}" |
$specialdocumentsform="<br />$newpageform<br />$newsylform<br />$newgroupfileform"; |
onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} |
} |
</span> |
$specialdocumentsform.="<br />$newnavform<br />$newsmppageform |
</form> |
<br />$newsmpproblemform<br />$newdropboxform |
<br /><form action="/adm/coursedocs" method="post" name="newdropbox"> |
<br />$newexuploadform<br />$newbulform |
$uploadtag |
<br />$newaboutmeform<br />$newaboutsomeoneform |
<input type="hidden" name="importdetail" value="" /> |
<br />$newrosterform"; |
<span class="LC_nobreak"> |
if($env{'form.pagepath'}) { |
<input name="newdropbox" type="button" value="$lt{'drbx'}" |
$specialdocumentsform="<br />$newsmpproblemform<br />$newexuploadform"; |
onClick="javascript:makedropbox();" /> |
} |
</span> |
|
</form> |
my %orderhash = ( |
<br /><form action="/adm/coursedocs" method="post" name="newexamupload"> |
'aa' => 'New Document', |
$uploadtag |
'bb' => 'Published Documents', |
<input type="hidden" name="importdetail" value="" /> |
'cc' => 'Special Documents', |
<span class="LC_nobreak"> |
'dd' => 'More Options', |
<input name="newexamupload" type="button" value="$lt{'scuf'}" |
'zz' => 'Hide all Options', |
onClick="javascript:makeexamupload();" /> |
); |
$help{'Score_Upload_Form'} |
my %namehash = ( |
</span> |
'New Document' => $fileuploadform.'<br />'.$newfolderform, |
</form> |
'Published Documents' => $simpleeditdefaultform, |
<br /><form action="/adm/coursedocs" method="post" name="newbul"> |
'Special Documents' => $specialdocumentsform, |
$uploadtag |
'More Options' => $extresourcesform.'<br />'.$imspform.'<br />'.$recoverform, |
<input type="hidden" name="importdetail" value="" /> |
); |
<span class="LC_nobreak"> |
my $tid='1'; |
<input name="newbulletin" type="button" value="$lt{'bull'}" |
my $content='content'; |
onClick="javascript:makebulboard();" /> |
my $navigation='navigation'; |
$help{'Bulletin Board'} |
my $varcd = 'Main Course Documents'; |
</span> |
$r->print(&generate_edit_table($tid,$content,$navigation,$varcd,\%namehash,\%orderhash)); |
</form> |
$hadchanges=0; |
<br /><form action="/adm/coursedocs" method="post" name="newaboutme"> |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); |
$uploadtag |
if ($error) { |
<input type="hidden" name="importdetail" |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
} |
<span class="LC_nobreak"> |
if ($hadchanges) { |
<input name="newaboutme" type="submit" value="$lt{'mypi'}" /> |
&mark_hash_old(); |
$help{'My Personal Info'} |
|
</span> |
|
</form> |
|
<br /><form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" value="" /> |
|
<span class="LC_nobreak"> |
|
<input name="newaboutsomeone" type="button" value="$lt{'abou'}" |
|
onClick="javascript:makeabout();" /> |
|
</span> |
|
</form> |
|
<br /><form action="/adm/coursedocs" method="post" name="newgroupfiles"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" |
|
value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> |
|
<span class="LC_nobreak"> |
|
<input name="newgroupfiles" type="submit" value="$lt{'grpo'}" /> |
|
$help{'Group Files'} |
|
</span> |
|
</form> |
|
<br /><form action="/adm/coursedocs" method="post" name="newroster"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" |
|
value="$lt{'rost'}=/adm/viewclasslist" /> |
|
<span class="LC_nobreak"> |
|
<input name="newroster" type="submit" value="$lt{'rost'}" /> |
|
$help{'Course Roster'} |
|
</span> |
|
</form> |
|
ENDFORM |
|
} |
} |
|
|
|
&changewarning($r,''); |
|
$r->print('</div>'); |
if ($env{'form.pagepath'}) { |
if ($env{'form.pagepath'}) { |
$r->print(<<ENDBLOCK); |
|
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" value="" /> |
|
<span class="LC_nobreak"> |
|
<input name="newsmpproblem" type="button" value="$lt{'sipr'}" |
|
onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} |
|
</span> |
|
</form> |
|
<br /><form action="/adm/coursedocs" method="post" name="newexamupload"> |
|
$uploadtag |
|
<input type="hidden" name="importdetail" value="" /> |
|
<span class="LC_nobreak"> |
|
<input name="newexamupload" type="button" value="$lt{'scuf'}" |
|
onClick="javascript:makeexamupload();" /> |
|
$help{'Score_Upload_Form'} |
|
</span> |
|
</form> |
|
ENDBLOCK |
|
} |
} |
$r->print('</td></tr>'."\n". |
|
'</table>'); |
|
$r->print('</td></tr>'); |
|
} |
} |
# ----------------------------------------------------- Supplemental documents |
# ----------------------------------------------------- Supplemental documents |
if (!$forcestandard) { |
if (!$forcestandard) { |
$r->print('<tr><td class="LC_docs_document">'); |
my $active = 'style="display: none;"'; |
# '<h2>'.&mt('Supplemental Course Documents'). |
if($activeClass == 1){ |
# ($allowed?' '.$help{'Supplemental'}:'').'</h2>'); |
$active = 'style="display: block;"'; |
|
} |
|
$r->print('<div class="LC_ContentBox" id="Supplemental Course Documents" '.$active.'>'); |
my $folder=$env{'form.folder'}; |
my $folder=$env{'form.folder'}; |
unless ($folder=~/^supplemental/) { |
unless ($folder=~/^supplemental/) { |
$folder='supplemental'; |
$folder='supplemental'; |
Line 3039 ENDBLOCK
|
Line 3172 ENDBLOCK
|
$env{'form.folderpath'} = 'supplemental&'. |
$env{'form.folderpath'} = 'supplemental&'. |
&escape(&mt('Supplemental '.$type.' Documents')); |
&escape(&mt('Supplemental '.$type.' Documents')); |
} |
} |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); |
|
if ($error) { |
|
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
|
} |
|
if ($allowed) { |
if ($allowed) { |
my $folderseq= |
my $folderseq= |
'/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_'.time. |
'/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_'.time. |
'.sequence'; |
'.sequence'; |
|
|
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
$r->print(<<ENDSUPFORM); |
|
<table class="LC_docs_adddocs"><tr> |
my $supupdocform=(<<SUPDOCFORM); |
<th>$lt{'upls'}</th> |
<form action="/adm/coursedocs" method="post" enctype="multipart/form-data"> |
<th>$lt{'spec'}</th> |
$fileupload |
</tr> |
<br /> |
<tr><td> |
<br /> |
<form action="/adm/coursedocs" method="post" enctype="multipart/form-data"> |
<span class="LC_nobreak"> |
<input type="file" name="uploaddoc" size="40" /> |
$checkbox |
<br /> |
</span> |
<br /> |
<br /><br /> |
<span class="LC_nobreak"> |
$lt{'comment'}:<br /> |
<label>$lt{'parse'}? |
<textarea cols=50 rows=4 name='comment'> |
<input type="checkbox" name="parserflag" /> |
</textarea> |
</label> |
<br /> |
</span> |
<input type="hidden" name="folderpath" value="$path" /> |
<br /><br /> |
<input type="hidden" name="cmd" value="upload_supplemental" /> |
$lt{'comment'}:<br /> |
<span class="LC_nobreak"> |
<textarea cols=50 rows=4 name='comment'> |
<input type="submit" value="$lt{'upld'}" /> |
</textarea> |
$help{'Uploading_From_Harddrive'} |
<br /> |
</span> |
<input type="hidden" name="folderpath" value="$path" /> |
</form> |
<input type="hidden" name="cmd" value="upload_supplemental" /> |
SUPDOCFORM |
<span class="LC_nobreak"> |
|
<input type="submit" value="$lt{'upld'}" /> |
my $supnewfolderform=(<<SNFFORM); |
$help{'Uploading_From_Harddrive'} |
<form action="/adm/coursedocs" method="post" name="supnewfolder"> |
</span> |
<input type="hidden" name="folderpath" value="$path" /> |
</form> |
<input type="hidden" name="importdetail" value="" /> |
</td> |
<span class="LC_nobreak"> |
<td> |
<input name="newfolder" type="button" |
<form action="/adm/coursedocs" method="post" name="supnewfolder"> |
onClick="javascript:makenewfolder(this.form,'$folderseq');" |
<input type="hidden" name="folderpath" value="$path" /> |
value="$lt{'newf'}" /> $help{'Adding_Folders'} |
<input type="hidden" name="importdetail" value="" /> |
</span> |
<span class="LC_nobreak"> |
</form> |
<input name="newfolder" type="button" |
SNFFORM |
onClick="javascript:makenewfolder(this.form,'$folderseq');" |
|
value="$lt{'newf'}" /> $help{'Adding_Folders'} |
|
</span> |
my $supnewextform=(<<SNEFORM); |
</form> |
<form action="/adm/coursedocs" method="post" name="supnewext"> |
<br /><form action="/adm/coursedocs" method="post" name="supnewext"> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<span class="LC_nobreak"> |
<input name="newext" type="button" |
<input name="newext" type="button" |
onClick="javascript:makenewext('supnewext');" |
onClick="javascript:makenewext('supnewext');" |
value="$lt{'extr'}" /> $help{'Adding_External_Resource'} |
value="$lt{'extr'}" /> $help{'Adding_External_Resource'} |
</span> |
</span> |
</form> |
</form> |
SNEFORM |
<br /><form action="/adm/coursedocs" method="post" name="supnewsyl"> |
|
<input type="hidden" name="folderpath" value="$path" /> |
my $supnewsylform=(<<SNSFORM); |
<input type="hidden" name="importdetail" |
<form action="/adm/coursedocs" method="post" name="supnewsyl"> |
value="Syllabus=/public/$coursedom/$coursenum/syllabus" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<span class="LC_nobreak"> |
<input type="hidden" name="importdetail" |
<input name="newsyl" type="submit" value="$lt{'syll'}" /> |
value="Syllabus=/public/$coursedom/$coursenum/syllabus" /> |
$help{'Syllabus'} |
<span class="LC_nobreak"> |
</span> |
<input name="newsyl" type="submit" value="$lt{'syll'}" /> |
</form> |
$help{'Syllabus'} |
<br /><form action="/adm/coursedocs" method="post" name="subnewaboutme"> |
</span> |
<input type="hidden" name="folderpath" value="$path" /> |
</form> |
<input type="hidden" name="importdetail" |
SNSFORM |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
|
<span class="LC_nobreak"> |
my $supnewaboutmeform=(<<SNAMFORM); |
<input name="newaboutme" type="submit" value="$lt{'mypi'}" /> |
<form action="/adm/coursedocs" method="post" name="subnewaboutme"> |
$help{'My Personal Info'} |
<input type="hidden" name="folderpath" value="$path" /> |
</span> |
<input type="hidden" name="importdetail" |
</form> |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
</td></tr> |
<span class="LC_nobreak"> |
</table></td></tr> |
<input name="newaboutme" type="submit" value="$lt{'mypi'}" /> |
ENDSUPFORM |
$help{'My Personal Information Page'} |
|
</span> |
|
</form> |
|
SNAMFORM |
|
|
|
|
|
|
|
my %suporderhash = ( |
|
'ee' => 'New Document', |
|
'ff' => 'Special Documents', |
|
'zz' => 'Hide all Options', |
|
); |
|
|
|
my %supnamehash = ( |
|
'New Document' => $supupdocform, |
|
'Special Documents' => $supnewfolderform.'<br />'.$supnewextform.'<br />'.$supnewsylform.'<br />'.$supnewaboutmeform, |
|
); |
|
|
|
my $tid='2'; |
|
my $content='content'; |
|
my $navigation='navigation'; |
|
my $varscd = 'Supplemental Course Documents'; |
|
|
|
$r->print(&generate_edit_table($tid,$content,$navigation,$varscd,\%supnamehash,\%suporderhash)); |
|
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); |
|
if ($error) { |
|
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
} |
} |
} |
$r->print('</div>'); |
$r->print('</table>'); |
} |
|
} |
|
$r->print('<div class="LC_ContentBox" id="Special Admin Options" style="display: none;">'); |
|
$r->print(&generate_admin_options($containertag,$uploadtag,\%help,\%env)); |
|
$r->print('</div>'); |
|
$r->print('</div>'); |
if ($allowed) { |
if ($allowed) { |
$r->print(' |
$r->print(' |
<form method="post" name="extimport" action="/adm/coursedocs"> |
<form method="post" name="extimport" action="/adm/coursedocs"> |
Line 3143 ENDSUPFORM
|
Line 3303 ENDSUPFORM
|
return OK; |
return OK; |
} |
} |
|
|
|
sub generate_admin_options { |
|
my ($containertag,$uploadtag,$help_ref,$env_ref) = @_; |
|
my %lt=&Apache::lonlocal::texthash( |
|
'vc' => 'Verify Content', |
|
'cv' => 'Check/Set Resource Versions', |
|
'ls' => 'List Symbs', |
|
'sl' => 'Show Log' |
|
); |
|
my %help = %{$help_ref}; |
|
my %env = %{$env_ref}; |
|
my $dumpbut=&dumpbutton(); |
|
my $exportbut=&exportbutton(); |
|
return (<<ENDOPTIONFORM); |
|
<form action="/adm/coursedocs" method="post" name="courseverify"> |
|
<ul style="list-style-type:none"> |
|
<li> |
|
<input type="submit" name="verify" value="$lt{'vc'}" />$help{'Verify_Content'} |
|
</li> |
|
<li> |
|
<input type="submit" name="versions" value="$lt{'cv'}" />$help{'Check_Resource_Versions'} |
|
</li> |
|
<li> |
|
$dumpbut |
|
</li> |
|
<li> |
|
$exportbut |
|
</li> |
|
<li> |
|
<input type="submit" name="listsymbs" value="$lt{'ls'}" /> |
|
</li> |
|
<li> |
|
<input type="hidden" name="folder" value="$env{'form.folder'}" /> |
|
<input type="submit" name="docslog" value="$lt{'sl'}" /> |
|
</li> |
|
</ul> |
|
</form> |
|
<!-- <div style="clear: both; height: 0px;"> </div>--> |
|
ENDOPTIONFORM |
|
|
|
} |
|
|
|
|
|
sub generate_edit_table { |
|
my ($tid,$content,$navigation,$varcd,$namehash_ref,$orderhash_ref) = @_; |
|
my %namehash = %{$namehash_ref}; |
|
my %orderhash = %{$orderhash_ref}; |
|
my $form; |
|
|
|
$form = '<div class="LC_ContentBoxSpecial"><h4 class="LC_hcell">'.&mt($varcd).'</h4>'; |
|
$form .= '<ul id="'.$navigation.$tid.'" class="LC_TabContent">'; |
|
foreach my $name (sort(keys(%orderhash))){ |
|
if($name eq 'zz'){ |
|
$form .= '<span class="LC_Right"><li onclick="javascript:hideAll(this, \''.$navigation.$tid.'\' ,\''.$content.$tid.'\');" class="active">'.&mt($orderhash{$name}).'</li></span>'; |
|
}else{ |
|
$form .= '<li onclick="javascript:showPage(this, \''.$tid.$orderhash{$name}.'\', \''.$navigation.$tid.'\',\''.$content.$tid.'\');">'.&mt($orderhash{$name}).'</li>'; |
|
} |
|
} |
|
$form .= '</ul>'; |
|
$form .= '<div id="'.$content.$tid.'" style="padding: 0 0; margin: 0 0;">'; |
|
foreach my $field (keys(%namehash)){ |
|
$form .= '<div id="'.$tid.$field.'" class="LC_ContentBox" style="display: none;">'.$namehash{$field}.'</div>'; |
|
} |
|
$form .= '</div></div>'; |
|
|
|
return $form; |
|
} |
|
|
sub editing_js { |
sub editing_js { |
my ($udom,$uname) = @_; |
my ($udom,$uname) = @_; |
Line 3153 sub editing_js {
|
Line 3379 sub editing_js {
|
p_mnp => 'Name of New Page', |
p_mnp => 'Name of New Page', |
t_mnp => 'New Page', |
t_mnp => 'New Page', |
p_mxu => 'Title for the Uploaded Score', |
p_mxu => 'Title for the Uploaded Score', |
p_msp => 'Title for the Page', |
p_msp => 'Name of Simple Course Page', |
p_msb => 'Title for the Problem', |
p_msb => 'Title for the Problem', |
p_mdb => 'Title for the Drop Box', |
p_mdb => 'Title for the Drop Box', |
p_mbb => 'Title for the Bulletin Board', |
p_mbb => 'Title for the Discussion Board', |
p_mab => "Enter user:domain for User's 'About Me' Page", |
p_mab => "Enter user:domain for User's Personal Information Page", |
p_mab2 => "About [_99]", |
p_mab2 => 'Personal Information Page of ', |
p_mab_alrt1 => 'Not a valid user:domain', |
p_mab_alrt1 => 'Not a valid user:domain', |
p_mab_alrt2 => 'Please enter both user and domain in the format user:domain', |
p_mab_alrt2 => 'Please enter both user and domain in the format user:domain', |
p_chn => 'New Title', |
p_chn => 'New Title', |
Line 3206 function edittext(targetname,residx,titl
|
Line 3432 function edittext(targetname,residx,titl
|
|
|
function makeexamupload() { |
function makeexamupload() { |
var title=prompt('$lt{"p_mxu"}'); |
var title=prompt('$lt{"p_mxu"}'); |
if (title) { |
if (title) { |
this.document.forms.newexamupload.importdetail.value= |
this.document.forms.newexamupload.importdetail.value= |
escape(title)+'=/res/lib/templates/examupload.problem'; |
escape(title)+'=/res/lib/templates/examupload.problem'; |
this.document.forms.newexamupload.submit(); |
this.document.forms.newexamupload.submit(); |
Line 3215 function makeexamupload() {
|
Line 3441 function makeexamupload() {
|
|
|
function makesmppage() { |
function makesmppage() { |
var title=prompt('$lt{"p_msp"}'); |
var title=prompt('$lt{"p_msp"}'); |
if (title) { |
if (title) { |
this.document.forms.newsmppg.importdetail.value= |
this.document.forms.newsmppg.importdetail.value= |
escape(title)+'=/adm/$udom/$uname/$now/smppg'; |
escape(title)+'=/adm/$udom/$uname/$now/smppg'; |
this.document.forms.newsmppg.submit(); |
this.document.forms.newsmppg.submit(); |
Line 3224 function makesmppage() {
|
Line 3450 function makesmppage() {
|
|
|
function makesmpproblem() { |
function makesmpproblem() { |
var title=prompt('$lt{"p_msb"}'); |
var title=prompt('$lt{"p_msb"}'); |
if (title) { |
if (title) { |
this.document.forms.newsmpproblem.importdetail.value= |
this.document.forms.newsmpproblem.importdetail.value= |
escape(title)+'=/res/lib/templates/simpleproblem.problem'; |
escape(title)+'=/res/lib/templates/simpleproblem.problem'; |
this.document.forms.newsmpproblem.submit(); |
this.document.forms.newsmpproblem.submit(); |
Line 3233 function makesmpproblem() {
|
Line 3459 function makesmpproblem() {
|
|
|
function makedropbox() { |
function makedropbox() { |
var title=prompt('$lt{"p_mdb"}'); |
var title=prompt('$lt{"p_mdb"}'); |
if (title) { |
if (title) { |
this.document.forms.newdropbox.importdetail.value= |
this.document.forms.newdropbox.importdetail.value= |
escape(title)+'=/res/lib/templates/DropBox.problem'; |
escape(title)+'=/res/lib/templates/DropBox.problem'; |
this.document.forms.newdropbox.submit(); |
this.document.forms.newdropbox.submit(); |
Line 3258 function makeabout() {
|
Line 3484 function makeabout() {
|
if ((comp[0]) && (comp[1])) { |
if ((comp[0]) && (comp[1])) { |
this.document.forms.newaboutsomeone.importdetail.value= |
this.document.forms.newaboutsomeone.importdetail.value= |
'$lt{"p_mab2"}'+escape(user)+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; |
'$lt{"p_mab2"}'+escape(user)+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; |
this.document.forms.newaboutsomeone.submit(); |
this.document.forms.newaboutsomeone.submit(); |
} else { |
} else { |
alert("$lt{'p_mab_alrt1'}"); |
alert("$lt{'p_mab_alrt1'}"); |
} |
|
} else { |
|
alert("$lt{'p_mab_alrt2'}"); |
|
} |
|
} |
} |
|
} else { |
|
alert("$lt{'p_mab_alrt2'}"); |
|
} |
|
} |
} |
} |
|
|
function makeims() { |
function makeims() { |
var caller = document.forms.ims.folder.value; |
var caller = document.forms.ims.folder.value; |
var newlocation = "/adm/imsimportdocs?folder="+caller+"&phase=one"; |
var newlocation = "/adm/imsimportdocs?folder="+caller+"&phase=one"; |
newWindow = window.open("","IMSimport","HEIGHT=700,WIDTH=750,scrollbars=yes"); |
newWindow = window.open("","IMSimport","HEIGHT=700,WIDTH=750,scrollbars=yes"); |
newWindow.location.href = newlocation; |
newWindow.location.href = newlocation; |
} |
} |
|
|
|
|
function finishpick() { |
function finishpick() { |
var title=this.document.forms.extimport.title.value; |
var title=this.document.forms.extimport.title.value; |
var url=this.document.forms.extimport.url.value; |
var url=this.document.forms.extimport.url.value; |
var form=this.document.forms.extimport.useform.value; |
var form=this.document.forms.extimport.useform.value; |
var residx=this.document.forms.extimport.residx.value; |
var residx=this.document.forms.extimport.residx.value; |
eval('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+'='+residx+'";this.document.forms.'+form+'.submit();'); |
eval('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+'='+residx+'";this.document.forms.'+form+'.submit();'); |
} |
} |
|
|
function changename(folderpath,index,oldtitle,container,pagesymb) { |
function changename(folderpath,index,oldtitle,container,pagesymb) { |
var title=prompt('$lt{"p_chn"}',oldtitle); |
var title=prompt('$lt{"p_chn"}',oldtitle); |
if (title) { |
if (title) { |
this.document.forms.renameform.markcopy.value=-1; |
this.document.forms.renameform.markcopy.value=-1; |
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; |
if (container == 'sequence') { |
if (container == 'sequence') { |
this.document.forms.renameform.folderpath.value=folderpath; |
this.document.forms.renameform.folderpath.value=folderpath; |
} |
} |
if (container == 'page') { |
if (container == 'page') { |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
} |
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
} |
} |
|
|
function removeres(folderpath,index,oldtitle,container,pagesymb,skip_confirm) { |
function removeres(folderpath,index,oldtitle,container,pagesymb,skip_confirm) { |
if (skip_confirm || confirm('$lt{"p_rmr1"}\\n\\n$lt{"p_rmr2a"} "'+oldtitle+'" $lt{"p_rmr2b"}')) { |
if (skip_confirm || confirm('$lt{"p_rmr1"}\\n\\n$lt{"p_rmr2a"} "'+oldtitle+'" $lt{"p_rmr2b"}')) { |
this.document.forms.renameform.markcopy.value=-1; |
this.document.forms.renameform.markcopy.value=-1; |
this.document.forms.renameform.cmd.value='del_'+index; |
this.document.forms.renameform.cmd.value='del_'+index; |
if (container == 'sequence') { |
if (container == 'sequence') { |
this.document.forms.renameform.folderpath.value=folderpath; |
this.document.forms.renameform.folderpath.value=folderpath; |
} |
} |
if (container == 'page') { |
if (container == 'page') { |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
} |
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
} |
} |
|
|
function cutres(folderpath,index,oldtitle,container,pagesymb,folder,skip_confirm) { |
function cutres(folderpath,index,oldtitle,container,pagesymb,folder,skip_confirm) { |
if (skip_confirm || confirm('$lt{"p_ctr1a"}\\n$lt{"p_ctr1b"}\\n\\n$lt{"p_ctr2a"} "'+oldtitle+'" $lt{"p_ctr2b"}')) { |
if (skip_confirm || confirm('$lt{"p_ctr1a"}\\n$lt{"p_ctr1b"}\\n\\n$lt{"p_ctr2a"} "'+oldtitle+'" $lt{"p_ctr2b"}')) { |
this.document.forms.renameform.cmd.value='cut_'+index; |
this.document.forms.renameform.cmd.value='cut_'+index; |
this.document.forms.renameform.markcopy.value=index; |
this.document.forms.renameform.markcopy.value=index; |
this.document.forms.renameform.copyfolder.value=folder+'.'+container; |
this.document.forms.renameform.copyfolder.value=folder+'.'+container; |
if (container == 'sequence') { |
if (container == 'sequence') { |
this.document.forms.renameform.folderpath.value=folderpath; |
this.document.forms.renameform.folderpath.value=folderpath; |
} |
} |
if (container == 'page') { |
if (container == 'page') { |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
} |
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
} |
} |
|
|
function markcopy(folderpath,index,oldtitle,container,pagesymb,folder) { |
function markcopy(folderpath,index,oldtitle,container,pagesymb,folder) { |
this.document.forms.renameform.markcopy.value=index; |
this.document.forms.renameform.markcopy.value=index; |
this.document.forms.renameform.copyfolder.value=folder+'.'+container; |
this.document.forms.renameform.copyfolder.value=folder+'.'+container; |
if (container == 'sequence') { |
if (container == 'sequence') { |
this.document.forms.renameform.folderpath.value=folderpath; |
this.document.forms.renameform.folderpath.value=folderpath; |
} |
} |
if (container == 'page') { |
if (container == 'page') { |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
} |
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
|
} |
|
|
|
function unselectInactive(nav) { |
|
currentNav = document.getElementById(nav); |
|
currentLis = currentNav.getElementsByTagName('LI'); |
|
for (i = 0; i < currentLis.length; i++) { |
|
currentLis[i].className = 'i'; |
|
} |
|
} |
|
|
|
function hideAll(current, nav, data) { |
|
unselectInactive(nav); |
|
current.className = 'active'; |
|
currentData = document.getElementById(data); |
|
currentDivs = currentData.getElementsByTagName('DIV'); |
|
for (i = 0; i < currentDivs.length; i++) { |
|
if(currentDivs[i].className == 'LC_ContentBox'){ |
|
currentDivs[i].style.display = 'none'; |
|
} |
|
} |
|
} |
|
|
|
function showPage(current, pageId, nav, data) { |
|
hideAll(current, nav, data); |
|
unselectInactive(nav); |
|
current.className = 'active'; |
|
currentData = document.getElementById(pageId); |
|
currentData.style.display = 'block'; |
|
return false; |
} |
} |
|
|
ENDNEWSCRIPT |
ENDNEWSCRIPT |
Line 3370 Available help topics
|
Line 3625 Available help topics
|
|
|
=item mapread() |
=item mapread() |
|
|
Mapread read maps into LONCAPA::map:: global arrays |
Mapread read maps into LONCAPA::map:: global arrays |
@order and @resources, determines status |
@order and @resources, determines status |
sets @order - pointer to resources in right order |
sets @order - pointer to resources in right order |
sets @resources - array with the resources with correct idx |
sets @resources - array with the resources with correct idx |