version 1.529, 2013/01/09 04:31:57
|
version 1.534, 2013/03/11 22:16:11
|
Line 152 sub dumpcourse {
|
Line 152 sub dumpcourse {
|
$r->print(&endContentScreen()); |
$r->print(&endContentScreen()); |
return ''; |
return ''; |
} |
} |
my ($ca,$cd)=split(/\@/,$env{'form.authorspace'}); |
my ($ca,$cd)=split(/\:/,$env{'form.authorspace'}); |
$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); |
Line 289 sub group_import {
|
Line 289 sub group_import {
|
$env{'form.output'}=$newmapstr; |
$env{'form.output'}=$newmapstr; |
my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom, |
my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom, |
'output',$1.$2); |
'output',$1.$2); |
if ($result != m|^/uploaded/|) { |
if ($result !~ m{^/uploaded/}) { |
$errtext.='Map not saved: A network error occurred when trying to save the new map. '; |
$errtext.='Map not saved: A network error occurred when trying to save the new map. '; |
$fatal = 2; |
$fatal = 2; |
} |
} |
Line 300 sub group_import {
|
Line 300 sub group_import {
|
if ($url) { |
if ($url) { |
if (($caller eq 'londocs') && |
if (($caller eq 'londocs') && |
($folder =~ /^default/)) { |
($folder =~ /^default/)) { |
unless ($donechk) { |
if (($url =~ /\.(page|sequence)$/) && (!$donechk)) { |
my $chome = &Apache::lonnet::homeserver($coursenum,$coursedom); |
my $chome = &Apache::lonnet::homeserver($coursenum,$coursedom); |
my $cid = $coursedom.'_'.$coursenum; |
my $cid = $coursedom.'_'.$coursenum; |
$allmaps = |
$allmaps = |
Line 325 sub group_import {
|
Line 325 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); |
|
if ($name eq '') { |
|
$name = &mt('Web Page'); |
|
} |
|
if ($url =~ m{^/uploaded/$coursedom/$coursenum/((?:docs|supplemental)/(?:default|\d+))/new\.html$}) { |
|
my $filepath = $1; |
|
my $fname = $name; |
|
if ($fname =~ /^\W+$/) { |
|
$fname = 'web'; |
|
} else { |
|
$fname =~ s/\W/_/g; |
|
} |
|
if (length($fname > 15)) { |
|
$fname = substr($fname,0,14); |
|
} |
|
my $initialtext = &mt('Replace with your own content.'); |
|
my $newhtml = <<END; |
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> |
|
<head> |
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
|
<title>$name</title> |
|
</head> |
|
<body bgcolor="#ffffff"> |
|
$initialtext |
|
</body> |
|
</html> |
|
END |
|
$env{'form.output'}=$newhtml; |
|
my $result = |
|
&Apache::lonnet::finishuserfileupload($coursenum,$coursedom, |
|
'output', |
|
"$filepath/$residx/$fname.html"); |
|
if ($result =~ m{^/uploaded/}) { |
|
$url = $result; |
|
if ($filepath =~ /^supplemental/) { |
|
$name = time.'___&&&___'.$env{'user.name'}.'___&&&___'. |
|
$env{'user.domain'}.'___&&&___'.$name; |
|
} |
|
} else { |
|
return (&mt('Failed to save new web page.'),1); |
|
} |
|
} |
$LONCAPA::map::resources[$residx] = |
$LONCAPA::map::resources[$residx] = |
join(':', ($name, $url, $ext, 'normal', 'res')); |
join(':', ($name, $url, $ext, 'normal', 'res')); |
} |
} |
Line 335 sub group_import {
|
Line 377 sub group_import {
|
removefrommap => \%removefrommap, |
removefrommap => \%removefrommap, |
removeparam => \%removeparam, |
removeparam => \%removeparam, |
); |
); |
&apply_fixups($folder,1,$coursedom,$coursenum,\%import_errors,\%updated); |
my ($result,$msgsarray,$lockerror) = |
|
&apply_fixups($folder,1,$coursedom,$coursenum,\%import_errors,\%updated); |
if (keys(%import_errors) > 0) { |
if (keys(%import_errors) > 0) { |
$fixuperrors = |
$fixuperrors = |
'<p span class="LC_warning">'."\n". |
'<p span class="LC_warning">'."\n". |
&mt('The following files are either dependencies of a web page or references within a folder and/or composite page for which errors occurred during import:')."\n". |
&mt('The following files are either dependencies of a web page or references within a folder and/or composite page for which errors occurred during import:')."\n". |
'<ul>'."\n"; |
'<ul>'."\n"; |
Line 346 sub group_import {
|
Line 389 sub group_import {
|
} |
} |
$fixuperrors .= '</ul></p>'."\n"; |
$fixuperrors .= '</ul></p>'."\n"; |
} |
} |
|
if (ref($msgsarray) eq 'ARRAY') { |
|
if (@{$msgsarray} > 0) { |
|
$fixuperrors .= '<p class="LC_info">'. |
|
join('<br />',@{$msgsarray}). |
|
'</p>'; |
|
} |
|
} |
|
if ($lockerror) { |
|
$fixuperrors .= '<p class="LC_error">'. |
|
$lockerror. |
|
'</p>'; |
|
} |
} |
} |
my ($errtext,$fatal) = |
my ($errtext,$fatal) = |
&storemap($coursenum, $coursedom, $folder.'.'.$container,1); |
&storemap($coursenum, $coursedom, $folder.'.'.$container,1); |
Line 735 sub print_paste_buffer {
|
Line 790 sub print_paste_buffer {
|
$buffer = $type.': '. |
$buffer = $type.': '. |
&LONCAPA::map::qtescape($env{'docs.markedcopy_title'}).' ('. |
&LONCAPA::map::qtescape($env{'docs.markedcopy_title'}).' ('. |
&LONCAPA::map::qtescape($env{'docs.markedcopy_url'}).')'; |
&LONCAPA::map::qtescape($env{'docs.markedcopy_url'}).')'; |
} else { |
} else { |
my $icon = &Apache::loncommon::icon($extension); |
my $icon = &Apache::loncommon::icon($extension); |
if ($extension eq 'sequence' && |
if ($extension eq 'sequence' && |
$env{'docs.markedcopy_url'} =~ m{/default_\d+\.sequence$ }x) { |
$env{'docs.markedcopy_url'} =~ m{/default_\d+\.sequence$ }x) { |
Line 747 sub print_paste_buffer {
|
Line 802 sub print_paste_buffer {
|
} |
} |
if ($canpaste) { |
if ($canpaste) { |
$r->print('<form name="pasteform" action="/adm/coursedocs" method="post">'.$buffer); |
$r->print('<form name="pasteform" action="/adm/coursedocs" method="post">'.$buffer); |
if (($is_uploaded_map) && (!$areachange)) { |
if ((!$areachange) && (!$othercourse) && |
if ((!$othercourse) && ($env{'docs.markedcopy_cmd'} eq 'cut')) { |
($env{'docs.markedcopy_cmd'} eq 'cut')) { |
|
if (($is_uploaded_map) || |
|
($env{'docs.markedcopy_url'} =~ /(bulletinboard|smppg)$/) || |
|
($env{'docs.markedcopy_url'} =~ m{^/uploaded/$coursedom/$coursenum/(?:docs|supplemental)/(.+)$})) { |
|
my ($copytext,$movetext); |
|
if ($is_uploaded_map) { |
|
$copytext = &mt('Copy to new folder'); |
|
$movetext = &mt('Move old folder'); |
|
} elsif ($env{'docs.markedcopy_url'} =~ /bulletinboard$/) { |
|
$copytext = &mt('Copy to new bulletin board (not posts)'); |
|
$movetext = &mt('Move old bulletin board (not posts)'); |
|
} elsif ($env{'docs.markedcopy_url'} =~ /smppg$/) { |
|
$copytext = &mt('Copy to new simple page'); |
|
$movetext = &mt('Move old simple page'); |
|
} else { |
|
$copytext = &mt('Copy to new uploaded document'); |
|
$movetext = &mt('Move old uploaded document'); |
|
} |
$r->print((' 'x 4).'<span id="pasteoptionstext">'. |
$r->print((' 'x 4).'<span id="pasteoptionstext">'. |
'<a href="javascript:showPasteOptions();" class="LC_menubuttons_link">'. |
'<a href="javascript:showPasteOptions();" class="LC_menubuttons_link">'. |
&mt('Show Paste Options').'</a></span><br />'. |
&mt('Show Paste Options').'</a></span><br />'. |
'<div id="pasteoptions" class="LC_dccid">'.(' 'x 4). |
'<div id="pasteoptions" class="LC_dccid">'.(' 'x 4). |
'<label>'. |
'<label>'. |
'<input type="radio" name="docs.markedcopy_options" value="new" checked="checked" />'. |
'<input type="radio" name="docs.markedcopy_options" value="new" checked="checked" />'. |
&mt('Copy to new folder').'</label>'.(' ' x2). |
$copytext.'</label>'.(' ' x2). |
'<label>'. |
'<label>'. |
'<input type="radio" name="docs.markedcopy_options" value="move" />'. |
'<input type="radio" name="docs.markedcopy_options" value="move" />'. |
&mt('Move old folder').'</label><br />'); |
$movetext.'</label><br />'); |
if ($env{'docs.markedcopy_nested'}) { |
if (($is_uploaded_map) && ($env{'docs.markedcopy_nested'})) { |
$r->print('<br />'.&mt('Folder to paste contains sub-folders'). |
$r->print('<br />'.&mt('Folder to paste contains sub-folders'). |
'<br /><table border="0">'); |
'<br /><table border="0">'); |
my @pastemaps = split(/\&/,$env{'docs.markedcopy_nested'}); |
my @pastemaps = split(/\&/,$env{'docs.markedcopy_nested'}); |
Line 965 sub do_paste_from_buffer {
|
Line 1037 sub do_paste_from_buffer {
|
} |
} |
if (($srcdom ne $coursedom) || ($srcnum ne $coursenum) || ($prefixchg) || |
if (($srcdom ne $coursedom) || ($srcnum ne $coursenum) || ($prefixchg) || |
(($newurl ne '') && ($newurl ne $url))) { |
(($newurl ne '') && ($newurl ne $url))) { |
unless (&url_paste_fixups($url,$folder,$prefixchg,$coursedom,$coursenum, |
unless (&url_paste_fixups($url,$folder,$prefixchg,$coursedom, |
$allmaps,\%rewrites,\%retitles,\%copies,\%dbcopies, |
$coursenum,$srcdom,$srcnum,$allmaps, |
|
\%rewrites,\%retitles,\%copies,\%dbcopies, |
\%zombies,\%params,\%mapmoves,\%mapchanges,\%tomove, |
\%zombies,\%params,\%mapmoves,\%mapchanges,\%tomove, |
\%newsubdir,\%newurls)) { |
\%newsubdir,\%newurls)) { |
$mapmoves{$url} = 1; |
$mapmoves{$url} = 1; |
} |
} |
$url = $newurl; |
$url = $newurl; |
} elsif ($env{'docs.markedcopy_nested'}) { |
} elsif ($env{'docs.markedcopy_nested'}) { |
&url_paste_fixups($url,$folder,$prefixchg,$coursedom,$coursenum,$allmaps,\%rewrites, |
&url_paste_fixups($url,$folder,$prefixchg,$coursedom,$coursenum, |
|
$srcdom,$srcnum,$allmaps,\%rewrites, |
\%retitles,\%copies,\%dbcopies,\%zombies,\%params,\%mapmoves, |
\%retitles,\%copies,\%dbcopies,\%zombies,\%params,\%mapmoves, |
\%mapchanges,\%tomove,\%newsubdir,\%newurls); |
\%mapchanges,\%tomove,\%newsubdir,\%newurls); |
} |
} |
Line 988 sub do_paste_from_buffer {
|
Line 1062 sub do_paste_from_buffer {
|
} |
} |
} |
} |
} |
} |
if ($url=~ m{/smppg$}) { |
my $lockerrors; |
my $db_name = &Apache::lonsimplepage::get_db_name($url); |
if ($url=~ m{/(bulletinboard|smppg)$}) { |
if ($db_name =~ /^smppage_/) { |
my $prefix = $1; |
#simple pages, need to copy the db contents to a new one. |
#need to copy the db contents to a new one, unless this is a move. |
my %contents=&Apache::lonnet::dump($db_name,$coursedom,$coursenum); |
my %info = ( |
my $now = time(); |
src => $url, |
$db_name =~ s{_\d*$ }{_$now}x; |
cdom => $coursedom, |
my $dbresult=&Apache::lonnet::put($db_name,\%contents, |
cnum => $coursenum, |
$coursedom,$coursenum); |
); |
if ($dbresult eq 'ok') { |
my (%lockerr,$msg); |
$url =~ s{/(\d*)/smppg$ }{/$now/smppg}x; |
unless ($env{'form.docs.markedcopy_options'} eq 'move') { |
|
my ($newurl,$result,$errtext) = |
|
&dbcopy(\%info,$coursedom,$coursenum,\%lockerr); |
|
if ($result eq 'ok') { |
|
$url = $newurl; |
$title=&mt('Copy of').' '.$title; |
$title=&mt('Copy of').' '.$title; |
} else { |
} else { |
return (&mt('Paste failed: An error occurred when copying the simple page.')); |
if ($prefix eq 'smppg') { |
|
$msg = &mt('Paste failed: An error occurred when copying the simple page.').' '.$errtext; |
|
} elsif ($prefix eq 'bulletinboard') { |
|
$msg = &mt('Paste failed: An error occurred when copying the bulletin board.').' '.$errtext; |
|
} |
|
return ($result,undef,[$msg],$lockerr{$prefix}); |
|
} |
|
if ($lockerr{$prefix}) { |
|
$lockerrors = $lockerr{$prefix}; |
} |
} |
} |
} |
} |
} |
$title = &LONCAPA::map::qtunescape($title); |
$title = &LONCAPA::map::qtunescape($title); |
my $ext='false'; |
my $ext='false'; |
Line 1030 sub do_paste_from_buffer {
|
Line 1116 sub do_paste_from_buffer {
|
if ($newdocsdir eq '') { |
if ($newdocsdir eq '') { |
$newdocsdir = 'default'; |
$newdocsdir = 'default'; |
} |
} |
if (($prefixchg) || ($srcdom ne $coursedom) || ($srcnum ne $coursenum)) { |
if (($prefixchg) || |
|
($srcdom ne $coursedom) || ($srcnum ne $coursenum) || |
|
($env{'form.docs.markedcopy_options'} ne 'move')) { |
my $newpath = "$newprefix/$newdocsdir/$newidx/$rem"; |
my $newpath = "$newprefix/$newdocsdir/$newidx/$rem"; |
$url = |
$url = |
&Apache::lonclonecourse::writefile($env{'request.course.id'},$newpath, |
&Apache::lonclonecourse::writefile($env{'request.course.id'},$newpath, |
Line 1066 sub do_paste_from_buffer {
|
Line 1154 sub do_paste_from_buffer {
|
copies => \%copies, |
copies => \%copies, |
docmoves => \%docmoves, |
docmoves => \%docmoves, |
mapmoves => \%mapmoves, |
mapmoves => \%mapmoves, |
); |
); |
$result = |
($result,my $msgsarray,my $lockerror) = |
&apply_fixups($folder,$is_map,$coursedom,$coursenum,$errors, |
&apply_fixups($folder,$is_map,$coursedom,$coursenum,$errors, |
\%updated,\%info,\%moves,$prefixchg,$oldurl,$url,'paste'); |
\%updated,\%info,\%moves,$prefixchg,$oldurl,$url,'paste'); |
|
$lockerrors .= $lockerror; |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
if ($is_map) { |
if ($is_map) { |
my ($errtext,$fatal) = &mapread($coursenum,$coursedom, |
my ($errtext,$fatal) = &mapread($coursenum,$coursedom, |
$folder.'.'.$container); |
$folder.'.'.$container); |
return $errtext if ($fatal); |
return ($errtext,$save_err,$msgsarray,$lockerrors) if ($fatal); |
|
|
if ($#LONCAPA::map::order<1) { |
if ($#LONCAPA::map::order<1) { |
my $idx=&LONCAPA::map::getresidx(); |
my $idx=&LONCAPA::map::getresidx(); |
Line 1105 sub do_paste_from_buffer {
|
Line 1194 sub do_paste_from_buffer {
|
$save_err = $errtext; |
$save_err = $errtext; |
} |
} |
} |
} |
|
|
if ($env{'form.docs.markedcopy_options'} eq 'move') { |
if ($env{'form.docs.markedcopy_options'} eq 'move') { |
&Apache::lonnet::delenv('docs.markedcopy'); |
&Apache::lonnet::delenv('docs.markedcopy'); |
&Apache::lonnet::delenv('docs.markedcopy_nested'); |
&Apache::lonnet::delenv('docs.markedcopy_nested'); |
&Apache::lonnet::delenv('docs.markedcopy_nestednames'); |
&Apache::lonnet::delenv('docs.markedcopy_nestednames'); |
} |
} |
return ($result,$save_err); |
return ($result,$save_err,$msgsarray,$lockerrors); |
} |
} |
|
|
sub get_newmap_url { |
sub get_newmap_url { |
Line 1175 sub get_newmap_url {
|
Line 1264 sub get_newmap_url {
|
} |
} |
|
|
sub dbcopy { |
sub dbcopy { |
my ($url,$coursedom,$coursenum) = @_; |
my ($dbref,$coursedom,$coursenum,$lockerrorsref) = @_; |
if ($url=~ m{/smppg$}) { |
my ($url,$result,$errtext); |
my $db_name = &Apache::lonsimplepage::get_db_name($url); |
my $url = $dbref->{'src'}; |
if ($db_name =~ /^smppage_/) { |
if (ref($dbref) eq 'HASH') { |
#simple pages, need to copy the db contents to a new one. |
if ($url =~ m{/(smppg|bulletinboard)$}) { |
my %contents=&Apache::lonnet::dump($db_name,$coursedom,$coursenum); |
my $prefix = $1; |
my $now = time(); |
if (($dbref->{'cdom'} =~ /^$match_domain$/) && |
$db_name =~ s{_\d*$ }{_$now}x; |
($dbref->{'cnum'} =~ /^$match_courseid$/)) { |
my $result=&Apache::lonnet::put($db_name,\%contents, |
my $db_name; |
$coursedom,$coursenum); |
my $marker = (split(m{/},$url))[4]; |
$url =~ s{/(\d*)/smppg$ }{/$now/smppg}x; |
$marker=~s/\D//g; |
|
if ($dbref->{'src'} =~ m{/smppg$}) { |
|
$db_name = |
|
&Apache::lonsimplepage::get_db_name($url,$marker, |
|
$dbref->{'cdom'}, |
|
$dbref->{'cnum'}); |
|
} else { |
|
$db_name = 'bulletinpage_'.$marker; |
|
} |
|
my ($suffix,$freedlock,$error) = |
|
&Apache::lonnet::get_timebased_id($prefix,'num','templated', |
|
$coursedom,$coursenum, |
|
'concat'); |
|
if (!$suffix) { |
|
if ($prefix eq 'smppg') { |
|
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a simple page [_1].',$url); |
|
} else { |
|
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a bulletin board [_1].',$url); |
|
} |
|
if ($error) { |
|
$errtext .= '<br />'.$error; |
|
} |
|
} else { |
|
#need to copy the db contents to a new one. |
|
my %contents=&Apache::lonnet::dump($db_name, |
|
$dbref->{'cdom'}, |
|
$dbref->{'cnum'}); |
|
if (exists($contents{'uploaded.photourl'})) { |
|
my $photo = $contents{'uploaded.photourl'}; |
|
my ($subdir,$fname) = |
|
($photo =~ m{^/uploaded/$match_domain/$match_courseid/+(bulletin|simplepage)/(?:|\d+/)([^/]+)$}); |
|
my $newphoto; |
|
if ($fname ne '') { |
|
my $content = &Apache::lonnet::getfile($photo); |
|
unless ($content eq '-1') { |
|
$env{'form.'.$suffix.'.photourl'} = $content; |
|
$newphoto = |
|
&Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$suffix.'.photourl',"$subdir/$suffix/$fname"); |
|
delete($env{'form.'.$suffix.'.photourl'}); |
|
} |
|
} |
|
if ($newphoto =~ m{^/uploaded/}) { |
|
$contents{'uploaded.photourl'} = $newphoto; |
|
} |
|
} |
|
$db_name =~ s{_\d*$ }{_$suffix}x; |
|
$result=&Apache::lonnet::put($db_name,\%contents, |
|
$coursedom,$coursenum); |
|
if ($result eq 'ok') { |
|
$url =~ s{/(\d*)/(smppg|bulletinboard)$}{/$suffix/$2}x; |
|
} |
|
} |
|
if (($freedlock ne 'ok') && (ref($lockerrorsref) eq 'HASH')) { |
|
$lockerrorsref->{$prefix} = |
|
'<div class="LC_error">'. |
|
&mt('There was a problem removing a lockfile.'); |
|
if ($prefix eq 'smppg') { |
|
$lockerrorsref->{$prefix} .= |
|
&mt('This will prevent creation of additional simple pages in this course.'); |
|
} else { |
|
$lockerrorsref->{$prefix} .= &mt('This will prevent creation of additional bulletin boards in this course.'); |
|
} |
|
$lockerrorsref->{$prefix} .= &mt('Please contact the domain coordinator for your LON-CAPA domain.').'</div>'; |
|
} |
|
} |
|
} elsif ($url =~ m{/syllabus$}) { |
|
if (($dbref->{'cdom'} =~ /^$match_domain$/) && |
|
($dbref->{'cnum'} =~ /^$match_courseid$/)) { |
|
if (($dbref->{'cdom'} ne $coursedom) || |
|
($dbref->{'cnum'} ne $coursenum)) { |
|
my %contents=&Apache::lonnet::dump('syllabus', |
|
$dbref->{'cdom'}, |
|
$dbref->{'cnum'}); |
|
$result=&Apache::lonnet::put('syllabus',\%contents, |
|
$coursedom,$coursenum); |
|
} |
|
} |
} |
} |
} |
} |
return $url; |
return ($url,$result,$errtext); |
} |
} |
|
|
sub uniqueness_check { |
sub uniqueness_check { |
Line 1254 sub contained_map_check {
|
Line 1419 sub contained_map_check {
|
} |
} |
|
|
sub url_paste_fixups { |
sub url_paste_fixups { |
my ($oldurl,$folder,$prefixchg,$cdom,$cnum,$allmaps,$rewrites,$retitles,$copies, |
my ($oldurl,$folder,$prefixchg,$cdom,$cnum,$fromcdom,$fromcnum,$allmaps, |
$dbcopies,$zombies,$params,$mapmoves,$mapchanges,$tomove,$newsubdir,$newurls) = @_; |
$rewrites,$retitles,$copies,$dbcopies,$zombies,$params,$mapmoves, |
|
$mapchanges,$tomove,$newsubdir,$newurls) = @_; |
my $checktitle; |
my $checktitle; |
if (($prefixchg) && |
if (($prefixchg) && |
($oldurl =~ m{^/uploaded/$match_domain/$match_courseid/supplemental})) { |
($oldurl =~ m{^/uploaded/$match_domain/$match_courseid/supplemental})) { |
Line 1282 sub url_paste_fixups {
|
Line 1448 sub url_paste_fixups {
|
my $title = $token->[2]->{'title'}; |
my $title = $token->[2]->{'title'}; |
if ($checktitle) { |
if ($checktitle) { |
if ($title =~ m{\d+\Q___&&&___\E$match_username\Q___&&&___\E$match_domain\Q___&&&___\E(.+)$}) { |
if ($title =~ m{\d+\Q___&&&___\E$match_username\Q___&&&___\E$match_domain\Q___&&&___\E(.+)$}) { |
$retitles->{$oldurl}{$ressrc} = $id; |
$retitles->{$oldurl}{$id} = $ressrc; |
} |
} |
} |
} |
next if ($token->[2]->{'type'} eq 'external'); |
next if ($token->[2]->{'type'} eq 'external'); |
if ($token->[2]->{'type'} eq 'zombie') { |
if ($token->[2]->{'type'} eq 'zombie') { |
next if ($skip); |
next if ($skip); |
$zombies->{$oldurl}{$ressrc} = $id; |
$zombies->{$oldurl}{$id} = $ressrc; |
$changed = 1; |
$changed = 1; |
} elsif ($ressrc =~ m{^/uploaded/($match_domain)/($match_courseid)/(.+)$}) { |
} elsif ($ressrc =~ m{^/uploaded/($match_domain)/($match_courseid)/(.+)$}) { |
my $srcdom = $1; |
my $srcdom = $1; |
Line 1300 sub url_paste_fixups {
|
Line 1466 sub url_paste_fixups {
|
my $prefix = $1; |
my $prefix = $1; |
$mapname = $prefix.$2; |
$mapname = $prefix.$2; |
if ($tomove->{$mapname}) { |
if ($tomove->{$mapname}) { |
&url_paste_fixups($ressrc,$folder,$prefixchg,$cdom,$cnum,$allmaps, |
&url_paste_fixups($ressrc,$folder,$prefixchg,$cdom,$cnum, |
$rewrites,$retitles,$copies,$dbcopies,$zombies, |
$srcdom,$srcnum,$allmaps,$rewrites, |
$params,$mapmoves,$mapchanges,$tomove,$newsubdir, |
$retitles,$copies,$dbcopies,$zombies, |
$newurls); |
$params,$mapmoves,$mapchanges,$tomove, |
|
$newsubdir,$newurls); |
next; |
next; |
} else { |
} else { |
($newurl,my $error) = |
($newurl,my $error) = |
Line 1321 sub url_paste_fixups {
|
Line 1488 sub url_paste_fixups {
|
($mapchanges->{$oldurl}) || (($newurl ne '') && ($newurl ne $oldurl))) { |
($mapchanges->{$oldurl}) || (($newurl ne '') && ($newurl ne $oldurl))) { |
|
|
if ($rem =~ /^(default|supplemental)(_?\d*).(sequence|page)$/) { |
if ($rem =~ /^(default|supplemental)(_?\d*).(sequence|page)$/) { |
$rewrites->{$oldurl}{$ressrc} = $id; |
$rewrites->{$oldurl}{$id} = $ressrc; |
$mapchanges->{$ressrc} = 1; |
$mapchanges->{$ressrc} = 1; |
unless (&url_paste_fixups($ressrc,$folder,$prefixchg,$cdom,$cnum,$allmaps, |
unless (&url_paste_fixups($ressrc,$folder,$prefixchg,$cdom, |
$rewrites,$retitles,$copies,$dbcopies,$zombies, |
$cnum,$srcdom,$srcnum,$allmaps, |
$params,$mapmoves,$mapchanges,$tomove,$newsubdir, |
$rewrites,$retitles,$copies,$dbcopies, |
$newurls)) { |
$zombies,$params,$mapmoves,$mapchanges, |
|
$tomove,$newsubdir,$newurls)) { |
$mapmoves->{$ressrc} = 1; |
$mapmoves->{$ressrc} = 1; |
} |
} |
$changed = 1; |
$changed = 1; |
} else { |
} else { |
$rewrites->{$oldurl}{$ressrc} = $id; |
$rewrites->{$oldurl}{$id} = $ressrc; |
$copies->{$oldurl}{$ressrc} = $id; |
$copies->{$oldurl}{$ressrc} = $id; |
$changed = 1; |
$changed = 1; |
} |
} |
} |
} |
} elsif ($ressrc =~ m{^/adm/($match_domain)/($match_courseid)/(.+)$}) { |
} elsif ($ressrc =~ m{^/adm/($match_domain)/($match_courseid)/.+$}) { |
next if ($skip); |
next if ($skip); |
my $srcdom = $1; |
my $srcdom = $1; |
my $srcnum = $2; |
my $srcnum = $2; |
if (($srcdom ne $cdom) || ($srcnum ne $cnum)) { |
if (($srcdom ne $cdom) || ($srcnum ne $cnum)) { |
$rewrites->{$oldurl}{$ressrc} = $id; |
$rewrites->{$oldurl}{$id} = $ressrc; |
$dbcopies->{$oldurl}{$ressrc} = $id; |
$dbcopies->{$oldurl}{$id}{'src'} = $ressrc; |
|
$dbcopies->{$oldurl}{$id}{'cdom'} = $srcdom; |
|
$dbcopies->{$oldurl}{$id}{'cnum'} = $srcnum; |
|
$changed = 1; |
|
} |
|
} elsif ($ressrc =~ m{^/adm/$match_domain/$match_username/\d+/(smppg|bulletinboard)$}) { |
|
if (($fromcdom ne $cdom) || ($fromcnum ne $cnum) || |
|
($env{'form.docs.markedcopy_options'} ne 'move')) { |
|
$dbcopies->{$oldurl}{$id}{'src'} = $ressrc; |
|
$dbcopies->{$oldurl}{$id}{'cdom'} = $fromcdom; |
|
$dbcopies->{$oldurl}{$id}{'cnum'} = $fromcnum; |
$changed = 1; |
$changed = 1; |
} |
} |
} elsif ($ressrc =~ m{^/public/($match_domain)/($match_courseid)/(.+)$}) { |
} elsif ($ressrc =~ m{^/public/($match_domain)/($match_courseid)/(.+)$}) { |
Line 1350 sub url_paste_fixups {
|
Line 1528 sub url_paste_fixups {
|
my $srcdom = $1; |
my $srcdom = $1; |
my $srcnum = $2; |
my $srcnum = $2; |
if (($srcdom ne $cdom) || ($srcnum ne $cnum)) { |
if (($srcdom ne $cdom) || ($srcnum ne $cnum)) { |
$rewrites->{$oldurl}{$ressrc} = $id; |
$dbcopies->{$oldurl}{$id}{'src'} = $ressrc; |
$dbcopies->{$oldurl}{$ressrc} = $id; |
$dbcopies->{$oldurl}{$id}{'cdom'} = $srcdom; |
|
$dbcopies->{$oldurl}{$id}{'cnum'} = $srcnum; |
$changed = 1; |
$changed = 1; |
} |
} |
} |
} |
Line 1374 sub apply_fixups {
|
Line 1553 sub apply_fixups {
|
my ($folder,$is_map,$cdom,$cnum,$errors,$updated,$info,$moves,$prefixchg, |
my ($folder,$is_map,$cdom,$cnum,$errors,$updated,$info,$moves,$prefixchg, |
$oldurl,$url,$caller) = @_; |
$oldurl,$url,$caller) = @_; |
my (%rewrites,%zombies,%removefrommap,%removeparam,%dbcopies,%retitles, |
my (%rewrites,%zombies,%removefrommap,%removeparam,%dbcopies,%retitles, |
%params,%newsubdir,%before,%after,%copies,%docmoves,%mapmoves); |
%params,%newsubdir,%before,%after,%copies,%docmoves,%mapmoves,@msgs, |
|
%lockerrors,$lockmsg); |
if (ref($updated) eq 'HASH') { |
if (ref($updated) eq 'HASH') { |
if (ref($updated->{'rewrites'}) eq 'HASH') { |
if (ref($updated->{'rewrites'}) eq 'HASH') { |
%rewrites = %{$updated->{'rewrites'}}; |
%rewrites = %{$updated->{'rewrites'}}; |
Line 1436 sub apply_fixups {
|
Line 1616 sub apply_fixups {
|
} |
} |
if ($key eq $oldurl) { |
if ($key eq $oldurl) { |
if ((exists($docmoves{$key}))) { |
if ((exists($docmoves{$key}))) { |
unless (grep(/^\Q$oldurl\E/,@allcopies)) { |
unless (grep(/^\Q$oldurl\E$/,@allcopies)) { |
push(@allcopies,$oldurl); |
push(@allcopies,$oldurl); |
} |
} |
} |
} |
Line 1458 sub apply_fixups {
|
Line 1638 sub apply_fixups {
|
$storefn =~ s/^\Q$before{'doc'}\E/$after{'doc'}/; |
$storefn =~ s/^\Q$before{'doc'}\E/$after{'doc'}/; |
} |
} |
if ($newsubdir{$key}) { |
if ($newsubdir{$key}) { |
$storefn =~ s#^(docs|supplemental)/\Q$oldsubdir\E/#$1/$newsubdir{$key}#; |
$storefn =~ s#^(docs|supplemental)/\Q$oldsubdir\E/#$1/$newsubdir{$key}/#; |
} |
} |
} |
} |
©_dependencies($item,$storefn,$relpath,$errors,\$content); |
©_dependencies($item,$storefn,$relpath,$errors,\$content); |
Line 1531 sub apply_fixups {
|
Line 1711 sub apply_fixups {
|
%zombie = %{$zombies{$key}}; |
%zombie = %{$zombies{$key}}; |
} |
} |
if (ref($dbcopies{$key}) eq 'HASH') { |
if (ref($dbcopies{$key}) eq 'HASH') { |
foreach my $item (keys(%{$dbcopies{$key}})) { |
foreach my $idx (keys(%{$dbcopies{$key}})) { |
$newdb{$item} = &dbcopy($item); |
if (ref($dbcopies{$key}{$idx}) eq 'HASH') { |
|
my ($newurl,$result,$errtext) = |
|
&dbcopy($dbcopies{$key}{$idx},$cdom,$cnum,\%lockerrors); |
|
if ($result eq 'ok') { |
|
$newdb{$idx} = $newurl; |
|
} elsif (ref($errors) eq 'HASH') { |
|
$errors->{$key} = 1; |
|
} |
|
push(@msgs,$errtext); |
|
} |
} |
} |
} |
} |
if (ref($params{$key}) eq 'HASH') { |
if (ref($params{$key}) eq 'HASH') { |
Line 1540 sub apply_fixups {
|
Line 1729 sub apply_fixups {
|
} |
} |
my ($errtext,$fatal) = &LONCAPA::map::mapread($key); |
my ($errtext,$fatal) = &LONCAPA::map::mapread($key); |
if ($fatal) { |
if ($fatal) { |
return $errtext; |
return ($errtext); |
} |
} |
for (my $i=0; $i<@LONCAPA::map::zombies; $i++) { |
for (my $i=0; $i<@LONCAPA::map::zombies; $i++) { |
if (defined($LONCAPA::map::zombies[$i])) { |
if (defined($LONCAPA::map::zombies[$i])) { |
my ($title,$src,$ext,$type)=split(/\:/,$LONCAPA::map::zombies[$i]); |
my ($title,$src,$ext,$type)=split(/\:/,$LONCAPA::map::zombies[$i]); |
if ($zombie{$src} eq $i) { |
if ($zombie{$i} eq $src) { |
undef($LONCAPA::map::zombies[$i]); |
undef($LONCAPA::map::zombies[$i]); |
} |
} |
} |
} |
Line 1565 sub apply_fixups {
|
Line 1754 sub apply_fixups {
|
next; |
next; |
} |
} |
my $origsrc = $src; |
my $origsrc = $src; |
if ((exists($toretitle{$src})) && ($toretitle{$src} eq $idx)) { |
if ((exists($toretitle{$idx})) && ($toretitle{$idx} eq $src)) { |
if ($title =~ m{^\d+\Q___&&&___\E$match_username\Q___&&&___\E$match_domain\Q___&&&___\E(.+)$}) { |
if ($title =~ m{^\d+\Q___&&&___\E$match_username\Q___&&&___\E$match_domain\Q___&&&___\E(.+)$}) { |
$changed = 1; |
$changed = 1; |
} |
} |
} |
} |
if ((exists($torewrite{$src})) && ($torewrite{$src} eq $idx)) { |
if ((exists($torewrite{$idx})) && ($torewrite{$idx} eq $src)) { |
$src =~ s{^/(uploaded|adm|public)/$match_domain/$match_courseid/}{/$1/$cdom/$cnum/}; |
$src =~ s{^/(uploaded|adm|public)/$match_domain/$match_courseid/}{/$1/$cdom/$cnum/}; |
if ($origsrc =~ m{^/uploaded/}) { |
if ($origsrc =~ m{^/uploaded/}) { |
if ($prefixchg && $before{'map'} && $after{'map'}) { |
if ($prefixchg && $before{'map'} && $after{'map'}) { |
Line 1580 sub apply_fixups {
|
Line 1769 sub apply_fixups {
|
$src =~ s#^(/uploaded/$match_domain/$match_courseid/)\Q$before{'doc'}\E#$1$after{'doc'}#; |
$src =~ s#^(/uploaded/$match_domain/$match_courseid/)\Q$before{'doc'}\E#$1$after{'doc'}#; |
} |
} |
} |
} |
if ($newsubdir{$origsrc}) { |
if ($origsrc =~ /\.(page|sequence)$/) { |
if ($src =~ /\.(page|sequence)$/) { |
if ($newsubdir{$origsrc}) { |
$src =~ s#^(/uploaded/$match_domain/$match_courseid/(?:default|supplemental)_)(\d+)#$1$newsubdir{$origsrc}#; |
$src =~ s#^(/uploaded/$match_domain/$match_courseid/(?:default|supplemental)_)(\d+)#$1$newsubdir{$origsrc}#; |
} else { |
|
$src =~ s#^(/uploaded/$match_domain/$match_courseid/\w+/)(\d+)#$1$newsubdir{$origsrc}#; |
|
} |
} |
|
} elsif ($newsubdir{$key}) { |
|
$src =~ s#^(/uploaded/$match_domain/$match_courseid/\w+/)(\d+)#$1$newsubdir{$key}#; |
} |
} |
} |
} |
$changed = 1; |
$changed = 1; |
} elsif ($newdb{$src} ne '') { |
} elsif ($newdb{$idx} ne '') { |
$src = $newdb{$src}; |
$src = $newdb{$idx}; |
$changed = 1; |
$changed = 1; |
} |
} |
if ($changed) { |
if ($changed) { |
Line 1605 sub apply_fixups {
|
Line 1794 sub apply_fixups {
|
} |
} |
} |
} |
} |
} |
|
if (values(%lockerrors) > 0) { |
|
$lockmsg = join('<br />',values(%lockerrors)); |
|
} |
my $storefn; |
my $storefn; |
if ($key eq $oldurl) { |
if ($key eq $oldurl) { |
$storefn = $url; |
$storefn = $url; |
Line 1627 sub apply_fixups {
|
Line 1819 sub apply_fixups {
|
&LONCAPA::map::storemap("/uploaded/$cdom/$cnum/$storefn",1,$report); |
&LONCAPA::map::storemap("/uploaded/$cdom/$cnum/$storefn",1,$report); |
if ($errtext) { |
if ($errtext) { |
if ($caller eq 'paste') { |
if ($caller eq 'paste') { |
return &mt('Paste failed: an error occurred saving the folder or page.'); |
return (&mt('Paste failed: an error occurred saving the folder or page.')); |
} |
} |
} |
} |
} |
} |
} |
} |
return 'ok'; |
return ('ok',\@msgs,$lockmsg); |
} |
} |
|
|
sub copy_dependencies { |
sub copy_dependencies { |
Line 1820 sub editor {
|
Line 2012 sub editor {
|
|
|
if ($env{'form.pastemarked'}) { |
if ($env{'form.pastemarked'}) { |
my %paste_errors; |
my %paste_errors; |
my ($paste_res,$save_error) = |
my ($paste_res,$save_error,$pastemsgarray,$lockerror) = |
&do_paste_from_buffer($coursenum,$coursedom,$folder,$container, |
&do_paste_from_buffer($coursenum,$coursedom,$folder,$container, |
\%paste_errors); |
\%paste_errors); |
|
if (ref($pastemsgarray) eq 'ARRAY') { |
|
if (@{$pastemsgarray} > 0) { |
|
|
|
$r->print('<p class="LC_info">'. |
|
join('<br />',@{$pastemsgarray}). |
|
'</p>'); |
|
} |
|
} |
|
if ($lockerror) { |
|
$r->print('<p class="LC_error">'. |
|
$lockerror. |
|
'</p>'); |
|
} |
if ($save_error ne '') { |
if ($save_error ne '') { |
return $save_error; |
return $save_error; |
} |
} |
Line 1856 sub editor {
|
Line 2061 sub editor {
|
foreach my $item (split(/\&/,$env{'form.importdetail'})) { |
foreach my $item (split(/\&/,$env{'form.importdetail'})) { |
if (defined($item)) { |
if (defined($item)) { |
my ($name,$url,$residx)= |
my ($name,$url,$residx)= |
map {&unescape($_)} split(/\=/,$item); |
map { &unescape($_); } split(/\=/,$item); |
if ($url=~ m{^\Q/uploaded/$coursedom/$coursenum/\E(default|supplemental)_new\.(sequence|page)$}) { |
if ($url =~ m{^\Q/uploaded/$coursedom/$coursenum/\E(default|supplemental)_new\.(sequence|page)$}) { |
my ($suffix,$errortxt,$locknotfreed) = |
my ($suffix,$errortxt,$locknotfreed) = |
&newmap_suffix($1,$2,$coursedom,$coursenum); |
&new_timebased_suffix($coursedom,$coursenum,'map',$1,$2); |
if ($locknotfreed) { |
if ($locknotfreed) { |
$r->print($locknotfreed); |
$r->print($locknotfreed); |
} |
} |
Line 1868 sub editor {
|
Line 2073 sub editor {
|
} else { |
} else { |
return $errortxt; |
return $errortxt; |
} |
} |
|
} elsif ($url =~ m{^/adm/$match_domain/$match_username/new/(smppg|bulletinboard)$}) { |
|
my $type = $1; |
|
my ($suffix,$errortxt,$locknotfreed) = |
|
&new_timebased_suffix($coursedom,$coursenum,$type); |
|
if ($locknotfreed) { |
|
$r->print($locknotfreed); |
|
} |
|
if ($suffix) { |
|
$url =~ s{^(/adm/$match_domain/$match_username)/new}{$1/$suffix}; |
|
} else { |
|
return $errortxt; |
|
} |
|
} elsif ($url =~ m{^/uploaded/$coursedom/$coursenum/(docs|supplemental)/(default|\d+)/new.html$}) { |
|
if ($supplementalflag) { |
|
next unless ($1 eq 'supplemental'); |
|
if ($folder eq 'supplemental') { |
|
next unless ($2 eq 'default'); |
|
} else { |
|
next unless ($folder eq 'supplemental_'.$2); |
|
} |
|
} else { |
|
next unless ($1 eq 'docs'); |
|
if ($folder eq 'default') { |
|
next unless ($2 eq 'default'); |
|
} else { |
|
next unless ($folder eq 'default_'.$2); |
|
} |
|
} |
} |
} |
push(@imports, [$name, $url, $residx]); |
push(@imports, [$name, $url, $residx]); |
} |
} |
} |
} |
($errtext,$fatal,my $fixuperrors) = |
($errtext,$fatal,my $fixuperrors) = |
&group_import($coursenum, $coursedom, $folder,$container, |
&group_import($coursenum, $coursedom, $folder,$container, |
'londocs',@imports); |
'londocs',@imports); |
return $errtext if ($fatal); |
return $errtext if ($fatal); |
Line 2041 sub process_file_upload {
|
Line 2274 sub process_file_upload {
|
$container='page'; |
$container='page'; |
} |
} |
($errtext,$fatal)= |
($errtext,$fatal)= |
&mapread($coursenum,$coursedom,$folder.'.'.$container); |
&mapread($coursenum,$coursedom,$folder.'.'.$container); |
if ($#LONCAPA::map::order<1) { |
if ($#LONCAPA::map::order<1) { |
$LONCAPA::map::order[0]=1; |
$LONCAPA::map::order[0]=1; |
$LONCAPA::map::resources[1]=''; |
$LONCAPA::map::resources[1]=''; |
} |
} |
if ($fatal) { |
|
$$upload_output = '<div class="LC_error" id="uploadfileresult">'.&mt('The uploaded file has not been stored as an error occurred reading the contents of the current folder.').'</div>'; |
|
return; |
|
} |
|
my $destination = 'docs/'; |
my $destination = 'docs/'; |
if ($folder =~ /^supplemental/) { |
if ($folder =~ /^supplemental/) { |
$destination = 'supplemental/'; |
$destination = 'supplemental/'; |
Line 2059 sub process_file_upload {
|
Line 2288 sub process_file_upload {
|
} elsif ($folder =~ /^(default|supplemental)_(\d+)$/) { |
} elsif ($folder =~ /^(default|supplemental)_(\d+)$/) { |
$destination .= $2.'/'; |
$destination .= $2.'/'; |
} |
} |
|
if ($fatal) { |
|
$$upload_output = '<div class="LC_error" id="uploadfileresult">'.&mt('The uploaded file has not been stored as an error occurred reading the contents of the current folder.').'</div>'; |
|
return; |
|
} |
# this is for a course, not a user, so set context to coursedoc. |
# this is for a course, not a user, so set context to coursedoc. |
my $newidx=&LONCAPA::map::getresidx(); |
my $newidx=&LONCAPA::map::getresidx(); |
$destination .= $newidx; |
$destination .= $newidx; |
Line 2598 ENDPARMS
|
Line 2831 ENDPARMS
|
return $line; |
return $line; |
} |
} |
|
|
sub newmap_suffix { |
sub new_timebased_suffix { |
my ($area,$container,$coursedom,$coursenum) = @_; |
my ($coursedom,$coursenum,$type,$area,$container) = @_; |
my ($prefix,$idtype,$errtext,$locknotfreed); |
my ($prefix,$namespace,$idtype,$errtext,$locknotfreed); |
$prefix = 'docs'; |
if ($type eq 'map') { |
if ($area eq 'supplemental') { |
$prefix = 'docs'; |
$prefix = 'supp'; |
if ($area eq 'supplemental') { |
|
$prefix = 'supp'; |
|
} |
|
$prefix .= $container; |
|
$namespace = 'uploadedmaps'; |
|
} else { |
|
$prefix = $type; |
|
$namespace = 'templated'; |
} |
} |
$prefix .= $container; |
|
$idtype = 'concat'; |
$idtype = 'concat'; |
my ($suffix,$freedlock,$error) = |
my ($suffix,$freedlock,$error) = |
&Apache::lonnet::get_timebased_id($prefix,'num','uploadedmaps', |
&Apache::lonnet::get_timebased_id($prefix,'num',$namespace, |
$coursedom,$coursenum); |
$coursedom,$coursenum); |
if (!$suffix) { |
if (!$suffix) { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new folder/page.'); |
if ($type eq 'map') { |
|
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new folder/page.'); |
|
} elsif ($type eq 'smppg') { |
|
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new simple page.'); |
|
} else { |
|
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new bulletin board.'); |
|
} |
if ($error) { |
if ($error) { |
$errtext .= '<br />'.$error; |
$errtext .= '<br />'.$error; |
} |
} |
} |
} |
if ($freedlock ne 'ok') { |
if ($freedlock ne 'ok') { |
$locknotfreed = '<div class="LC_error">'.&mt('There was a problem removing a lockfile. This will prevent creation of additional folders or composite pages in this course. Please contact the domain coordinator for your LON-CAPA domain.').'</div>'; |
$locknotfreed = |
|
'<div class="LC_error">'. |
|
&mt('There was a problem removing a lockfile.').' '; |
|
if ($type eq 'map') { |
|
&mt('This will prevent creation of additional folders or composite pages in this course.'); |
|
} elsif ($type eq 'smppg') { |
|
$locknotfreed .= |
|
&mt('This will prevent creation of additional simple pages in this course.'); |
|
} else { |
|
$locknotfreed .= |
|
&mt('This will prevent creation of additional bulletin boards in this course.'); |
|
} |
|
$locknotfreed .= |
|
' '.&mt('Please contact the domain coordinator for your LON-CAPA domain.'). |
|
'</div>'; |
} |
} |
return ($suffix,$errtext,$locknotfreed); |
return ($suffix,$errtext,$locknotfreed); |
} |
} |
Line 3223 sub handler {
|
Line 3482 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. |
unless ($r->uri eq '/adm/supplemental') { |
unless ($r->uri eq '/adm/supplemental') { |
Line 3305 sub handler {
|
Line 3565 sub handler {
|
if ($env{'form.symb'} ne '') { |
if ($env{'form.symb'} ne '') { |
$env{'form.folderpath'}= |
$env{'form.folderpath'}= |
&Apache::loncommon::symb_to_docspath($env{'form.symb'}); |
&Apache::loncommon::symb_to_docspath($env{'form.symb'}); |
&Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => |
&Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => |
$env{'form.command'}.'_'.$env{'form.symb'}}); |
$env{'form.command'}.'_'.$env{'form.symb'}}); |
} elsif ($env{'form.supppath'} ne '') { |
} elsif ($env{'form.supppath'} ne '') { |
$env{'form.folderpath'}=$env{'form.supppath'}; |
$env{'form.folderpath'}=$env{'form.supppath'}; |
&Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => |
&Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => |
$env{'form.command'}.'_'.$env{'form.supppath'}}); |
$env{'form.command'}.'_'.$env{'form.supppath'}}); |
} |
} |
} elsif ($env{'form.command'} eq 'editdocs') { |
} elsif ($env{'form.command'} eq 'editdocs') { |
Line 3558 sub handler {
|
Line 3818 sub handler {
|
'navc' => 'Table of Contents', |
'navc' => 'Table of Contents', |
'sipa' => 'Simple Course Page', |
'sipa' => 'Simple Course Page', |
'sipr' => 'Simple Problem', |
'sipr' => 'Simple Problem', |
|
'webp' => 'Blank Web Page (editable)', |
'drbx' => 'Drop Box', |
'drbx' => 'Drop Box', |
'scuf' => 'External Scores (handgrade, upload, clicker)', |
'scuf' => 'External Scores (handgrade, upload, clicker)', |
'bull' => 'Discussion Board', |
'bull' => 'Discussion Board', |
Line 3810 NAMFORM
|
Line 4071 NAMFORM
|
</form> |
</form> |
NASOFORM |
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="cc" /> |
Line 3822 NASOFORM
|
Line 4082 NASOFORM
|
</form> |
</form> |
NROSTFORM |
NROSTFORM |
|
|
|
my $newwebpage; |
|
if ($folder =~ /^default_?(\d*)$/) { |
|
$newwebpage = "/uploaded/$coursedom/$coursenum/docs/"; |
|
if ($1) { |
|
$newwebpage .= $1; |
|
} else { |
|
$newwebpage .= 'default'; |
|
} |
|
$newwebpage .= '/new.html'; |
|
} |
|
my $newwebpageform =(<<NWEBFORM); |
|
<form action="/adm/coursedocs" method="post" name="newwebpage"> |
|
<input type="hidden" name="active" value="cc" /> |
|
$pathitem |
|
<input type="hidden" name="importdetail" value="$newwebpage" /> |
|
<a class="LC_menubuttons_link" href="javascript:makewebpage();">$lt{'webp'}</a> |
|
$help{'Web Page'} |
|
</form> |
|
NWEBFORM |
|
|
|
|
my $specialdocumentsform; |
my $specialdocumentsform; |
my @specialdocumentsforma; |
my @specialdocumentsforma; |
my $gradingform; |
my $gradingform; |
Line 3880 NGFFORM
|
Line 4161 NGFFORM
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.newsyl.submit()" />'=>$newsylform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.newsyl.submit()" />'=>$newsylform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="document.newnav.submit()" />'=>$newnavform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="document.newnav.submit()" />'=>$newnavform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simple.png" alt="'.$lt{sipa}.'" onclick="javascript:makesmppage();" />'=>$newsmppageform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simple.png" alt="'.$lt{sipa}.'" onclick="javascript:makesmppage();" />'=>$newsmppageform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/webpage.png" alt="'.$lt{webp}.'" onclick="javascript:makewebpage();" />'=>$newwebpageform}, |
); |
); |
$specialdocumentsform = &create_form_ul(&create_list_elements(@specialdocumentsforma)); |
$specialdocumentsform = &create_form_ul(&create_list_elements(@specialdocumentsforma)); |
|
|
Line 4017 SNSFORM
|
Line 4299 SNSFORM
|
</form> |
</form> |
SNAMFORM |
SNAMFORM |
|
|
|
my $supwebpage; |
|
if ($folder =~ /^supplemental_?(\d*)$/) { |
|
$supwebpage = "/uploaded/$coursedom/$coursenum/supplemental/"; |
|
if ($1) { |
|
$supwebpage .= $1; |
|
} else { |
|
$supwebpage .= 'default'; |
|
} |
|
$supwebpage .= '/new.html'; |
|
} |
|
my $supwebpageform =(<<SWEBFORM); |
|
<form action="/adm/coursedocs" method="post" name="supwebpage"> |
|
<input type="hidden" name="active" value="cc" /> |
|
$pathitem |
|
<input type="hidden" name="importdetail" value="$supwebpage" /> |
|
<a class="LC_menubuttons_link" href="javascript:makewebpage('supp');">$lt{'webp'}</a> |
|
$help{'Web Page'} |
|
</form> |
|
SWEBFORM |
|
|
|
|
my @specialdocs = ( |
my @specialdocs = ( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.supnewsyl.submit()" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.supnewsyl.submit()" />' |
=>$supnewsylform}, |
=>$supnewsylform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="document.supnewaboutme.submit()" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="document.supnewaboutme.submit()" />' |
=>$supnewaboutmeform}, |
=>$supnewaboutmeform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/webpage.png" alt="'.$lt{webp}.'" onclick="javascript:makewebpage('."'supp'".');" />'=>$supwebpageform}, |
|
|
); |
); |
my @supimportdoc = ( |
my @supimportdoc = ( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:toggleUpload(\'suppext\')" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:toggleUpload(\'suppext\')" />' |
Line 4377 sub generate_edit_table {
|
Line 4681 sub generate_edit_table {
|
|
|
sub editing_js { |
sub editing_js { |
my ($udom,$uname,$supplementalflag) = @_; |
my ($udom,$uname,$supplementalflag) = @_; |
my $now = time(); |
|
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
p_mnf => 'Name of New Folder', |
p_mnf => 'Name of New Folder', |
t_mnf => 'New Folder', |
t_mnf => 'New Folder', |
Line 4388 sub editing_js {
|
Line 4691 sub editing_js {
|
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 Discussion Board', |
p_mbb => 'Title for the Discussion Board', |
|
p_mwp => 'Title for Web Page', |
p_mab => "Enter user:domain for User's Personal Information Page", |
p_mab => "Enter user:domain for User's Personal Information Page", |
p_mab2 => 'Personal Information Page of ', |
p_mab2 => 'Personal Information Page of ', |
p_mab_alrt1 => 'Not a valid user:domain', |
p_mab_alrt1 => 'Not a valid user:domain', |
Line 4417 sub editing_js {
|
Line 4721 sub editing_js {
|
my $toplevelsupp = &supplemental_base(); |
my $toplevelsupp = &supplemental_base(); |
|
|
my $backtourl; |
my $backtourl; |
if ($env{'docs.exit.'.$env{'request.course.id'}} =~ /^direct_(.+)$/) { |
if ($env{'docs.exit.'.$env{'request.course.id'}} =~ /^direct_(.+)$/) { |
my $caller = $1; |
my $caller = $1; |
if ($caller =~ /^supplemental/) { |
if ($caller =~ /^supplemental/) { |
$backtourl = '/adm/supplemental?folderpath='.&escape($caller); |
$backtourl = '/adm/supplemental?folderpath='.&escape($caller); |
} else { |
} else { |
Line 4475 function makesmppage() {
|
Line 4779 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/new/smppg'; |
this.document.forms.newsmppg.submit(); |
this.document.forms.newsmppg.submit(); |
} |
} |
} |
} |
|
|
|
function makewebpage(type) { |
|
var title=prompt('$lt{"p_mwp"}'); |
|
var formname; |
|
if (type == 'supp') { |
|
formname = this.document.forms.supwebpage; |
|
} else { |
|
formname = this.document.forms.newwebpage; |
|
} |
|
if (title) { |
|
var webpage = formname.importdetail.value; |
|
formname.importdetail.value = escape(title)+'='+webpage; |
|
formname.submit(); |
|
} |
|
} |
|
|
function makesmpproblem() { |
function makesmpproblem() { |
var title=prompt('$lt{"p_msb"}'); |
var title=prompt('$lt{"p_msb"}'); |
if (title) { |
if (title) { |
Line 4502 function makebulboard() {
|
Line 4821 function makebulboard() {
|
var title=prompt('$lt{"p_mbb"}'); |
var title=prompt('$lt{"p_mbb"}'); |
if (title) { |
if (title) { |
this.document.forms.newbul.importdetail.value= |
this.document.forms.newbul.importdetail.value= |
escape(title)+'=/adm/$udom/$uname/$now/bulletinboard'; |
escape(title)+'=/adm/$udom/$uname/new/bulletinboard'; |
this.document.forms.newbul.submit(); |
this.document.forms.newbul.submit(); |
} |
} |
} |
} |