version 1.547, 2013/05/21 12:54:15
|
version 1.570, 2013/11/17 14:40:31
|
Line 41 use Apache::lonclonecourse;
|
Line 41 use Apache::lonclonecourse;
|
use Apache::lonnavmaps; |
use Apache::lonnavmaps; |
use Apache::lonnavdisplay(); |
use Apache::lonnavdisplay(); |
use Apache::lonextresedit(); |
use Apache::lonextresedit(); |
|
use Apache::lontemplate(); |
|
use Apache::lonsimplepage(); |
use HTML::Entities; |
use HTML::Entities; |
use HTML::TokeParser; |
use HTML::TokeParser; |
use GDBM_File; |
use GDBM_File; |
Line 56 my $hashtied;
|
Line 58 my $hashtied;
|
my %alreadyseen=(); |
my %alreadyseen=(); |
|
|
my $hadchanges; |
my $hadchanges; |
|
my $suppchanges; |
|
|
|
|
my %help=(); |
my %help=(); |
Line 79 sub storemap {
|
Line 82 sub storemap {
|
$map,1,$report); |
$map,1,$report); |
if ($errtext) { return ($errtext,2); } |
if ($errtext) { return ($errtext,2); } |
|
|
$hadchanges=1; |
if ($map =~ /^default/) { |
|
$hadchanges=1; |
|
} else { |
|
$suppchanges=1; |
|
} |
return ($errtext,0); |
return ($errtext,0); |
} |
} |
|
|
Line 136 sub clean {
|
Line 143 sub clean {
|
sub dumpcourse { |
sub dumpcourse { |
my ($r) = @_; |
my ($r) = @_; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
$r->print(&Apache::loncommon::start_page('Dump '.$crstype.' Content to Authoring Space')."\n". |
my ($starthash,$js); |
&Apache::lonhtmlcommon::breadcrumbs('Dump '.$crstype.' Content to Authoring Space')."\n"); |
unless (($env{'form.authorspace'}) && ($env{'form.authorfolder'}=~/\w/)) { |
|
$js = <<"ENDJS"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
|
function hide_searching() { |
|
if (document.getElementById('searching')) { |
|
document.getElementById('searching').style.display = 'none'; |
|
} |
|
return; |
|
} |
|
|
|
// ]]> |
|
</script> |
|
ENDJS |
|
$starthash = { |
|
add_entries => {'onload' => "hide_searching();"}, |
|
}; |
|
} |
|
$r->print(&Apache::loncommon::start_page('Copy '.$crstype.' Content to Authoring Space',$js,$starthash)."\n". |
|
&Apache::lonhtmlcommon::breadcrumbs('Copy '.$crstype.' Content to Authoring Space')."\n"); |
$r->print(&startContentScreen('tools')); |
$r->print(&startContentScreen('tools')); |
my ($home,$other,%outhash)=&authorhosts(); |
my ($home,$other,%outhash)=&authorhosts(); |
unless ($home) { |
unless ($home) { |
Line 156 sub dumpcourse {
|
Line 183 sub dumpcourse {
|
$r->print('<h3>'.&mt('Copying Files').'</h3>'); |
$r->print('<h3>'.&mt('Copying Files').'</h3>'); |
my $title=$env{'form.authorfolder'}; |
my $title=$env{'form.authorfolder'}; |
$title=&clean($title); |
$title=&clean($title); |
my %replacehash=(); |
my ($navmap,$errormsg) = |
foreach my $key (keys(%env)) { |
&Apache::loncourserespicker::get_navmap_object($crstype,'dumpdocs'); |
if ($key=~/^form\.namefor\_(.+)/) { |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
$replacehash{$1}=$env{$key}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
} |
my (%maps,%resources,%titles); |
|
if (!ref($navmap)) { |
|
$r->print($errormsg. |
|
&endContentScreen()); |
|
return ''; |
|
} else { |
|
&Apache::loncourserespicker::enumerate_course_contents($navmap,\%maps,\%resources,\%titles, |
|
'dumpdocs',$cdom,$cnum); |
} |
} |
|
my @todump = &Apache::loncommon::get_env_multiple('form.archive'); |
|
my (%tocopy,%replacehash,%lookup,%deps,%display,%result,%depresult,%simpleproblems,%simplepages, |
|
%newcontent,%has_simpleprobs); |
|
foreach my $item (sort {$a <=> $b} (@todump)) { |
|
my $name = $env{'form.namefor_'.$item}; |
|
if ($resources{$item}) { |
|
my ($map,$id,$res) = &Apache::lonnet::decode_symb($resources{$item}); |
|
if ($res =~ m{^uploaded/$cdom/$cnum/\E((?:docs|supplemental)/.+)$}) { |
|
$tocopy{$1} = $name; |
|
$display{$item} = $1; |
|
$lookup{$1} = $item; |
|
} elsif ($res eq 'lib/templates/simpleproblem.problem') { |
|
$simpleproblems{$item} = { |
|
symb => $resources{$item}, |
|
name => $name, |
|
}; |
|
$display{$item} = 'simpleproblem_'.$name; |
|
if ($map =~ m{^\Quploaded/$cdom/$cnum/\E(.+)$}) { |
|
$has_simpleprobs{$1}{$id} = $item; |
|
} |
|
} elsif ($res =~ m{^adm/$match_domain/$match_username/(\d+)/smppg}) { |
|
my $marker = $1; |
|
my $db_name = &Apache::lonsimplepage::get_db_name($res,$marker,$cdom,$cnum); |
|
$simplepages{$item} = { |
|
res => $res, |
|
title => $titles{$item}, |
|
db => $db_name, |
|
marker => $marker, |
|
symb => $resources{$item}, |
|
name => $name, |
|
}; |
|
$display{$item} = '/'.$res; |
|
} |
|
} elsif ($maps{$item}) { |
|
if ($maps{$item} =~ m{^\Quploaded/$cdom/$cnum/\E((?:default|supplemental)_\d+\.(?:sequence|page))$}) { |
|
$tocopy{$1} = $name; |
|
$display{$item} = $1; |
|
$lookup{$1} = $item; |
|
} |
|
} else { |
|
next; |
|
} |
|
} |
my $crs='/uploaded/'.$env{'request.course.id'}.'/'; |
my $crs='/uploaded/'.$env{'request.course.id'}.'/'; |
$crs=~s/\_/\//g; |
$crs=~s/\_/\//g; |
foreach my $item (keys(%replacehash)) { |
my $mm = new File::MMagic; |
my $newfilename=$title.'/'.$replacehash{$item}; |
my $prefix = "/uploaded/$cdom/$cnum/"; |
$newfilename=~s/\.(\w+)$//; |
%replacehash = %tocopy; |
my $ext=$1; |
foreach my $item (sort(keys(%simpleproblems))) { |
$newfilename=&clean($newfilename); |
my $content = &Apache::imsexport::simpleproblem($simpleproblems{$item}{'symb'}); |
$newfilename.='.'.$ext; |
$newcontent{$display{$item}} = $content; |
my @dirs=split(/\//,$newfilename); |
} |
my $path=$r->dir_config('lonDocRoot')."/priv/$cd/$ca"; |
my $gateway = Apache::lonhtmlgateway->new('web'); |
my $makepath=$path; |
foreach my $item (sort(keys(%simplepages))) { |
my $fail=0; |
if (ref($simplepages{$item}) eq 'HASH') { |
for (my $i=0;$i<$#dirs;$i++) { |
my $pagetitle = $simplepages{$item}{'title'}; |
$makepath.='/'.$dirs[$i]; |
my %fields = &Apache::lonnet::dump($simplepages{$item}{'db'},$cdom,$cnum); |
unless (-e $makepath) { |
my %contents; |
unless(mkdir($makepath,0777)) { $fail=1; } |
foreach my $field (keys(%fields)) { |
} |
if ($field =~ /^(?:aaa|bbb|ccc)_(\w+)$/) { |
} |
my $name = $1; |
$r->print('<br /><tt>'.$item.'</tt> => <tt>'.$newfilename.'</tt>: '); |
my $msg = $fields{$field}; |
if (my $fh=Apache::File->new('>'.$path.'/'.$newfilename)) { |
if ($name eq 'webreferences') { |
if ($item=~/\.(sequence|page|html|htm|xml|xhtml)$/) { |
if ($msg =~ m{^https?://}) { |
print $fh &Apache::lonclonecourse::rewritefile( |
$contents{$name} = '<a href="'.$msg.'"><tt>'.$msg.'</tt></a>'; |
&Apache::lonclonecourse::readfile($env{'request.course.id'},$item), |
} |
(%replacehash,$crs => '') |
} else { |
); |
$msg = &Encode::decode('utf8',$msg); |
} else { |
$msg = $gateway->process_outgoing_html($msg,1); |
print $fh |
$contents{$name} = $msg; |
&Apache::lonclonecourse::readfile($env{'request.course.id'},$item); |
} |
} |
} elsif ($field eq 'uploaded.photourl') { |
$fh->close(); |
my $marker = $simplepages{$item}{marker}; |
} else { |
if ($fields{$field} =~ m{^\Q$prefix\E(simplepage/$marker/.+)$}) { |
$fail=1; |
my $filepath = $1; |
} |
my ($relpath,$fname) = ($filepath =~ m{^(.+/)([^/]+)$}); |
if ($fail) { |
if ($fname ne '') { |
$r->print('<span class="LC_error">'.&mt('fail').'</span>'); |
$fname=~s/\.(\w+)$//; |
} else { |
my $ext=$1; |
$r->print('<span class="LC_success">'.&mt('ok').'</span>'); |
$fname = &clean($fname); |
} |
$fname.='.'.$ext; |
} |
$contents{image} = '<img src="'.$relpath.$fname.'" alt="Image" />'; |
|
$replacehash{$filepath} = $relpath.$fname; |
|
$deps{$item}{$filepath} = 1; |
|
} |
|
} |
|
} |
|
} |
|
$replacehash{'/'.$simplepages{$item}{'res'}} = $simplepages{$item}{'name'}; |
|
$lookup{'/'.$simplepages{$item}{'res'}} = $item; |
|
my $content = ' |
|
<html> |
|
<head> |
|
<title>'.$pagetitle.'</title> |
|
</head> |
|
<body bgcolor="#ffffff">'; |
|
if ($contents{title}) { |
|
$content .= "\n".'<h2>'.$contents{title}.'</h2>'; |
|
} |
|
if ($contents{image}) { |
|
$content .= "\n".$contents{image}; |
|
} |
|
if ($contents{content}) { |
|
$content .= ' |
|
<div class="LC_Box"> |
|
<h4 class="LC_hcell">Content</h4>'. |
|
$contents{content}.' |
|
</div>'; |
|
} |
|
if ($contents{webreferences}) { |
|
$content .= ' |
|
<div class="LC_Box"> |
|
<h4 class="LC_hcell">Web References</h4>'. |
|
$contents{webreferences}.' |
|
</div>'; |
|
} |
|
$content .= ' |
|
</body> |
|
</html> |
|
'; |
|
$newcontent{'/'.$simplepages{$item}{res}} = $content; |
|
} |
|
} |
|
foreach my $item (keys(%tocopy)) { |
|
unless ($item=~/\.(sequence|page)$/) { |
|
my $currurlpath = $prefix.$item; |
|
my $currdirpath = &Apache::lonnet::filelocation('',$currurlpath); |
|
&recurse_html($mm,$prefix,$currdirpath,$currurlpath,$item,$lookup{$item},\%replacehash,\%deps); |
|
} |
|
} |
|
foreach my $num (sort {$a <=> $b} (@todump)) { |
|
my $src = $display{$num}; |
|
next if ($src eq ''); |
|
my @needcopy = (); |
|
if ($replacehash{$src}) { |
|
push(@needcopy,$src); |
|
if (ref($deps{$num}) eq 'HASH') { |
|
foreach my $dep (sort(keys(%{$deps{$num}}))) { |
|
if ($replacehash{$dep}) { |
|
push(@needcopy,$dep); |
|
} |
|
} |
|
} |
|
} elsif ($src =~ /^simpleproblem_/) { |
|
push(@needcopy,$src); |
|
} |
|
next if (@needcopy == 0); |
|
my ($result,$depresult); |
|
for (my $i=0; $i<@needcopy; $i++) { |
|
my $item = $needcopy[$i]; |
|
my $newfilename; |
|
if ($simpleproblems{$num}) { |
|
$newfilename=$title.'/'.$simpleproblems{$num}{'name'}; |
|
} else { |
|
$newfilename=$title.'/'.$replacehash{$item}; |
|
} |
|
$newfilename=~s/\.(\w+)$//; |
|
my $ext=$1; |
|
$newfilename=&clean($newfilename); |
|
$newfilename.='.'.$ext; |
|
my ($newrelpath) = ($newfilename =~ m{^\Q$title/\E(.+)$}); |
|
if ($newrelpath ne $replacehash{$item}) { |
|
$replacehash{$item} = $newrelpath; |
|
} |
|
my @dirs=split(/\//,$newfilename); |
|
my $path=$r->dir_config('lonDocRoot')."/priv/$cd/$ca"; |
|
my $makepath=$path; |
|
my $fail; |
|
my $origin; |
|
for (my $i=0;$i<$#dirs;$i++) { |
|
$makepath.='/'.$dirs[$i]; |
|
unless (-e $makepath) { |
|
unless(mkdir($makepath,0755)) { |
|
$fail = &mt('Directory creation failed.'); |
|
} |
|
} |
|
} |
|
if ($i == 0) { |
|
$result = '<br /><tt>'.$item.'</tt> => <tt>'.$newfilename.'</tt>: '; |
|
} else { |
|
$depresult .= '<li><tt>'.$item.'</tt> => <tt>'.$newfilename.'</tt> '. |
|
'<span class="LC_fontsize_small" style="font-weight: bold;">'. |
|
&mt('(dependency)').'</span>: '; |
|
} |
|
if (-e $path.'/'.$newfilename) { |
|
$fail = &mt('Destination already exists -- not overwriting.'); |
|
} else { |
|
if (my $fh=Apache::File->new('>'.$path.'/'.$newfilename)) { |
|
if (($item =~ m{^/adm/$match_domain/$match_username/\d+/smppg}) || |
|
($item =~ /^simpleproblem_/)) { |
|
print $fh $newcontent{$item}; |
|
} else { |
|
my $fileloc = &Apache::lonnet::filelocation('',$prefix.$item); |
|
if (-e $fileloc) { |
|
if ($item=~/\.(sequence|page|html|htm|xml|xhtml)$/) { |
|
if ((($1 eq 'sequence') || ($1 eq 'page')) && |
|
(ref($has_simpleprobs{$item}) eq 'HASH')) { |
|
my %changes = %{$has_simpleprobs{$item}}; |
|
my $content = &Apache::lonclonecourse::rewritefile( |
|
&Apache::lonclonecourse::readfile($env{'request.course.id'},$item), |
|
(%replacehash,$crs => '') |
|
); |
|
my $updatedcontent = ''; |
|
my $parser = HTML::TokeParser->new(\$content); |
|
$parser->attr_encoded(1); |
|
while (my $token = $parser->get_token) { |
|
if ($token->[0] eq 'S') { |
|
if (($token->[1] eq 'resource') && |
|
($token->[2]->{'src'} eq '/res/lib/templates/simpleproblem.problem') && |
|
($changes{$token->[2]->{'id'}})) { |
|
my $id = $token->[2]->{'id'}; |
|
$updatedcontent .= '<'.$token->[1]; |
|
foreach my $attrib (@{$token->[3]}) { |
|
next unless ($attrib =~ /^(src|type|title|id)$/); |
|
if ($attrib eq 'src') { |
|
my ($file) = ($display{$changes{$id}} =~ /^\Qsimpleproblem_\E(.+)$/); |
|
if ($file) { |
|
$updatedcontent .= ' '.$attrib.'="'.$file.'"'; |
|
} else { |
|
$updatedcontent .= ' '.$attrib.'="'.$token->[2]->{$attrib}.'"'; |
|
} |
|
} else { |
|
$updatedcontent .= ' '.$attrib.'="'.$token->[2]->{$attrib}.'"'; |
|
} |
|
} |
|
$updatedcontent .= ' />'."\n"; |
|
} else { |
|
$updatedcontent .= $token->[4]."\n"; |
|
} |
|
} else { |
|
$updatedcontent .= $token->[2]; |
|
} |
|
} |
|
print $fh $updatedcontent; |
|
} else { |
|
print $fh &Apache::lonclonecourse::rewritefile( |
|
&Apache::lonclonecourse::readfile($env{'request.course.id'},$item), |
|
(%replacehash,$crs => '') |
|
); |
|
} |
|
} else { |
|
print $fh |
|
&Apache::lonclonecourse::readfile($env{'request.course.id'},$item); |
|
} |
|
} else { |
|
$fail = &mt('Source does not exist.'); |
|
} |
|
} |
|
$fh->close(); |
|
} else { |
|
$fail = &mt('Could not write to destination.'); |
|
} |
|
} |
|
my $text; |
|
if ($fail) { |
|
$text = '<span class="LC_error">'.&mt('fail').(' 'x3).$fail.'</span>'; |
|
} else { |
|
$text = '<span class="LC_success">'.&mt('ok').'</span>'; |
|
} |
|
if ($i == 0) { |
|
$result .= $text; |
|
} else { |
|
$depresult .= $text.'</li>'; |
|
} |
|
} |
|
$r->print($result); |
|
if ($depresult) { |
|
$r->print('<ul>'.$depresult.'</ul>'); |
|
} |
|
} |
} else { |
} else { |
$r->print(&mt('Searching ...').'<br />'); |
my ($navmap,$errormsg) = |
$r->rflush(); |
&Apache::loncourserespicker::get_navmap_object($crstype,'dumpdocs'); |
# Input form |
if (!ref($navmap)) { |
$r->print('<form name="dumpdoc" action="" method="post">'."\n"); |
$r->print($errormsg); |
unless ($home==1) { |
} else { |
$r->print('<div class="LC_left_float">'. |
$r->print('<div id="searching">'.&mt('Searching ...').'</div>'); |
'<fieldset><legend>'. |
$r->rflush(); |
&mt('Select the Authoring Space'). |
my ($preamble,$formname); |
'</legend><select name="authorspace">'); |
$formname = 'dumpdoc'; |
} |
unless ($home==1) { |
foreach my $key (sort(keys(%outhash))) { |
$preamble = '<div class="LC_left_float">'. |
if ($key=~/^home_(.+)$/) { |
'<fieldset><legend>'. |
|
&mt('Select the Authoring Space'). |
|
'</legend><select name="authorspace">'; |
|
} |
|
my @orderspaces = (); |
|
foreach my $key (sort(keys(%outhash))) { |
|
if ($key=~/^home_(.+)$/) { |
|
if ($1 eq $env{'user.name'}.':'.$env{'user.domain'}) { |
|
unshift(@orderspaces,$1); |
|
} else { |
|
push(@orderspaces,$1); |
|
} |
|
} |
|
} |
|
if ($home>1) { |
|
$preamble .= '<option value="" selected="selected">'.&mt('Select').'</option>'; |
|
} |
|
foreach my $user (@orderspaces) { |
if ($home==1) { |
if ($home==1) { |
$r->print( |
$preamble .= '<input type="hidden" name="authorspace" value="'.$user.'" />'; |
'<input type="hidden" name="authorspace" value="'.$1.'" />'); |
|
} else { |
} else { |
$r->print('<option value="'.$1.'">'.$1.' - '. |
$preamble .= '<option value="'.$user.'">'.$user.' - '. |
&Apache::loncommon::plainname(split(/\:/,$1)).'</option>'); |
&Apache::loncommon::plainname(split(/\:/,$user)).'</option>'; |
} |
} |
} |
} |
} |
unless ($home==1) { |
unless ($home==1) { |
$preamble .= '</select></fieldset></div>'."\n"; |
$r->print('</select></fieldset></div>'."\n"); |
|
} |
|
my $title=$origcrsdata{'description'}; |
|
$title=~s/[\/\s]+/\_/gs; |
|
$title=&clean($title); |
|
$r->print('<div class="LC_left_float">'. |
|
'<fieldset><legend>'.&mt('Folder in Authoring Space').'</legend>'. |
|
'<input type="text" size="50" name="authorfolder" value="'. |
|
$title.'" />'. |
|
'</fieldset></div><br clear="all" />'."\n"); |
|
&tiehash(); |
|
$r->print('<h4>'.&mt('Filenames in Authoring Space').'</h4>' |
|
.&Apache::loncommon::start_data_table() |
|
.&Apache::loncommon::start_data_table_header_row() |
|
.'<th>'.&mt('Internal Filename').'</th>' |
|
.'<th>'.&mt('Title').'</th>' |
|
.'<th>'.&mt('Save as ...').'</th>' |
|
.&Apache::loncommon::end_data_table_header_row()); |
|
foreach my $file (&Apache::lonclonecourse::crsdirlist($origcrsid,'userfiles')) { |
|
$r->print(&Apache::loncommon::start_data_table_row() |
|
.'<td>'.$file.'</td>'); |
|
my ($ext)=($file=~/\.(\w+)$/); |
|
my $title=$hash{'title_'.$hash{ |
|
'ids_/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'.$file}}; |
|
$r->print('<td>'.($title?$title:' ').'</td>'); |
|
if (!$title) { |
|
$title=$file; |
|
} else { |
|
$title=~s|/|_|g; |
|
} |
} |
$title=~s/\.(\w+)$//; |
my $title=$origcrsdata{'description'}; |
|
$title=~s/[\/\s]+/\_/gs; |
$title=&clean($title); |
$title=&clean($title); |
$title.='.'.$ext; |
$preamble .= '<div class="LC_left_float">'. |
$r->print("\n<td><input type='text' size='60' name='namefor_".$file."' value='".$title."' /></td>" |
'<fieldset><legend>'.&mt('Folder in Authoring Space').'</legend>'. |
.&Apache::loncommon::end_data_table_row()); |
'<input type="text" size="50" name="authorfolder" value="'. |
} |
$title.'" />'. |
$r->print(&Apache::loncommon::end_data_table()); |
'</fieldset></div><div style="padding:0;clear:both;margin:0;border:0"></div>'."\n"; |
&untiehash(); |
my %uploadedfiles; |
$r->print( |
&tiehash(); |
'<p><input type="submit" name="dumpcourse" value="'.&mt("Dump $crstype Content").'" /></p></form>'); |
foreach my $file (&Apache::lonclonecourse::crsdirlist($origcrsid,'userfiles')) { |
|
my ($ext)=($file=~/\.(\w+)$/); |
|
# FIXME Check supplemental here |
|
my $title=$hash{'title_'.$hash{ |
|
'ids_/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'.$file}}; |
|
if (!$title) { |
|
$title=$file; |
|
} else { |
|
$title=~s|/|_|g; |
|
} |
|
$title=~s/\.(\w+)$//; |
|
$title=&clean($title); |
|
$title.='.'.$ext; |
|
# $r->print("\n<td><input type='text' size='60' name='namefor_".$file."' value='".$title."' /></td>" |
|
$uploadedfiles{$file} = $title; |
|
} |
|
&untiehash(); |
|
$r->print(&Apache::loncourserespicker::create_picker($navmap,'dumpdocs',$formname,$crstype,undef, |
|
undef,undef,$preamble,$home,\%uploadedfiles)); |
|
} |
} |
} |
$r->print(&endContentScreen()); |
$r->print(&endContentScreen()); |
} |
} |
|
|
|
sub recurse_html { |
|
my ($mm,$prefix,$currdirpath,$currurlpath,$container,$item,$replacehash,$deps) = @_; |
|
return unless ((ref($replacehash) eq 'HASH') && (ref($deps) eq 'HASH')); |
|
my (%allfiles,%codebase); |
|
if (&Apache::lonnet::extract_embedded_items($currdirpath,\%allfiles,\%codebase) eq 'ok') { |
|
if (keys(%allfiles)) { |
|
foreach my $dependency (keys(%allfiles)) { |
|
next if (($dependency =~ m{^/(res|adm)/}) || ($dependency =~ m{^https?://})); |
|
my ($depurl,$relfile,$newcontainer); |
|
if ($dependency =~ m{^/}) { |
|
if ($dependency =~ m{^\Q$currurlpath/\E(.+)$}) { |
|
$relfile = $1; |
|
if ($dependency =~ m{^\Q$prefix\E(.+)$}) { |
|
$newcontainer = $1; |
|
next if ($replacehash->{$newcontainer}); |
|
} |
|
$depurl = $dependency; |
|
} else { |
|
next; |
|
} |
|
} else { |
|
$relfile = $dependency; |
|
$depurl = $currurlpath; |
|
$depurl =~ s{[^/]+$}{}; |
|
$depurl .= $dependency; |
|
($newcontainer) = ($depurl =~ m{^\Q$prefix\E(.+)$}); |
|
} |
|
next if ($relfile eq ''); |
|
my $newname = $replacehash->{$container}; |
|
$newname =~ s{[^/]+$}{}; |
|
$replacehash->{$newcontainer} = $newname.$relfile; |
|
$deps->{$item}{$newcontainer} = 1; |
|
my ($newurlpath) = ($depurl =~ m{^(.*)/[^/]+$}); |
|
my $depfile = &Apache::lonnet::filelocation('',$depurl); |
|
my $type = $mm->checktype_filename($depfile); |
|
if ($type eq 'text/html') { |
|
&recurse_html($mm,$prefix,$depfile,$newurlpath,$newcontainer,$item,$replacehash,$deps); |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
sub group_import { |
sub group_import { |
my ($coursenum, $coursedom, $folder, $container, $caller, @files) = @_; |
my ($coursenum, $coursedom, $folder, $container, $caller, @files) = @_; |
my ($donechk,$allmaps,%hierarchy,%titles,%addedmaps,%removefrommap, |
my ($donechk,$allmaps,%hierarchy,%titles,%addedmaps,%removefrommap, |
Line 402 END
|
Line 718 END
|
} |
} |
my ($errtext,$fatal) = |
my ($errtext,$fatal) = |
&storemap($coursenum, $coursedom, $folder.'.'.$container,1); |
&storemap($coursenum, $coursedom, $folder.'.'.$container,1); |
|
unless ($fatal) { |
|
if ($folder =~ /^supplemental/) { |
|
&Apache::lonnet::get_numsuppfiles($coursenum,$coursedom,1); |
|
my ($errtext,$fatal) = &mapread($coursenum,$coursedom, |
|
$folder.'.'.$container); |
|
} |
|
} |
return ($errtext,$fatal,$fixuperrors); |
return ($errtext,$fatal,$fixuperrors); |
} |
} |
|
|
Line 488 sub docs_change_log {
|
Line 811 sub docs_change_log {
|
} |
} |
my $folderpath=$env{'form.folderpath'}; |
my $folderpath=$env{'form.folderpath'}; |
if ($folderpath eq '') { |
if ($folderpath eq '') { |
$folderpath = 'default&'.&escape(&mt('Main '.$crstype.' Content').':::::'); |
$folderpath = 'default&'.&escape(&mt('Main Content').':::::'); |
} |
} |
$pathitem = '<input type="hidden" name="folderpath" value="'. |
$pathitem = '<input type="hidden" name="folderpath" value="'. |
&HTML::Entities::encode($folderpath,'<>&"').'" />'; |
&HTML::Entities::encode($folderpath,'<>&"').'" />'; |
Line 700 sub update_paste_buffer {
|
Line 1023 sub update_paste_buffer {
|
my $url = $env{'docs.markedcopy_url_'.$suffix}; |
my $url = $env{'docs.markedcopy_url_'.$suffix}; |
if (($cid =~ /^$match_domain(?:_)$match_courseid$/) && |
if (($cid =~ /^$match_domain(?:_)$match_courseid$/) && |
($url ne '')) { |
($url ne '')) { |
$pasteurls{$cid.'_'.$url}; |
$pasteurls{$cid.'_'.$url} = 1; |
} |
} |
} |
} |
} |
} |
Line 1097 sub do_paste_from_buffer {
|
Line 1420 sub do_paste_from_buffer {
|
} |
} |
|
|
my (%msgs,%before,%after,@dopaste,%is_map,%notinsupp,%notincrs,%duplicate, |
my (%msgs,%before,%after,@dopaste,%is_map,%notinsupp,%notincrs,%duplicate, |
%prefixchg,%srcdom,%srcnum,%marktomove,$save_err,$lockerrors,$allresult, |
%prefixchg,%srcdom,%srcnum,%marktomove,$save_err,$lockerrors,$allresult); |
%msgs); |
|
|
|
foreach my $suffix (@topaste) { |
foreach my $suffix (@topaste) { |
my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url_'.$suffix}); |
my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url_'.$suffix}); |
Line 1299 sub do_paste_from_buffer {
|
Line 1621 sub do_paste_from_buffer {
|
if ($prefix eq 'smppg') { |
if ($prefix eq 'smppg') { |
$msg = &mt('Paste failed: An error occurred when copying the simple page.').' '.$errtext; |
$msg = &mt('Paste failed: An error occurred when copying the simple page.').' '.$errtext; |
} elsif ($prefix eq 'bulletinboard') { |
} elsif ($prefix eq 'bulletinboard') { |
$msg = &mt('Paste failed: An error occurred when copying the bulletin board.').' '.$errtext; |
$msg = &mt('Paste failed: An error occurred when copying the discussion board.').' '.$errtext; |
} |
} |
$results{$suffix} = $result; |
$results{$suffix} = $result; |
$msgerrs{$suffix} = $msg; |
$msgerrs{$suffix} = $msg; |
Line 1549 sub get_newmap_url {
|
Line 1871 sub get_newmap_url {
|
sub dbcopy { |
sub dbcopy { |
my ($dbref,$coursedom,$coursenum,$lockerrorsref) = @_; |
my ($dbref,$coursedom,$coursenum,$lockerrorsref) = @_; |
my ($url,$result,$errtext); |
my ($url,$result,$errtext); |
my $url = $dbref->{'src'}; |
$url = $dbref->{'src'}; |
if (ref($dbref) eq 'HASH') { |
if (ref($dbref) eq 'HASH') { |
if ($url =~ m{/(smppg|bulletinboard)$}) { |
if ($url =~ m{/(smppg|bulletinboard)$}) { |
my $prefix = $1; |
my $prefix = $1; |
Line 1574 sub dbcopy {
|
Line 1896 sub dbcopy {
|
if ($prefix eq 'smppg') { |
if ($prefix eq 'smppg') { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a simple page [_1].',$url); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a simple page [_1].',$url); |
} else { |
} else { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a bulletin board [_1].',$url); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a discussion board [_1].',$url); |
} |
} |
if ($error) { |
if ($error) { |
$errtext .= '<br />'.$error; |
$errtext .= '<br />'.$error; |
Line 1610 sub dbcopy {
|
Line 1932 sub dbcopy {
|
} |
} |
} |
} |
if (($freedlock ne 'ok') && (ref($lockerrorsref) eq 'HASH')) { |
if (($freedlock ne 'ok') && (ref($lockerrorsref) eq 'HASH')) { |
$lockerrorsref->{$prefix} = |
$lockerrorsref->{$prefix} = |
'<div class="LC_error">'. |
'<div class="LC_error">'. |
&mt('There was a problem removing a lockfile.'); |
&mt('There was a problem removing a lockfile.'); |
if ($prefix eq 'smppg') { |
if ($prefix eq 'smppg') { |
$lockerrorsref->{$prefix} .= |
$lockerrorsref->{$prefix} .= |
&mt('This will prevent creation of additional simple pages in this course.'); |
' '.&mt('This will prevent creation of additional simple pages in this course.'); |
} else { |
} else { |
$lockerrorsref->{$prefix} .= &mt('This will prevent creation of additional bulletin boards in this course.'); |
$lockerrorsref->{$prefix} .= ' '.&mt('This will prevent creation of additional discussion boards in this course.'); |
} |
} |
$lockerrorsref->{$prefix} .= &mt('Please contact the domain coordinator for your LON-CAPA domain.').'</div>'; |
$lockerrorsref->{$prefix} .= ' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.', |
|
'<a href="/adm/helpdesk" target="_helpdesk">','</a>'). |
|
'</div>'; |
} |
} |
} |
} |
} elsif ($url =~ m{/syllabus$}) { |
} elsif ($url =~ m{/syllabus$}) { |
Line 2704 sub editor {
|
Line 3028 sub editor {
|
} |
} |
$to_show .= &Apache::loncommon::start_scrollbox('400px','380px','200px','contentscroll') |
$to_show .= &Apache::loncommon::start_scrollbox('400px','380px','200px','contentscroll') |
.'<div class="LC_info" id="contentlist">' |
.'<div class="LC_info" id="contentlist">' |
.&mt('Currently no documents.') |
.&mt('Currently empty') |
.'</div>' |
.'</div>' |
.&Apache::loncommon::end_scrollbox(); |
.&Apache::loncommon::end_scrollbox(); |
} |
} |
Line 2717 sub editor {
|
Line 3041 sub editor {
|
.'</div>'; |
.'</div>'; |
} else { |
} else { |
$to_show = '<div class="LC_info" id="contentlist">' |
$to_show = '<div class="LC_info" id="contentlist">' |
.&mt('Currently no documents.') |
.&mt('Currently empty') |
.'</div>' |
.'</div>' |
} |
} |
} |
} |
Line 2802 sub multiple_check_form {
|
Line 3126 sub multiple_check_form {
|
} |
} |
|
|
sub process_file_upload { |
sub process_file_upload { |
my ($upload_output,$coursenum,$coursedom,$allfiles,$codebase,$uploadcmd) = @_; |
my ($upload_output,$coursenum,$coursedom,$allfiles,$codebase,$uploadcmd,$crstype) = @_; |
# upload a file, if present |
# upload a file, if present |
|
my $filesize = length($env{'form.uploaddoc'}); |
|
if (!$filesize) { |
|
$$upload_output = '<div class="LC_error">'. |
|
&mt('Unable to upload [_1]. (size = [_2] bytes)', |
|
'<span class="LC_filename">'.$env{'form.uploaddoc.filename'}.'</span>', |
|
$filesize).'<br />'. |
|
&mt('Either the file you attempted to upload was empty, or your web browser was unable to read its contents.').'<br />'. |
|
'</div>'; |
|
return; |
|
} |
|
my $quotatype = 'unofficial'; |
|
if ($crstype eq 'Community') { |
|
$quotatype = 'community'; |
|
} elsif ($env{'course.'.$coursedom.'_'.$coursenum.'.internal.instcode'}) { |
|
$quotatype = 'official'; |
|
} |
|
if (&Apache::loncommon::get_user_quota($coursenum,$coursedom,'course',$quotatype)) { |
|
$filesize = int($filesize/1000); #expressed in kb |
|
$$upload_output = &Apache::loncommon::excess_filesize_warning($coursenum,$coursedom,'course', |
|
$env{'form.uploaddoc.filename'},$filesize,'upload'); |
|
return if ($$upload_output); |
|
} |
my ($parseaction,$showupload,$nextphase,$mimetype); |
my ($parseaction,$showupload,$nextphase,$mimetype); |
if ($env{'form.parserflag'}) { |
if ($env{'form.parserflag'}) { |
$parseaction = 'parse'; |
$parseaction = 'parse'; |
Line 3123 ENDREM
|
Line 3469 ENDREM
|
push(@{$filtersref->{'canremove'}},$orderidx); |
push(@{$filtersref->{'canremove'}},$orderidx); |
} |
} |
} |
} |
unless ($isexternal) { |
$renamelink=(<<ENDREN); |
$renamelink=(<<ENDREN); |
|
<a href='javascript:changename("$esc_path","$index","$renametitle");' class="LC_docs_rename">$lt{'rn'}</a> |
<a href='javascript:changename("$esc_path","$index","$renametitle");' class="LC_docs_rename">$lt{'rn'}</a> |
ENDREN |
ENDREN |
} |
|
$line.=(<<END); |
$line.=(<<END); |
<td> |
<td> |
<div class="LC_docs_entry_move"> |
<div class="LC_docs_entry_move"> |
Line 3260 $form_common."\n".
|
Line 3604 $form_common."\n".
|
push(@{$filtersref->{'randomorder'}},$orderidx); |
push(@{$filtersref->{'randomorder'}},$orderidx); |
} |
} |
} |
} |
my $formname = 'edit_rorder_'.$orderidx; |
$formname = 'edit_rorder_'.$orderidx; |
$rand_order_text = |
$rand_order_text = |
'<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n". |
'<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n". |
$form_param."\n". |
$form_param."\n". |
Line 3463 sub new_timebased_suffix {
|
Line 3807 sub new_timebased_suffix {
|
} elsif ($type eq 'smppg') { |
} elsif ($type eq 'smppg') { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new simple page.'); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new simple page.'); |
} else { |
} else { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new bulletin board.'); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new discussion board.'); |
} |
} |
if ($error) { |
if ($error) { |
$errtext .= '<br />'.$error; |
$errtext .= '<br />'.$error; |
Line 3482 sub new_timebased_suffix {
|
Line 3826 sub new_timebased_suffix {
|
&mt('This will prevent creation of additional simple pages in this course.'); |
&mt('This will prevent creation of additional simple pages in this course.'); |
} else { |
} else { |
$locknotfreed .= |
$locknotfreed .= |
&mt('This will prevent creation of additional bulletin boards in this course.'); |
&mt('This will prevent creation of additional discussion boards in this course.'); |
} |
} |
unless ($type eq 'paste') { |
unless ($type eq 'paste') { |
$locknotfreed .= |
$locknotfreed .= |
' '.&mt('Please contact the domain coordinator for your LON-CAPA domain.'); |
' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.', |
|
'<a href="/adm/helpdesk" target="_helpdesk">','</a>'); |
} |
} |
$locknotfreed .= '</div>'; |
$locknotfreed .= '</div>'; |
} |
} |
Line 3651 sub list_symbs {
|
Line 3996 sub list_symbs {
|
sub verifycontent { |
sub verifycontent { |
my ($r) = @_; |
my ($r) = @_; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
$r->print(&Apache::loncommon::start_page('Verify '.$crstype.' Documents')); |
$r->print(&Apache::loncommon::start_page('Verify '.$crstype.' Content')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Verify '.$crstype.' Documents')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Verify '.$crstype.' Content')); |
$r->print(&startContentScreen('tools')); |
$r->print(&startContentScreen('tools')); |
$r->print('<h4 class="LC_info">'.&mt($crstype.' content verification').'</h4>'); |
$r->print('<h4 class="LC_info">'.&mt($crstype.' content verification').'</h4>'); |
$hashtied=0; |
$hashtied=0; |
Line 3754 sub checkversions {
|
Line 4099 sub checkversions {
|
&changewarning($r,''); |
&changewarning($r,''); |
if ($env{'form.timerange'} eq 'all') { |
if ($env{'form.timerange'} eq 'all') { |
# show all documents |
# show all documents |
$header=&mt('All Documents in '.$crstype); |
$header=&mt('All content in '.$crstype); |
$allsel=' selected="selected"'; |
$allsel=' selected="selected"'; |
foreach my $key (keys(%hash)) { |
foreach my $key (keys(%hash)) { |
if ($key=~/^ids\_(\/res\/.+)$/) { |
if ($key=~/^ids\_(\/res\/.+)$/) { |
Line 4032 sub startContentScreen {
|
Line 4377 sub startContentScreen {
|
$output .= '<li'.(($mode eq 'courseindex')?' class="active"':'').'><a href="/adm/indexcourse"><b> '.&mt('Content Index').' </b></a></li>'."\n"; |
$output .= '<li'.(($mode eq 'courseindex')?' class="active"':'').'><a href="/adm/indexcourse"><b> '.&mt('Content Index').' </b></a></li>'."\n"; |
$output .= '<li '.(($mode eq 'suppdocs')?' class="active"':'').'><a href="/adm/supplemental"><b>'.&mt('Supplemental Content').'</b></a></li>'; |
$output .= '<li '.(($mode eq 'suppdocs')?' class="active"':'').'><a href="/adm/supplemental"><b>'.&mt('Supplemental Content').'</b></a></li>'; |
} else { |
} else { |
$output .= '<li '.(($mode eq 'docs')?' class="active"':'').' id="tabbededitor"><a href="/adm/coursedocs?forcestandard=1"><b> '.&mt('Content Editor').' </b></a></li>'."\n"; |
$output .= '<li '.(($mode eq 'docs')?' class="active"':'').' id="tabbededitor"><a href="/adm/coursedocs?forcestandard=1"><b> '.&mt('Main Content Editor').' </b></a></li>'."\n"; |
$output .= '<li '.(($mode eq 'suppdocs')?' class="active"':'').'><a href="/adm/coursedocs?forcesupplement=1"><b>'.&mt('Supplemental Content Editor').'</b></a></li>'."\n"; |
$output .= '<li '.(($mode eq 'suppdocs')?' class="active"':'').'><a href="/adm/coursedocs?forcesupplement=1"><b>'.&mt('Supplemental Content Editor').'</b></a></li>'."\n"; |
$output .= '<li '.(($mode eq 'tools')?' class="active"':'').'><a href="/adm/coursedocs?tools=1"><b> '.&mt('Content Utilities').' </b></a></li>'."\n"; |
$output .= '<li '.(($mode eq 'tools')?' class="active"':'').'><a href="/adm/coursedocs?tools=1"><b> '.&mt('Content Utilities').' </b></a></li>'."\n"; |
'><a href="/adm/coursedocs?tools=1"><b> '.&mt('Content Utilities').' </b></a></li>'; |
'><a href="/adm/coursedocs?tools=1"><b> '.&mt('Content Utilities').' </b></a></li>'; |
Line 4053 sub endContentScreen {
|
Line 4398 sub endContentScreen {
|
} |
} |
|
|
sub supplemental_base { |
sub supplemental_base { |
return 'supplemental&'.&escape(&mt('Supplemental '.&Apache::loncommon::course_type().' Content')); |
return 'supplemental&'.&escape(&mt('Supplemental Content')); |
} |
} |
|
|
sub handler { |
sub handler { |
Line 4078 sub handler {
|
Line 4423 sub handler {
|
'Supplemental','Score_Upload_Form','Adding_Pages', |
'Supplemental','Score_Upload_Form','Adding_Pages', |
'Importing_LON-CAPA_Resource','Importing_IMS_Course', |
'Importing_LON-CAPA_Resource','Importing_IMS_Course', |
'Uploading_From_Harddrive', |
'Uploading_From_Harddrive', |
'Check_Resource_Versions','Verify_Content') { |
'Check_Resource_Versions','Verify_Content', |
|
'Course_Roster','Web_Page','Dropbox') { |
$help{$topic}=&Apache::loncommon::help_open_topic('Docs_'.$topic); |
$help{$topic}=&Apache::loncommon::help_open_topic('Docs_'.$topic); |
} |
} |
# Composite help files |
# Composite help files |
Line 4094 sub handler {
|
Line 4440 sub handler {
|
'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); |
'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); |
$help{'Group Portfolio'} = &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'); |
$help{'Course Roster'} = &Apache::loncommon::help_open_topic('Docs_Course_Roster'); |
|
$help{'Web Page'} = &Apache::loncommon::help_open_topic('Docs_Web_Page'); |
|
|
|
my $allowed; |
my $allowed; |
# URI is /adm/supplemental when viewing supplemental docs in non-edit mode. |
# URI is /adm/supplemental when viewing supplemental docs in non-edit mode. |
Line 4126 sub handler {
|
Line 4470 sub handler {
|
&init_breadcrumbs('versions','Check/Set Resource Versions'); |
&init_breadcrumbs('versions','Check/Set Resource Versions'); |
&checkversions($r); |
&checkversions($r); |
} elsif ($allowed && $env{'form.dumpcourse'}) { |
} elsif ($allowed && $env{'form.dumpcourse'}) { |
&init_breadcrumbs('dumpcourse','Dump '.&Apache::loncommon::course_type().' Content to Authoring Space'); |
&init_breadcrumbs('dumpcourse','Copy '.&Apache::loncommon::course_type().' Content to Authoring Space'); |
&dumpcourse($r); |
&dumpcourse($r); |
} elsif ($allowed && $env{'form.exportcourse'}) { |
} elsif ($allowed && $env{'form.exportcourse'}) { |
&init_breadcrumbs('exportcourse','IMS Export'); |
&init_breadcrumbs('exportcourse','IMS Export'); |
Line 4152 sub handler {
|
Line 4496 sub handler {
|
# supplementalflag=0: show standard documents |
# supplementalflag=0: show standard documents |
# toolsflag=1: show utilities |
# toolsflag=1: show utilities |
|
|
$env{'form.folderpath'} = &unescape($env{'form.folderpath'}); |
my $unesc_folderpath = &unescape($env{'form.folderpath'}); |
my $supplementalflag=($env{'form.folderpath'}=~/^supplemental/); |
my $supplementalflag=($unesc_folderpath=~/^supplemental/); |
if (($env{'form.folderpath'}=~/^default/) || ($env{'form.folderpath'} eq "")) { |
if (($unesc_folderpath=~/^default/) || ($unesc_folderpath eq "")) { |
$supplementalflag=0; |
$supplementalflag=0; |
} |
} |
if ($env{'form.forcesupplement'}) { $supplementalflag=1; } |
if ($env{'form.forcesupplement'}) { $supplementalflag=1; } |
Line 4186 sub handler {
|
Line 4530 sub handler {
|
} |
} |
} elsif ($env{'form.command'} eq 'editdocs') { |
} elsif ($env{'form.command'} eq 'editdocs') { |
$env{'form.folderpath'} = 'default&'. |
$env{'form.folderpath'} = 'default&'. |
&escape(&mt('Main '.$crstype.' Content').':::::'); |
&escape(&mt('Main Content').':::::'); |
&Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => $env{'form.command'}}); |
&Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => $env{'form.command'}}); |
} elsif ($env{'form.command'} eq 'editsupp') { |
} elsif ($env{'form.command'} eq 'editsupp') { |
$env{'form.folderpath'} = 'supplemental&'. |
$env{'form.folderpath'} = 'supplemental&'. |
Line 4231 sub handler {
|
Line 4575 sub handler {
|
if ($supplementalflag) { |
if ($supplementalflag) { |
$env{'form.folderpath'}=&supplemental_base(); |
$env{'form.folderpath'}=&supplemental_base(); |
} else { |
} else { |
$env{'form.folderpath'}='default&'.&escape(&mt('Main '.$crstype.' Content'). |
$env{'form.folderpath'}='default&'.&escape(&mt('Main Content'). |
':::::'); |
':::::'); |
} |
} |
} |
} |
Line 4257 sub handler {
|
Line 4601 sub handler {
|
if ($env{'form.folder'} eq '' || |
if ($env{'form.folder'} eq '' || |
$env{'form.folder'} eq 'supplemental') { |
$env{'form.folder'} eq 'supplemental') { |
$folderpath='default&'. |
$folderpath='default&'. |
&escape(&mt('Main '.$crstype.' Content').':::::'); |
&escape(&mt('Main Content').':::::'); |
} |
} |
} |
} |
$containertag = '<input type="hidden" name="folderpath" value="" />'; |
$containertag = '<input type="hidden" name="folderpath" value="" />'; |
Line 4294 sub handler {
|
Line 4638 sub handler {
|
$script .= &dump_switchserver_js(@hosts); |
$script .= &dump_switchserver_js(@hosts); |
} |
} |
} else { |
} else { |
|
my $tid = 1; |
my @tabids; |
my @tabids; |
if ($supplementalflag) { |
if ($supplementalflag) { |
@tabids = ('002','ee2','ff2'); |
@tabids = ('002','ee2','ff2'); |
|
$tid = 2; |
} else { |
} else { |
@tabids = ('aa1','bb1','cc1','ff1'); |
@tabids = ('aa1','bb1','cc1','ff1'); |
unless ($env{'form.folderpath'} =~ /\:1$/) { |
unless ($env{'form.folderpath'} =~ /\:1$/) { |
Line 4308 sub handler {
|
Line 4654 sub handler {
|
$script .= &editing_js($udom,$uname,$supplementalflag). |
$script .= &editing_js($udom,$uname,$supplementalflag). |
&history_tab_js(). |
&history_tab_js(). |
&inject_data_js(). |
&inject_data_js(). |
&Apache::lonhtmlcommon::resize_scrollbox_js('docs',$tabidstr). |
&Apache::lonhtmlcommon::resize_scrollbox_js('docs',$tabidstr,$tid). |
&Apache::lonextresedit::extedit_javascript(); |
&Apache::lonextresedit::extedit_javascript(); |
$addentries = { |
$addentries = { |
onload => "javascript:resize_scrollbox('contentscroll','1','1');", |
onload => "javascript:resize_scrollbox('contentscroll','1','1');", |
Line 4360 sub handler {
|
Line 4706 sub handler {
|
# Process file upload - phase one - upload and parse primary file. |
# Process file upload - phase one - upload and parse primary file. |
undef($hadchanges); |
undef($hadchanges); |
$uploadphase = &process_file_upload(\$upload_output,$coursenum,$coursedom, |
$uploadphase = &process_file_upload(\$upload_output,$coursenum,$coursedom, |
\%allfiles,\%codebase,$context); |
\%allfiles,\%codebase,$context,$crstype); |
if ($hadchanges) { |
if ($hadchanges) { |
&mark_hash_old(); |
&mark_hash_old(); |
} |
} |
Line 4412 sub handler {
|
Line 4758 sub handler {
|
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'copm' => 'All documents out of a published map into this folder', |
'copm' => 'All documents out of a published map into this folder', |
'upfi' => 'Upload File', |
'upfi' => 'Upload File', |
'upld' => 'Import Content', |
'upld' => 'Upload Content', |
'srch' => 'Search', |
'srch' => 'Search', |
'impo' => 'Import', |
'impo' => 'Import', |
'lnks' => 'Import from Stored Links', |
'lnks' => 'Import from Stored Links', |
Line 4433 sub handler {
|
Line 4779 sub handler {
|
'grpo' => 'Group Portfolio', |
'grpo' => 'Group Portfolio', |
'rost' => 'Course Roster', |
'rost' => 'Course Roster', |
'abou' => 'Personal Information Page for a User', |
'abou' => 'Personal Information Page for a User', |
'imsf' => 'IMS Import', |
'imsf' => 'IMS Upload', |
'imsl' => 'Import IMS package', |
'imsl' => 'Upload IMS package', |
'cms' => 'Origin of IMS package', |
'cms' => 'Origin of IMS package', |
'se' => 'Select', |
'se' => 'Select', |
'file' => 'File', |
'file' => 'File', |
Line 4582 HIDDENFORM
|
Line 4928 HIDDENFORM
|
if ($folder eq '' || $supplementalflag) { |
if ($folder eq '' || $supplementalflag) { |
$folder='default'; |
$folder='default'; |
$savefolderpath = $env{'form.folderpath'}; |
$savefolderpath = $env{'form.folderpath'}; |
$env{'form.folderpath'}='default&'.&escape(&mt('Content')); |
$env{'form.folderpath'}='default&'.&escape(&mt('Main Content')); |
$pathitem = '<input type="hidden" name="folderpath" value="'. |
$pathitem = '<input type="hidden" name="folderpath" value="'. |
&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />'; |
&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />'; |
} |
} |
Line 4603 HIDDENFORM
|
Line 4949 HIDDENFORM
|
|
|
my $newnavform=(<<NNFORM); |
my $newnavform=(<<NNFORM); |
<form action="/adm/coursedocs" method="post" name="newnav"> |
<form action="/adm/coursedocs" method="post" name="newnav"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'navc'}=/adm/navmaps" /> |
value="$lt{'navc'}=/adm/navmaps" /> |
Line 4613 HIDDENFORM
|
Line 4959 HIDDENFORM
|
NNFORM |
NNFORM |
my $newsmppageform=(<<NSPFORM); |
my $newsmppageform=(<<NSPFORM); |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makesmppage();"> $lt{'sipa'}</a> |
<a class="LC_menubuttons_link" href="javascript:makesmppage();"> $lt{'sipa'}</a> |
Line 4638 NSPROBFORM
|
Line 4984 NSPROBFORM
|
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makedropbox();">$lt{'drbx'}</a> |
<a class="LC_menubuttons_link" href="javascript:makedropbox();">$lt{'drbx'}</a> |
|
$help{'Dropbox'} |
</form> |
</form> |
NDBFORM |
NDBFORM |
|
|
Line 4653 NEXUFORM
|
Line 5000 NEXUFORM
|
|
|
my $newbulform=(<<NBFORM); |
my $newbulform=(<<NBFORM); |
<form action="/adm/coursedocs" method="post" name="newbul"> |
<form action="/adm/coursedocs" method="post" name="newbul"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="dd" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makebulboard();" >$lt{'bull'}</a> |
<a class="LC_menubuttons_link" href="javascript:makebulboard();" >$lt{'bull'}</a> |
Line 4663 NBFORM
|
Line 5010 NBFORM
|
|
|
my $newaboutmeform=(<<NAMFORM); |
my $newaboutmeform=(<<NAMFORM); |
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="dd" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
Line 4674 NAMFORM
|
Line 5021 NAMFORM
|
|
|
my $newaboutsomeoneform=(<<NASOFORM); |
my $newaboutsomeoneform=(<<NASOFORM); |
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="dd" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makeabout();">$lt{'abou'}</a> |
<a class="LC_menubuttons_link" href="javascript:makeabout();">$lt{'abou'}</a> |
Line 4683 NASOFORM
|
Line 5030 NASOFORM
|
|
|
my $newrosterform=(<<NROSTFORM); |
my $newrosterform=(<<NROSTFORM); |
<form action="/adm/coursedocs" method="post" name="newroster"> |
<form action="/adm/coursedocs" method="post" name="newroster"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="dd" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'rost'}=/adm/viewclasslist" /> |
value="$lt{'rost'}=/adm/viewclasslist" /> |
<a class="LC_menubuttons_link" href="javascript:document.newroster.submit()">$lt{'rost'}</a> |
<a class="LC_menubuttons_link" href="javascript:document.newroster.submit()">$lt{'rost'}</a> |
$help{'Course Roster'} |
$help{'Course_Roster'} |
</form> |
</form> |
NROSTFORM |
NROSTFORM |
|
|
Line 4704 NROSTFORM
|
Line 5051 NROSTFORM
|
} |
} |
my $newwebpageform =(<<NWEBFORM); |
my $newwebpageform =(<<NWEBFORM); |
<form action="/adm/coursedocs" method="post" name="newwebpage"> |
<form action="/adm/coursedocs" method="post" name="newwebpage"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="$newwebpage" /> |
<input type="hidden" name="importdetail" value="$newwebpage" /> |
<a class="LC_menubuttons_link" href="javascript:makewebpage();">$lt{'webp'}</a> |
<a class="LC_menubuttons_link" href="javascript:makewebpage();">$lt{'webp'}</a> |
$help{'Web Page'} |
$help{'Web_Page'} |
</form> |
</form> |
NWEBFORM |
NWEBFORM |
|
|
Line 4728 my $newfolderb;
|
Line 5075 my $newfolderb;
|
<form action="/adm/coursedocs" method="post" name="newpage"> |
<form action="/adm/coursedocs" method="post" name="newpage"> |
<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="" /> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="ee" /> |
<a class="LC_menubuttons_link" href="javascript:makenewpage(document.newpage,'$pageseq');">$lt{'newp'}</a> |
<a class="LC_menubuttons_link" href="javascript:makenewpage(document.newpage,'$pageseq');">$lt{'newp'}</a> |
$help{'Adding_Pages'} |
$help{'Adding_Pages'} |
</form> |
</form> |
Line 4739 NPFORM
|
Line 5086 NPFORM
|
<form action="/adm/coursedocs" method="post" name="newfolder"> |
<form action="/adm/coursedocs" method="post" name="newfolder"> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="active" value="aa" /> |
<input type="hidden" name="active" value="" /> |
<a href="javascript:makenewfolder(document.newfolder,'$folderseq');">$lt{'newf'}</a>$help{'Adding_Folders'} |
<a href="javascript:makenewfolder(document.newfolder,'$folderseq');">$lt{'newf'}</a>$help{'Adding_Folders'} |
</form> |
</form> |
NFFORM |
NFFORM |
|
|
my $newsylform=(<<NSYLFORM); |
my $newsylform=(<<NSYLFORM); |
<form action="/adm/coursedocs" method="post" name="newsyl"> |
<form action="/adm/coursedocs" method="post" name="newsyl"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" /> |
value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" /> |
Line 4758 NSYLFORM
|
Line 5105 NSYLFORM
|
|
|
my $newgroupfileform=(<<NGFFORM); |
my $newgroupfileform=(<<NGFFORM); |
<form action="/adm/coursedocs" method="post" name="newgroupfiles"> |
<form action="/adm/coursedocs" method="post" name="newgroupfiles"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="dd" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> |
value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> |
Line 4785 NGFFORM
|
Line 5132 NGFFORM
|
); |
); |
} |
} |
push(@importdoc, |
push(@importdoc, |
{'<img class="LC_noBorder_LC_middle" src="/res/adm/pages/pdfupload.png" alt="'.$lt{upl}.'" onclick="javascript:toggleUpload(\'doc\');" />'=>$fileuploadform} |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/pdfupload.png" alt="'.$lt{upl}.'" onclick="javascript:toggleUpload(\'doc\');" />'=>$fileuploadform} |
); |
); |
$fileuploadform = &create_form_ul(&create_list_elements(@importdoc)); |
$fileuploadform = &create_form_ul(&create_list_elements(@importdoc)); |
|
|
Line 4807 NGFFORM
|
Line 5154 NGFFORM
|
$communityform = &create_form_ul(&create_list_elements(@communityforma)); |
$communityform = &create_form_ul(&create_list_elements(@communityforma)); |
|
|
my %orderhash = ( |
my %orderhash = ( |
'aa' => ['Import Content',$fileuploadform], |
'aa' => ['Upload',$fileuploadform], |
'bb' => ['Published Content',$importpubform], |
'bb' => ['Import',$importpubform], |
'cc' => ['Grading Resources',$gradingform], |
'cc' => ['Grading',$gradingform], |
); |
); |
unless ($container eq 'page') { |
unless ($container eq 'page') { |
$orderhash{'00'} = ['Newfolder',$newfolderform]; |
$orderhash{'00'} = ['Newfolder',$newfolderform]; |
$orderhash{'dd'} = ['Collaboration',$communityform]; |
$orderhash{'dd'} = ['Collaboration',$communityform]; |
$orderhash{'ee'} = ['Special Pages',$specialdocumentsform]; |
$orderhash{'ee'} = ['Other',$specialdocumentsform]; |
} |
} |
|
|
$hadchanges=0; |
$hadchanges=0; |
Line 4875 SUPDOCFORM
|
Line 5222 SUPDOCFORM
|
|
|
my $supnewfolderform=(<<SNFFORM); |
my $supnewfolderform=(<<SNFFORM); |
<form action="/adm/coursedocs" method="post" name="supnewfolder"> |
<form action="/adm/coursedocs" method="post" name="supnewfolder"> |
<input type="hidden" name="active" value="ee" /> |
<input type="hidden" name="active" value="" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makenewfolder(document.supnewfolder,'$folderseq');">$lt{'newf'}</a> |
<a class="LC_menubuttons_link" href="javascript:makenewfolder(document.supnewfolder,'$folderseq');">$lt{'newf'}</a> |
Line 4925 SNAMFORM
|
Line 5272 SNAMFORM
|
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="$supwebpage" /> |
<input type="hidden" name="importdetail" value="$supwebpage" /> |
<a class="LC_menubuttons_link" href="javascript:makewebpage('supp');">$lt{'webp'}</a> |
<a class="LC_menubuttons_link" href="javascript:makewebpage('supp');">$lt{'webp'}</a> |
$help{'Web Page'} |
$help{'Web_Page'} |
</form> |
</form> |
SWEBFORM |
SWEBFORM |
|
|
Line 4948 my @supimportdoc = (
|
Line 5295 my @supimportdoc = (
|
$supupdocform = &create_form_ul(&create_list_elements(@supimportdoc)); |
$supupdocform = &create_form_ul(&create_list_elements(@supimportdoc)); |
my %suporderhash = ( |
my %suporderhash = ( |
'00' => ['Supnewfolder', $supnewfolderform], |
'00' => ['Supnewfolder', $supnewfolderform], |
'ee' => ['Import Content',$supupdocform], |
'ee' => ['Upload',$supupdocform], |
'ff' => ['Special Pages',&create_form_ul(&create_list_elements(@specialdocs))] |
'ff' => ['Other',&create_form_ul(&create_list_elements(@specialdocs))] |
); |
); |
if ($supplementalflag) { |
if ($supplementalflag) { |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
$supplementalflag,\%suporderhash,$iconpath,$pathitem); |
$supplementalflag,\%suporderhash,$iconpath,$pathitem); |
if ($error) { |
if ($error) { |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
} |
} else { |
|
if ($suppchanges) { |
|
my %servers = &Apache::lonnet::internet_dom_servers($coursedom); |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
foreach my $server (keys(%servers)) { |
|
next if (grep(/^\Q$server\E$/,@ids)); |
|
my $hashid=$coursenum.':'.$coursedom; |
|
my $cachekey = &escape('suppcount').':'.&escape($hashid); |
|
&Apache::lonnet::remote_devalidate_cache($server,[$cachekey]); |
|
} |
|
&Apache::lonnet::get_numsuppfiles($coursenum,$coursedom,1); |
|
undef($suppchanges); |
|
} |
|
} |
} |
} |
} elsif ($supplementalflag) { |
} elsif ($supplementalflag) { |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
Line 5103 sub remove_archive {
|
Line 5463 sub remove_archive {
|
} else { |
} else { |
my $currcmd = $env{'form.cmd'}; |
my $currcmd = $env{'form.cmd'}; |
my $position = $env{'form.position'}; |
my $position = $env{'form.position'}; |
if ($position > 0) { |
if ($position > 0) { |
$env{'form.cmd'} = 'del_'.$position; |
$env{'form.cmd'} = 'remove_'.$position; |
my ($title,$url,@rrest) = |
my ($title,$url,@rrest) = |
split(/:/,$LONCAPA::map::resources[$LONCAPA::map::order[$position]]); |
split(/:/,$LONCAPA::map::resources[$LONCAPA::map::order[$position]]); |
if (&handle_edit_cmd($docuname,$docudom)) { |
if (&handle_edit_cmd($docuname,$docudom)) { |
Line 5139 sub generate_admin_menu {
|
Line 5499 sub generate_admin_menu {
|
my ($crstype) = @_; |
my ($crstype) = @_; |
my $lc_crstype = lc($crstype); |
my $lc_crstype = lc($crstype); |
my ($home,$other,%outhash)=&authorhosts(); |
my ($home,$other,%outhash)=&authorhosts(); |
my %lt=&Apache::lonlocal::texthash ( |
my %lt= ( # do not translate here |
'vc' => 'Verify Content', |
'vc' => 'Verify Content', |
'cv' => 'Check/Set Resource Versions', |
'cv' => 'Check/Set Resource Versions', |
'ls' => 'List Resource Identifiers', |
'ls' => 'List Resource Identifiers', |
'imse' => 'Export contents to IMS Archive', |
'imse' => 'Export contents to IMS Archive', |
'dcd' => "Dump $crstype Content to Authoring Space", |
'dcd' => "Copy $crstype Content to Authoring Space", |
); |
); |
my ($candump,$dumpurl); |
my ($candump,$dumpurl); |
if ($home + $other > 0) { |
if ($home + $other > 0) { |
$candump = 'F'; |
$candump = 'F'; |
Line 5227 sub generate_edit_table {
|
Line 5587 sub generate_edit_table {
|
my $form; |
my $form; |
my $activetab; |
my $activetab; |
my $active; |
my $active; |
if (($env{'form.active'} ne '') && ($env{'form.active'} ne 'aa')) { |
if (($env{'form.active'} ne '') && ($env{'form.active'} ne '00')) { |
$activetab = $env{'form.active'}; |
$activetab = $env{'form.active'}; |
} |
} |
my $backicon = $iconpath.'clickhere.gif'; |
my $backicon = $iconpath.'clickhere.gif'; |
Line 5262 sub generate_edit_table {
|
Line 5622 sub generate_edit_table {
|
$form .= '<li style="float:right" '.$active |
$form .= '<li style="float:right" '.$active |
.' onclick="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');"><a href="javascript:;"><b>'.&mt(${$orderhash{$name}}[0]).'</b></a></li>'."\n"; |
.' onclick="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');"><a href="javascript:;"><b>'.&mt(${$orderhash{$name}}[0]).'</b></a></li>'."\n"; |
} else { |
} else { |
$form .= '<li '.$active.' style="float:right">'.${$orderhash{$name}}[1].'</li>'."\n"; |
$form .= '<li style="float:right">'.${$orderhash{$name}}[1].'</li>'."\n"; |
|
|
} |
} |
} |
} |
Line 5366 sub editing_js {
|
Line 5726 sub editing_js {
|
$main_container_page = 1; |
$main_container_page = 1; |
} |
} |
my $toplevelmain = |
my $toplevelmain = |
&escape(&mt('Main '.$crstype.' Content').':::::'); |
&escape(&mt('Main Content').':::::'); |
my $toplevelsupp = &supplemental_base(); |
my $toplevelsupp = &supplemental_base(); |
|
|
my $backtourl; |
my $backtourl; |
Line 5825 for (i = 0; i < currentLis.length; i++)
|
Line 6185 for (i = 0; i < currentLis.length; i++)
|
|
|
function hideAll(current, nav, data) { |
function hideAll(current, nav, data) { |
unselectInactive(nav); |
unselectInactive(nav); |
if(current.className == 'right'){ |
if (current) { |
current.className = 'right active' |
if (current.className == 'right'){ |
}else{ |
current.className = 'right active' |
current.className = 'active'; |
} else { |
|
current.className = 'active'; |
|
} |
} |
} |
currentData = document.getElementById(data); |
currentData = document.getElementById(data); |
currentDivs = currentData.getElementsByTagName('DIV'); |
currentDivs = currentData.getElementsByTagName('DIV'); |
Line 5859 function openTabs(pageId) {
|
Line 6221 function openTabs(pageId) {
|
} |
} |
|
|
function showPage(current, pageId, nav, data) { |
function showPage(current, pageId, nav, data) { |
|
currstate = current.className; |
hideAll(current, nav, data); |
hideAll(current, nav, data); |
openTabs(pageId); |
openTabs(pageId); |
unselectInactive(nav); |
unselectInactive(nav); |
current.className = 'active'; |
if ((currstate == 'active') || (currstate == 'right active')) { |
|
if (currstate == 'active') { |
|
current.className = ''; |
|
} else { |
|
current.className = 'right'; |
|
} |
|
activeTab = ''; |
|
toggleUpload(); |
|
toggleMap(); |
|
resize_scrollbox('contentscroll','1','0'); |
|
return; |
|
} else { |
|
current.className = 'active'; |
|
} |
currentData = document.getElementById(pageId); |
currentData = document.getElementById(pageId); |
currentData.style.display = 'block'; |
currentData.style.display = 'block'; |
activeTab = pageId; |
activeTab = pageId; |
Line 6250 ENDINJECT
|
Line 6626 ENDINJECT
|
sub dump_switchserver_js { |
sub dump_switchserver_js { |
my @hosts = @_; |
my @hosts = @_; |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
dump => 'Dumping to Authoring Space requires switching server.', |
dump => 'Copying Content to Authoring Space requires switching server.', |
swit => 'Switch server?', |
swit => 'Switch server?', |
duco => 'Dump content to Authoring Space', |
duco => 'Copying Content to Authoring Space', |
yone => 'You need to switch to a server housing an Authoring Space for which you are author or co-author.', |
yone => 'You need to switch to a server housing an Authoring Space for which you are author or co-author.', |
chos => 'Choose server', |
chos => 'Choose server', |
); |
); |