version 1.656, 2018/07/04 13:55:27
|
version 1.684, 2022/10/22 17:24:54
|
Line 91 sub storemap {
|
Line 91 sub storemap {
|
|
|
if ($map =~ /^default/) { |
if ($map =~ /^default/) { |
$hadchanges=1; |
$hadchanges=1; |
} else { |
} elsif ($contentchg) { |
$suppchanges=1; |
$suppchanges=1; |
} |
} |
return ($errtext,0); |
return ($errtext,0); |
Line 183 sub default_folderpath {
|
Line 183 sub default_folderpath {
|
} |
} |
} |
} |
|
|
|
sub validate_folderpath { |
|
my ($supplementalflag) = @_; |
|
if ($env{'form.folderpath'} ne '') { |
|
my @items = split(/\&/,$env{'form.folderpath'}); |
|
my $badpath; |
|
for (my $i=0; $i<@items; $i++) { |
|
my $odd = $i%2; |
|
if (($odd) && (!$supplementalflag) && ($items[$i] !~ /^[^:]*:(|\d+):(|1):(|1):(|1):(|1)$/)) { |
|
$badpath = 1; |
|
} elsif ((!$odd) && ($items[$i] !~ /^(default|supplemental)(|_\d+)$/)) { |
|
$badpath = 1; |
|
} |
|
last if ($badpath); |
|
} |
|
if ($badpath) { |
|
delete($env{'form.folderpath'}); |
|
} |
|
} |
|
return; |
|
} |
|
|
|
sub validate_suppath { |
|
if ($env{'form.supppath'} ne '') { |
|
my @items = split(/\&/,$env{'form.supppath'}); |
|
my $badpath; |
|
for (my $i=0; $i<@items; $i++) { |
|
my $odd = $i%2; |
|
if ((!$odd) && ($items[$i] !~ /^supplemental(|_\d+)$/)) { |
|
$badpath = 1; |
|
} |
|
last if ($badpath); |
|
} |
|
if ($badpath) { |
|
delete($env{'form.supppath'}); |
|
} |
|
} |
|
return; |
|
} |
|
|
sub dumpcourse { |
sub dumpcourse { |
my ($r) = @_; |
my ($r) = @_; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
Line 833 sub group_import {
|
Line 872 sub group_import {
|
} |
} |
my $ext = 'false'; |
my $ext = 'false'; |
if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; } |
if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; } |
$name = &LONCAPA::map::qtunescape($name); |
|
if ($name eq '') { |
|
$name = &LONCAPA::map::qtunescape(&mt('Web Page')); |
|
} |
|
if ($url =~ m{^/uploaded/$coursedom/$coursenum/((?:docs|supplemental)/(?:default|\d+))/new\.html$}) { |
if ($url =~ m{^/uploaded/$coursedom/$coursenum/((?:docs|supplemental)/(?:default|\d+))/new\.html$}) { |
my $filepath = $1; |
my $filepath = $1; |
my $fname = $name; |
my $fname; |
if ($fname =~ /^\W+$/) { |
if ($name eq '') { |
|
$name = &mt('Web Page'); |
$fname = 'web'; |
$fname = 'web'; |
} else { |
} else { |
$fname =~ s/\W/_/g; |
$fname = $name; |
} |
$fname=&Apache::lonnet::clean_filename($fname); |
if (length($fname) > 15) { |
if ($fname eq '') { |
$fname = substr($fname,0,14); |
$fname = 'web'; |
|
} elsif (length($fname) > 15) { |
|
$fname = substr($fname,0,14); |
|
} |
} |
} |
|
my $title = &Apache::loncommon::cleanup_html($name); |
my $initialtext = &mt('Replace with your own content.'); |
my $initialtext = &mt('Replace with your own content.'); |
my $newhtml = <<END; |
my $newhtml = <<END; |
<html> |
<html> |
<head> |
<head> |
<title>$name</title> |
<title>$title</title> |
</head> |
</head> |
<body bgcolor="#ffffff"> |
<body bgcolor="#ffffff"> |
$initialtext |
$initialtext |
Line 874 END
|
Line 914 END
|
return (&mt('Failed to save new web page.'),1); |
return (&mt('Failed to save new web page.'),1); |
} |
} |
} |
} |
|
$name = &LONCAPA::map::qtunescape($name); |
$url = &LONCAPA::map::qtunescape($url); |
$url = &LONCAPA::map::qtunescape($url); |
$LONCAPA::map::resources[$residx] = |
$LONCAPA::map::resources[$residx] = |
join(':', ($name, $url, $ext, 'normal', 'res')); |
join(':', ($name, $url, $ext, 'normal', 'res')); |
Line 914 END
|
Line 955 END
|
&storemap($coursenum, $coursedom, $folder.'.'.$container,1); |
&storemap($coursenum, $coursedom, $folder.'.'.$container,1); |
unless ($fatal) { |
unless ($fatal) { |
if ($folder =~ /^supplemental/) { |
if ($folder =~ /^supplemental/) { |
&Apache::lonnet::get_numsuppfiles($coursenum,$coursedom,1); |
|
my ($errtext,$fatal) = &mapread($coursenum,$coursedom, |
my ($errtext,$fatal) = &mapread($coursenum,$coursedom, |
$folder.'.'.$container); |
$folder.'.'.$container); |
} |
} |
Line 1217 sub update_paste_buffer {
|
Line 1257 sub update_paste_buffer {
|
# Construct identifiers for current contents of user's paste buffer |
# Construct identifiers for current contents of user's paste buffer |
if (@currpaste) { |
if (@currpaste) { |
foreach my $suffix (@currpaste) { |
foreach my $suffix (@currpaste) { |
my $cid = $env{'docs.markedcopy_crs_'.$suffix}; |
my $cid = $env{'docs.markedcopy_crs_'.$suffix}; |
my $url = $env{'docs.markedcopy_url_'.$suffix}; |
my $url = $env{'docs.markedcopy_url_'.$suffix}; |
my $mapidx = $env{'docs.markedcopy_map_'.$suffix}; |
my $mapidx = $env{'docs.markedcopy_map_'.$suffix}; |
if (($cid =~ /^$match_domain(?:_)$match_courseid$/) && |
if (($cid =~ /^$match_domain(?:_)$match_courseid$/) && |
($url ne '')) { |
($url ne '')) { |
$pasteurls{$cid.'_'.$url.'_'.$mapidx} = 1; |
if ($url eq '/res/lib/templates/simpleproblem.problem') { |
} |
$pasteurls{$cid.'_'.$mapidx} = 1; |
|
} elsif ($url =~ m{^/res/$match_domain/$match_username/}) { |
|
$pasteurls{$url} = 1; |
|
} else { |
|
$pasteurls{$cid.'_'.$url} = 1; |
|
} |
|
} |
} |
} |
} |
} |
|
|
Line 1232 sub update_paste_buffer {
|
Line 1278 sub update_paste_buffer {
|
|
|
my @pathitems = split(/\&/,$env{'form.folderpath'}); |
my @pathitems = split(/\&/,$env{'form.folderpath'}); |
my @folderconf = split(/\:/,$pathitems[-1]); |
my @folderconf = split(/\:/,$pathitems[-1]); |
my $ispage = $folderconf[4]; |
my $ispage = $folderconf[5]; |
|
|
foreach my $item (@possibles) { |
foreach my $item (@possibles) { |
my ($orderidx,$cmd) = split(/:/,$item); |
my ($orderidx,$cmd) = split(/:/,$item); |
Line 1245 sub update_paste_buffer {
|
Line 1291 sub update_paste_buffer {
|
$env{'form.folderpath'},\%curr_groups); |
$env{'form.folderpath'},\%curr_groups); |
next if ($denied{'copy'}); |
next if ($denied{'copy'}); |
$url=~s{http(:|:)//https(:|:)//}{https$2//}; |
$url=~s{http(:|:)//https(:|:)//}{https$2//}; |
next if (exists($pasteurls{$coursedom.'_'.$coursenum.'_'.$mapidx})); |
if ($url eq '/res/lib/templates/simpleproblem.problem') { |
|
next if (exists($pasteurls{$coursedom.'_'.$coursenum.'_'.$mapidx})); |
|
} elsif ($url =~ m{^/res/$match_domain/$match_username/}) { |
|
next if (exists($pasteurls{$url})); |
|
} else { |
|
next if (exists($pasteurls{$coursedom.'_'.$coursenum.'_'.$url})); |
|
} |
my ($suffix,$errortxt,$locknotfreed) = |
my ($suffix,$errortxt,$locknotfreed) = |
&new_timebased_suffix($env{'user.domain'},$env{'user.name'},'paste'); |
&new_timebased_suffix($env{'user.domain'},$env{'user.name'},'paste'); |
if ($suffix ne '') { |
if ($suffix ne '') { |
Line 1442 sub print_paste_buffer {
|
Line 1494 sub print_paste_buffer {
|
} |
} |
$pasteitems .= '<label><input type="checkbox" name="pasting" id="pasting_'.$suffix.'" value="'.$suffix.'" '.$onclick.'/>'.$buffer.'</label>'; |
$pasteitems .= '<label><input type="checkbox" name="pasting" id="pasting_'.$suffix.'" value="'.$suffix.'" '.$onclick.'/>'.$buffer.'</label>'; |
if ($nopaste) { |
if ($nopaste) { |
$pasteitems .= $nopaste; |
$pasteitems .= ' <span class="LC_cusr_emph">'.$nopaste.'</span>'; |
} else { |
} else { |
if ($othercrs) { |
if ($othercrs) { |
$pasteitems .= $othercrs; |
$pasteitems .= $othercrs; |
Line 1790 sub do_paste_from_buffer {
|
Line 1842 sub do_paste_from_buffer {
|
%msgs = &Apache::lonlocal::texthash ( |
%msgs = &Apache::lonlocal::texthash ( |
notinsupp => 'Paste failed: content type is not supported within Supplemental Content', |
notinsupp => 'Paste failed: content type is not supported within Supplemental Content', |
notincrs => 'Paste failed: Item is from a different course which you do not have rights to edit.', |
notincrs => 'Paste failed: Item is from a different course which you do not have rights to edit.', |
notindom => 'Paste failed: Item is an external tool from a course in a different donain.', |
notindom => 'Paste failed: Item is an external tool from a course in a different domain.', |
duplicate => 'Paste failed: only one instance of a particular published sequence or page is allowed within each course.', |
duplicate => 'Paste failed: only one instance of a particular published sequence or page is allowed within each course.', |
); |
); |
|
|
Line 1819 sub do_paste_from_buffer {
|
Line 1871 sub do_paste_from_buffer {
|
# Retrieve information about all course maps in main content area |
# Retrieve information about all course maps in main content area |
|
|
my $allmaps = {}; |
my $allmaps = {}; |
if ($folder =~ /^default/) { |
my (@toclear,%mapurls,%lockerrs,%msgerrs,%results,$donechk); |
$allmaps = |
|
&Apache::loncommon::allmaps_incourse($coursedom,$coursenum, |
|
$env{"course.$env{'request.course.id'}.home"}, |
|
$env{'request.course.id'}); |
|
} |
|
|
|
my (@toclear,%mapurls,%lockerrs,%msgerrs,%results); |
|
|
|
# Loop over the items to paste |
# Loop over the items to paste |
foreach my $suffix (@dopaste) { |
foreach my $suffix (@dopaste) { |
Line 1844 sub do_paste_from_buffer {
|
Line 1889 sub do_paste_from_buffer {
|
if ($is_map{$suffix}) { |
if ($is_map{$suffix}) { |
# If pasting a map, check if map contains other maps |
# If pasting a map, check if map contains other maps |
my (%hierarchy,%titles); |
my (%hierarchy,%titles); |
|
if (($folder =~ /^default/) && (!$donechk)) { |
|
$allmaps = |
|
&Apache::loncommon::allmaps_incourse($coursedom,$coursenum, |
|
$env{"course.$env{'request.course.id'}.home"}, |
|
$env{'request.course.id'}); |
|
$donechk = 1; |
|
} |
&contained_map_check($url,$folder,$coursenum,$coursedom, |
&contained_map_check($url,$folder,$coursenum,$coursedom, |
\%removefrommap,\%removeparam,\%addedmaps, |
\%removefrommap,\%removeparam,\%addedmaps, |
\%hierarchy,\%titles,$allmaps); |
\%hierarchy,\%titles,$allmaps); |
Line 2329 sub copy_templated_files {
|
Line 2381 sub copy_templated_files {
|
my @simpleprobqtypes = qw(radio option string essay numerical); |
my @simpleprobqtypes = qw(radio option string essay numerical); |
my $qtype=$srcparms{$srcprefix.'questiontype'}; |
my $qtype=$srcparms{$srcprefix.'questiontype'}; |
if (grep(/^\Q$qtype\E$/,@simpleprobqtypes)) { |
if (grep(/^\Q$qtype\E$/,@simpleprobqtypes)) { |
my %newdata; |
my %newdata = ( |
|
$newprefix.'questiontype' => $qtype, |
|
); |
foreach my $type (@simpleprobqtypes) { |
foreach my $type (@simpleprobqtypes) { |
if ($type eq $qtype) { |
if ($type eq $qtype) { |
$newdata{"$weightprefix.$type.weight"}=1; |
$newdata{"$weightprefix.$type.weight"}=1; |
Line 2745 sub apply_fixups {
|
Line 2799 sub apply_fixups {
|
$storefn =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir{$key}/; |
$storefn =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir{$key}/; |
} |
} |
my $mapcontent = &Apache::lonnet::getfile($key); |
my $mapcontent = &Apache::lonnet::getfile($key); |
|
if (($mapcontent eq '-1') && ($before{'map'} eq 'supplemental') && |
|
($after{'map'} eq 'default') && |
|
($key =~ m{^/uploaded/$match_domain/$match_courseid/supplemental_\d+\.sequence$})) { |
|
$mapcontent = '<map>'."\n". |
|
'<resource id="1" src="" type="start" />'."\n". |
|
'<link from="1" to="2" index="1" />'."\n". |
|
'<resource id="2" src="" type="finish" />'."\n". |
|
'</map>'; |
|
} |
if ($mapcontent eq '-1') { |
if ($mapcontent eq '-1') { |
if (ref($errors) eq 'HASH') { |
if (ref($errors) eq 'HASH') { |
$errors->{$key} = 1; |
$errors->{$key} = 1; |
Line 2803 sub apply_fixups {
|
Line 2866 sub apply_fixups {
|
} |
} |
} |
} |
if (ref($resdatacopy{$key}) eq 'HASH') { |
if (ref($resdatacopy{$key}) eq 'HASH') { |
if ($newsubdir{$key}) { |
my ($gotnewmapname,$newmapname,$srcfolder,$srccontainer); |
|
|
} |
|
foreach my $idx (keys(%{$resdatacopy{$key}})) { |
foreach my $idx (keys(%{$resdatacopy{$key}})) { |
if (ref($resdatacopy{$key}{$idx}) eq 'HASH') { |
if (ref($resdatacopy{$key}{$idx}) eq 'HASH') { |
my $srcurl = $resdatacopy{$key}{$idx}{'src'}; |
my $srcurl = $resdatacopy{$key}{$idx}{'src'}; |
Line 2815 sub apply_fixups {
|
Line 2876 sub apply_fixups {
|
($resdatacopy{$key}{$idx}{'cnum'} =~ /^$match_courseid$/)) { |
($resdatacopy{$key}{$idx}{'cnum'} =~ /^$match_courseid$/)) { |
my $srcdom = $resdatacopy{$key}{$idx}{'cdom'}; |
my $srcdom = $resdatacopy{$key}{$idx}{'cdom'}; |
my $srcnum = $resdatacopy{$key}{$idx}{'cnum'}; |
my $srcnum = $resdatacopy{$key}{$idx}{'cnum'}; |
my ($newmapname) = ($key =~ m{/([^/]+)$}); |
unless ($gotnewmapname) { |
my ($srcfolder,$srccontainer) = split(/\./,$newmapname); |
($newmapname) = ($key =~ m{/([^/]+)$}); |
|
($srcfolder,$srccontainer) = split(/\./,$newmapname); |
|
if ($newsubdir{$key}) { |
|
$newmapname =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir{$key}/; |
|
} |
|
$gotnewmapname = 1; |
|
} |
my $srcmapinfo = $srcfolder.':'.$idx; |
my $srcmapinfo = $srcfolder.':'.$idx; |
if ($srccontainer eq 'page') { |
if ($srccontainer eq 'page') { |
$srcmapinfo .= ':1'; |
$srcmapinfo .= ':1'; |
} |
} |
if ($newsubdir{$key}) { |
|
$newmapname =~ s/^((?:default|supplemental)_)(\d+)/$1$newsubdir{$key}/; |
|
} |
|
©_templated_files($srcurl,$srcdom,$srcnum,$srcmapinfo,$cdom, |
©_templated_files($srcurl,$srcdom,$srcnum,$srcmapinfo,$cdom, |
$cnum,$template,$idx,$newmapname); |
$cnum,$template,$idx,$newmapname); |
} |
} |
Line 3213 sub editor {
|
Line 3277 sub editor {
|
return $errtext if ($fatal); |
return $errtext if ($fatal); |
} |
} |
|
|
|
my (%supphidden,%suppids,$suppmapid); |
|
|
if ($#LONCAPA::map::order<1) { |
if ($#LONCAPA::map::order<1) { |
my $idx=&LONCAPA::map::getresidx(); |
my $idx=&LONCAPA::map::getresidx(); |
if ($idx<=0) { $idx=1; } |
if ($idx<=0) { $idx=1; } |
$LONCAPA::map::order[0]=$idx; |
$LONCAPA::map::order[0]=$idx; |
$LONCAPA::map::resources[$idx]=''; |
$LONCAPA::map::resources[$idx]=''; |
|
} elsif ($supplementalflag && !$allowed) { |
|
my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom); |
|
if (ref($supplemental) eq 'HASH') { |
|
if (ref($supplemental->{'hidden'}) eq 'HASH') { |
|
%supphidden = %{$supplemental->{'hidden'}}; |
|
} |
|
if (ref($supplemental->{'ids'}) eq 'HASH') { |
|
%suppids = %{$supplemental->{'ids'}}; |
|
} |
|
} |
|
if ($folder eq 'supplemental') { |
|
$suppmapid = 0; |
|
} elsif ($folder =~ /^supplemental_(\d+)$/) { |
|
$suppmapid = $1; |
|
} |
} |
} |
|
|
# ------------------------------------------------------------ Process commands |
# ------------------------------------------------------------ Process commands |
Line 3501 sub editor {
|
Line 3582 sub editor {
|
push(@allmapidx,$res); |
push(@allmapidx,$res); |
} |
} |
|
|
|
if (($supplementalflag) && (!$allowed) && (!$env{'request.role.adv'})) { |
|
next if ($supphidden{$suppmapid.':'.$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, |
\%filters,\%curr_groups,$ltitoolsref,$canedit, |
\%filters,\%curr_groups,$ltitoolsref,$canedit, |
$isencrypted,$navmapref,$hostname); |
$isencrypted,$navmapref,$hostname, |
|
\%supphidden,\%suppids,$suppmapid); |
$idx++; |
$idx++; |
$shown++; |
$shown++; |
} |
} |
Line 3514 sub editor {
|
Line 3599 sub editor {
|
my $need_save; |
my $need_save; |
if ($allowed || ($supplementalflag && $folder eq 'supplemental')) { |
if ($allowed || ($supplementalflag && $folder eq 'supplemental')) { |
my $toolslink; |
my $toolslink; |
if ($allowed) { |
if ($allowed || $canedit) { |
|
my $helpitem = 'Navigation_Screen'; |
|
if (!$allowed) { |
|
$helpitem = 'Supplemental_Navigation'; |
|
} |
$toolslink = '<table><tr><td>' |
$toolslink = '<table><tr><td>' |
.&Apache::loncommon::help_open_menu('Navigation Screen', |
.&Apache::loncommon::help_open_menu('Navigation Screen', |
'Navigation_Screen',undef,'RAT') |
$helpitem,undef,'RAT') |
.'</td><td class="LC_middle">'.&mt('Tools:').'</td>' |
.'</td><td class="LC_middle">'.&mt('Tools:').'</td>' |
.'<td align="left"><ul id="LC_toolbar">' |
.'<td align="left"><ul id="LC_toolbar">' |
.'<li><a href="/adm/coursedocs?forcesupplement=1&command=editsupp" ' |
.'<li><a href="/adm/coursedocs?forcesupplement=1&command=editsupp" ' |
Line 3533 sub editor {
|
Line 3622 sub editor {
|
.&Apache::loncommon::start_data_table_header_row() |
.&Apache::loncommon::start_data_table_header_row() |
.'<th colspan="2">'.&mt('Move').'</th>' |
.'<th colspan="2">'.&mt('Move').'</th>' |
.'<th colspan="3">'.&mt('Actions').'</th>' |
.'<th colspan="3">'.&mt('Actions').'</th>' |
.'<th>'.&mt('Document').'</th>'; |
.'<th>'.&mt('Document').'</th>' |
if ($folder !~ /^supplemental/) { |
.'<th colspan="2">'.&mt('Settings').'</th>' |
$to_show .= '<th colspan="2">'.&mt('Settings').'</th>'; |
.&Apache::loncommon::end_data_table_header_row(); |
} |
|
$to_show .= &Apache::loncommon::end_data_table_header_row(); |
|
if ($folder !~ /^supplemental/) { |
if ($folder !~ /^supplemental/) { |
$lists{'canhide'} = join(',',@allidx); |
$lists{'canhide'} = join(',',@allidx); |
$lists{'canrandomlyorder'} = join(',',@allmapidx); |
$lists{'canrandomlyorder'} = join(',',@allmapidx); |
Line 3885 sub is_supplemental_title {
|
Line 3972 sub is_supplemental_title {
|
sub entryline { |
sub entryline { |
my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom, |
my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom, |
$crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups, |
$crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups, |
$ltitoolsref,$canedit,$isencrypted,$navmapref,$hostname)=@_; |
$ltitoolsref,$canedit,$isencrypted,$navmapref,$hostname, |
|
$supphidden,$suppids,$suppmapid)=@_; |
my ($foldertitle,$renametitle,$oldtitle); |
my ($foldertitle,$renametitle,$oldtitle); |
if (&is_supplemental_title($title)) { |
if (&is_supplemental_title($title)) { |
($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title); |
($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title); |
Line 3912 sub entryline {
|
Line 4000 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,$form_param); |
my ($form_start,$form_end,$form_common,$form_param); |
# Edit commands |
# Edit commands |
my ($esc_path, $path, $symb, $curralias); |
my ($esc_path, $path, $symb, $shownsymb, $curralias); |
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 4142 END
|
Line 4230 END
|
my ($editlink,$extresform,$anchor,$hiddenres,$nomodal); |
my ($editlink,$extresform,$anchor,$hiddenres,$nomodal); |
my $orig_url = $url; |
my $orig_url = $url; |
$orig_url=~s{http(:|:)//https(:|:)//}{https$2//}; |
$orig_url=~s{http(:|:)//https(:|:)//}{https$2//}; |
$url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/}; |
if ($container eq 'page') { |
|
$url=~s{^http(|s)(:|:)//}{/ext/}; |
|
} else { |
|
$url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/}; |
|
} |
if (!$supplementalflag && $residx && $symb) { |
if (!$supplementalflag && $residx && $symb) { |
if ((!$isfolder) && (!$ispage)) { |
if ((!$isfolder) && (!$ispage)) { |
(undef,undef,$url)=&Apache::lonnet::decode_symb($symb); |
(undef,undef,$url)=&Apache::lonnet::decode_symb($symb); |
$url=&Apache::lonnet::clutter($url); |
if (($url =~ m{^ext/}) && ($container eq 'page')) { |
|
$url=&Apache::lonnet::clutter_with_no_wrapper($url); |
|
} else { |
|
$url=&Apache::lonnet::clutter($url); |
|
} |
if ($url=~/^\/*uploaded\//) { |
if ($url=~/^\/*uploaded\//) { |
$url=~/\.(\w+)$/; |
$url=~/\.(\w+)$/; |
my $embstyle=&Apache::loncommon::fileembstyle($1); |
my $embstyle=&Apache::loncommon::fileembstyle($1); |
Line 4160 END
|
Line 4256 END
|
} elsif ($url=~m{^(|/adm/wrapper)/ext/([^#]+)}) { |
} elsif ($url=~m{^(|/adm/wrapper)/ext/([^#]+)}) { |
my $wrapped = $1; |
my $wrapped = $1; |
my $exturl = $2; |
my $exturl = $2; |
if ($wrapped eq '') { |
if (($wrapped eq '') && ($container ne 'page')) { |
$url='/adm/wrapper'.$url; |
$url='/adm/wrapper'.$url; |
} |
} |
if (($ENV{'SERVER_PORT'} == 443) && ($exturl !~ /^https:/)) { |
if (($ENV{'SERVER_PORT'} == 443) && ($exturl !~ /^https:/)) { |
Line 4171 END
|
Line 4267 END
|
} elsif ($url eq "/public/$coursedom/$coursenum/syllabus") { |
} elsif ($url eq "/public/$coursedom/$coursenum/syllabus") { |
if (($ENV{'SERVER_PORT'} == 443) && |
if (($ENV{'SERVER_PORT'} == 443) && |
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
$url .= '?usehttp=1'; |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
|
$url .= '?usehttp=1'; |
|
} |
$nomodal = 1; |
$nomodal = 1; |
} |
} |
} |
} |
if (&Apache::lonnet::symbverify($symb,$url)) { |
my ($checkencrypt,$shownurl); |
my $shownsymb = $symb; |
if (!$env{'request.role.adv'}) { |
if ($isexternal) { |
|
if ($url =~ /^([^#]+)#([^#]+)$/) { |
|
$url = $1; |
|
$anchor = $2; |
|
if ($symb =~ m{^([^#]+)\Q#$anchor\E$}) { |
|
$shownsymb = $1.&escape('#').$anchor; |
|
} |
|
} |
|
} |
|
unless ($env{'request.role.adv'}) { |
|
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
|
$url = ''; |
|
} |
|
if (&Apache::lonnet::EXT('resource.0.hiddenresource',$symb) =~ /^yes$/i) { |
|
$url = ''; |
|
$hiddenres = 1; |
|
} |
|
} |
|
if ($url ne '') { |
|
$url.=(($url=~/\?/)?'&':'?').'symb='.&escape($shownsymb); |
|
} |
|
} elsif (!$env{'request.role.adv'}) { |
|
my $checkencrypt; |
|
if (((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i) || |
if (((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i) || |
$isencrypted || (&Apache::lonnet::EXT('resource.0.encrypturl',$symb) =~ /^yes$/i)) { |
($isencrypted) || (&Apache::lonnet::EXT('resource.0.encrypturl',$symb) =~ /^yes$/i)) { |
$checkencrypt = 1; |
$checkencrypt = 1; |
} elsif (ref($navmapref)) { |
} elsif (ref($navmapref)) { |
unless (ref($$navmapref)) { |
unless (ref($$navmapref)) { |
Line 4209 END
|
Line 4284 END
|
} |
} |
if (ref($$navmapref)) { |
if (ref($$navmapref)) { |
if (lc($$navmapref->get_mapparam($symb,undef,"0.encrypturl")) eq 'yes') { |
if (lc($$navmapref->get_mapparam($symb,undef,"0.encrypturl")) eq 'yes') { |
$checkencrypt = 1; |
$checkencrypt = 1; |
} |
} |
} |
} |
} |
} |
if ($checkencrypt) { |
} |
my $shownsymb = &Apache::lonenc::encrypted($symb); |
if ($checkencrypt) { |
my $shownurl = &Apache::lonenc::encrypted($url); |
my $currenc = $env{'request.enc'}; |
if (&Apache::lonnet::symbverify($shownsymb,$shownurl)) { |
$env{'request.enc'} = 1; |
$url = $shownurl.(($shownurl=~/\?/)?'&':'?').'symb='.&escape($shownsymb); |
$shownsymb = &Apache::lonenc::encrypted($symb); |
if ($env{'request.enc'} ne '') { |
$shownurl = &Apache::lonenc::encrypted($url); |
delete($env{'request.enc'}); |
if (&Apache::lonnet::symbverify($symb,$url)) { |
} |
$url = $shownurl; |
} else { |
|
$url=''; |
|
} |
|
} else { |
} else { |
$url=''; |
$url = ''; |
} |
} |
} else { |
$env{'request.enc'} = $currenc; |
$url=''; |
} elsif (&Apache::lonnet::symbverify($symb,$url)) { |
|
$shownsymb = $symb; |
|
if ($isexternal) { |
|
$url =~ s/\#[^#]+$//; |
|
if ($container eq 'page') { |
|
$url = &Apache::lonnet::clutter($url); |
|
} |
|
} |
|
$shownurl = $url; |
|
} |
|
unless ($env{'request.role.adv'}) { |
|
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
|
$url = ''; |
|
} |
|
if (&Apache::lonnet::EXT('resource.0.hiddenresource',$symb) =~ /^yes$/i) { |
|
$url = ''; |
|
$hiddenres = 1; |
|
} |
|
} |
|
if ($url ne '') { |
|
$url = $shownurl.(($shownurl=~/\?/)?'&':'?').'symb='.&escape($shownsymb); |
} |
} |
} |
} |
} elsif ($supplementalflag) { |
} elsif ($supplementalflag) { |
Line 4237 END
|
Line 4329 END
|
$url = $1; |
$url = $1; |
$anchor = $2; |
$anchor = $2; |
if (($url =~ m{^(|/adm/wrapper)/ext/(?!https:)}) && ($ENV{'SERVER_PORT'} == 443)) { |
if (($url =~ m{^(|/adm/wrapper)/ext/(?!https:)}) && ($ENV{'SERVER_PORT'} == 443)) { |
if ($hostname ne '') { |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
$url = 'http://'.$hostname.$url; |
if ($hostname ne '') { |
|
$url = 'http://'.$hostname.$url; |
|
} |
|
$url .= (($url =~ /\?/) ? '&':'?').'usehttp=1'; |
} |
} |
$nomodal = 1; |
$nomodal = 1; |
} |
} |
Line 4246 END
|
Line 4341 END
|
} elsif ($url =~ m{^\Q/public/$coursedom/$coursenum/syllabus\E}) { |
} elsif ($url =~ m{^\Q/public/$coursedom/$coursenum/syllabus\E}) { |
if (($ENV{'SERVER_PORT'} == 443) && |
if (($ENV{'SERVER_PORT'} == 443) && |
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
if ($hostname ne '') { |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
$url = 'http://'.$hostname.$url; |
if ($hostname ne '') { |
|
$url = 'http://'.$hostname.$url; |
|
} |
|
$url .= (($url =~ /\?/) ? '&':'?').'usehttp=1'; |
} |
} |
$url .= (($url =~ /\?/) ? '&':'?').'usehttp=1'; |
|
$nomodal = 1; |
$nomodal = 1; |
} |
} |
} |
} |
Line 4263 END
|
Line 4360 END
|
if (!$allowed && $supplementalflag) { |
if (!$allowed && $supplementalflag) { |
$folderpath.=$containerarg.'&'.$foldername; |
$folderpath.=$containerarg.'&'.$foldername; |
$url.='folderpath='.&escape($folderpath); |
$url.='folderpath='.&escape($folderpath); |
|
if (ref($supphidden) eq 'HASH') { |
|
if ($supphidden->{$suppmapid.':'.$residx}) { |
|
$hiddenfolder = 1; |
|
} |
|
} |
} else { |
} else { |
my $rpicknum = (&LONCAPA::map::getparameter($orderidx, |
my $rpicknum = (&LONCAPA::map::getparameter($orderidx, |
'parameter_randompick'))[0]; |
'parameter_randompick'))[0]; |
Line 4356 $form_end;
|
Line 4458 $form_end;
|
if ($anchor ne '') { |
if ($anchor ne '') { |
$url .= '&anchor='.&HTML::Entities::encode($anchor,'"<>&'); |
$url .= '&anchor='.&HTML::Entities::encode($anchor,'"<>&'); |
} |
} |
|
if (ref($supphidden) eq 'HASH') { |
|
if ($supphidden->{$suppmapid.':'.$residx}) { |
|
$hiddenres = 1; |
|
} |
|
} |
} |
} |
my ($tdalign,$tdwidth); |
my ($tdalign,$tdwidth); |
if ($allowed) { |
if ($allowed) { |
Line 4383 $form_end;
|
Line 4490 $form_end;
|
&Apache::lonhtmlcommon::jump_to_editres($cfile,$home, |
&Apache::lonhtmlcommon::jump_to_editres($cfile,$home, |
$switchserver, |
$switchserver, |
$forceedit, |
$forceedit, |
undef,$symb, |
undef,$symb,$shownsymb, |
&escape($env{'form.folderpath'}), |
&escape($env{'form.folderpath'}), |
$renametitle,$hostname, |
$renametitle,$hostname, |
'','',1,$suppanchor); |
'','',1,$suppanchor); |
Line 4430 $form_end;
|
Line 4537 $form_end;
|
} else { |
} else { |
$link = $url; |
$link = $url; |
} |
} |
$link = &js_escape($link.(($url=~/\?/)?'&':'?').'inhibitmenu=yes'. |
$link = &js_escape($link.(($url=~/\?/)?'&':'?').'inhibitmenu=yes'.$anchor); |
(($anchor ne '')?$anchor:'')); |
|
if ($nomodal) { |
if ($nomodal) { |
$line.='<a href="#" onclick="javascript:window.open('."'$link','syllabuspreview','height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1')".'; return false;" />'. |
$line.='<a href="#" onclick="javascript:window.open('."'$link','syllabuspreview','height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1')".'; return false;" />'. |
'<img src="'.$icon.'" alt="" class="LC_icon" border="0" /></a>'; |
'<img src="'.$icon.'" alt="" class="LC_icon" border="0" /></a>'; |
Line 4445 $form_end;
|
Line 4551 $form_end;
|
$line.='</span></td><td'.$tdwidth.'>'; |
$line.='</span></td><td'.$tdwidth.'>'; |
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) { |
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) { |
$line.='<a href="'.$url.'">'.$title.'</a>'; |
$line.='<a href="'.$url.'">'.$title.'</a>'; |
|
if (!$allowed && $supplementalflag && $canedit && $isfolder) { |
|
my $editicon = &Apache::loncommon::lonhttpdurl('/res/adm/pages').'/editmap.png'; |
|
my $editurl = $url; |
|
$editurl =~ s{^\Q/adm/supplemental?\E}{/adm/coursedocs?command=direct&forcesupplement=1&}; |
|
$line .= ' '.'<a href="'.$editurl.'">'. |
|
'<img src="'.$editicon.'" alt="'.&mt('Edit Content').'" title="'.&mt('Edit Content').'" />'. |
|
'</a>'; |
|
} |
|
if ((($hiddenfolder) || ($hiddenres)) && (!$allowed) && ($supplementalflag)) { |
|
$line.= ' <span class="LC_warning">('.&mt('hidden').')</span> '; |
|
} |
} elsif ($url) { |
} elsif ($url) { |
if ($nomodal) { |
if ($nomodal) { |
$line.='<a href="#" onclick="javascript:window.open('."'$link','syllabuspreview','height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1')".'; return false;" />'. |
$line.='<a href="#" onclick="javascript:window.open('."'$link','syllabuspreview','height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1')".'; return false;" />'. |
Line 4465 $form_end;
|
Line 4582 $form_end;
|
$line .= '</td>'; |
$line .= '</td>'; |
$rand_pick_text = ' ' if ($rand_pick_text eq ''); |
$rand_pick_text = ' ' if ($rand_pick_text eq ''); |
$rand_order_text = ' ' if ($rand_order_text eq ''); |
$rand_order_text = ' ' if ($rand_order_text eq ''); |
if (($allowed) && ($folder!~/^supplemental/)) { |
if ($allowed) { |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'hd' => 'Hidden', |
'hd' => 'Hidden', |
'ec' => 'URL hidden'); |
'ec' => 'URL hidden'); |
my ($enctext,$hidtext); |
my ($enctext,$hidtext,$formhidden,$formurlhidden); |
if ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i) { |
|
$enctext = ' checked="checked"'; |
|
if (($ishash) && (ref($filtersref->{'encrypturl'}) eq 'ARRAY')) { |
|
push(@{$filtersref->{'encrypturl'}},$orderidx); |
|
} |
|
} |
|
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
$hidtext = ' checked="checked"'; |
$hidtext = ' checked="checked"'; |
if (($ishash) && (ref($filtersref->{'randomorder'}) eq 'ARRAY')) { |
if (($ishash) && (ref($filtersref->{'randomorder'}) eq 'ARRAY')) { |
push(@{$filtersref->{'hiddenresource'}},$orderidx); |
push(@{$filtersref->{'hiddenresource'}},$orderidx); |
} |
} |
} |
} |
my $formhidden = 'edit_hiddenresource_'.$orderidx; |
$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 action="/adm/coursedocs" method="post" name="$formhidden"> |
<form action="/adm/coursedocs" method="post" name="$formhidden"> |
$form_param |
$form_param |
$form_common |
$form_common |
<label><input type="checkbox" name="hiddenresource_$orderidx" id="hiddenresource_$orderidx" onclick="checkForSubmit(this.form,'hiddenresource','settings');" $hidtext $disabled /> $lt{'hd'}</label> |
<label><input type="checkbox" name="hiddenresource_$orderidx" id="hiddenresource_$orderidx" onclick="checkForSubmit(this.form,'hiddenresource','settings');" $hidtext $disabled /> $lt{'hd'}</label> |
$form_end |
$form_end |
|
ENDPARMS |
|
if ($folder =~/^supplemental/) { |
|
$line.= "\n <td>"; |
|
} else { |
|
if ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i) { |
|
$enctext = ' checked="checked"'; |
|
if (($ishash) && (ref($filtersref->{'encrypturl'}) eq 'ARRAY')) { |
|
push(@{$filtersref->{'encrypturl'}},$orderidx); |
|
} |
|
} |
|
$formurlhidden = 'edit_encrypturl_'.$orderidx; |
|
$line.=(<<ENDPARMS); |
<br /> |
<br /> |
<form action="/adm/coursedocs" method="post" name="$formurlhidden"> |
<form action="/adm/coursedocs" method="post" name="$formurlhidden"> |
$form_param |
$form_param |
Line 4501 $form_end;
|
Line 4623 $form_end;
|
<td class="LC_docs_entry_parameter">$rand_pick_text<br /> |
<td class="LC_docs_entry_parameter">$rand_pick_text<br /> |
$rand_order_text</td> |
$rand_order_text</td> |
ENDPARMS |
ENDPARMS |
|
} |
} |
} |
$line.=&Apache::loncommon::end_data_table_row(); |
$line.=&Apache::loncommon::end_data_table_row(); |
return $line; |
return $line; |
Line 4834 sub short_urls {
|
Line 4957 sub short_urls {
|
$r->rflush(); |
$r->rflush(); |
my $readonly; |
my $readonly; |
if ($canedit) { |
if ($canedit) { |
my ($numnew,$errors) = &Apache::loncommon::make_short_symbs($cdom,$cnum,$navmap); |
my ($numnew,$errors) = &Apache::loncommon::get_requested_shorturls($cdom,$cnum,$navmap); |
if ($numnew) { |
if ($numnew) { |
$r->print('<p class="LC_info">'.&mt('Created [quant,_1,URL]',$numnew).'</p>'); |
$r->print('<p class="LC_info">'.&mt('Created [quant,_1,URL]',$numnew).'</p>'); |
} |
} |
Line 4869 sub contentverifyform {
|
Line 4992 sub contentverifyform {
|
&mt('No').'</label>'.(' 'x2). |
&mt('No').'</label>'.(' 'x2). |
'<label><input type="radio" name="checkstale" value="1" />'. |
'<label><input type="radio" name="checkstale" value="1" />'. |
&mt('Yes').'</label></span></p><p>'. |
&mt('Yes').'</label></span></p><p>'. |
'<input type="submit" value="'.&mt('Verify content').' "/>'. |
'<input type="submit" value="'.&mt('Verify Content').' "/>'. |
'<input type="hidden" value="1" name="tools" />'. |
'<input type="hidden" value="1" name="tools" />'. |
'<input type="hidden" value="1" name="verify" /></p></form>'); |
'<input type="hidden" value="1" name="verify" /></p></form>'); |
$r->print(&endContentScreen()); |
$r->print(&endContentScreen()); |
Line 5356 sub handler {
|
Line 5479 sub handler {
|
$help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); |
$help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); |
|
|
my ($allowed,$canedit,$canview,$noendpage,$disabled); |
my ($allowed,$canedit,$canview,$noendpage,$disabled); |
|
# does this user have privileges to modify content. |
|
if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) { |
# 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') { |
# does this user have privileges to modify content. |
|
if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) { |
|
$allowed = 1; |
$allowed = 1; |
$canedit = 1; |
} |
$canview = 1; |
$canedit = 1; |
} elsif (&Apache::lonnet::allowed('cev',$env{'request.course.id'})) { |
$canview = 1; |
|
} elsif (&Apache::lonnet::allowed('cev',$env{'request.course.id'})) { |
|
# URI is /adm/supplemental when viewing supplemental docs in non-edit mode. |
|
unless ($r->uri eq '/adm/supplemental') { |
$allowed = 1; |
$allowed = 1; |
$canview = 1; |
|
} |
} |
|
$canview = 1; |
} |
} |
unless ($canedit) { |
unless ($canedit) { |
$disabled = ' disabled="disabled"'; |
$disabled = ' disabled="disabled"'; |
Line 5471 sub handler {
|
Line 5597 sub handler {
|
# Get the parameters that may be needed |
# Get the parameters that may be needed |
# |
# |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['folderpath', |
['folderpath','title', |
'forcesupplement','forcestandard', |
'forcesupplement','forcestandard', |
'tools','symb','command','supppath']); |
'tools','symb','command','supppath']); |
|
|
Line 5518 sub handler {
|
Line 5644 sub handler {
|
if ($env{'form.tools'}) { $toolsflag=1; } |
if ($env{'form.tools'}) { $toolsflag=1; } |
|
|
if ($env{'form.folderpath'} ne '') { |
if ($env{'form.folderpath'} ne '') { |
my @items = split(/\&/,$env{'form.folderpath'}); |
&validate_folderpath($supplementalflag); |
my $badpath; |
|
for (my $i=0; $i<@items; $i++) { |
|
my $odd = $i%2; |
|
if (($odd) && (!$supplementalflag) && ($items[$i] !~ /^[^:]*:(|\d+):(|1):(|1):(|1):(|1)$/)) { |
|
$badpath = 1; |
|
} elsif ((!$odd) && ($items[$i] !~ /^(default|supplemental)(|_\d+)$/)) { |
|
$badpath = 1; |
|
} |
|
last if ($badpath); |
|
} |
|
if ($badpath) { |
|
delete($env{'form.folderpath'}); |
|
} |
|
} |
} |
|
|
if ($env{'form.supppath'} ne '') { |
if ($env{'form.supppath'} ne '') { |
my @items = split(/\&/,$env{'form.supppath'}); |
&validate_suppath(); |
my $badpath; |
|
for (my $i=0; $i<@items; $i++) { |
|
my $odd = $i%2; |
|
if ((!$odd) && ($items[$i] !~ /^supplemental(|_\d+)$/)) { |
|
$badpath = 1; |
|
} |
|
last if ($badpath); |
|
} |
|
if ($badpath) { |
|
delete($env{'form.supppath'}); |
|
} |
|
} |
} |
|
|
my $script=''; |
my $script=''; |
Line 5605 sub handler {
|
Line 5707 sub handler {
|
} else { |
} else { |
undef($env{'form.folderpath'}); |
undef($env{'form.folderpath'}); |
} |
} |
|
if ($env{'form.folderpath'} ne '') { |
|
&validate_folderpath($supplementalflag); |
|
} |
} |
} |
|
|
# If we are not allowed to make changes, all we can see are supplemental docs |
# If we are not allowed to make changes, all we can see are supplemental docs |
Line 5629 sub handler {
|
Line 5734 sub handler {
|
undef($env{'form.folderpath'}); |
undef($env{'form.folderpath'}); |
} else { |
} else { |
$folderurl = "uploaded/$coursedom/$coursenum/$folder"; |
$folderurl = "uploaded/$coursedom/$coursenum/$folder"; |
if ((split(/\:/,$pathitems[-1]))[4]) { |
if ((split(/\:/,$pathitems[-1]))[5]) { |
$folderurl .= '.page'; |
$folderurl .= '.page'; |
} else { |
} else { |
$folderurl .= '.sequence'; |
$folderurl .= '.sequence'; |
Line 5765 sub handler {
|
Line 5870 sub handler {
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
|
if ($showdoc) { |
if ($showdoc) { |
$r->print(&Apache::loncommon::start_page("$crstype documents",undef, |
my $args; |
{'force_register' => $showdoc,})); |
if ($supplementalflag) { |
|
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$env{'form.title'},1); |
|
$args = {'bread_crumbs' => $brcrum}; |
|
} else { |
|
$args = {'force_register' => $showdoc}; |
|
} |
|
$r->print(&Apache::loncommon::start_page("$crstype documents",undef,$args)); |
} elsif ($toolsflag) { |
} elsif ($toolsflag) { |
my ($breadtext,$breadtitle); |
my ($breadtext,$breadtitle); |
$breadtext = "$crstype Editor"; |
$breadtext = "$crstype Editor"; |
Line 5784 sub handler {
|
Line 5895 sub handler {
|
$breadtitle) |
$breadtitle) |
); |
); |
} elsif ($r->uri eq '/adm/supplemental') { |
} elsif ($r->uri eq '/adm/supplemental') { |
|
unless ($env{'request.role.adv'}) { |
|
unless (&Apache::lonnet::has_unhidden_suppfiles($coursenum,$coursedom)) { |
|
$r->internal_redirect('/adm/navmaps'); |
|
return OK; |
|
} |
|
} |
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype); |
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype); |
$r->print(&Apache::loncommon::start_page("Supplemental $crstype Content",undef, |
$r->print(&Apache::loncommon::start_page("Supplemental $crstype Content",undef, |
{'bread_crumbs' => $brcrum,})); |
{'bread_crumbs' => $brcrum,})); |
Line 5814 sub handler {
|
Line 5931 sub handler {
|
my %codebase = (); |
my %codebase = (); |
my ($upload_result,$upload_output,$uploadphase); |
my ($upload_result,$upload_output,$uploadphase); |
if ($canedit) { |
if ($canedit) { |
|
undef($suppchanges); |
if (($env{'form.uploaddoc.filename'}) && |
if (($env{'form.uploaddoc.filename'}) && |
($env{'form.cmd'}=~/^upload_(\w+)/)) { |
($env{'form.cmd'}=~/^upload_(\w+)/)) { |
my $context = $1; |
my $context = $1; |
Line 5825 sub handler {
|
Line 5943 sub handler {
|
if ($hadchanges) { |
if ($hadchanges) { |
&mark_hash_old(); |
&mark_hash_old(); |
} |
} |
|
if ($suppchanges) { |
|
&Apache::lonnet::update_supp_caches($coursedom,$coursenum); |
|
undef($suppchanges); |
|
} |
$r->print($upload_output); |
$r->print($upload_output); |
} elsif ($env{'form.phase'} eq 'upload_embedded') { |
} elsif ($env{'form.phase'} eq 'upload_embedded') { |
# Process file upload - phase two - upload embedded objects |
# Process file upload - phase two - upload embedded objects |
Line 5962 sub handler {
|
Line 6084 sub handler {
|
my $fileupload=(<<FIUP); |
my $fileupload=(<<FIUP); |
$quotainfo |
$quotainfo |
$lt{'file'}:<br /> |
$lt{'file'}:<br /> |
<input type="file" name="uploaddoc" class="flUpload" size="40" $disabled /> |
<input type="file" name="uploaddoc" class="LC_flUpload" size="40" $disabled /> |
<input type="hidden" id="free_space" value="$free_space" /> |
<input type="hidden" id="LC_free_space" value="$free_space" /> |
FIUP |
FIUP |
|
|
my $checkbox=(<<CHBO); |
my $checkbox=(<<CHBO); |
Line 6559 NSYLFORM
|
Line 6681 NSYLFORM
|
$help{'Group Portfolio'} |
$help{'Group Portfolio'} |
</form> |
</form> |
NGFFORM |
NGFFORM |
@specialdocumentsforma=( |
if ($container eq 'page') { |
|
@specialdocumentsforma=( |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/webpage.png" alt="'.$lt{webp}.'" onclick="javascript:makewebpage();" />'=>$newwebpageform}, |
|
); |
|
} else { |
|
@specialdocumentsforma=( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/page.png" alt="'.$lt{newp}.'" onclick="javascript:makenewpage(document.newpage,\''.$pageseq.'\');" />'=>$newpageform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/page.png" alt="'.$lt{newp}.'" onclick="javascript:makenewpage(document.newpage,\''.$pageseq.'\');" />'=>$newpageform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="javascript:makenew(document.newsyl);" />'=>$newsylform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="javascript:makenew(document.newsyl);" />'=>$newsylform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="javascript:makenew(document.newnav);" />'=>$newnavform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="javascript:makenew(document.newnav);" />'=>$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}, |
{'<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)); |
|
|
my @external = ( |
my @external = ( |
Line 6611 my %orderhash = (
|
Line 6739 my %orderhash = (
|
'bb' => ['Import',$importpubform], |
'bb' => ['Import',$importpubform], |
'cc' => ['External',$externalform], |
'cc' => ['External',$externalform], |
'dd' => ['Grading',$gradingform], |
'dd' => ['Grading',$gradingform], |
|
'ff' => ['Other',$specialdocumentsform], |
); |
); |
unless ($container eq 'page') { |
unless ($container eq 'page') { |
$orderhash{'00'} = ['Newfolder',$newfolderform]; |
$orderhash{'00'} = ['Newfolder',$newfolderform]; |
$orderhash{'ee'} = ['Collaboration',$communityform]; |
$orderhash{'ee'} = ['Collaboration',$communityform]; |
$orderhash{'ff'} = ['Other',$specialdocumentsform]; |
|
} |
} |
|
|
$hadchanges=0; |
$hadchanges=0; |
Line 6772 my %suporderhash = (
|
Line 6900 my %suporderhash = (
|
'ff' => ['Other',&create_form_ul(&create_list_elements(@specialdocs))] |
'ff' => ['Other',&create_form_ul(&create_list_elements(@specialdocs))] |
); |
); |
if ($supplementalflag) { |
if ($supplementalflag) { |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
$suppchanges = 0; |
$supplementalflag,\%suporderhash,$iconpath,$pathitem, |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
\%ltitools,$canedit,$hostname); |
$supplementalflag,\%suporderhash,$iconpath,$pathitem, |
if ($error) { |
\%ltitools,$canedit,$hostname); |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
if ($error) { |
} else { |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
if ($suppchanges) { |
} |
my %servers = &Apache::lonnet::internet_dom_servers($coursedom); |
if ($suppchanges) { |
my @ids=&Apache::lonnet::current_machine_ids(); |
&Apache::lonnet::update_supp_caches($coursedom,$coursenum); |
foreach my $server (keys(%servers)) { |
undef($suppchanges); |
next if (grep(/^\Q$server\E$/,@ids)); |
} |
my $hashid=$coursenum.':'.$coursedom; |
|
my $cachekey = &escape('suppcount').':'.&escape($hashid); |
|
&Apache::lonnet::remote_devalidate_cache($server,[$cachekey]); |
|
} |
|
&Apache::lonnet::get_numsuppfiles($coursenum,$coursedom,1); |
|
undef($suppchanges); |
|
} |
|
} |
|
} |
} |
} elsif ($supplementalflag) { |
} elsif ($supplementalflag) { |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
$supplementalflag,'',$iconpath,$pathitem,'','',$hostname); |
$supplementalflag,'',$iconpath,$pathitem,'',$canedit, |
|
$hostname); |
if ($error) { |
if ($error) { |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
} |
} |
Line 6958 sub remove_archive {
|
Line 7079 sub remove_archive {
|
if ($url eq $env{'form.archiveurl'}) { |
if ($url eq $env{'form.archiveurl'}) { |
if (&handle_edit_cmd($docuname,$docudom)) { |
if (&handle_edit_cmd($docuname,$docudom)) { |
($errtext,$fatal) = &storemap($docuname,$docudom,$map,1); |
($errtext,$fatal) = &storemap($docuname,$docudom,$map,1); |
|
if ($suppchanges) { |
|
&Apache::lonnet::update_supp_caches($docudom,$docuname); |
|
undef($suppchanges); |
|
} |
if ($fatal) { |
if ($fatal) { |
if ($container eq 'page') { |
if ($container eq 'page') { |
$delwarning = &mt('An error occurred updating the contents of the current page.'); |
$delwarning = &mt('An error occurred updating the contents of the current page.'); |
Line 7272 sub editing_js {
|
Line 7397 sub editing_js {
|
if ($backtourl =~ m{^\Q/public/$coursedom/$coursenum/syllabus\E}) { |
if ($backtourl =~ m{^\Q/public/$coursedom/$coursenum/syllabus\E}) { |
if (($ENV{'SERVER_PORT'} == 443) && |
if (($ENV{'SERVER_PORT'} == 443) && |
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
if ($hostname ne '') { |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
$backtourl = 'http://'.$hostname.$backtourl; |
if ($hostname ne '') { |
|
$backtourl = 'http://'.$hostname.$backtourl; |
|
} |
|
$backtourl .= (($backtourl =~ /\?/) ? '&':'?').'usehttp=1'; |
} |
} |
$backtourl .= (($backtourl =~ /\?/) ? '&':'?').'usehttp=1'; |
|
} |
} |
} elsif ($backtourl =~ m{^/adm/wrapper/ext/(?!https:)}) { |
} elsif ($backtourl =~ m{^/adm/wrapper/ext/(?!https:)}) { |
if (($ENV{'SERVER_PORT'} == 443) && ($hostname ne '')) { |
if (($ENV{'SERVER_PORT'} == 443) && ($hostname ne '')) { |
$backtourl = 'http://'.$hostname.$backtourl; |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
|
if ($hostname ne '') { |
|
$backtourl = 'http://'.$hostname.$backtourl; |
|
} |
|
$backtourl .= (($backtourl =~ /\?/) ? '&':'?').'usehttp=1'; |
|
} |
} |
} |
} |
} |
if ($anchor ne '') { |
if ($anchor ne '') { |
Line 7293 sub editing_js {
|
Line 7425 sub editing_js {
|
} elsif ($env{'docs.exit.'.$env{'request.course.id'}} eq '/adm/menu') { |
} elsif ($env{'docs.exit.'.$env{'request.course.id'}} eq '/adm/menu') { |
$backtourl = '/adm/menu'; |
$backtourl = '/adm/menu'; |
} elsif ($supplementalflag) { |
} elsif ($supplementalflag) { |
$backtourl = '/adm/supplemental'; |
if (($env{'request.role.adv'}) || |
|
(&Apache::lonnet::has_unhidden_suppfiles($coursenum,$coursedom))) { |
|
$backtourl = '/adm/supplemental'; |
|
} else { |
|
$backtourl = '/adm/navmaps'; |
|
} |
} else { |
} else { |
$backtourl = '/adm/navmaps'; |
$backtourl = '/adm/navmaps'; |
} |
} |
Line 7320 sub editing_js {
|
Line 7457 sub editing_js {
|
function makenewfolder(targetform,folderseq) { |
function makenewfolder(targetform,folderseq) { |
var foldername=prompt('$js_lt{"p_mnf"}','$js_lt{"t_mnf"}'); |
var foldername=prompt('$js_lt{"p_mnf"}','$js_lt{"t_mnf"}'); |
if (foldername) { |
if (foldername) { |
targetform.importdetail.value=escape(foldername)+"="+folderseq; |
targetform.importdetail.value=encodeURIComponent(foldername)+"="+folderseq; |
targetform.submit(); |
targetform.submit(); |
} |
} |
} |
} |
Line 7328 function makenewfolder(targetform,folder
|
Line 7465 function makenewfolder(targetform,folder
|
function makenewpage(targetform,folderseq) { |
function makenewpage(targetform,folderseq) { |
var pagename=prompt('$js_lt{"p_mnp"}','$js_lt{"t_mnp"}'); |
var pagename=prompt('$js_lt{"p_mnp"}','$js_lt{"t_mnp"}'); |
if (pagename) { |
if (pagename) { |
targetform.importdetail.value=escape(pagename)+"="+folderseq; |
targetform.importdetail.value=encodeURIComponent(pagename)+"="+folderseq; |
targetform.submit(); |
targetform.submit(); |
} |
} |
} |
} |
Line 7337 function makeexamupload() {
|
Line 7474 function makeexamupload() {
|
var title=prompt('$js_lt{"p_mxu"}'); |
var title=prompt('$js_lt{"p_mxu"}'); |
if (title) { |
if (title) { |
this.document.forms.newexamupload.importdetail.value= |
this.document.forms.newexamupload.importdetail.value= |
escape(title)+'=/res/lib/templates/examupload.problem'; |
encodeURIComponent(title)+'=/res/lib/templates/examupload.problem'; |
this.document.forms.newexamupload.submit(); |
this.document.forms.newexamupload.submit(); |
} |
} |
} |
} |
Line 7346 function makesmppage() {
|
Line 7483 function makesmppage() {
|
var title=prompt('$js_lt{"p_msp"}'); |
var title=prompt('$js_lt{"p_msp"}'); |
if (title) { |
if (title) { |
this.document.forms.newsmppg.importdetail.value= |
this.document.forms.newsmppg.importdetail.value= |
escape(title)+'=/adm/$udom/$uname/new/smppg'; |
encodeURIComponent(title)+'=/adm/$udom/$uname/new/smppg'; |
this.document.forms.newsmppg.submit(); |
this.document.forms.newsmppg.submit(); |
} |
} |
} |
} |
Line 7361 function makewebpage(type) {
|
Line 7498 function makewebpage(type) {
|
} |
} |
if (title) { |
if (title) { |
var webpage = formname.importdetail.value; |
var webpage = formname.importdetail.value; |
formname.importdetail.value = escape(title)+'='+webpage; |
formname.importdetail.value = encodeURIComponent(title)+'='+webpage; |
formname.submit(); |
formname.submit(); |
} |
} |
} |
} |
Line 7370 function makesmpproblem() {
|
Line 7507 function makesmpproblem() {
|
var title=prompt('$js_lt{"p_msb"}'); |
var title=prompt('$js_lt{"p_msb"}'); |
if (title) { |
if (title) { |
this.document.forms.newsmpproblem.importdetail.value= |
this.document.forms.newsmpproblem.importdetail.value= |
escape(title)+'=/res/lib/templates/simpleproblem.problem'; |
encodeURIComponent(title)+'=/res/lib/templates/simpleproblem.problem'; |
this.document.forms.newsmpproblem.submit(); |
this.document.forms.newsmpproblem.submit(); |
} |
} |
} |
} |
Line 7379 function makedropbox() {
|
Line 7516 function makedropbox() {
|
var title=prompt('$js_lt{"p_mdb"}'); |
var title=prompt('$js_lt{"p_mdb"}'); |
if (title) { |
if (title) { |
this.document.forms.newdropbox.importdetail.value= |
this.document.forms.newdropbox.importdetail.value= |
escape(title)+'=/res/lib/templates/DropBox.problem'; |
encodeURIComponent(title)+'=/res/lib/templates/DropBox.problem'; |
this.document.forms.newdropbox.submit(); |
this.document.forms.newdropbox.submit(); |
} |
} |
} |
} |
Line 7388 function makebulboard() {
|
Line 7525 function makebulboard() {
|
var title=prompt('$js_lt{"p_mbb"}'); |
var title=prompt('$js_lt{"p_mbb"}'); |
if (title) { |
if (title) { |
this.document.forms.newbul.importdetail.value= |
this.document.forms.newbul.importdetail.value= |
escape(title)+'=/adm/$udom/$uname/new/bulletinboard'; |
encodeURIComponent(title)+'=/adm/$udom/$uname/new/bulletinboard'; |
this.document.forms.newbul.submit(); |
this.document.forms.newbul.submit(); |
} |
} |
} |
} |
Line 8512 function validImportCrsRes() {
|
Line 8649 function validImportCrsRes() {
|
url += fname; |
url += fname; |
} |
} |
var title = document.crsresimportform.crsrestitle.value; |
var title = document.crsresimportform.crsrestitle.value; |
document.crsresimportform.importdetail.value=escape(title)+'='+escape(url); |
document.crsresimportform.importdetail.value=encodeURIComponent(title)+'='+encodeURIComponent(url); |
return true; |
return true; |
} |
} |
|
|