version 1.529, 2013/01/09 04:31:57
|
version 1.537, 2013/03/17 14:27:34
|
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 1697 my %parameter_type = ( 'randompick'
|
Line 1889 my %parameter_type = ( 'randompick'
|
my $valid_parameters_re = join('|',keys(%parameter_type)); |
my $valid_parameters_re = join('|',keys(%parameter_type)); |
# set parameters |
# set parameters |
sub update_parameter { |
sub update_parameter { |
|
if ($env{'form.changeparms'} eq 'all') { |
return 0 if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/); |
my (@allidx,@allmapidx,%allchecked,%currchecked); |
|
%allchecked = ( |
my $which = $env{'form.changeparms'}; |
'hiddenresource' => {}, |
my $idx = $env{'form.setparms'}; |
'encrypturl' => {}, |
if ($env{'form.'.$which.'_'.$idx}) { |
'randompick' => {}, |
my $value = ($which eq 'randompick') ? $env{'form.'.$which.'_'.$idx} |
'randomorder' => {}, |
: 'yes'; |
); |
&LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $value, |
foreach my $which (keys(%allchecked)) { |
$parameter_type{$which}); |
$env{'form.all'.$which} =~ s/,$//; |
&remember_parms($idx,$which,'set',$value); |
if ($which eq 'randompick') { |
|
foreach my $item (split(/,/,$env{'form.all'.$which})) { |
|
my ($res,$value) = split(/:/,$item); |
|
if ($value =~ /^\d+$/) { |
|
$allchecked{$which}{$res} = $value; |
|
} |
|
} |
|
} else { |
|
map { $allchecked{$which}{$_} = 1; } split(/,/,$env{'form.all'.$which}); |
|
} |
|
} |
|
my $haschanges = 0; |
|
foreach my $res (@LONCAPA::map::order) { |
|
my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]); |
|
$name=&LONCAPA::map::qtescape($name); |
|
$url=&LONCAPA::map::qtescape($url); |
|
next unless ($name && $url); |
|
my $is_map; |
|
if ($url =~ m{/uploaded/.+\.(page|sequence)$}) { |
|
$is_map = 1; |
|
} |
|
foreach my $which (keys(%allchecked)) { |
|
if (($which eq 'randompick' || $which eq 'randomorder')) { |
|
next if (!$is_map); |
|
} |
|
my $oldvalue = 0; |
|
my $newvalue = 0; |
|
if ($allchecked{$which}{$res}) { |
|
$newvalue = $allchecked{$which}{$res}; |
|
} |
|
my $current = (&LONCAPA::map::getparameter($res,'parameter_'.$which))[0]; |
|
if ($which eq 'randompick') { |
|
if ($current =~ /^(\d+)$/) { |
|
$oldvalue = $1; |
|
} |
|
} else { |
|
if ($current =~ /^yes$/i) { |
|
$oldvalue = 1; |
|
} |
|
} |
|
if ($oldvalue ne $newvalue) { |
|
$haschanges = 1; |
|
if ($newvalue) { |
|
my $storeval = 'yes'; |
|
if ($which eq 'randompick') { |
|
$storeval = $newvalue; |
|
} |
|
&LONCAPA::map::storeparameter($res,'parameter_'.$which, |
|
$storeval, |
|
$parameter_type{$which}); |
|
&remember_parms($res,$which,'set',$storeval); |
|
} elsif ($oldvalue) { |
|
&LONCAPA::map::delparameter($res,'parameter_'.$which); |
|
&remember_parms($res,$which,'del'); |
|
} |
|
} |
|
} |
|
} |
|
return $haschanges; |
} else { |
} else { |
&LONCAPA::map::delparameter($idx,'parameter_'.$which); |
return 0 if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/); |
|
|
|
my $which = $env{'form.changeparms'}; |
|
my $idx = $env{'form.setparms'}; |
|
if ($env{'form.'.$which.'_'.$idx}) { |
|
my $value = ($which eq 'randompick') ? $env{'form.rpicknum_'.$idx} |
|
: 'yes'; |
|
&LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $value, |
|
$parameter_type{$which}); |
|
&remember_parms($idx,$which,'set',$value); |
|
} else { |
|
&LONCAPA::map::delparameter($idx,'parameter_'.$which); |
|
|
&remember_parms($idx,$which,'del'); |
&remember_parms($idx,$which,'del'); |
|
} |
|
return 1; |
} |
} |
return 1; |
|
} |
} |
|
|
|
|
Line 1820 sub editor {
|
Line 2082 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 2131 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 2143 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 1934 sub editor {
|
Line 2237 sub editor {
|
$r->print('</div>'); |
$r->print('</div>'); |
} |
} |
|
|
my ($to_show,$output); |
my ($to_show,$output,@allidx,@allmapidx); |
|
|
&Apache::loncommon::start_data_table_count(); #setup a row counter |
&Apache::loncommon::start_data_table_count(); #setup a row counter |
foreach my $res (@LONCAPA::map::order) { |
foreach my $res (@LONCAPA::map::order) { |
Line 1943 sub editor {
|
Line 2246 sub editor {
|
$url=&LONCAPA::map::qtescape($url); |
$url=&LONCAPA::map::qtescape($url); |
unless ($name) { $name=(split(/\//,$url))[-1]; } |
unless ($name) { $name=(split(/\//,$url))[-1]; } |
unless ($name) { $idx++; next; } |
unless ($name) { $idx++; next; } |
|
push(@allidx,$res); |
|
if ($url =~ m{/uploaded/.+\.(page|sequence)$}) { |
|
push(@allmapidx,$res); |
|
} |
$output .= &entryline($idx,$name,$url,$folder,$allowed,$res, |
$output .= &entryline($idx,$name,$url,$folder,$allowed,$res, |
$coursenum,$coursedom,$crstype, |
$coursenum,$coursedom,$crstype, |
$pathitem,$supplementalflag,$container); |
$pathitem,$supplementalflag,$container); |
Line 1973 sub editor {
|
Line 2280 sub editor {
|
if ($folder !~ /^supplemental/) { |
if ($folder !~ /^supplemental/) { |
$to_show .= '<th colspan="4">'.&mt('Settings').'</th>'; |
$to_show .= '<th colspan="4">'.&mt('Settings').'</th>'; |
} |
} |
$to_show .= &Apache::loncommon::end_data_table_header_row() |
$to_show .= &Apache::loncommon::end_data_table_header_row(); |
.$output.' ' |
if ($folder !~ /^supplemental/) { |
|
my $idxlist = join(',',@allidx); |
|
my $mapidxlist = join(',',@allmapidx); |
|
if (@allidx > 0) { |
|
my $path; |
|
if ($env{'form.folderpath'}) { |
|
$path = |
|
&HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
|
} |
|
$to_show .= |
|
&Apache::loncommon::continue_data_table_row(). |
|
'<td colspan="5"> </td>'. |
|
'<td colspan="4">'. |
|
'<form action="/adm/coursedocs" method="post" name="togglemultchecks">'. |
|
'<span class="LC_nobreak" style="font-size:x-small;font-weight:bold;">'.&mt('Select:').' '. |
|
'<label><input type="radio" name="showmultpick" value="0" onclick="javascript:togglePick();" checked="checked" />'.&mt('single').'</label>'.(' 'x2).'<label><input type="radio" name="showmultpick" value="1" onclick="javascript:togglePick();" />'.&mt('multiple').'</label></span></form>'. |
|
'<div id="multiclick" style="display: none">'. |
|
'<form action="/adm/coursedocs" method="post" name="cumulativechecks" onsubmit="return submitSettings(this);">'."\n". |
|
'<fieldset><legend style="font-size:x-small;">'.&mt('check/uncheck all').'</legend>'."\n". |
|
'<table><tr><td class="LC_docs_entry_parameter"><span class="LC_nobreak"><input type="checkbox" name="hiddenresourceall" id="hiddenresourceall" onclick="propagateState(this.form,'."'hiddenresource'".')" />'.&mt('Hidden').'</span></td><td class="LC_docs_entry_parameter"><span class="LC_nobreak"><input type="checkbox" name="randompickall" id="randompickall" onclick="updatePick(this.form,'."'all','check'".');propagateState(this.form,'."'randompick'".');propagateState(this.form,'."'rpicknum'".');" />'.&mt('Randomly Pick').'<span id="rpicktextall"></span><input type="hidden" name="rpicknumall" id="rpicknumall" value="" /></span></td>'. |
|
'</tr>'."\n". |
|
'<tr><td class="LC_docs_entry_parameter"><span class="LC_nobreak"><input type="checkbox" name="encrypturlall" id="encrypturlall" onclick="propagateState(this.form,'."'encrypturl'".')" />'.&mt('URL hidden').'</span></td><td class="LC_docs_entry_parameter"><span class="LC_nobreak"><input type="checkbox" name="randomorderall" id="randomorderall" onclick="propagateState(this.form,'."'randomorder'".')" />'.&mt('Random Order').'</span></td></tr></table>'."\n". |
|
'</fieldset>'. |
|
'<input type="hidden" name="folderpath" value="'.$path.'" />'. |
|
'<input type="hidden" name="symb" value="'.$env{'form.symb'}.'" />'. |
|
'<input type="hidden" name="allhiddenresource" value="" />'. |
|
'<input type="hidden" name="allencrypturl" value="" />'. |
|
'<input type="hidden" name="allrandompick" value="" />'. |
|
'<input type="hidden" name="allrandomorder" value="" />'. |
|
'<input type="hidden" name="allidx" value="'.$idxlist.'" />'. |
|
'<input type="hidden" name="allmapidx" value="'.$mapidxlist.'" />'. |
|
'<input type="hidden" name="changeparms" value="all" />'. |
|
'<input type="submit" name="multiplesettings" value="'.&mt('Save settings below').'" />'. |
|
'</form>'. |
|
'</div>'. |
|
|
|
'</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
} |
|
$to_show .= $output.' ' |
.&Apache::loncommon::end_data_table() |
.&Apache::loncommon::end_data_table() |
.'<br style="line-height:2px;" />' |
.'<br style="line-height:2px;" />' |
.&Apache::loncommon::end_scrollbox(); |
.&Apache::loncommon::end_scrollbox(); |
Line 2041 sub process_file_upload {
|
Line 2388 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 2402 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 2199 sub entryline {
|
Line 2546 sub entryline {
|
my $line=&Apache::loncommon::start_data_table_row(); |
my $line=&Apache::loncommon::start_data_table_row(); |
my ($form_start,$form_end,$form_common); |
my ($form_start,$form_end,$form_common); |
# Edit commands |
# Edit commands |
my ($type, $esc_path, $path, $symb); |
my ($esc_path, $path, $symb); |
if ($container eq 'page') { |
|
$type = 'page'; |
|
} else { |
|
$type = 'folder'; |
|
} |
|
if ($env{'form.folderpath'}) { |
if ($env{'form.folderpath'}) { |
$esc_path=&escape($env{'form.folderpath'}); |
$esc_path=&escape($env{'form.folderpath'}); |
$path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
$path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
Line 2372 ENDREN
|
Line 2714 ENDREN
|
<form action="/adm/coursedocs" method="post"> |
<form action="/adm/coursedocs" method="post"> |
'; |
'; |
$form_common=(<<END); |
$form_common=(<<END); |
<input type="hidden" name="${type}path" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="${type}symb" value="$symb" /> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="setparms" value="$orderidx" /> |
<input type="hidden" name="setparms" value="$orderidx" /> |
<input type="hidden" name="changeparms" value="0" /> |
<input type="hidden" name="changeparms" value="0" /> |
END |
END |
Line 2381 END
|
Line 2723 END
|
$line.=(<<END); |
$line.=(<<END); |
<td> |
<td> |
<div class="LC_docs_entry_move"> |
<div class="LC_docs_entry_move"> |
<a href='/adm/coursedocs?cmd=up_$index&${type}path=$esc_path&${type}symb=$symb'> |
<a href='/adm/coursedocs?cmd=up_$index&folderpath=$esc_path&symb=$symb'> |
<img src="${iconpath}move_up.gif" alt="$lt{'up'}" class="LC_icon" /> |
<img src="${iconpath}move_up.gif" alt="$lt{'up'}" class="LC_icon" /> |
</a> |
</a> |
</div> |
</div> |
<div class="LC_docs_entry_move"> |
<div class="LC_docs_entry_move"> |
<a href='/adm/coursedocs?cmd=down_$index&${type}path=$esc_path&${type}symb=$symb'> |
<a href='/adm/coursedocs?cmd=down_$index&folderpath=$esc_path&symb=$symb'> |
<img src="${iconpath}move_down.gif" alt="$lt{'dw'}" class="LC_icon" /> |
<img src="${iconpath}move_down.gif" alt="$lt{'dw'}" class="LC_icon" /> |
</a> |
</a> |
</div> |
</div> |
Line 2490 END
|
Line 2832 END
|
if ($rpicknum) { |
if ($rpicknum) { |
$rpckchk = ' checked="checked"'; |
$rpckchk = ' checked="checked"'; |
} |
} |
my $formname = 'edit_rpick_'.$orderidx; |
my $formname = 'edit_randompick_'.$orderidx; |
$rand_pick_text = |
$rand_pick_text = |
'<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n". |
'<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n". |
$form_common."\n". |
$form_common."\n". |
'<span class="LC_nobreak"><label><input type="checkbox" name="randpickon_'.$orderidx.'" id="rpick_'.$orderidx.'" onclick="'."updatePick(this.form,'$orderidx','check');".'"'.$rpckchk.' /> '.&mt('Randomly Pick').'</label><input type="hidden" name="randompick_'.$orderidx.'" id="rpicknum_'.$orderidx.'" value="'.$rpicknum.'" />'; |
'<span class="LC_nobreak"><label><input type="checkbox" name="randompick_'.$orderidx.'" id="randompick_'.$orderidx.'" onclick="'."updatePick(this.form,'$orderidx','check');".'"'.$rpckchk.' /> '.&mt('Randomly Pick').'</label><input type="hidden" name="rpicknum_'.$orderidx.'" id="rpicknum_'.$orderidx.'" value="'.$rpicknum.'" /><span id="randompicknum_'.$orderidx.'">'; |
if ($rpicknum ne '') { |
if ($rpicknum ne '') { |
$rand_pick_text .= ': <a href="javascript:updatePick('."document.$formname,'$orderidx','link'".')">'.$rpicknum.'</a>'; |
$rand_pick_text .= ': <a href="javascript:updatePick('."document.$formname,'$orderidx','link'".')">'.$rpicknum.'</a>'; |
} |
} |
$rand_pick_text .= '</span></form>'; |
$rand_pick_text .= '</span></span>'. |
|
$form_end; |
my $ro_set= |
my $ro_set= |
((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); |
((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); |
|
my $formname = 'edit_rorder_'.$orderidx; |
$rand_order_text = |
$rand_order_text = |
$form_start. |
'<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n". |
$form_common.' |
$form_common."\n". |
<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onclick="'."this.form.changeparms.value='randomorder';this.form.submit()".'" '.$ro_set.' /> '.&mt('Random Order').' </label></span></form>'; |
'<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" id="randomorder_'.$orderidx.'" onclick="checkForSubmit(this.form,'."'randomorder'".')"; '.$ro_set.' /> '.&mt('Random Order').' </label></span>'. |
|
$form_end; |
} |
} |
} elsif ($supplementalflag && !$allowed) { |
} elsif ($supplementalflag && !$allowed) { |
$url .= ($url =~ /\?/) ? '&':'?'; |
$url .= ($url =~ /\?/) ? '&':'?'; |
Line 2578 $form_common.'
|
Line 2923 $form_common.'
|
((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':''); |
((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':''); |
my $hidtext= |
my $hidtext= |
((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':''); |
((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':''); |
|
my $formhidden = 'edit_hiddenresource_'.$orderidx; |
|
my $formurlhidden = 'edit_encrypturl_'.$orderidx; |
$line.=(<<ENDPARMS); |
$line.=(<<ENDPARMS); |
<td class="LC_docs_entry_parameter"> |
<td class="LC_docs_entry_parameter"> |
$form_start |
<form action="/adm/coursedocs" method="post" name="$formhidden"> |
$form_common |
$form_common |
<label><input type="checkbox" name="hiddenresource_$orderidx" onclick="this.form.changeparms.value='hiddenresource';this.form.submit()" $hidtext /> $lt{'hd'}</label> |
<label><input type="checkbox" name="hiddenresource_$orderidx" id="hiddenresource_$orderidx" onclick="checkForSubmit(this.form,'."'hiddenresource'".');" $hidtext /> $lt{'hd'}</label> |
$form_end |
$form_end |
<br /> |
<br /> |
$form_start |
<form action="/adm/coursedocs" method="post" name="$formurlhidden"> |
$form_common |
$form_common |
<label><input type="checkbox" name="encrypturl_$orderidx" onclick="this.form.changeparms.value='encrypturl';this.form.submit()" $enctext /> $lt{'ec'}</label> |
<label><input type="checkbox" name="encrypturl_$orderidx" id="encrypturl_$orderidx" onclick="checkForSubmit(this.form,'."'encrypturl'".');" $enctext /> $lt{'ec'}</label> |
$form_end |
$form_end |
</td> |
</td> |
<td class="LC_docs_entry_parameter">$rand_pick_text<br /> |
<td class="LC_docs_entry_parameter">$rand_pick_text<br /> |
Line 2598 ENDPARMS
|
Line 2945 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 3596 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 3679 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 3932 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 4185 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 4196 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 4275 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 4413 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 4795 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 4805 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 4835 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 4893 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 4935 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(); |
} |
} |
} |
} |
Line 4608 this.document.forms.renameform.submit();
|
Line 5041 this.document.forms.renameform.submit();
|
} |
} |
|
|
function updatePick(targetform,index,caller) { |
function updatePick(targetform,index,caller) { |
var pickitem = document.getElementById('rpick_'+index); |
var pickitem; |
var picknumitem = document.getElementById('rpicknum_'+index); |
var picknumitem; |
|
var picknumtext; |
|
if (index == 'all') { |
|
pickitem = document.getElementById('randompickall'); |
|
picknumitem = document.getElementById('rpicknumall'); |
|
picknumtext = document.getElementById('rpicktextall'); |
|
} else { |
|
pickitem = document.getElementById('randompick_'+index); |
|
picknumitem = document.getElementById('rpicknum_'+index); |
|
picknumtext = document.getElementById('randompicknum_'+index); |
|
} |
if (pickitem.checked) { |
if (pickitem.checked) { |
var picknum=prompt('$lt{"rpck"}',picknumitem.value); |
var picknum=prompt('$lt{"rpck"}',picknumitem.value); |
if (picknum == '' || picknum == null) { |
if (picknum == '' || picknum == null) { |
if (caller == 'check') { |
if (caller == 'check') { |
pickitem.checked=false; |
pickitem.checked=false; |
return; |
if (index == 'all') { |
|
picknumtext.innerHTML = ''; |
|
if (caller == 'link') { |
|
propagateState(targetform,'rpicknum'); |
|
} |
|
} else { |
|
checkForSubmit(targetform,'randompick'); |
|
} |
} |
} |
} else { |
} else { |
picknum.toString(); |
picknum.toString(); |
var regexdigit=/^\\d+\$/; |
var regexdigit=/^\\d+\$/; |
if (regexdigit.test(picknum)) { |
if (regexdigit.test(picknum)) { |
picknumitem.value = picknum; |
picknumitem.value = picknum; |
targetform.changeparms.value='randompick'; |
if (index == 'all') { |
targetform.submit(); |
picknumtext.innerHTML = ' <a href="javascript:updatePick(document.cumulativechecks,\\'all\\',\\'link\\');">'+picknum+'</a>'; |
|
if (caller == 'link') { |
|
propagateState(targetform,'rpicknum'); |
|
} |
|
} else { |
|
picknumtext.innerHTML = ' <a href="javascript:updatePick(document.edit_randompick_'+index+',\\''+index+'\\',\\'link\\');">'+picknum+'</a>'; |
|
checkForSubmit(targetform,'randompick'); |
|
} |
} else { |
} else { |
if (caller == 'check') { |
if (caller == 'check') { |
pickitem.checked=false; |
if (index == 'all') { |
|
picknumtext.innerHTML = ''; |
|
if (caller == 'link') { |
|
propagateState(targetform,'rpicknum'); |
|
} |
|
} else { |
|
pickitem.checked=false; |
|
checkForSubmit(targetform,'randompick'); |
|
} |
} |
} |
return; |
return; |
} |
} |
} |
} |
} else { |
} else { |
picknumitem.value = 0; |
picknumitem.value = ''; |
targetform.changeparms.value='randompick'; |
picknumtext.innerHTML = ''; |
targetform.submit(); |
if (index == 'all') { |
|
if (caller == 'link') { |
|
propagateState(targetform,'rpicknum'); |
|
} |
|
} else { |
|
checkForSubmit(targetform,'randompick'); |
|
} |
} |
} |
} |
} |
|
|
|
function propagateState(form,param) { |
|
if (document.getElementById(param+'all')) { |
|
var setcheck = 0; |
|
var rpick = 0; |
|
if (param == 'rpicknum') { |
|
if (document.getElementById('randompickall')) { |
|
if (document.getElementById('randompickall').checked) { |
|
if (document.getElementById('rpicknumall')) { |
|
rpick = document.getElementById('rpicknumall').value; |
|
} |
|
} |
|
} |
|
} else { |
|
if (document.getElementById(param+'all').checked) { |
|
setcheck = 1; |
|
} |
|
} |
|
if ((param == 'encrypturl') || (param == 'hiddenresource')) { |
|
var allidxlist = form.allidx.value; |
|
if (allidxlist != '') { |
|
var allidxs = allidxlist.split(','); |
|
if (allidxs.length > 1) { |
|
for (var i=0; i<allidxs.length; i++) { |
|
if (document.getElementById(param+'_'+allidxs[i])) { |
|
if (setcheck == 1) { |
|
document.getElementById(param+'_'+allidxs[i]).checked = true; |
|
} else { |
|
document.getElementById(param+'_'+allidxs[i]).checked = false; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
var allmapidxlist = form.allmapidx.value; |
|
if (allmapidxlist != '') { |
|
var allmapidxs = allmapidxlist.split(','); |
|
if (allmapidxs.length > 1) { |
|
for (var i=0; i<allmapidxs.length; i++) { |
|
var item = param+'_'+allmapidxs[i]; |
|
if (document.getElementById(item)) { |
|
if (param == 'rpicknum') { |
|
if (document.getElementById('randompick_'+allmapidxs[i])) { |
|
if (document.getElementById('randompick_'+allmapidxs[i]).checked) { |
|
document.getElementById(param+'_'+allmapidxs[i]).value = rpick; |
|
if (rpick > 0) { |
|
document.getElementById('randompicknum_'+allmapidxs[i]).innerHTML = ': <a href="javascript:updatePick(document.edit_randompick_'+allmapidxs[i]+',\\''+allmapidxs[i]+'\\',\\'link\\')">'+rpick+'</a>'; |
|
} else { |
|
document.getElementById('randompicknum_'+allmapidxs[i]).innerHTML = ''; |
|
} |
|
} |
|
} |
|
} else { |
|
if (setcheck == 1) { |
|
document.getElementById(param+'_'+allmapidxs[i]).checked = true; |
|
} else { |
|
document.getElementById(param+'_'+allmapidxs[i]).checked = false; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
function checkForSubmit(targetform,param) { |
|
if (document.togglemultchecks.showmultpick.length) { |
|
for (var i=0; i<document.togglemultchecks.showmultpick.length; i++) { |
|
if (document.togglemultchecks.showmultpick[i].checked) { |
|
if (document.togglemultchecks.showmultpick[i].value == 0) { |
|
targetform.changeparms.value=param; |
|
targetform.submit(); |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
function unselectInactive(nav) { |
function unselectInactive(nav) { |
currentNav = document.getElementById(nav); |
currentNav = document.getElementById(nav); |
currentLis = currentNav.getElementsByTagName('LI'); |
currentLis = currentNav.getElementsByTagName('LI'); |
Line 4742 function toContents(jumpto) {
|
Line 5295 function toContents(jumpto) {
|
location.href=newurl; |
location.href=newurl; |
} |
} |
|
|
|
function submitSettings(form) { |
|
var allidxlist = form.allidx.value; |
|
form.allencrypturl.value = ''; |
|
form.allhiddenresource.value = ''; |
|
if (allidxlist != '') { |
|
var allidxs = allidxlist.split(','); |
|
if (allidxs.length > 1) { |
|
for (var i=0; i<allidxs.length; i++) { |
|
if (document.getElementById('hiddenresource_'+allidxs[i])) { |
|
if (document.getElementById('hiddenresource_'+allidxs[i]).checked) { |
|
form.allhiddenresource.value += allidxs[i]+','; |
|
} |
|
} |
|
if (document.getElementById('encrypturl_'+allidxs[i])) { |
|
if (document.getElementById('encrypturl_'+allidxs[i]).checked) { |
|
form.allencrypturl.value += allidxs[i]+','; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
var allmapidxlist = form.allmapidx.value; |
|
form.allrandompick.value = ''; |
|
form.allrandomorder.value = ''; |
|
if (allmapidxlist != '') { |
|
var allmapidxs = allmapidxlist.split(','); |
|
for (var i=0; i<allmapidxs.length; i++) { |
|
var randompick = document.getElementById('randompick_'+allmapidxs[i]); |
|
var rpicknum = document.getElementById('rpicknum_'+allmapidxs[i]); |
|
var randorder = document.getElementById('randomorder_'+allmapidxs[i]); |
|
if ((randompick.checked) && (rpicknum.value != '')) { |
|
form.allrandompick.value += allmapidxs[i]+':'+rpicknum.value+','; |
|
} |
|
if (randorder.checked) { |
|
form.allrandomorder.value += allmapidxs[i]+','; |
|
} |
|
} |
|
} |
|
form.submit(); |
|
return true; |
|
} |
|
|
|
function togglePick() { |
|
var disp = 'none'; |
|
if (document.getElementById('multiclick')) { |
|
var curr = document.getElementById('multiclick').style.display; |
|
if (curr == 'none') { |
|
disp='block'; |
|
} |
|
document.getElementById('multiclick').style.display=disp; |
|
} |
|
if (document.getElementById('savemulti')) { |
|
var curr = document.getElementById('save.multi').style.display; |
|
if (curr == 'none') { |
|
disp='inline'; |
|
} |
|
document.getElementById('savemulti').style.display=disp; |
|
} |
|
resize_scrollbox('contentscroll','1','1'); |
|
return; |
|
} |
|
|
ENDNEWSCRIPT |
ENDNEWSCRIPT |
} |
} |
|
|