version 1.663, 2019/08/11 15:15:39
|
version 1.703, 2023/07/16 03:50:54
|
Line 45 use Apache::lontemplate();
|
Line 45 use Apache::lontemplate();
|
use Apache::lonsimplepage(); |
use Apache::lonsimplepage(); |
use Apache::lonhomework(); |
use Apache::lonhomework(); |
use Apache::lonpublisher(); |
use Apache::lonpublisher(); |
use Apache::lonparmset(); |
|
use Apache::loncourserespicker(); |
use Apache::loncourserespicker(); |
use HTML::Entities; |
use HTML::Entities; |
use HTML::TokeParser; |
use HTML::TokeParser; |
Line 91 sub storemap {
|
Line 90 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 182 sub default_folderpath {
|
} |
} |
} |
} |
|
|
|
sub validate_supppath { |
|
my ($coursenum,$coursedom) = @_; |
|
my $backto; |
|
if ($env{'form.supppath'} ne '') { |
|
my @items = split(/\&/,$env{'form.supppath'}); |
|
my ($badpath,$got_supp,$supppath,%supphidden,%suppids); |
|
for (my $i=0; $i<@items; $i++) { |
|
my $odd = $i%2; |
|
if ((!$odd) && ($items[$i] !~ /^supplemental(|_\d+)$/)) { |
|
$badpath = 1; |
|
last; |
|
} elsif ($odd) { |
|
my $suffix; |
|
my $idx = $i-1; |
|
if ($items[$i] =~ /^([^:]*)::(|1):::$/) { |
|
$backto .= '&'.$1; |
|
} elsif ($items[$idx] eq 'supplemental') { |
|
$backto .= '&'.$items[$i]; |
|
} else { |
|
$backto .= '&'.$items[$i]; |
|
my $is_hidden; |
|
unless ($got_supp) { |
|
my ($supplemental) = &Apache::loncommon::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'}}; |
|
} |
|
} |
|
$got_supp = 1; |
|
} |
|
if (ref($suppids{"/uploaded/$coursedom/$coursenum/$items[$idx].sequence"}) eq 'ARRAY') { |
|
my $mapid = $suppids{"/uploaded/$coursedom/$coursenum/$items[$idx].sequence"}->[0]; |
|
if ($supphidden{$mapid}) { |
|
$is_hidden = 1; |
|
} |
|
} |
|
$suffix = '::'.$is_hidden.':::'; |
|
} |
|
$supppath .= '&'.$items[$i].$suffix; |
|
} else { |
|
$supppath .= '&'.$items[$i]; |
|
$backto .= '&'.$items[$i]; |
|
} |
|
} |
|
if ($badpath) { |
|
delete($env{'form.supppath'}); |
|
} else { |
|
$supppath =~ s/^\&//; |
|
$backto =~ s/^\&//; |
|
$env{'form.supppath'} = $supppath; |
|
} |
|
} |
|
return $backto; |
|
} |
|
|
sub dumpcourse { |
sub dumpcourse { |
my ($r) = @_; |
my ($r) = @_; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
Line 661 sub group_import {
|
Line 718 sub group_import {
|
$url = $1; |
$url = $1; |
my $marker = $2; |
my $marker = $2; |
my $info = $3; |
my $info = $3; |
my ($toolid,%toolhash,%toolsettings); |
my ($toolid,$toolprefix,$tooltype,%toolhash,%toolsettings); |
my @extras = ('linktext','explanation','crslabel','crstitle','crsappend'); |
my @extras = ('linktext','explanation','crslabel','crstitle','crsappend'); |
my @toolinfo = split(/:/,$info); |
my @toolinfo = split(/:/,$info); |
if ($residx) { |
if ($residx) { |
Line 670 sub group_import {
|
Line 727 sub group_import {
|
} else { |
} else { |
$toolid = shift(@toolinfo); |
$toolid = shift(@toolinfo); |
} |
} |
|
if ($toolid =~ /^c/) { |
|
$tooltype = 'crs'; |
|
$toolprefix = 'c'; |
|
} else { |
|
$tooltype = 'dom'; |
|
} |
$toolid =~ s/\D//g; |
$toolid =~ s/\D//g; |
($toolhash{'target'},$toolhash{'width'},$toolhash{'height'}, |
($toolhash{'target'},$toolhash{'width'},$toolhash{'height'}, |
$toolhash{'linktext'},$toolhash{'explanation'},$toolhash{'crslabel'}, |
$toolhash{'linktext'},$toolhash{'explanation'},$toolhash{'crslabel'}, |
Line 683 sub group_import {
|
Line 746 sub group_import {
|
$toolhash{'gradable'} =~ s/\D+//g; |
$toolhash{'gradable'} =~ s/\D+//g; |
} |
} |
if (ref($ltitoolsref) eq 'HASH') { |
if (ref($ltitoolsref) eq 'HASH') { |
if (ref($ltitoolsref->{$toolid}) eq 'HASH') { |
if (ref($ltitoolsref->{$tooltype}) eq 'HASH') { |
my @deleted; |
if (ref($ltitoolsref->{$tooltype}->{$toolid}) eq 'HASH') { |
$toolhash{'id'} = $toolid; |
my %tools = %{$ltitoolsref->{$tooltype}->{$toolid}}; |
if (($toolhash{'target'} eq 'iframe') || ($toolhash{'target'} eq 'tab') || |
my @deleted; |
($toolhash{'target'} eq 'window')) { |
$toolhash{'id'} = $toolprefix.$toolid; |
if ($toolhash{'target'} eq 'window') { |
if (($toolhash{'target'} eq 'iframe') || ($toolhash{'target'} eq 'tab') || |
foreach my $item ('width','height') { |
($toolhash{'target'} eq 'window')) { |
$toolhash{$item} =~ s/^\s+//; |
if ($toolhash{'target'} eq 'window') { |
$toolhash{$item} =~ s/\s+$//; |
foreach my $item ('width','height') { |
if ($toolhash{$item} =~ /\D/) { |
$toolhash{$item} =~ s/^\s+//; |
delete($toolhash{$item}); |
$toolhash{$item} =~ s/\s+$//; |
if ($residx) { |
if ($toolhash{$item} =~ /\D/) { |
if ($toolsettings{$item}) { |
delete($toolhash{$item}); |
push(@deleted,$item); |
if ($residx) { |
|
if ($toolsettings{$item}) { |
|
push(@deleted,$item); |
|
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} elsif ($residx) { |
} elsif ($residx) { |
$toolhash{'target'} = $toolsettings{'target'}; |
$toolhash{'target'} = $toolsettings{'target'}; |
if ($toolhash{'target'} eq 'window') { |
if ($toolhash{'target'} eq 'window') { |
foreach my $item ('width','height') { |
foreach my $item ('width','height') { |
$toolhash{$item} = $toolsettings{$item}; |
$toolhash{$item} = $toolsettings{$item}; |
} |
|
} |
|
} elsif (ref($tools{'display'}) eq 'HASH') { |
|
$toolhash{'target'} = $tools{'display'}{'target'}; |
|
if ($toolhash{'target'} eq 'window') { |
|
$toolhash{'width'} = $tools{'display'}{'width'}; |
|
$toolhash{'height'} = $tools{'display'}{'height'}; |
} |
} |
} |
} |
} elsif (ref($ltitoolsref->{$toolid}->{'display'}) eq 'HASH') { |
if ($toolhash{'target'} eq 'iframe') { |
$toolhash{'target'} = $ltitoolsref->{$toolid}->{'display'}->{'target'}; |
foreach my $item ('width','height','linktext','explanation') { |
if ($toolhash{'target'} eq 'window') { |
delete($toolhash{$item}); |
$toolhash{'width'} = $ltitoolsref->{$toolid}->{'display'}->{'width'}; |
if ($residx) { |
$toolhash{'height'} = $ltitoolsref->{$toolid}->{'display'}->{'height'}; |
if ($toolsettings{$item}) { |
} |
push(@deleted,$item); |
} |
} |
if ($toolhash{'target'} eq 'iframe') { |
|
foreach my $item ('width','height','linktext','explanation') { |
|
delete($toolhash{$item}); |
|
if ($residx) { |
|
if ($toolsettings{$item}) { |
|
push(@deleted,$item); |
|
} |
} |
} |
} |
} |
} elsif ($toolhash{'target'} eq 'tab') { |
} elsif ($toolhash{'target'} eq 'tab') { |
foreach my $item ('width','height') { |
foreach my $item ('width','height') { |
delete($toolhash{$item}); |
delete($toolhash{$item}); |
if ($residx) { |
if ($residx) { |
if ($toolsettings{$item}) { |
if ($toolsettings{$item}) { |
push(@deleted,$item); |
push(@deleted,$item); |
} |
} |
} |
} |
} |
} |
} |
} |
if (ref($tools{'crsconf'}) eq 'HASH') { |
if (ref($ltitoolsref->{$toolid}->{'crsconf'}) eq 'HASH') { |
foreach my $item ('label','title','linktext','explanation') { |
foreach my $item ('label','title','linktext','explanation') { |
my $crsitem; |
my $crsitem; |
if (($item eq 'label') || ($item eq 'title')) { |
if (($item eq 'label') || ($item eq 'title')) { |
$crsitem = 'crs'.$item; |
$crsitem = 'crs'.$item; |
} else { |
} else { |
$crsitem = $item; |
$crsitem = $item; |
} |
} |
if ($tools{'crsconf'}{$item}) { |
if ($ltitoolsref->{$toolid}->{'crsconf'}->{$item}) { |
$toolhash{$crsitem} =~ s/^\s+//; |
$toolhash{$crsitem} =~ s/^\s+//; |
$toolhash{$crsitem} =~ s/\s+$//; |
$toolhash{$crsitem} =~ s/\s+$//; |
if ($toolhash{$crsitem} eq '') { |
if ($toolhash{$crsitem} eq '') { |
delete($toolhash{$crsitem}); |
|
} |
|
} else { |
delete($toolhash{$crsitem}); |
delete($toolhash{$crsitem}); |
} |
} |
} else { |
if (($residx) && (exists($toolsettings{$crsitem}))) { |
delete($toolhash{$crsitem}); |
unless (exists($toolhash{$crsitem})) { |
} |
push(@deleted,$crsitem); |
if (($residx) && (exists($toolsettings{$crsitem}))) { |
} |
unless (exists($toolhash{$crsitem})) { |
|
push(@deleted,$crsitem); |
|
} |
} |
} |
} |
} |
} |
} |
if ($toolhash{'passback'}) { |
if ($toolhash{'passback'}) { |
my $gradesecret = UUID::Tiny::create_uuid_as_string(UUID_V4); |
my $gradesecret = UUID::Tiny::create_uuid_as_string(UUID_V4); |
$toolhash{'gradesecret'} = $gradesecret; |
$toolhash{'gradesecret'} = $gradesecret; |
$toolhash{'gradesecretdate'} = time; |
$toolhash{'gradesecretdate'} = time; |
} |
} |
if ($toolhash{'roster'}) { |
if ($toolhash{'roster'}) { |
my $rostersecret = UUID::Tiny::create_uuid_as_string(UUID_V4); |
my $rostersecret = UUID::Tiny::create_uuid_as_string(UUID_V4); |
$toolhash{'rostersecret'} = $rostersecret; |
$toolhash{'rostersecret'} = $rostersecret; |
$toolhash{'rostersecretdate'} = time; |
$toolhash{'rostersecretdate'} = time; |
|
} |
|
my $changegradable; |
|
if (($residx) && ($folder =~ /^default/)) { |
|
if ($toolsettings{'gradable'}) { |
|
unless (($toolhash{'gradable'}) || (defined($LONCAPA::map::zombies[$residx]))) { |
|
push(@deleted,'gradable'); |
|
$changegradable = 1; |
|
} |
|
} elsif ($toolhash{'gradable'}) { |
|
$changegradable = 1; |
|
} |
} |
if (($caller eq 'londocs') && (defined($LONCAPA::map::zombies[$residx]))) { |
my $changegradable; |
$changegradable = 1; |
if (($residx) && ($folder =~ /^default/)) { |
if ($toolsettings{'gradable'}) { |
if ($toolsettings{'gradable'}) { |
$toolhash{'gradable'} = 1; |
unless (($toolhash{'gradable'}) || (defined($LONCAPA::map::zombies[$residx]))) { |
|
push(@deleted,'gradable'); |
|
$changegradable = 1; |
|
} |
|
} elsif ($toolhash{'gradable'}) { |
|
$changegradable = 1; |
|
} |
|
if (($caller eq 'londocs') && (defined($LONCAPA::map::zombies[$residx]))) { |
|
$changegradable = 1; |
|
if ($toolsettings{'gradable'}) { |
|
$toolhash{'gradable'} = 1; |
|
} |
} |
} |
} |
} |
} |
my $putres = &Apache::lonnet::put('exttool_'.$marker,\%toolhash,$coursedom,$coursenum); |
my $putres = &Apache::lonnet::put('exttool_'.$marker,\%toolhash,$coursedom,$coursenum); |
if ($putres eq 'ok') { |
if ($putres eq 'ok') { |
if (@deleted) { |
if (@deleted) { |
&Apache::lonnet::del('exttool_'.$marker,\@deleted,$coursedom,$coursenum); |
&Apache::lonnet::del('exttool_'.$marker,\@deleted,$coursedom,$coursenum); |
|
} |
|
if (($changegradable) && ($folder =~ /^default/)) { |
|
my $val; |
|
if ($toolhash{'gradable'}) { |
|
$val = 'yes'; |
|
} else { |
|
$val = 'no'; |
|
} |
} |
&LONCAPA::map::storeparameter($residx,'parameter_0_gradable',$val, |
if (($changegradable) && ($folder =~ /^default/)) { |
'string_yesno'); |
my $val; |
&remember_parms($residx,'gradable','set',$val); |
if ($toolhash{'gradable'}) { |
|
$val = 'yes'; |
|
} else { |
|
$val = 'no'; |
|
} |
|
&LONCAPA::map::storeparameter($residx,'parameter_0_gradable',$val, |
|
'string_yesno'); |
|
&remember_parms($residx,'gradable','set',$val); |
|
} |
|
} else { |
|
return (&mt('Failed to save update to external tool.'),1); |
} |
} |
} else { |
|
return (&mt('Failed to save update to external tool.'),1); |
|
} |
} |
} |
} |
} |
} |
Line 833 sub group_import {
|
Line 899 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 941 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 982 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 1148 sub docs_change_log {
|
Line 1215 sub docs_change_log {
|
} |
} |
$r->print('</ul>'); |
$r->print('</ul>'); |
if ($docslog{$id}{'logentry'}{'parameter_res'}) { |
if ($docslog{$id}{'logentry'}{'parameter_res'}) { |
$r->print(&LONCAPA::map::qtescape((split(/\:/,$docslog{$id}{'logentry'}{'parameter_res'}))[0]).':<ul>'); |
my ($title,$url) = split(/\:/,$docslog{$id}{'logentry'}{'parameter_res'},3); |
|
if ($title eq '') { |
|
($title) = ($url =~ m{/([^/]+)$}); |
|
} elsif ($is_supp) { |
|
$title = &Apache::loncommon::parse_supplemental_title($title); |
|
} |
|
$r->print(&LONCAPA::map::qtescape($title).':<ul>'); |
foreach my $parameter ('randompick','hiddenresource','encrypturl','randomorder','gradable') { |
foreach my $parameter ('randompick','hiddenresource','encrypturl','randomorder','gradable') { |
if ($docslog{$id}{'logentry'}{'parameter_action_'.$parameter}) { |
if ($docslog{$id}{'logentry'}{'parameter_action_'.$parameter}) { |
# FIXME: internationalization seems wrong here |
# FIXME: internationalization seems wrong here |
Line 1217 sub update_paste_buffer {
|
Line 1290 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 1311 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 1324 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 1400 sub print_paste_buffer {
|
Line 1485 sub print_paste_buffer {
|
$nopaste = &mt('Paste from another course unavailable.'); |
$nopaste = &mt('Paste from another course unavailable.'); |
} |
} |
} |
} |
|
} elsif ($url =~ m{/res/($match_domain)/($match_username)/}) { |
|
my ($audom,$auname) = ($1,$2); |
|
unless (($auname eq $coursenum) && ($audom eq $coursedom)) { |
|
if (&Apache::lonnet::is_course($audom,$auname)) { |
|
$canpaste = 0; |
|
$nopaste = &mt('Paste from another course unavailable.'); |
|
} |
|
} |
} |
} |
if ($canpaste) { |
if ($canpaste) { |
push(@pasteable,$suffix); |
push(@pasteable,$suffix); |
Line 1442 sub print_paste_buffer {
|
Line 1535 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 1740 sub do_paste_from_buffer {
|
Line 1833 sub do_paste_from_buffer {
|
} |
} |
$srcdom{$suffix} = $srcd; |
$srcdom{$suffix} = $srcd; |
$srcnum{$suffix} = $srcn; |
$srcnum{$suffix} = $srcn; |
|
} elsif ($url =~ m{^/res/($match_domain)/($match_courseid)/}) { |
|
my ($audom,$auname) = ($1,$2); |
|
# When buffer was populated using an active role in a different course |
|
# disallow pasting of published resources from Course Authoring Space |
|
unless (($auname eq $coursenum) && ($audom eq $coursedom)) { |
|
if (&Apache::lonnet::is_course($audom,$auname)) { |
|
$othcrsres{$suffix} = 1; |
|
next; |
|
} |
|
} |
} |
} |
$srcmapidx{$suffix} = $mapidx; |
$srcmapidx{$suffix} = $mapidx; |
push(@dopaste,$suffix); |
push(@dopaste,$suffix); |
Line 1791 sub do_paste_from_buffer {
|
Line 1894 sub do_paste_from_buffer {
|
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 domain.', |
notindom => 'Paste failed: Item is an external tool from a course in a different domain.', |
|
othcrsres => 'Paste failed: Item is a course-authored resource from a different course', |
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 2329 sub copy_templated_files {
|
Line 2433 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 2435 sub contained_map_check {
|
Line 2541 sub contained_map_check {
|
next; |
next; |
} |
} |
} |
} |
|
if ($ressrc =~ m{^/res/($match_domain)/($match_courseid)/}) { |
|
my ($srcdom,$srcnum) = ($1,$2); |
|
unless (($srcnum eq $coursenum) && ($srcdom eq $coursedom)) { |
|
if (&Apache::lonnet::is_course($srcdom,$srcnum)) { |
|
$removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc; |
|
next; |
|
} |
|
} |
|
} |
if ($ressrc =~ m{^/(res|uploaded)/.+\.(sequence|page)$}) { |
if ($ressrc =~ m{^/(res|uploaded)/.+\.(sequence|page)$}) { |
if ($1 eq 'uploaded') { |
if ($1 eq 'uploaded') { |
$hierarchy->{$url}{$token->[2]->{'id'}} = $ressrc; |
$hierarchy->{$url}{$token->[2]->{'id'}} = $ressrc; |
Line 2569 sub url_paste_fixups {
|
Line 2684 sub url_paste_fixups {
|
if ($is_exttool) { |
if ($is_exttool) { |
$exttoolchg = 1; |
$exttoolchg = 1; |
} |
} |
} elsif (($rem =~ m{\d+/ext\.tool$}) && |
} elsif (($is_exttool) && |
($env{'form.docs.markedcopy_options'} ne 'move')) { |
($env{'form.docs.markedcopy_options'} ne 'move')) { |
$dbcopies->{$oldurl}{$id}{'src'} = $ressrc; |
$dbcopies->{$oldurl}{$id}{'src'} = $ressrc; |
$dbcopies->{$oldurl}{$id}{'cdom'} = $srcdom; |
$dbcopies->{$oldurl}{$id}{'cdom'} = $srcdom; |
Line 2745 sub apply_fixups {
|
Line 2860 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 2927 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 2937 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 3026 sub update_parameter {
|
Line 3151 sub update_parameter {
|
my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]); |
my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]); |
$name=&LONCAPA::map::qtescape($name); |
$name=&LONCAPA::map::qtescape($name); |
$url=&LONCAPA::map::qtescape($url); |
$url=&LONCAPA::map::qtescape($url); |
next unless ($name && $url); |
next unless $url; |
my $is_map; |
my $is_map; |
if ($url =~ m{/uploaded/.+\.(page|sequence)$}) { |
if ($url =~ m{/uploaded/.+\.(page|sequence)$}) { |
$is_map = 1; |
$is_map = 1; |
Line 3478 sub editor {
|
Line 3603 sub editor {
|
$r->print('</div>'); |
$r->print('</div>'); |
} |
} |
|
|
|
if ((!$allowed) && ($folder =~ /^supplemental_\d+$/)) { |
|
my ($supplemental) = &Apache::loncommon::get_supplemental($coursenum,$coursedom); |
|
if (ref($supplemental) eq 'HASH') { |
|
if ((ref($supplemental->{'hidden'}) eq 'HASH') && |
|
(ref($supplemental->{'ids'}) eq 'HASH')) { |
|
if (ref($supplemental->{'ids'}->{"/uploaded/$coursedom/$coursenum/$folder.$container"}) eq 'ARRAY') { |
|
my $mapnum = $supplemental->{'ids'}->{"/uploaded/$coursedom/$coursenum/$folder.$container"}->[0]; |
|
if ($supplemental->{'hidden'}->{$mapnum}) { |
|
$ishidden = 1; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
my ($to_show,$output,@allidx,@allmapidx,%filters,%lists,%curr_groups); |
my ($to_show,$output,@allidx,@allmapidx,%filters,%lists,%curr_groups); |
%filters = ( |
%filters = ( |
canremove => [], |
canremove => [], |
Line 3501 sub editor {
|
Line 3641 sub editor {
|
push(@allmapidx,$res); |
push(@allmapidx,$res); |
} |
} |
|
|
|
if (($supplementalflag) && (!$allowed) && (!$env{'request.role.adv'})) { |
|
if (($ishidden) || ((&LONCAPA::map::getparameter($res,'parameter_hiddenresource'))[0]=~/^yes$/i)) { |
|
$idx++; |
|
next; |
|
} |
|
} |
$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,$ishidden,$navmapref,$hostname); |
$idx++; |
$idx++; |
$shown++; |
$shown++; |
} |
} |
Line 3514 sub editor {
|
Line 3660 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 3683 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 3633 sub multiple_check_form {
|
Line 3781 sub multiple_check_form {
|
return unless (ref($listsref) eq 'HASH'); |
return unless (ref($listsref) eq 'HASH'); |
my $disabled; |
my $disabled; |
unless ($canedit) { |
unless ($canedit) { |
$disabled = 'disabled="disabled"'; |
$disabled = ' disabled="disabled"'; |
} |
} |
my $output = |
my $output = |
'<form action="/adm/coursedocs" method="post" name="togglemult'.$caller.'">'. |
'<form action="/adm/coursedocs" method="post" name="togglemult'.$caller.'">'. |
Line 3671 sub multiple_check_form {
|
Line 3819 sub multiple_check_form {
|
'</label></span></td>'."\n". |
'</label></span></td>'."\n". |
'<td class="LC_docs_entry_parameter">'. |
'<td class="LC_docs_entry_parameter">'. |
'<span class="LC_nobreak LC_docs_copy">'. |
'<span class="LC_nobreak LC_docs_copy">'. |
'<label><input type="checkbox" name="copyall" id="copyall" onclick="propagateState(this.form,'."'copy'".')"'. $disabled.' />'.&mt('Copy'). |
'<label><input type="checkbox" name="copyall" id="copyall" onclick="propagateState(this.form,'."'copy'".')"'.$disabled.' />'.&mt('Copy'). |
'</label></span></td>'. |
'</label></span></td>'. |
'</tr></table>'."\n"; |
'</tr></table>'."\n"; |
} |
} |
Line 3885 sub is_supplemental_title {
|
Line 4033 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,$ishidden,$navmapref,$hostname)=@_; |
my ($foldertitle,$renametitle,$oldtitle); |
my ($foldertitle,$renametitle,$oldtitle,$encodedtitle); |
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); |
|
$encodedtitle=$title; |
} else { |
} else { |
$title=&HTML::Entities::encode($title,'"<>&\''); |
$title=&HTML::Entities::encode($title,'"<>&\''); |
|
$encodedtitle=$title; |
$renametitle=$title; |
$renametitle=$title; |
$foldertitle=$title; |
$foldertitle=$title; |
} |
} |
Line 3912 sub entryline {
|
Line 4062 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 4117 END
|
Line 4267 END
|
my $ispage; |
my $ispage; |
my $containerarg; |
my $containerarg; |
my $folderurl; |
my $folderurl; |
|
my $plainurl; |
if ($uploaded) { |
if ($uploaded) { |
if (($extension eq 'sequence') || ($extension eq 'page')) { |
if (($extension eq 'sequence') || ($extension eq 'page')) { |
$url=~/\Q$coursenum\E\/([\/\w]+)\.\Q$extension\E$/; |
$url=~/\Q$coursenum\E\/([\/\w]+)\.\Q$extension\E$/; |
Line 4135 END
|
Line 4286 END
|
$url='/adm/supplemental?'; |
$url='/adm/supplemental?'; |
} |
} |
} else { |
} else { |
&Apache::lonnet::allowuploaded('/adm/coursedoc',$url); |
$plainurl = $url; |
} |
} |
} |
} |
|
|
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 4319 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 4330 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://})) { |
unless (&Apache::lonnet::uses_sts()) { |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
$url .= '?usehttp=1'; |
$url .= '?usehttp=1'; |
} |
} |
$nomodal = 1; |
$nomodal = 1; |
} |
} |
} |
} |
if (&Apache::lonnet::symbverify($symb,$url)) { |
my $checkencrypt; |
my $shownsymb = $symb; |
if (!$env{'request.role.adv'}) { |
if ($isexternal) { |
|
if ($url =~ /^([^#]+)#([^#]+)$/) { |
|
$url = $1; |
|
$anchor = $2; |
|
my $escan = &escape('#'); |
|
$shownsymb =~ s/^([^\#]+)#([^\#]+)$/$1$escan$2/; |
|
} |
|
} |
|
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 4210 END
|
Line 4347 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 '') { |
my $shownurl = &Apache::lonenc::encrypted($url); |
delete($env{'request.enc'}); |
if (&Apache::lonnet::symbverify($symb,$url)) { |
} |
$url = $shownurl; |
} else { |
|
$url=''; |
|
} |
|
} else { |
} else { |
$url=''; |
$url = ''; |
|
} |
|
$env{'request.enc'} = $currenc; |
|
} elsif (&Apache::lonnet::symbverify($symb,$url)) { |
|
$shownsymb = $symb; |
|
if ($isexternal) { |
|
$url =~ s/\#[^#]+$//; |
|
if ($container eq 'page') { |
|
$url = &Apache::lonnet::clutter($url); |
|
} |
} |
} |
} else { |
} else { |
$url=''; |
$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 '') && ($shownsymb ne '')) { |
|
$url .= (($url=~/\?/)?'&':'?').'symb='.&escape($shownsymb); |
} |
} |
} |
} |
} elsif ($supplementalflag) { |
} elsif ($supplementalflag) { |
Line 4238 END
|
Line 4393 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)) { |
unless (&Apache::lonnet::uses_sts()) { |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
if ($hostname ne '') { |
if ($hostname ne '') { |
$url = 'http://'.$hostname.$url; |
$url = 'http://'.$hostname.$url; |
} |
} |
Line 4250 END
|
Line 4405 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://})) { |
unless (&Apache::lonnet::uses_sts()) { |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
if ($hostname ne '') { |
if ($hostname ne '') { |
$url = 'http://'.$hostname.$url; |
$url = 'http://'.$hostname.$url; |
} |
} |
Line 4258 END
|
Line 4413 END
|
} |
} |
$nomodal = 1; |
$nomodal = 1; |
} |
} |
|
} elsif (($uploaded) && (!$allowed) && ($url ne '/adm/supplemental?')) { |
|
my $embstyle=&Apache::loncommon::fileembstyle($extension); |
|
unless ($embstyle eq 'ssi') { |
|
if (($embstyle eq 'img') |
|
|| ($embstyle eq 'emb') |
|
|| ($embstyle eq 'wrp')) { |
|
$url='/adm/wrapper'.$url; |
|
} elsif ($url !~ /\.(sequence|page)$/) { |
|
$url='/adm/coursedocs/showdoc'.$url; |
|
} |
|
} |
|
} |
|
unless ($allowed && $env{'request.role.adv'}) { |
|
if ($ishidden || (&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
|
$hiddenres = 1; |
|
} |
} |
} |
} |
} |
my ($rand_pick_text,$rand_order_text,$hiddenfolder); |
my ($rand_pick_text,$rand_order_text,$hiddenfolder); |
Line 4269 END
|
Line 4440 END
|
if (!$allowed && $supplementalflag) { |
if (!$allowed && $supplementalflag) { |
$folderpath.=$containerarg.'&'.$foldername; |
$folderpath.=$containerarg.'&'.$foldername; |
$url.='folderpath='.&escape($folderpath); |
$url.='folderpath='.&escape($folderpath); |
|
if ($ishidden || (&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
|
$hiddenfolder = 1; |
|
} |
} else { |
} else { |
my $rpicknum = (&LONCAPA::map::getparameter($orderidx, |
my $rpicknum = (&LONCAPA::map::getparameter($orderidx, |
'parameter_randompick'))[0]; |
'parameter_randompick'))[0]; |
Line 4354 $form_end;
|
Line 4528 $form_end;
|
$url .= ($url =~ /\?/) ? '&':'?'; |
$url .= ($url =~ /\?/) ? '&':'?'; |
$url .= 'folderpath='.&HTML::Entities::encode($esc_path,'<>&"'); |
$url .= 'folderpath='.&HTML::Entities::encode($esc_path,'<>&"'); |
if ($title) { |
if ($title) { |
$url .= '&title='.&HTML::Entities::encode($renametitle,'<>&"'); |
$url .= '&title='.$encodedtitle; |
} |
} |
if ((($isexternal) || ($isexttool)) && $orderidx) { |
if ((($isexternal) || ($isexttool)) && $orderidx) { |
$url .= '&idx='.$orderidx; |
$url .= '&idx='.$orderidx; |
Line 4389 $form_end;
|
Line 4563 $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 4408 $form_end;
|
Line 4582 $form_end;
|
} else { |
} else { |
$reinit = &mt('(re-initialize course to access)'); |
$reinit = &mt('(re-initialize course to access)'); |
} |
} |
$line.='<td class="LC_docs_entry_commands"'.$tdalign.'><span class="LC_nobreak">'.$editlink.$renamelink; |
$line.='<td class="LC_docs_entry_commands"'.$tdalign.'><span class="LC_nobreak">'.$editlink.$renamelink.'</span>'; |
if ($orig_url =~ /$LONCAPA::assess_re/) { |
if ($orig_url =~ /$LONCAPA::assess_re/) { |
$line.= '<br />'; |
$line.= '<br />'; |
if ($curralias ne '') { |
if ($curralias ne '') { |
Line 4419 $form_end;
|
Line 4593 $form_end;
|
$lt{'sa'}.'</a></span>'; |
$lt{'sa'}.'</a></span>'; |
} |
} |
} |
} |
$line.='</td><td>'; |
$line.='</td><td><span class="LC_nobreak">'; |
my $link; |
my ($link,$nolink); |
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) { |
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) { |
$line.='<a href="'.$url.'"><img src="'.$icon.'" alt="" class="LC_icon" /></a>'; |
if ($allowed && !$env{'request.role.adv'} && !$isfolder && !$ispage) { |
|
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
|
$nolink = 1; |
|
} |
|
} |
|
if ($nolink) { |
|
$line .= '<img src="'.$icon.'" alt="" class="LC_icon" /></a>'; |
|
} else { |
|
$line.='<a href="'.$url.'"><img src="'.$icon.'" alt="" class="LC_icon" /></a>'; |
|
} |
} elsif ($url) { |
} elsif ($url) { |
if ($anchor ne '') { |
if ($anchor ne '') { |
if ($supplementalflag) { |
if ($supplementalflag) { |
Line 4437 $form_end;
|
Line 4620 $form_end;
|
$link = $url; |
$link = $url; |
} |
} |
$link = &js_escape($link.(($url=~/\?/)?'&':'?').'inhibitmenu=yes'.$anchor); |
$link = &js_escape($link.(($url=~/\?/)?'&':'?').'inhibitmenu=yes'.$anchor); |
if ($nomodal) { |
if ($allowed && !$env{'request.role.adv'} && !$isfolder && !$ispage && !$uploaded) { |
|
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
|
$nolink = 1; |
|
} |
|
} |
|
if ($nolink) { |
|
$line.='<img src="'.$icon.'" alt="" class="LC_icon" />'; |
|
} elsif ($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>'; |
} else { |
} else { |
Line 4449 $form_end;
|
Line 4639 $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>'; |
if ($nolink) { |
|
$line.=$title; |
|
} else { |
|
$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 ($nolink) { |
|
$line.=$title; |
|
} elsif ($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;" />'. |
$title.'</a>'; |
$title.'</a>'; |
} else { |
} else { |
Line 4470 $form_end;
|
Line 4677 $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 ($uploaded && $url && !$isfolder && !$ispage) { |
my %lt=&Apache::lonlocal::texthash( |
if (($plainurl ne '') && ($env{'request.role.adv'} || $allowed || !$hiddenres)) { |
'hd' => 'Hidden', |
&Apache::lonnet::allowuploaded('/adm/coursedoc',$plainurl); |
'ec' => 'URL hidden'); |
|
my ($enctext,$hidtext); |
|
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 ($allowed) { |
|
my %lt=&Apache::lonlocal::texthash( |
|
'hd' => 'Hidden', |
|
'ec' => 'URL hidden'); |
|
my ($enctext,$hidtext,$formhidden,$formurlhidden); |
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->{'hiddenresource'}) 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 4506 $form_end;
|
Line 4723 $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 4839 sub short_urls {
|
Line 5057 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 4874 sub contentverifyform {
|
Line 5092 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 5361 sub handler {
|
Line 5579 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 5476 sub handler {
|
Line 5697 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 5523 sub handler {
|
Line 5744 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'}); |
&Apache::loncommon::validate_folderpath($supplementalflag,$allowed,$coursenum,$coursedom); |
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'}); |
|
} |
|
} |
} |
|
|
|
my $backto_supppath; |
if ($env{'form.supppath'} ne '') { |
if ($env{'form.supppath'} ne '') { |
my @items = split(/\&/,$env{'form.supppath'}); |
if ($supplementalflag && $allowed) { |
my $badpath; |
$backto_supppath = &validate_supppath($coursenum,$coursedom); |
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'}); |
|
} |
} |
} |
} |
|
|
Line 5561 sub handler {
|
Line 5761 sub handler {
|
my $containertag; |
my $containertag; |
my $pathitem; |
my $pathitem; |
my %ltitools; |
my %ltitools; |
|
my $posslti; |
my $hiddentop; |
my $hiddentop; |
my $navmap; |
my $navmap; |
my $filterFunc = sub { my $res = shift; return (!$res->randomout() && !$res->is_map()) }; |
my $filterFunc = sub { my $res = shift; return (!$res->randomout() && !$res->is_map()) }; |
Line 5572 sub handler {
|
Line 5773 sub handler {
|
&Apache::loncommon::symb_to_docspath($env{'form.symb'},\$navmap); |
&Apache::loncommon::symb_to_docspath($env{'form.symb'},\$navmap); |
&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 '') && $supplementalflag && $allowed) { |
$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'}.'_'.$backto_supppath}); |
} |
} |
} elsif ($env{'form.command'} eq 'editdocs') { |
} elsif ($env{'form.command'} eq 'editdocs') { |
$env{'form.folderpath'} = &default_folderpath($coursenum,$coursedom,\$navmap); |
$env{'form.folderpath'} = &default_folderpath($coursenum,$coursedom,\$navmap); |
Line 5610 sub handler {
|
Line 5811 sub handler {
|
} else { |
} else { |
undef($env{'form.folderpath'}); |
undef($env{'form.folderpath'}); |
} |
} |
|
if ($env{'form.folderpath'} ne '') { |
|
&Apache::loncommon::validate_folderpath($supplementalflag,$allowed,$coursenum,$coursedom); |
|
} |
} |
} |
|
|
# 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 5624 sub handler {
|
Line 5828 sub handler {
|
.'&'. |
.'&'. |
$env{'form.folderpath'}; |
$env{'form.folderpath'}; |
} |
} |
# If allowed and user's role is not advanced check folderpath is not hidden |
# If allowed and user's role is not advanced check folderpath is not hidden |
if (($allowed) && (!$env{'request.role.adv'}) && |
my $hidden_and_empty; |
($env{'form.folderpath'} ne '') && (!$supplementalflag)) { |
if (($allowed) && (!$env{'request.role.adv'}) && ($env{'form.folderpath'} ne '')) { |
my $folderurl; |
my ($folderurl,$foldername,$hiddenfolder); |
my @pathitems = split(/\&/,$env{'form.folderpath'}); |
my @pathitems = split(/\&/,$env{'form.folderpath'}); |
my $folder = $pathitems[-2]; |
my $folder = $pathitems[-2]; |
if ($folder eq '') { |
if ($folder eq '') { |
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'; |
} |
} |
unless (ref($navmap)) { |
if ($supplementalflag) { |
$navmap = Apache::lonnavmaps::navmap->new(); |
($foldername,$hiddenfolder) = ($pathitems[-1] =~ /^([^:]*)::(|1):::$/); |
} |
$foldername = &HTML::Entities::decode(&unescape($foldername)); |
if (ref($navmap)) { |
my ($supplemental) = &Apache::loncommon::get_supplemental($coursenum,$coursedom); |
if (lc($navmap->get_mapparam(undef,$folderurl,"0.hiddenresource")) eq 'yes') { |
if (ref($supplemental) eq 'HASH') { |
my @resources = $navmap->retrieveResources($folderurl,$filterFunc,1,1); |
my ($suppmap,$suppmapnum); |
unless (@resources) { |
if ($folder eq 'supplemental') { |
undef($env{'form.folderpath'}); |
$suppmap = 'default'; |
|
$suppmapnum = 0; |
|
} elsif ($folder =~ /^supplemental_(\d+)$/) { |
|
$suppmap = $1; |
|
$suppmapnum = $suppmap; |
|
} |
|
if ($hiddenfolder) { |
|
my $hascontent; |
|
foreach my $key (reverse(sort(keys(%{$supplemental->{'ids'}})))) { |
|
if ($key =~ m{^\Q/uploaded/$coursedom/$coursenum/supplemental/$suppmap/\E}) { |
|
$hascontent = 1; |
|
} elsif (ref($supplemental->{'ids'}->{$key}) eq 'ARRAY') { |
|
foreach my $id (@{$supplemental->{'ids'}->{$key}}) { |
|
if ($id =~ /^$suppmapnum\:/) { |
|
$hascontent = 1; |
|
last; |
|
} |
|
} |
|
} |
|
last if ($hascontent); |
|
} |
|
unless ($hascontent) { |
|
if ($foldername ne '') { |
|
$hidden_and_empty = $foldername; |
|
} else { |
|
$hidden_and_empty = $folder; |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
unless (ref($navmap)) { |
|
$navmap = Apache::lonnavmaps::navmap->new(); |
|
} |
|
($foldername,$hiddenfolder) = ($pathitems[-1] =~ /^([^:]*):|\d+:|1:(|1):|1:|1$/); |
|
$foldername = &HTML::Entities::decode(&unescape($foldername)); |
|
if (ref($navmap)) { |
|
if ($hiddenfolder || |
|
(lc($navmap->get_mapparam(undef,$folderurl,"0.hiddenresource")) eq 'yes')) { |
|
my @resources = $navmap->retrieveResources($folderurl,$filterFunc,1,1); |
|
unless (@resources) { |
|
if ($foldername ne '') { |
|
$hidden_and_empty = $foldername; |
|
} else { |
|
$hidden_and_empty = $folder; |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
|
if ($hidden_and_empty ne '') { |
|
splice(@pathitems,-2); |
|
if (@pathitems) { |
|
$env{'form.folderpath'} = join('&',@pathitems); |
|
} else { |
|
undef($env{'form.folderpath'}); |
|
} |
|
} |
} |
} |
} |
} |
|
|
|
|
# If after all of this, we still don't have any paths, make them |
# If after all of this, we still don't have any paths, make them |
unless ($env{'form.folderpath'}) { |
unless ($env{'form.folderpath'}) { |
if ($supplementalflag) { |
if ($supplementalflag) { |
Line 5738 sub handler {
|
Line 5995 sub handler {
|
} |
} |
} |
} |
my $tabidstr = join("','",@tabids); |
my $tabidstr = join("','",@tabids); |
%ltitools = &Apache::lonnet::get_domain_lti($coursedom,'consumer'); |
my (%domtools,%crstools); |
my $posslti = keys(%ltitools); |
my %tooltypes = &Apache::loncommon::usable_exttools(); |
|
if ($tooltypes{'dom'}) { |
|
%domtools = &Apache::lonnet::get_domain_lti($coursedom,'consumer'); |
|
} |
|
if ($tooltypes{'crs'}) { |
|
%crstools = &Apache::lonnet::get_course_lti($coursenum,$coursedom,'consumer'); |
|
} |
|
%ltitools = ( |
|
dom => \%domtools, |
|
crs => \%crstools, |
|
); |
|
$posslti = scalar(keys(%domtools)) + scalar(keys(%crstools)); |
my $hostname = $r->hostname(); |
my $hostname = $r->hostname(); |
$script .= &editing_js($udom,$uname,$supplementalflag,$coursedom,$coursenum,$posslti, |
$script .= &editing_js($udom,$uname,$supplementalflag,$coursedom,$coursenum,$posslti, |
$londocroot,$canedit,$hostname,\$navmap). |
$londocroot,$canedit,$hostname,\$navmap). |
Line 5747 sub handler {
|
Line 6015 sub handler {
|
&inject_data_js(). |
&inject_data_js(). |
&Apache::lonhtmlcommon::resize_scrollbox_js('docs',$tabidstr,$tid). |
&Apache::lonhtmlcommon::resize_scrollbox_js('docs',$tabidstr,$tid). |
&Apache::lonextresedit::extedit_javascript(\%ltitools); |
&Apache::lonextresedit::extedit_javascript(\%ltitools); |
|
my $onload = "javascript:resize_scrollbox('contentscroll','1','1');"; |
|
if ($hidden_and_empty ne '') { |
|
my $alert = &mt("Additional privileges required to edit empty and hidden folder: '[_1]'", |
|
$hidden_and_empty); |
|
$onload .= "javascript:alert('".&js_escape($alert)."');"; |
|
} |
$addentries = { |
$addentries = { |
onload => "javascript:resize_scrollbox('contentscroll','1','1');", |
onload => $onload, |
}; |
}; |
} |
} |
$script .= &paste_popup_js(); |
$script .= &paste_popup_js(); |
Line 5770 sub handler {
|
Line 6044 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 $title = &HTML::Entities::encode($env{'form.title'},'\'"<>&'); |
|
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$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 5789 sub handler {
|
Line 6070 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 5819 sub handler {
|
Line 6106 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 5830 sub handler {
|
Line 6118 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 5898 sub handler {
|
Line 6190 sub handler {
|
'stpr' => 'Standard Problem', |
'stpr' => 'Standard Problem', |
'news' => 'New sub-directory', |
'news' => 'New sub-directory', |
'crpr' => 'Create Problem', |
'crpr' => 'Create Problem', |
|
'swit' => 'Switch Server', |
'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 5918 sub handler {
|
Line 6211 sub handler {
|
'dire' => 'Directory:', |
'dire' => 'Directory:', |
'cate' => 'Category:', |
'cate' => 'Category:', |
'tmpl' => 'Template:', |
'tmpl' => 'Template:', |
|
'empd' => 'No resources found', |
'comment' => 'Comment', |
'comment' => 'Comment', |
'parse' => 'Upload embedded images/multimedia files if HTML file', |
'parse' => 'Upload embedded images/multimedia files if HTML file', |
'bb5' => 'Blackboard 5', |
'bb5' => 'Blackboard 5', |
Line 5967 sub handler {
|
Line 6261 sub handler {
|
my $fileupload=(<<FIUP); |
my $fileupload=(<<FIUP); |
$quotainfo |
$quotainfo |
$lt{'file'}:<br /> |
$lt{'file'}:<br /> |
<input type="file" name="uploaddoc" class="LC_flUpload" size="40" $disabled /> |
|
<input type="hidden" id="LC_free_space" value="$free_space" /> |
|
FIUP |
FIUP |
|
|
my $checkbox=(<<CHBO); |
my $checkbox=(<<CHBO); |
<!-- <label>$lt{'parse'}? |
<!-- <label>$lt{'parse'}? |
<input type="checkbox" name="parserflag" /> |
<input type="checkbox" name="parserflag" /> |
Line 5990 CHBO
|
Line 6281 CHBO
|
<fieldset id="uploadimsform" style="display: none;"> |
<fieldset id="uploadimsform" style="display: none;"> |
<legend>$lt{'imsf'}</legend> |
<legend>$lt{'imsf'}</legend> |
$fileupload |
$fileupload |
|
<input type="file" name="uploaddoc" id="uploaddocims" class="LC_flUpload LC_uploaddoc" size="40" $disabled /> |
|
<input type="hidden" id="LC_free_space_ims" value="$free_space" /> |
<br /> |
<br /> |
<p> |
<p> |
$lt{'cms'}: |
$lt{'cms'}: |
Line 6016 IMSFORM
|
Line 6309 IMSFORM
|
<legend>$lt{'upfi'}</legend> |
<legend>$lt{'upfi'}</legend> |
<input type="hidden" name="active" value="aa" /> |
<input type="hidden" name="active" value="aa" /> |
$fileupload |
$fileupload |
|
<input type="file" name="uploaddoc" class="LC_flUpload" size="40" $disabled /> |
|
<input type="hidden" id="LC_free_space" value="$free_space" /> |
<br /> |
<br /> |
$lt{'title'}:<br /> |
$lt{'title'}:<br /> |
<input type="text" size="60" name="comment" $disabled /> |
<input type="text" size="60" name="comment" $disabled /> |
Line 6056 FUFORM
|
Line 6351 FUFORM
|
SEDFFORM |
SEDFFORM |
my $importcrsresform; |
my $importcrsresform; |
my ($numdirs,$pickfile) = |
my ($numdirs,$pickfile) = |
&Apache::loncommon::import_crsauthor_form('crsresimportform','coursepath','coursefile', |
&Apache::loncommon::import_crsauthor_form('coursepath','coursefile', |
"resize_scrollbox('contentscroll','1','0');", |
"resize_scrollbox('contentscroll','1','0');", |
undef,'res'); |
undef,'res'); |
if ($pickfile) { |
if ($pickfile) { |
$importcrsresform=(<<CRSFORM); |
$importcrsresform=(<<CRSFORM); |
<a class="LC_menubuttons_link" href="javascript:toggleImportCrsres('res','$numdirs');"> |
<a class="LC_menubuttons_link" href="javascript:toggleImportCrsres('res');"> |
$lt{'imcr'}</a>$help{'Course_Resources'} |
$lt{'imcr'}</a>$help{'Course_Resources'} |
<form action="/adm/coursedocs" method="post" name="crsresimportform" onsubmit="return validImportCrsRes();"> |
<form action="/adm/coursedocs" method="post" name="crsresimportform" onsubmit="return validImportCrsRes();"> |
<fieldset id="importcrsresform" style="display: none;"> |
<fieldset id="importcrsresform" style="display: none;"> |
<legend>$lt{'imcr'}</legend> |
<legend>$lt{'imcr'}</legend> |
|
<div id="importcrsrescontent" style="display: none;"> |
<input type="hidden" name="active" value="bb" /> |
<input type="hidden" name="active" value="bb" /> |
$pickfile |
$pickfile |
<p> |
<p> |
$lt{'title'}: <input type="textbox" name="crsrestitle" value="" $disabled /> |
$lt{'title'}: <input type="text" name="crsrestitle" value="" $disabled /> |
</p> |
</p> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<input type="submit" name="crsres" value="$lt{'impo'}" $disabled /> |
<input type="submit" name="crsres" value="$lt{'impo'}" $disabled /><br /> |
|
</div> |
|
<div id="importcrsresempty" style="display: none;"> |
|
<p> |
|
$lt{'empd'} |
|
</p> |
|
</div> |
</fieldset> |
</fieldset> |
</form> |
</form> |
CRSFORM |
CRSFORM |
Line 6092 CRSFORM
|
Line 6394 CRSFORM
|
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/sequence.png" alt="'.$lt{impm}.'" onclick="javascript:toggleMap(\'map\');" />' => $importpubform }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/sequence.png" alt="'.$lt{impm}.'" onclick="javascript:toggleMap(\'map\');" />' => $importpubform }, |
); |
); |
if ($pickfile) { |
if ($pickfile) { |
push(@importpubforma,{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{imcr}.'" onclick="javascript:toggleImportCrsres(\'res\','."'$numdirs'".');"/>' => $importcrsresform}); |
push(@importpubforma,{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{imcr}.'" onclick="javascript:toggleImportCrsres(\'res\');" />' => $importcrsresform}); |
} |
} |
$importpubform = &create_form_ul(&create_list_elements(@importpubforma)); |
$importpubform = &create_form_ul(&create_list_elements(@importpubforma)); |
my $extresourcesform = |
my $extresourcesform = |
Line 6292 NROSTFORM
|
Line 6594 NROSTFORM
|
$help{'Web_Page'} |
$help{'Web_Page'} |
</form> |
</form> |
NWEBFORM |
NWEBFORM |
|
my $showpath = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
my @ids=&Apache::lonnet::current_machine_ids(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
my %select_menus; |
my $machines_str = "'".join("','",@ids)."'"; |
my $numauthor = 0; |
my (%is_home,%toppath,$rolehomes); |
my $numcrsdirs = 0; |
|
my $toppath = "/priv/$env{'user.domain'}/$env{'user.name'}"; |
|
if ($env{'user.author'}) { |
if ($env{'user.author'}) { |
$numauthor ++; |
|
$select_menus{'author'}->{'text'} = &Apache::lonnet::plaintext('au'); |
|
if (grep(/^\Q$env{'user.home'}\E$/,@ids)) { |
if (grep(/^\Q$env{'user.home'}\E$/,@ids)) { |
my $is_home = 1; |
$is_home{'author'} = 1; |
my %subdirs; |
|
&Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs); |
|
$select_menus{'author'}->{'default'} = '/'; |
|
$select_menus{'author'}->{'select2'}->{'/'} = '/'; |
|
my @ordered = ('/'); |
|
foreach my $relpath (sort { lc($a) cmp lc($b) } (keys(%subdirs))) { |
|
$select_menus{'author'}->{'select2'}->{$relpath} = $relpath; |
|
push(@ordered,$relpath); |
|
} |
|
$select_menus{'author'}->{'order'} = \@ordered; |
|
} else { |
|
$select_menus{'author'}->{'select2'}->{'switch'} = &mt('Switch server required'); |
|
$select_menus{'author'}->{'default'} = 'switch'; |
|
$select_menus{'author'}->{'order'} = ['switch']; |
|
} |
} |
|
$rolehomes = '<input type="hidden" id="rolehome_author" name="rolehome_author" value="'.$env{'user.home'}.'" />'."\n"; |
} |
} |
my %roleshash = &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles', |
my %roleshash = &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles', |
['active'],['ca','aa']); |
['active'],['ca','aa']); |
my $crshome = $env{'course.'.$env{'request.course.id'}.'.home'}; |
|
my %by_roletype; |
my %by_roletype; |
if (keys(%roleshash)) { |
if (keys(%roleshash)) { |
foreach my $entry (keys(%roleshash)) { |
foreach my $entry (keys(%roleshash)) { |
my ($auname,$audom,$roletype) = split(/:/,$entry); |
my ($auname,$audom,$roletype) = split(/:/,$entry); |
my $key = $entry; |
my $key = $entry; |
$key =~ s/:/___/g; |
$key =~ s/:/___/g; |
$by_roletype{$roletype}{$auname.'___'.$audom} = 1; |
my $author = $auname.'___'.$audom; |
$select_menus{$key}->{'text'} = &Apache::lonnet::plaintext($roletype)." ($audom/$auname)"; |
$by_roletype{$roletype}{$author} = 1; |
my $rolehome = &Apache::lonnet::homeserver($auname,$audom); |
my $rolehome = &Apache::lonnet::homeserver($auname,$audom); |
if (grep(/^\Q$rolehome\E$/,@ids)) { |
$toppath{$author} = "/priv/$audom/$auname"; |
my $is_home = 1; |
if (grep(/^\Q$rolehome\E$/,@ids)) { |
my (%subdirs,@ordered); |
$is_home{$author} = 1; |
my $toppath="/priv/$audom/$auname"; |
|
&Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs); |
|
$select_menus{$key}->{'default'} = '/'; |
|
$select_menus{$key}->{'select2'}->{'/'} = '/'; |
|
my @ordered = ('/'); |
|
foreach my $relpath (sort { lc($a) cmp lc($b) } (keys(%subdirs))) { |
|
$select_menus{$key}->{'select2'}->{$relpath} = $relpath; |
|
push(@ordered,$relpath); |
|
} |
|
$select_menus{$key}->{'order'} = \@ordered; |
|
} else { |
|
$select_menus{$key}->{'select2'}->{'switch'} = &mt('Switch server required'); |
|
$select_menus{$key}->{'default'} = 'switch'; |
|
$select_menus{$key}->{'order'} = ['switch']; |
|
} |
|
$numauthor ++; |
|
} |
|
} |
|
my ($pickdir,$showtitle); |
|
if ($numauthor) { |
|
my @order; |
|
my $defrole; |
|
if ($env{'user.author'}) { |
|
push(@order,'author'); |
|
$defrole = 'author'; |
|
} |
|
if (keys(%by_roletype)) { |
|
foreach my $possrole ('ca','aa') { |
|
if (ref($by_roletype{$possrole}) eq 'HASH') { |
|
foreach my $author (sort { lc($a) cmp lc($b) } (keys(%{$by_roletype{$possrole}}))) { |
|
unless ($defrole) { |
|
$defrole = $author; |
|
} |
|
push(@order,$author.'___'.$possrole); |
|
} |
|
} |
|
} |
} |
|
$rolehomes .= '<input type="hidden" id="rolehome_coauthor_'.$roletype.'_'.$audom.'/'.$auname.'" '. |
|
'name="rolehome_coauthor" value="'.$roletype.'='.$audom.'/'.$auname.'='.$rolehome.'" />'."\n"; |
} |
} |
$select_menus{'course'}->{'text'} = &mt('Course Resource'); |
} |
if (grep(/^\Q$crshome\E$/,@ids)) { |
my $crshome = $env{'course.'.$env{'request.course.id'}.'.home'}; |
my $is_home = 1; |
if (grep(/^\Q$crshome\E$/,@ids)) { |
my %subdirs; |
$is_home{'course'} = 1; |
my $toppath="/priv/$coursedom/$coursenum"; |
} |
&Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs); |
$rolehomes .= '<input type="hidden" id="rolehome_course" name="rolehome_course" value="'.$crshome.'" />'."\n"; |
$numcrsdirs = keys(%subdirs); |
my $pickdir = $lt{'loca'}. |
$select_menus{'course'}->{'default'} = '/'; |
'<select name="authorrole" onchange="populateDirSelects(this.form,'."'authorrole','authorpath'".',1,1,0);">'."\n". |
$select_menus{'course'}->{'select2'}->{'/'} = '/'; |
'<option value="" selected="selected">'.&mt('Select').'</option>'."\n"; |
my @ordered = ('/'); |
if ($env{'user.author'}) { |
foreach my $relpath (sort { lc($a) cmp lc($b) } (keys(%subdirs))) { |
$pickdir .= '<option value="author">'.&Apache::lonnet::plaintext('au').'</option>'."\n"; |
$select_menus{'course'}->{'select2'}->{$relpath} = $relpath; |
} |
push(@ordered,$relpath); |
if (keys(%by_roletype)) { |
} |
foreach my $possrole ('ca','aa') { |
$select_menus{'course'}->{'order'} = \@ordered; |
if (ref($by_roletype{$possrole}) eq 'HASH') { |
} else { |
my $roletitle = &Apache::lonnet::plaintext($possrole); |
$select_menus{'course'}->{'select2'}->{'switch'} = &mt('Switch server required'); |
foreach my $author (sort { lc($a) cmp lc($b) } (keys(%{$by_roletype{$possrole}}))) { |
$select_menus{'course'}->{'default'} = 'switch'; |
my ($none,$where,$auname,$audom) = split(/\//,$toppath{$author}); |
$select_menus{'course'}->{'order'} = ['switch']; |
$pickdir .= '<option value="'.$author.'___'.$possrole.'">'. |
} |
$roletitle." ($audom/$auname)</option>\n"; |
push(@order,'course'); |
|
$pickdir = $lt{'loca'}. |
|
&Apache::loncommon::linked_select_forms('courseresform','<br />'.$lt{'dire'}, |
|
$defrole,'authorrole','authorpath', |
|
\%select_menus,\@order,'toggleCrsResTitle();', |
|
'','priv').'<br />'; |
|
$showtitle = 'none'; |
|
} else { |
|
my $is_home; |
|
$showtitle = 'inline'; |
|
if (grep(/^\Q$crshome\E$/,@ids)) { |
|
$is_home = 1; |
|
$pickdir .= '<input type="hidden" name="authorrole" value="course" />'; |
|
my $toppath="/priv/$coursedom/$coursenum'}"; |
|
my %subdirs; |
|
&Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs); |
|
$numcrsdirs = keys(%subdirs); |
|
if ($numcrsdirs) { |
|
$pickdir .= &mt('Directory: ').'<select name="authorpath">'."\n". |
|
'<option value="/">/</option>'."\n"; |
|
foreach my $key (sort { lc($a) cmp lc($b) } (keys(%subdirs))) { |
|
$pickdir .= '<option value="'.$key.'">'.$key.'</option>'."\n"; |
|
} |
} |
$pickdir .= '</select>'; |
|
} else { |
|
$pickdir .= '<input type="hidden" name="authorpath" value="/" />'."\n"; |
|
} |
} |
} |
} |
} |
} |
|
$pickdir .= '<option value="course">'.&mt('Course Resource').'</option>'."\n". |
|
'</select><br />'."\n". |
|
$lt{'dire'}. |
|
'<select name="authorpath" onchange="toggleCrsResTitle();">'. |
|
'<option value=""></option>'. |
|
'</select><br />'."\n"; |
|
|
my %seltemplate_menus; |
my %seltemplate_menus; |
my @files = &Apache::lonhomework::get_template_list('problem'); |
my @files = &Apache::lonhomework::get_template_list('problem'); |
Line 6461 NWEBFORM
|
Line 6692 NWEBFORM
|
"resize_scrollbox('contentscroll','1','0');", |
"resize_scrollbox('contentscroll','1','0');", |
"toggleExampleText();",'template').'<br />'; |
"toggleExampleText();",'template').'<br />'; |
my $templatepreview = '<a href="#" target="sample" onclick="javascript:getExample(600,420,\'yes\',true); return false;">'. |
my $templatepreview = '<a href="#" target="sample" onclick="javascript:getExample(600,420,\'yes\',true); return false;">'. |
'<span id="newresexample">'.&mt('Example').'<span></a>'; |
'<span id="newresexample">'.&mt('Example').'</span></a>'; |
my $crsresform=(<<RESFORM); |
my $crsresform=(<<RESFORM); |
<a class="LC_menubuttons_link" href="javascript:toggleCrsRes('res','$numauthor','$numcrsdirs');"> |
<a class="LC_menubuttons_link" href="javascript:toggleCrsRes('res');"> |
$lt{'stpr'}</a>$help{'Course_Resource'} |
$lt{'stpr'}</a>$help{'Course_Resource'} |
<form action="/adm/coursedocs" method="post" name="courseresform"> |
<form action="/adm/coursedocs" method="post" name="courseresform"> |
<fieldset id="crsresform" style="display:none;"> |
<fieldset id="crsresform" style="display:none;"> |
Line 6471 NWEBFORM
|
Line 6702 NWEBFORM
|
<input type="hidden" name="active" value="bb" /> |
<input type="hidden" name="active" value="bb" /> |
<p> |
<p> |
$pickdir |
$pickdir |
|
</p> |
|
<div id="newstdproblem" style="display:none;"> |
|
<p> |
<span class="LC_nobreak">$lt{'news'}? |
<span class="LC_nobreak">$lt{'news'}? |
<label><input type="radio" name="newsubdir" value="0" onclick="toggleNewsubdir(this.form);" checked="checked" $disabled />No</label> |
<label><input type="radio" name="newsubdir" value="0" onclick="toggleNewsubdir(this.form);" checked="checked" $disabled />No</label> |
|
|
Line 6478 NWEBFORM
|
Line 6712 NWEBFORM
|
</span><span id="newsubdir"></span> |
</span><span id="newsubdir"></span> |
<input type="hidden" name="newsubdirname" id="newsubdirname" value="" autocomplete="off" /> |
<input type="hidden" name="newsubdirname" id="newsubdirname" value="" autocomplete="off" /> |
</p> |
</p> |
|
</div> |
$lt{'fnam'} |
$lt{'fnam'} |
<input type="text" size="20" name="newresourcename" autocomplete="off" $disabled /> |
<input type="text" size="20" name="newresourcename" autocomplete="off" $disabled /> |
|
<div id="newresource" style="display:none"> |
<p> |
<p> |
<div id="newresource" style="display:$showtitle"> |
|
$lt{'addp'} |
$lt{'addp'} |
<label><input type="radio" name="newresourceadd" value="0" checked="checked" onclick="toggleNewInCourse(this.form);" $disabled /> |
<label><input type="radio" name="newresourceadd" value="0" checked="checked" onclick="toggleNewInCourse(this.form);" $disabled /> |
$lt{'no'}</label> |
$lt{'no'}</label> |
Line 6489 NWEBFORM
|
Line 6724 NWEBFORM
|
$lt{'yes'}</label> |
$lt{'yes'}</label> |
<span id="newrestitle"></span> |
<span id="newrestitle"></span> |
<input type="hidden" size="20" name="newresourcetitle" id="newresourcetitle" autocomplete="off" $disabled /> |
<input type="hidden" size="20" name="newresourcetitle" id="newresourcetitle" autocomplete="off" $disabled /> |
</div> |
|
</p> |
</p> |
|
</div> |
<p> |
<p> |
$lt{'uste'} |
$lt{'uste'} |
<label><input type="radio" name="newresusetemp" value="0" checked="checked" onclick="toggleWithTemplate(this.form);" $disabled /> |
<label><input type="radio" name="newresusetemp" value="0" checked="checked" onclick="toggleWithTemplate(this.form);" $disabled /> |
$lt{'no'}</label> |
$lt{'no'}</label> |
<label><input type="radio" name="newresusetemp" value="1" onclick="toggleWithTemplate(this.form);" $disabled /> |
<label><input type="radio" name="newresusetemp" value="1" onclick="toggleWithTemplate(this.form);" $disabled /> |
$lt{'yes'}</label> |
$lt{'yes'}</label> |
|
</p> |
<div id="newrestemplate" style="display:none"> |
<div id="newrestemplate" style="display:none"> |
$templates |
$templates |
$templatepreview |
$templatepreview |
</div> |
</div> |
</p> |
|
<span class="LC_nobreak"> |
<span class="LC_nobreak"> |
<input type="hidden" name="folderpath" value="$env{'form.folderpath'}" /> |
<input type="hidden" name="folderpath" value="$showpath" /> |
<input type="submit" name="newcrs" value="$lt{'crpr'}" $disabled /> |
<input type="submit" name="newcrs" value="$lt{'crpr'}" $disabled /> |
</span> |
</span> |
|
<div id="stdprobswitch" style="display:none;"> |
|
$rolehomes |
|
<input type="button" name="switchfornewprob" value="$lt{'swit'}" onclick="switchForProb();" /> |
|
</div> |
</fieldset> |
</fieldset> |
</form> |
</form> |
|
|
Line 6564 NSYLFORM
|
Line 6803 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 = ( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="toggleExternal(\'ext\');" />'=>$extresourcesform} |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="toggleExternal(\'ext\');" />'=>$extresourcesform} |
); |
); |
if (keys(%ltitools)) { |
if ($posslti) { |
push(@external, |
push(@external, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.png" alt="'.$lt{extt}.'" onclick="toggleExternal(\'tool\');" />'=>$exttoolform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.png" alt="'.$lt{extt}.'" onclick="toggleExternal(\'tool\');" />'=>$exttoolform}, |
); |
); |
Line 6598 NGFFORM
|
Line 6843 NGFFORM
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.$lt{sipr}.'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.$lt{sipr}.'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/dropbox.png" alt="'.$lt{drbx}.'" onclick="javascript:makedropbox();" />'=>$newdropboxform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/dropbox.png" alt="'.$lt{drbx}.'" onclick="javascript:makedropbox();" />'=>$newdropboxform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/scoreupfrm.png" alt="'.$lt{scuf}.'" onclick="javascript:makeexamupload();" />'=>$newexuploadform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/scoreupfrm.png" alt="'.$lt{scuf}.'" onclick="javascript:makeexamupload();" />'=>$newexuploadform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.$lt{stpr}.'" onclick="javascript:toggleCrsRes(\'res\','."'$numauthor','$numcrsdirs'".');" />'=>$crsresform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.$lt{stpr}.'" onclick="javascript:toggleCrsRes(\'res\');" />'=>$crsresform}, |
); |
); |
$gradingform = &create_form_ul(&create_list_elements(@gradingforma)); |
$gradingform = &create_form_ul(&create_list_elements(@gradingforma)); |
|
|
Line 6615 my %orderhash = (
|
Line 6860 my %orderhash = (
|
'aa' => ['Upload',$fileuploadform], |
'aa' => ['Upload',$fileuploadform], |
'bb' => ['Import',$importpubform], |
'bb' => ['Import',$importpubform], |
'cc' => ['External',$externalform], |
'cc' => ['External',$externalform], |
'dd' => ['Grading',$gradingform], |
'dd' => ['Assessment',$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 6648 unless ($container eq 'page') {
|
Line 6893 unless ($container eq 'page') {
|
unless ($supplementalflag) { |
unless ($supplementalflag) { |
$folder='supplemental'; |
$folder='supplemental'; |
} |
} |
if ($folder =~ /^supplemental$/ && |
if (($folder eq 'supplemental') && |
(($env{'form.folderpath'} =~ /^default\&/) || ($env{'form.folderpath'} eq ''))) { |
(($env{'form.folderpath'} =~ /^default\&/) || ($env{'form.folderpath'} eq ''))) { |
$env{'form.folderpath'} = &supplemental_base(); |
$env{'form.folderpath'} = &supplemental_base(); |
} elsif ($allowed) { |
} elsif ($allowed) { |
Line 6668 unless ($container eq 'page') {
|
Line 6913 unless ($container eq 'page') {
|
<legend>$lt{'upfi'}</legend> |
<legend>$lt{'upfi'}</legend> |
<input type="hidden" name="active" value="ee" /> |
<input type="hidden" name="active" value="ee" /> |
$fileupload |
$fileupload |
|
<input type="file" name="uploaddoc" id="uploaddocsupp" class="LC_flUpload LC_uploaddoc" size="40" $disabled /> |
|
<input type="hidden" id="LC_free_space_supp" value="$free_space" /> |
<br /> |
<br /> |
<br /> |
<br /> |
<span class="LC_nobreak"> |
<span class="LC_nobreak"> |
Line 6680 unless ($container eq 'page') {
|
Line 6927 unless ($container eq 'page') {
|
$pathitem |
$pathitem |
<input type="hidden" name="cmd" value="upload_supplemental" /> |
<input type="hidden" name="cmd" value="upload_supplemental" /> |
<input type='submit' value="$lt{'upld'}" /> |
<input type='submit' value="$lt{'upld'}" /> |
|
</fieldset> |
</form> |
</form> |
SUPDOCFORM |
SUPDOCFORM |
|
|
Line 6759 my @specialdocs = (
|
Line 7007 my @specialdocs = (
|
my @supexternal = ( |
my @supexternal = ( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:toggleExternal(\'suppext\')" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:toggleExternal(\'suppext\')" />' |
=>$supextform}); |
=>$supextform}); |
if (keys(%ltitools)) { |
if ($posslti) { |
push(@supexternal, |
push(@supexternal, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.png" alt="'.$lt{extt}.'" onclick="javascript:toggleExternal(\'supptool\')" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.png" alt="'.$lt{extt}.'" onclick="javascript:toggleExternal(\'supptool\')" />' |
=>$supexttoolform}); |
=>$supexttoolform}); |
Line 6777 my %suporderhash = (
|
Line 7025 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 6963 sub remove_archive {
|
Line 7204 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 7237 sub editing_js {
|
Line 7482 sub editing_js {
|
tinc => 'Title in course', |
tinc => 'Title in course', |
sunm => 'Sub-directory name', |
sunm => 'Sub-directory name', |
edri => 'Editing rights unavailable for your current role.', |
edri => 'Editing rights unavailable for your current role.', |
|
sele => 'Select', |
|
swit => 'Switch server required', |
); |
); |
&js_escape(\%js_lt); |
&js_escape(\%js_lt); |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
Line 7248 sub editing_js {
|
Line 7495 sub editing_js {
|
my $backtourl; |
my $backtourl; |
my $toplevelmain = &escape(&default_folderpath($coursenum,$coursedom,$navmapref)); |
my $toplevelmain = &escape(&default_folderpath($coursenum,$coursedom,$navmapref)); |
my $toplevelsupp = &supplemental_base(); |
my $toplevelsupp = &supplemental_base(); |
|
my $showfile_js = &Apache::loncommon::show_crsfiles_js(); |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
my $machines_str = "'".join("','",@ids)."'"; |
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/) { |
Line 7277 sub editing_js {
|
Line 7526 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://})) { |
unless (&Apache::lonnet::uses_sts()) { |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
if ($hostname ne '') { |
if ($hostname ne '') { |
$backtourl = 'http://'.$hostname.$backtourl; |
$backtourl = 'http://'.$hostname.$backtourl; |
} |
} |
Line 7286 sub editing_js {
|
Line 7535 sub editing_js {
|
} |
} |
} 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 '')) { |
unless (&Apache::lonnet::uses_sts()) { |
unless ((&Apache::lonnet::uses_sts()) || (&Apache::lonnet::waf_allssl($hostname))) { |
if ($hostname ne '') { |
if ($hostname ne '') { |
$backtourl = 'http://'.$hostname.$backtourl; |
$backtourl = 'http://'.$hostname.$backtourl; |
} |
} |
Line 7305 sub editing_js {
|
Line 7554 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 7332 sub editing_js {
|
Line 7586 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 7340 function makenewfolder(targetform,folder
|
Line 7594 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 7349 function makeexamupload() {
|
Line 7603 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 7358 function makesmppage() {
|
Line 7612 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 7373 function makewebpage(type) {
|
Line 7627 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 7382 function makesmpproblem() {
|
Line 7636 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 7391 function makedropbox() {
|
Line 7645 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 7400 function makebulboard() {
|
Line 7654 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 7595 function toggleMap(caller) {
|
Line 7849 function toggleMap(caller) {
|
return; |
return; |
} |
} |
|
|
function toggleCrsRes(caller,numauthorrole,numcrsdirs) { |
function toggleCrsRes(caller) { |
var disp = 'none'; |
var disp = 'none'; |
if (document.getElementById('crsresform')) { |
if (document.getElementById('crsresform')) { |
if (caller == 'res') { |
if (caller == 'res') { |
var curr = document.getElementById('crsresform').style.display; |
var form = document.getElementById('crsresform'); |
|
var curr = form.style.display; |
if (curr == 'none') { |
if (curr == 'none') { |
disp='block'; |
disp='block'; |
numauthor = parseInt(numauthorrole); |
document.courseresform.authorrole.selectedIndex = 0; |
if (numauthor > 0) { |
document.courseresform.authorpath.selectedIndex = 0; |
document.courseresform.authorrole.selectedIndex = 0; |
document.courseresform.newresourceadd.selectedIndex = 0; |
select1priv_changed(); |
populateDirSelects(form,'authorrole','authorpath',1,0,0); |
document.courseresform.authorpath.selectedIndex = 0; |
toggleNewInCourse(document.courseresform); |
document.courseresform.newresourceadd.selectedIndex = 0; |
if (document.getElementById('newresource')) { |
toggleNewInCourse(document.courseresform); |
document.getElementById('newresource').style.display = 'none'; |
if (document.getElementById('newresource')) { |
|
document.getElementById('newresource').style.display = 'none'; |
|
} |
|
} else { |
|
if (numcrsdirs) { |
|
document.courseresform.authorpath.selectedIndex = 0; |
|
} |
|
} |
} |
if (document.courseresform.newresusetemp.length) { |
if (document.courseresform.newresusetemp.length) { |
document.courseresform.newresusetemp[0].checked = true; |
document.courseresform.newresusetemp[0].checked = true; |
Line 7669 function toggleNewsubdir(form) {
|
Line 7917 function toggleNewsubdir(form) {
|
|
|
function toggleCrsResTitle() { |
function toggleCrsResTitle() { |
if (document.getElementById('newresource')) { |
if (document.getElementById('newresource')) { |
if (document.courseresform.authorrole.options[document.courseresform.authorrole.selectedIndex].value == 'course') { |
var selloc = document.courseresform.authorrole.options[document.courseresform.authorrole.selectedIndex].value; |
|
if (selloc == 'course') { |
document.getElementById('newresource').style.display = 'inline'; |
document.getElementById('newresource').style.display = 'inline'; |
document.courseresform.newresourceadd[0].checked = true; |
document.courseresform.newresourceadd[0].checked = true; |
toggleNewInCourse(document.courseresform); |
toggleNewInCourse(document.courseresform); |
} else { |
} else { |
document.getElementById('newresource').style.display = 'none'; |
document.getElementById('newresource').style.display = 'none'; |
} |
} |
} |
} |
|
if (document.getElementById('newstdproblem')) { |
|
if (document.courseresform.authorpath.options[document.courseresform.authorpath.selectedIndex].value == 'switch') { |
|
document.getElementById('newstdproblem').style.display = 'none'; |
|
if (document.getElementById('stdprobswitch')) { |
|
document.getElementById('stdprobswitch').style.display = 'block'; |
|
} |
|
} else { |
|
document.getElementById('newstdproblem').style.display = 'block'; |
|
if (document.getElementById('stdprobswitch')) { |
|
document.getElementById('stdprobswitch').style.display = 'none'; |
|
} |
|
} |
|
} |
} |
} |
|
|
function toggleNewInCourse(form) { |
function toggleNewInCourse(form) { |
Line 7756 function getExample(width,height,scrolli
|
Line 8018 function getExample(width,height,scrolli
|
} |
} |
} |
} |
|
|
function toggleImportCrsres(caller,dircount) { |
function toggleImportCrsres(caller) { |
var disp = 'none'; |
var disp = 'none'; |
if (document.getElementById('importcrsresform')) { |
if (document.getElementById('importcrsresform')) { |
if (caller == 'res') { |
if (caller == 'res') { |
var numdirs = parseInt(dircount); |
|
var curr = document.getElementById('importcrsresform').style.display; |
var curr = document.getElementById('importcrsresform').style.display; |
if (curr == 'none') { |
if (curr == 'none') { |
disp='block'; |
disp='block'; |
if (numdirs > 1) { |
populateCrsSelects(document.crsresimportform,'coursepath','coursefile',1,'',1,0,1,1,0); |
select1res_changed(); |
if ((document.getElementById('importcrsrescontent')) && |
|
(document.getElementById('importcrsresempty'))) { |
|
var selelem = document.crsresimportform.elements['coursepath']; |
|
var numdirs = 0; |
|
if (selelem.options.length) { |
|
numdirs = selelem.options.length - 1; |
|
} |
|
if (numdirs) { |
|
document.getElementById('importcrsrescontent').style.display='block'; |
|
document.getElementById('importcrsresempty').style.display='none'; |
|
} else { |
|
document.getElementById('importcrsrescontent').style.display='none'; |
|
document.getElementById('importcrsresempty').style.display='block'; |
|
} |
} |
} |
} |
} |
} |
} |
Line 7775 function toggleImportCrsres(caller,dirco
|
Line 8049 function toggleImportCrsres(caller,dirco
|
return; |
return; |
} |
} |
|
|
|
$showfile_js |
|
|
|
function populateDirSelects(form,locsel,dirsel,setdir,recurse,nonemptydir) { |
|
var location = form.elements[locsel].options[form.elements[locsel].selectedIndex].value; |
|
if ((setdir) && (dirsel != null) && (dirsel != 'undefined') && (dirsel != '')) { |
|
var selelem = form.elements[dirsel]; |
|
var i, numfiles = selelem.options.length -1; |
|
if (numfiles >=0) { |
|
for (i = numfiles; i >= 0; i--) { |
|
selelem.remove(i); |
|
} |
|
} |
|
if ((location == '') || (location == null) || (location == 'undefined')) { |
|
if (selelem.options.length == 0) { |
|
selelem.options[selelem.options.length] = new Option('',''); |
|
selelem.selectedIndex = 0; |
|
} |
|
if (document.getElementById('newstdproblem')) { |
|
document.getElementById('newstdproblem').style.display = 'none'; |
|
} |
|
return; |
|
} |
|
var machineIds = new Array($machines_str); |
|
var athome = 0; |
|
var role = location; |
|
if ((location == 'author') || (location == 'course')) { |
|
if (document.getElementById('rolehome_'+location)) { |
|
var currhome = document.getElementById('rolehome_'+location).value; |
|
if ((currhome != '') && (currhome != null) && (currhome != 'undefined')) { |
|
if (machineIds.includes(currhome)) { |
|
athome = 1; |
|
} |
|
} |
|
} |
|
} else { |
|
const roleinfo = location.split('___'); |
|
role = encodeURIComponent(roleinfo[0]+'./'+roleinfo[1]); |
|
if (document.getElementById('rolehome_coauthor_'+roleinfo[1]+'_'+roleinfo[0])) { |
|
var currhome = document.getElementById('rolehome_coauthor_'+roleinfo[1]+'_'+roleinfo[0]).value; |
|
if ((currhome != '') && (currhome != null) && (currhome != 'undefined')) { |
|
if (machineIds.includes(currhome)) { |
|
athome = 1; |
|
} |
|
} |
|
} |
|
} |
|
if (athome) { |
|
if (document.getElementById('stdprobswitch')) { |
|
document.getElementById('stdprobswitch').style.display = 'none'; |
|
} |
|
if (document.getElementById('newstdproblem')) { |
|
document.getElementById('newstdproblem').style.display = 'none'; |
|
} |
|
var http = new XMLHttpRequest(); |
|
var url = "/adm/courseauthor"; |
|
var params = "role="+role+"&rec="+recurse+"&nonempty="+nonemptydir+"&addtop=1"; |
|
http.open("POST", url, true); |
|
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
|
http.onreadystatechange = function() { |
|
if (http.readyState == 4 && http.status == 200) { |
|
var data = JSON.parse(http.responseText); |
|
if (Array.isArray(data.dirs)) { |
|
var len = data.dirs.length; |
|
if (len) { |
|
if (len > 1) { |
|
selelem.options[selelem.options.length] = new Option('$js_lt{sele}',''); |
|
} |
|
} |
|
if (len) { |
|
var j; |
|
for (j = 0; j < len; j++) { |
|
selelem.options[selelem.options.length] = new Option(data.dirs[j],data.dirs[j]); |
|
} |
|
selelem.selectedIndex = 0; |
|
if (len == 1) { |
|
toggleCrsResTitle(); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
http.send(params); |
|
} else { |
|
selelem.options[selelem.options.length] = new Option('$js_lt{swit}','switch'); |
|
selelem.selectedIndex = 0; |
|
if (document.getElementById('stdprobswitch')) { |
|
document.getElementById('stdprobswitch').style.display = 'block'; |
|
} |
|
if (document.getElementById('newstdproblem')) { |
|
document.getElementById('newstdproblem').style.display = 'none'; |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
function switchForProb() { |
|
if (document.courseresform.authorpath.options[document.courseresform.authorpath.selectedIndex].value == 'switch') { |
|
var url = '/adm/switchserver?otherserver='; |
|
var newhostid = ''; |
|
var role = ''; |
|
var selloc = document.courseresform.authorrole.options[document.courseresform.authorrole.selectedIndex].value; |
|
if (selloc == 'author') { |
|
newhostid = document.courseresform.rolehome_author.value; |
|
role = "au./&js_escape($env{'user.domain'})/"; |
|
} else if (selloc == 'course') { |
|
newhostid = document.courseresform.rolehome_course.value; |
|
role = "&js_escape($env{'request.role'})"; |
|
} else { |
|
var items = new Array(); |
|
items = selloc.split('___'); |
|
var len = document.courseresform.rolehome_coauthor.length; |
|
if (null == len) { |
|
var currval = document.courseresform.rolehome_coauthor.value; |
|
if (null != currval) { |
|
var info = new Array(); |
|
info = currval.split('='); |
|
newhostid = info[2]; |
|
role = info[0]+'./'+info[1]; |
|
} |
|
} else { |
|
for (var i=0; i<len; i++) { |
|
var currval = document.courseresform.rolehome_coauthor[i].value; |
|
if (null != currval) { |
|
var info = new Array(); |
|
info = currval.split('='); |
|
if ((info[1] == items[1]+'/'+items[0]) && (info[0] == items[2])) { |
|
newhostid = info[2]; |
|
role = info[0]+'./'+info[1]; |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if (newhostid != '') { |
|
url += newhostid; |
|
if (role != '') { |
|
url += '&role='+role; |
|
} |
|
document.location.href = url; |
|
} |
|
} |
|
return; |
|
} |
|
|
function makeims(imsform) { |
function makeims(imsform) { |
if ((imsform.uploaddoc.value == '') || (!imsform.uploaddoc.value)) { |
if ((imsform.uploaddoc.value == '') || (!imsform.uploaddoc.value)) { |
alert("$js_lt{'imsfile'}"); |
alert("$js_lt{'imsfile'}"); |
Line 8524 function validImportCrsRes() {
|
Line 8944 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; |
} |
} |
|
|
Line 8756 END
|
Line 9176 END
|
<sourceavail></sourceavail> |
<sourceavail></sourceavail> |
<standards></standards> |
<standards></standards> |
<subject></subject> |
<subject></subject> |
<title></title> |
<title>Course Authoring Rights</title> |
END |
END |
close($fh); |
close($fh); |
} |
} |