version 1.624, 2017/04/25 22:18:59
|
version 1.631, 2017/05/10 23:58:24
|
Line 603 sub recurse_html {
|
Line 603 sub recurse_html {
|
} else { |
} else { |
$relfile = $dependency; |
$relfile = $dependency; |
$depurl = $currurlpath; |
$depurl = $currurlpath; |
$depurl =~ s{[^/]+$}{}; |
$depurl =~ s{[^/]+$}{}; |
$depurl .= $dependency; |
$depurl .= $dependency; |
($newcontainer) = ($depurl =~ m{^\Q$prefix\E(.+)$}); |
($newcontainer) = ($depurl =~ m{^\Q$prefix\E(.+)$}); |
} |
} |
next if ($relfile eq ''); |
next if ($relfile eq ''); |
my $newname = $replacehash->{$container}; |
my $newname = $replacehash->{$container}; |
Line 654 sub group_import {
|
Line 654 sub group_import {
|
} |
} |
} |
} |
if ($url) { |
if ($url) { |
if ($url =~ m{^(/adm/$coursedom/$coursenum/(\d+)/exttool)s?\:?(.*)$}) { |
if ($url =~ m{^(/adm/$coursedom/$coursenum/(\d+)/ext\.tool)\:?(.*)$}) { |
$url = $1; |
$url = $1; |
my $marker = $2; |
my $marker = $2; |
my $info = $3; |
my $info = $3; |
Line 677 sub group_import {
|
Line 677 sub group_import {
|
if (ref($ltitoolsref) eq 'HASH') { |
if (ref($ltitoolsref) eq 'HASH') { |
my @deleted; |
my @deleted; |
if (ref($ltitoolsref->{$toolid}) eq 'HASH') { |
if (ref($ltitoolsref->{$toolid}) eq 'HASH') { |
if ($ltitoolsref->{$toolid}->{'url'} =~ m{^https://}) { |
|
$url =~ s/exttool$/exttools/; |
|
} |
|
$toolhash{'id'} = $toolid; |
$toolhash{'id'} = $toolid; |
if (($toolhash{'target'} eq 'iframe') || ($toolhash{'target'} eq 'window')) { |
if (($toolhash{'target'} eq 'iframe') || ($toolhash{'target'} eq 'tab') || |
|
($toolhash{'target'} eq 'window')) { |
if ($toolhash{'target'} eq 'window') { |
if ($toolhash{'target'} eq 'window') { |
foreach my $item ('width','height') { |
foreach my $item ('width','height') { |
$toolhash{$item} =~ s/^\s+//; |
$toolhash{$item} =~ s/^\s+//; |
Line 699 sub group_import {
|
Line 697 sub group_import {
|
} 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}; |
} |
} |
} |
} |
Line 719 sub group_import {
|
Line 717 sub group_import {
|
} |
} |
} |
} |
} |
} |
|
} elsif ($toolhash{'target'} eq 'tab') { |
|
foreach my $item ('width','height') { |
|
delete($toolhash{$item}); |
|
if ($residx) { |
|
if ($toolsettings{$item}) { |
|
push(@deleted,$item); |
|
} |
|
} |
|
} |
} |
} |
if (ref($ltitoolsref->{$toolid}->{'crsconf'}) eq 'HASH') { |
if (ref($ltitoolsref->{$toolid}->{'crsconf'}) eq 'HASH') { |
foreach my $item ('label','title','linktext','explanation') { |
foreach my $item ('label','title','linktext','explanation') { |
Line 764 sub group_import {
|
Line 771 sub group_import {
|
$donechk = 1; |
$donechk = 1; |
} |
} |
if ($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) { |
if ($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) { |
&contained_map_check($url,$folder,\%removefrommap,\%removeparam, |
&contained_map_check($url,$folder,$coursenum,$coursedom,\%removefrommap, |
\%addedmaps,\%hierarchy,\%titles,$allmaps); |
\%removeparam,\%addedmaps,\%hierarchy,\%titles,$allmaps); |
$importuploaded = 1; |
$importuploaded = 1; |
} elsif ($url =~ m{^/res/.+\.(page|sequence)$}) { |
} elsif ($url =~ m{^/res/.+\.(page|sequence)$}) { |
next if ($allmaps->{$url}); |
next if ($allmaps->{$url}); |
Line 805 $initialtext
|
Line 812 $initialtext
|
</html> |
</html> |
END |
END |
$env{'form.output'}=$newhtml; |
$env{'form.output'}=$newhtml; |
my $result = |
my $result = |
&Apache::lonnet::finishuserfileupload($coursenum,$coursedom, |
&Apache::lonnet::finishuserfileupload($coursenum,$coursedom, |
'output', |
'output', |
"$filepath/$residx/$fname.html"); |
"$filepath/$residx/$fname.html"); |
Line 964 sub docs_change_log {
|
Line 971 sub docs_change_log {
|
if ($supplementalflag) { |
if ($supplementalflag) { |
$tid = 2; |
$tid = 2; |
} |
} |
my ($breadcrumbtrail) = |
my ($breadcrumbtrail) = |
&Apache::lonhtmlcommon::docs_breadcrumbs($allowed,$crstype,1); |
&Apache::lonhtmlcommon::docs_breadcrumbs($allowed,$crstype,1); |
$r->print($breadcrumbtrail. |
$r->print($breadcrumbtrail. |
&generate_edit_table($tid,\%orderhash,undef,$iconpath,$jumpto, |
&generate_edit_table($tid,\%orderhash,undef,$iconpath,$jumpto, |
Line 1163 sub update_paste_buffer {
|
Line 1170 sub update_paste_buffer {
|
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; |
$pasteurls{$cid.'_'.$url.'_'.$mapidx} = 1; |
Line 1216 sub update_paste_buffer {
|
Line 1223 sub update_paste_buffer {
|
$subdir = $prefix; |
$subdir = $prefix; |
} |
} |
my (%addedmaps,%removefrommap,%removeparam,%hierarchy,%titles,%allmaps); |
my (%addedmaps,%removefrommap,%removeparam,%hierarchy,%titles,%allmaps); |
&contained_map_check($url,$folder,\%removefrommap,\%removeparam,\%addedmaps, |
&contained_map_check($url,$folder,$coursenum,$coursedom,\%removefrommap, |
\%hierarchy,\%titles,\%allmaps); |
\%removeparam,\%addedmaps,\%hierarchy,\%titles,\%allmaps); |
if (ref($hierarchy{$url}) eq 'HASH') { |
if (ref($hierarchy{$url}) eq 'HASH') { |
my ($nested,$nestednames); |
my ($nested,$nestednames); |
&recurse_uploaded_maps($url,$subdir,\%hierarchy,\%titles,\$nested,\$nestednames); |
&recurse_uploaded_maps($url,$subdir,\%hierarchy,\%titles,\$nested,\$nestednames); |
Line 1295 sub print_paste_buffer {
|
Line 1302 sub print_paste_buffer {
|
my $extension = (split(/\./,$env{'docs.markedcopy_url_'.$suffix}))[-1]; |
my $extension = (split(/\./,$env{'docs.markedcopy_url_'.$suffix}))[-1]; |
if ($url =~ m{^(?:/adm/wrapper/ext|(?:http|https)(?::|:))//} ) { |
if ($url =~ m{^(?:/adm/wrapper/ext|(?:http|https)(?::|:))//} ) { |
$is_external = 1; |
$is_external = 1; |
} elsif ($url =~ m{^/adm/$match_domain/$match_courseid/\d+/exttools?$}) { |
} elsif ($url =~ m{^/adm/$match_domain/$match_courseid/\d+/ext\.tool$}) { |
$is_exttool = 1; |
$is_exttool = 1; |
} |
} |
if ($folder =~ /^supplemental/) { |
if ($folder =~ /^supplemental/) { |
Line 1329 sub print_paste_buffer {
|
Line 1336 sub print_paste_buffer {
|
$is_uploaded_map = 1; |
$is_uploaded_map = 1; |
} |
} |
} elsif (($url =~ m{^/res/lib/templates/\w+\.problem$}) || |
} elsif (($url =~ m{^/res/lib/templates/\w+\.problem$}) || |
($url =~ m{^/adm/($match_domain)/($match_username)/\d+/(bulletinboard|smppg)$})) { |
($url =~ m{^/adm/($match_domain)/($match_username)/\d+/(bulletinboard|smppg|ext\.tool)$})) { |
if ($cid ne $env{'request.course.id'}) { |
if ($cid ne $env{'request.course.id'}) { |
my ($srcdom,$srcnum) = split(/_/,$cid); |
my ($srcdom,$srcnum) = split(/_/,$cid); |
if ($env{"user.priv.cm./$srcdom/$srcnum"} =~ /\Q:mdc&F\E/) { |
if ($env{"user.priv.cm./$srcdom/$srcnum"} =~ /\Q:mdc&F\E/) { |
$othercrs = '<br />'.&mt('(from another course)'); |
if (($is_exttool) && ($srcdom ne $coursedom)) { |
|
$canpaste = 0; |
|
$nopaste = &mt('Paste from another domain unavailable.'); |
|
} else { |
|
$othercrs = '<br />'.&mt('(from another course)'); |
|
} |
} else { |
} else { |
$canpaste = 0; |
$canpaste = 0; |
$nopaste = &mt('Paste from another course unavailable.'); |
$nopaste = &mt('Paste from another course unavailable.'); |
} |
} |
} |
} |
} |
} |
if ($canpaste) { |
if ($canpaste) { |
push(@pasteable,$suffix); |
push(@pasteable,$suffix); |
} |
} |
} |
} |
my $buffer; |
my $buffer; |
if (($is_external) || ($is_exttool)) { |
if ($is_external) { |
$buffer = &mt('External Resource').': '. |
$buffer = &mt('External Resource').': '. |
&LONCAPA::map::qtescape($env{'docs.markedcopy_title_'.$suffix}).' ('. |
&LONCAPA::map::qtescape($env{'docs.markedcopy_title_'.$suffix}).' ('. |
&LONCAPA::map::qtescape($url).')'; |
&LONCAPA::map::qtescape($url).')'; |
|
} elsif ($is_exttool) { |
|
$buffer = &mt('External Tool').': '. |
|
&LONCAPA::map::qtescape($env{'docs.markedcopy_title_'.$suffix}); |
} else { |
} else { |
my $icon = &Apache::loncommon::icon($extension); |
my $icon = &Apache::loncommon::icon($extension); |
if ($extension eq 'sequence' && |
if ($extension eq 'sequence' && |
Line 1506 sub supp_pasteable {
|
Line 1521 sub supp_pasteable {
|
($url =~ m{^/uploaded/$match_domain/$match_courseid/(docs|supplemental)/(default|\d+)/\d+/}) || |
($url =~ m{^/uploaded/$match_domain/$match_courseid/(docs|supplemental)/(default|\d+)/\d+/}) || |
($url =~ m{^/adm/$match_domain/$match_username/aboutme}) || |
($url =~ m{^/adm/$match_domain/$match_username/aboutme}) || |
($url =~ m{^/public/$match_domain/$match_courseid/syllabus}) || |
($url =~ m{^/public/$match_domain/$match_courseid/syllabus}) || |
($url =~ m{^/adm/$match_domain/$match_courseid/\d+/exttools?$})) { |
($url =~ m{^/adm/$match_domain/$match_courseid/\d+/ext\.tool$})) { |
return 1; |
return 1; |
} |
} |
return; |
return; |
Line 1628 sub do_paste_from_buffer {
|
Line 1643 sub do_paste_from_buffer {
|
return(); |
return(); |
} |
} |
|
|
my (%msgs,%before,%after,@dopaste,%is_map,%notinsupp,%notincrs,%duplicate, |
my (%msgs,%before,%after,@dopaste,%is_map,%notinsupp,%notincrs,%notindom,%duplicate, |
%prefixchg,%srcdom,%srcnum,%srcmapidx,%marktomove,$save_err,$lockerrors,$allresult); |
%prefixchg,%srcdom,%srcnum,%srcmapidx,%marktomove,$save_err,$lockerrors,$allresult); |
|
|
foreach my $suffix (@topaste) { |
foreach my $suffix (@topaste) { |
Line 1657 sub do_paste_from_buffer {
|
Line 1672 sub do_paste_from_buffer {
|
$srcdom{$suffix} = $srcd; |
$srcdom{$suffix} = $srcd; |
$srcnum{$suffix} = $srcn; |
$srcnum{$suffix} = $srcn; |
} elsif (($url =~ m{^/res/lib/templates/\w+\.problem$}) || |
} elsif (($url =~ m{^/res/lib/templates/\w+\.problem$}) || |
($url =~ m{^/adm/$match_domain/$match_username/\d+/(bulletinboard|smppg)$})) { |
($url =~ m{^/adm/$match_domain/$match_username/\d+/(bulletinboard|smppg|ext\.tool)$})) { |
|
my $srctype= $1; |
my ($srcd,$srcn) = split(/_/,$cid); |
my ($srcd,$srcn) = split(/_/,$cid); |
# When paste buffer was populated using an active role in a different course |
# When paste buffer was populated using an active role in a different course |
# check for mdc privilege in the course from which the resource was pasted |
# check for mdc privilege in the course from which the resource was pasted |
Line 1667 sub do_paste_from_buffer {
|
Line 1683 sub do_paste_from_buffer {
|
next; |
next; |
} |
} |
} |
} |
|
if (($srctype eq 'ext.tool') && ($srcd ne $coursedom)) { |
|
$notindom{$suffix} = 1; |
|
next; |
|
} |
$srcdom{$suffix} = $srcd; |
$srcdom{$suffix} = $srcd; |
$srcnum{$suffix} = $srcn; |
$srcnum{$suffix} = $srcn; |
} |
} |
Line 1675 sub do_paste_from_buffer {
|
Line 1695 sub do_paste_from_buffer {
|
if ($url=~/\.(page|sequence)$/) { |
if ($url=~/\.(page|sequence)$/) { |
$is_map{$suffix} = 1; |
$is_map{$suffix} = 1; |
} |
} |
|
|
if ($url =~ m{^/uploaded/$match_domain/$match_courseid/([^/]+)}) { |
if ($url =~ m{^/uploaded/$match_domain/$match_courseid/([^/]+)}) { |
my $oldprefix = $1; |
my $oldprefix = $1; |
# When pasting content from Main Content to Supplemental Content and vice versa |
# When pasting content from Main Content to Supplemental Content and vice versa |
Line 1720 sub do_paste_from_buffer {
|
Line 1739 sub do_paste_from_buffer {
|
%msgs = &Apache::lonlocal::texthash ( |
%msgs = &Apache::lonlocal::texthash ( |
notinsupp => 'Paste failed: content type is not supported within Supplemental Content', |
notinsupp => 'Paste failed: content type is not supported within Supplemental Content', |
notincrs => 'Paste failed: Item is from a different course which you do not have rights to edit.', |
notincrs => 'Paste failed: Item is from a different course which you do not have rights to edit.', |
|
notindom => 'Paste failed: Item is an external tool from a course in a different donain.', |
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 1773 sub do_paste_from_buffer {
|
Line 1793 sub do_paste_from_buffer {
|
if ($is_map{$suffix}) { |
if ($is_map{$suffix}) { |
# If pasting a map, check if map contains other maps |
# If pasting a map, check if map contains other maps |
my (%hierarchy,%titles); |
my (%hierarchy,%titles); |
&contained_map_check($url,$folder,\%removefrommap,\%removeparam, |
&contained_map_check($url,$folder,$coursenum,$coursedom, |
\%addedmaps,\%hierarchy,\%titles,$allmaps); |
\%removefrommap,\%removeparam,\%addedmaps, |
|
\%hierarchy,\%titles,$allmaps); |
if ($url=~ m{^/uploaded/}) { |
if ($url=~ m{^/uploaded/}) { |
my $newurl; |
my $newurl; |
unless ($env{'form.docs.markedcopy_options_'.$suffix} eq 'move') { |
unless ($env{'form.docs.markedcopy_options_'.$suffix} eq 'move') { |
Line 1827 sub do_paste_from_buffer {
|
Line 1848 sub do_paste_from_buffer {
|
} |
} |
} |
} |
} |
} |
if ($url=~ m{/(bulletinboard|smppg)$}) { |
if ($url=~ m{/(bulletinboard|smppg|ext\.tool)$}) { |
my $prefix = $1; |
my $prefix = $1; |
my $fromothercrs; |
my $fromothercrs; |
#need to copy the db contents to a new one, unless this is a move. |
#need to copy the db contents to a new one, unless this is a move. |
Line 1844 sub do_paste_from_buffer {
|
Line 1865 sub do_paste_from_buffer {
|
} |
} |
} |
} |
unless (($env{'form.docs.markedcopy_options_'.$suffix} eq 'move') && (!$fromothercrs)) { |
unless (($env{'form.docs.markedcopy_options_'.$suffix} eq 'move') && (!$fromothercrs)) { |
my (%lockerr,$msg); |
my (%lockerr,$msg); |
my ($newurl,$result,$errtext) = |
my ($newurl,$result,$errtext) = |
&dbcopy(\%info,$coursedom,$coursenum,\%lockerr); |
&dbcopy(\%info,$coursedom,$coursenum,\%lockerr); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
Line 1855 sub do_paste_from_buffer {
|
Line 1876 sub do_paste_from_buffer {
|
$msg = &mt('Paste failed: An error occurred when copying the simple page.').' '.$errtext; |
$msg = &mt('Paste failed: An error occurred when copying the simple page.').' '.$errtext; |
} elsif ($prefix eq 'bulletinboard') { |
} elsif ($prefix eq 'bulletinboard') { |
$msg = &mt('Paste failed: An error occurred when copying the discussion board.').' '.$errtext; |
$msg = &mt('Paste failed: An error occurred when copying the discussion board.').' '.$errtext; |
|
} elsif ($prefix eq 'ext.tool') { |
|
$msg = &mt('Paste failed: An error occurred when copying the external tool.').' '.$errtext; |
} |
} |
$results{$suffix} = $result; |
$results{$suffix} = $result; |
$msgerrs{$suffix} = $msg; |
$msgerrs{$suffix} = $msg; |
Line 1901 sub do_paste_from_buffer {
|
Line 1924 sub do_paste_from_buffer {
|
if ($newdocsdir eq '') { |
if ($newdocsdir eq '') { |
$newdocsdir = 'default'; |
$newdocsdir = 'default'; |
} |
} |
if (($prefixchg{$suffix}) || |
if (($prefixchg{$suffix}) || |
($srcdom{$suffix} ne $coursedom) || |
($srcdom{$suffix} ne $coursedom) || |
($srcnum{$suffix} ne $coursenum) || |
($srcnum{$suffix} ne $coursenum) || |
($env{'form.docs.markedcopy_options_'.$suffix} ne 'move')) { |
($env{'form.docs.markedcopy_options_'.$suffix} ne 'move')) { |
my $newpath = "$newprefix/$newdocsdir/$newidx/$rem"; |
my $newpath = "$newprefix/$newdocsdir/$newidx/$rem"; |
Line 2114 sub dbcopy {
|
Line 2137 sub dbcopy {
|
my ($url,$result,$errtext); |
my ($url,$result,$errtext); |
if (ref($dbref) eq 'HASH') { |
if (ref($dbref) eq 'HASH') { |
$url = $dbref->{'src'}; |
$url = $dbref->{'src'}; |
if ($url =~ m{/(smppg|bulletinboard)$}) { |
if ($url =~ m{/(smppg|bulletinboard|ext\.tool)$}) { |
my $prefix = $1; |
my $prefix = $1; |
|
if ($prefix eq 'ext.tool') { |
|
$prefix = 'exttool'; |
|
} |
if (($dbref->{'cdom'} =~ /^$match_domain$/) && |
if (($dbref->{'cdom'} =~ /^$match_domain$/) && |
($dbref->{'cnum'} =~ /^$match_courseid$/)) { |
($dbref->{'cnum'} =~ /^$match_courseid$/)) { |
my $db_name; |
my $db_name; |
Line 2126 sub dbcopy {
|
Line 2152 sub dbcopy {
|
&Apache::lonsimplepage::get_db_name($url,$marker, |
&Apache::lonsimplepage::get_db_name($url,$marker, |
$dbref->{'cdom'}, |
$dbref->{'cdom'}, |
$dbref->{'cnum'}); |
$dbref->{'cnum'}); |
|
} elsif ($dbref->{'src'} =~ m{/ext\.tool$}) { |
|
$db_name = 'exttool_'.$marker; |
} else { |
} else { |
$db_name = 'bulletinpage_'.$marker; |
$db_name = 'bulletinpage_'.$marker; |
} |
} |
Line 2136 sub dbcopy {
|
Line 2164 sub dbcopy {
|
if (!$suffix) { |
if (!$suffix) { |
if ($prefix eq 'smppg') { |
if ($prefix eq 'smppg') { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a simple page [_1].',$url); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a simple page [_1].',$url); |
|
} elsif ($prefix eq 'exttool') { |
|
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying an external tool [_1].',$url); |
} else { |
} else { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a discussion board [_1].',$url); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix when copying a discussion board [_1].',$url); |
} |
} |
Line 2169 sub dbcopy {
|
Line 2199 sub dbcopy {
|
$result=&Apache::lonnet::put($db_name,\%contents, |
$result=&Apache::lonnet::put($db_name,\%contents, |
$coursedom,$coursenum); |
$coursedom,$coursenum); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$url =~ s{/(\d*)/(smppg|bulletinboard)$}{/$suffix/$2}x; |
$url =~ s{/(\d*)/(smppg|bulletinboard|ext\.tool)$}{/$suffix/$2}x; |
} |
} |
} |
} |
if (($freedlock ne 'ok') && (ref($lockerrorsref) eq 'HASH')) { |
if (($freedlock ne 'ok') && (ref($lockerrorsref) eq 'HASH')) { |
Line 2179 sub dbcopy {
|
Line 2209 sub dbcopy {
|
if ($prefix eq 'smppg') { |
if ($prefix eq 'smppg') { |
$lockerrorsref->{$prefix} .= |
$lockerrorsref->{$prefix} .= |
' '.&mt('This will prevent creation of additional simple pages in this course.'); |
' '.&mt('This will prevent creation of additional simple pages in this course.'); |
|
} elsif ($prefix eq 'exttool') { |
|
$lockerrorsref->{$prefix} .= |
|
' '.&mt('This will prevent addition of more external tools to this course.'); |
} else { |
} else { |
$lockerrorsref->{$prefix} .= ' '.&mt('This will prevent creation of additional discussion boards in this course.'); |
$lockerrorsref->{$prefix} .= ' '.&mt('This will prevent creation of additional discussion boards in this course.'); |
} |
} |
Line 2308 sub uniqueness_check {
|
Line 2341 sub uniqueness_check {
|
} |
} |
|
|
sub contained_map_check { |
sub contained_map_check { |
my ($url,$folder,$removefrommap,$removeparam,$addedmaps,$hierarchy,$titles, |
my ($url,$folder,$coursenum,$coursedom,$removefrommap,$removeparam,$addedmaps, |
$allmaps) = @_; |
$hierarchy,$titles,$allmaps) = @_; |
my $content = &Apache::lonnet::getfile($url); |
my $content = &Apache::lonnet::getfile($url); |
unless ($content eq '-1') { |
unless ($content eq '-1') { |
my $parser = HTML::TokeParser->new(\$content); |
my $parser = HTML::TokeParser->new(\$content); |
Line 2319 sub contained_map_check {
|
Line 2352 sub contained_map_check {
|
if ($token->[1] eq 'resource') { |
if ($token->[1] eq 'resource') { |
next if ($token->[2]->{'type'} eq 'zombie'); |
next if ($token->[2]->{'type'} eq 'zombie'); |
my $ressrc = $token->[2]->{'src'}; |
my $ressrc = $token->[2]->{'src'}; |
if ($folder =~ /^supplemental/) { |
if ($ressrc =~ m{^/adm/($match_domain)/$match_courseid/\d+/ext\.tool$}) { |
|
my $srcdom = $1; |
|
unless ($srcdom eq $coursedom) { |
|
$removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc; |
|
next; |
|
} |
|
} elsif ($folder =~ /^supplemental/) { |
unless (&supp_pasteable($ressrc)) { |
unless (&supp_pasteable($ressrc)) { |
$removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc; |
$removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc; |
next; |
next; |
Line 2338 sub contained_map_check {
|
Line 2377 sub contained_map_check {
|
$addedmaps->{$ressrc} = [$url]; |
$addedmaps->{$ressrc} = [$url]; |
} |
} |
} |
} |
&contained_map_check($ressrc,$folder,$removefrommap,$removeparam, |
&contained_map_check($ressrc,$folder,$coursenum,$coursedom,$removefrommap, |
$addedmaps,$hierarchy,$titles,$allmaps); |
$removeparam,$addedmaps,$hierarchy,$titles,$allmaps); |
} |
} |
} elsif ($token->[1] eq 'param') { |
} elsif ($token->[1] eq 'param') { |
if ($folder =~ /^supplemental/) { |
if ($folder =~ /^supplemental/) { |
Line 2874 sub update_parameter {
|
Line 2913 sub update_parameter {
|
'randomorder' => {}, |
'randomorder' => {}, |
); |
); |
foreach my $which (keys(%allchecked)) { |
foreach my $which (keys(%allchecked)) { |
$env{'form.all'.$which} =~ s/,$//; |
$env{'form.all'.$which} =~ s/,$//; |
if ($which eq 'randompick') { |
if ($which eq 'randompick') { |
foreach my $item (split(/,/,$env{'form.all'.$which})) { |
foreach my $item (split(/,/,$env{'form.all'.$which})) { |
my ($res,$value) = split(/:/,$item); |
my ($res,$value) = split(/:/,$item); |
Line 3236 sub editor {
|
Line 3275 sub editor {
|
} else { |
} else { |
return $errortxt; |
return $errortxt; |
} |
} |
} elsif ($url =~ m{^/adm/$coursedom/$coursenum/new/exttool}) { |
} elsif ($url =~ m{^/adm/$coursedom/$coursenum/new/ext\.tool}) { |
my ($suffix,$errortxt,$locknotfreed) = |
my ($suffix,$errortxt,$locknotfreed) = |
&new_timebased_suffix($coursedom,$coursenum,'exttool'); |
&new_timebased_suffix($coursedom,$coursenum,'exttool'); |
if ($locknotfreed) { |
if ($locknotfreed) { |
Line 3404 sub editor {
|
Line 3443 sub editor {
|
if (@allidx > 0) { |
if (@allidx > 0) { |
my $path; |
my $path; |
if ($env{'form.folderpath'}) { |
if ($env{'form.folderpath'}) { |
$path = |
$path = |
&HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
&HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
} |
} |
if (@allidx > 1) { |
if (@allidx > 1) { |
$to_show .= |
$to_show .= |
&Apache::loncommon::continue_data_table_row(). |
&Apache::loncommon::continue_data_table_row(). |
'<td colspan="2"> </td>'. |
'<td colspan="2"> </td>'. |
'<td>'. |
'<td>'. |
Line 3656 sub process_file_upload {
|
Line 3695 sub process_file_upload {
|
my $uploadphase = 'upload_embedded'; |
my $uploadphase = 'upload_embedded'; |
my $primaryurl = &HTML::Entities::encode($url,'<>&"'); |
my $primaryurl = &HTML::Entities::encode($url,'<>&"'); |
my $state = &embedded_form_elems($uploadphase,$primaryurl,$newidx); |
my $state = &embedded_form_elems($uploadphase,$primaryurl,$newidx); |
my ($embedded,$num) = |
my ($embedded,$num) = |
&Apache::loncommon::ask_for_embedded_content( |
&Apache::loncommon::ask_for_embedded_content( |
'/adm/coursedocs',$state,$allfiles,$codebase,{'docs_url' => $url}); |
'/adm/coursedocs',$state,$allfiles,$codebase,{'docs_url' => $url}); |
if ($embedded) { |
if ($embedded) { |
Line 3854 END
|
Line 3893 END
|
|/aboutme$ |
|/aboutme$ |
|/navmaps$ |
|/navmaps$ |
|/bulletinboard$ |
|/bulletinboard$ |
|/exttools?$ |
|/ext\.tool$ |
|\.html$)}x) |
|\.html$)}x) |
|| $isexternal) { |
|| $isexternal) { |
$skip_confirm = 1; |
$skip_confirm = 1; |
Line 4013 END
|
Line 4052 END
|
if (($ENV{'SERVER_PORT'} == 443) && ($exturl !~ /^https:/)) { |
if (($ENV{'SERVER_PORT'} == 443) && ($exturl !~ /^https:/)) { |
$nomodal = 1; |
$nomodal = 1; |
} |
} |
} elsif ($url=~m{^/adm/$coursedom/$coursenum/\d+/exttools?$}) { |
} elsif ($url=~m{^/adm/$coursedom/$coursenum/\d+/ext\.tool$}) { |
$url='/adm/wrapper'.$url; |
$url='/adm/wrapper'.$url; |
} elsif ($url eq "/public/$coursedom/$coursenum/syllabus") { |
} elsif ($url eq "/public/$coursedom/$coursenum/syllabus") { |
if (($ENV{'SERVER_PORT'} == 443) && |
if (($ENV{'SERVER_PORT'} == 443) && |
Line 4145 END
|
Line 4184 END
|
} |
} |
} |
} |
} |
} |
|
|
# Append randompick number, hidden, and encrypted with ":" to foldername, |
# Append randompick number, hidden, and encrypted with ":" to foldername, |
# so it gets transferred between levels |
# so it gets transferred between levels |
$folderpath.=$containerarg.'&'.$foldername. |
$folderpath.=$containerarg.'&'.$foldername. |
Line 4188 $form_end;
|
Line 4227 $form_end;
|
} |
} |
} elsif ($supplementalflag && !$allowed) { |
} elsif ($supplementalflag && !$allowed) { |
my $isexttool; |
my $isexttool; |
if ($url=~m{^/adm/$coursedom/$coursenum/\d+/exttools?$}) { |
if ($url=~m{^/adm/$coursedom/$coursenum/\d+/ext\.tool$}) { |
$url='/adm/wrapper'.$url; |
$url='/adm/wrapper'.$url; |
$isexttool = 1; |
$isexttool = 1; |
} |
} |
Line 4206 $form_end;
|
Line 4245 $form_end;
|
} |
} |
my ($tdalign,$tdwidth); |
my ($tdalign,$tdwidth); |
if ($allowed) { |
if ($allowed) { |
my $fileloc = |
my $fileloc = |
&Apache::lonnet::declutter(&Apache::lonnet::filelocation('',$orig_url)); |
&Apache::lonnet::declutter(&Apache::lonnet::filelocation('',$orig_url)); |
if ($isexternal) { |
if ($isexternal) { |
($editlink,$extresform) = |
($editlink,$extresform) = |
&Apache::lonextresedit::extedit_form(0,$residx,$orig_url,$title,$pathitem, |
&Apache::lonextresedit::extedit_form(0,$residx,$orig_url,$title,$pathitem, |
undef,undef,undef,undef,undef,undef, |
undef,undef,undef,undef,undef,undef, |
undef,$disabled); |
undef,$disabled); |
} elsif ($orig_url =~ m{^/adm/$coursedom/$coursenum/\d+/exttools?$}) { |
} elsif ($orig_url =~ m{^/adm/$coursedom/$coursenum/\d+/ext\.tool$}) { |
($editlink,$extresform) = |
($editlink,$extresform) = |
&Apache::lonextresedit::extedit_form(0,$residx,$orig_url,$title,$pathitem, |
&Apache::lonextresedit::extedit_form(0,$residx,$orig_url,$title,$pathitem, |
undef,undef,undef,'tool',$coursedom, |
undef,undef,undef,'tool',$coursedom, |
Line 4226 $form_end;
|
Line 4265 $form_end;
|
if ($supplementalflag) { |
if ($supplementalflag) { |
$suppanchor = $anchor; |
$suppanchor = $anchor; |
} |
} |
my $jscall = |
my $jscall = |
&Apache::lonhtmlcommon::jump_to_editres($cfile,$home, |
&Apache::lonhtmlcommon::jump_to_editres($cfile,$home, |
$switchserver, |
$switchserver, |
$forceedit, |
$forceedit, |
Line 4428 sub new_timebased_suffix {
|
Line 4467 sub new_timebased_suffix {
|
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new folder/page.'); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new folder/page.'); |
} elsif ($type eq 'smppg') { |
} elsif ($type eq 'smppg') { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new simple page.'); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new simple page.'); |
|
} elsif ($type eq 'exttool') { |
|
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new external tool.'); |
} else { |
} else { |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new discussion board.'); |
$errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new discussion board.'); |
} |
} |
Line 4436 sub new_timebased_suffix {
|
Line 4477 sub new_timebased_suffix {
|
} |
} |
} |
} |
if ($freedlock ne 'ok') { |
if ($freedlock ne 'ok') { |
$locknotfreed = |
$locknotfreed = |
'<div class="LC_error">'. |
'<div class="LC_error">'. |
&mt('There was a problem removing a lockfile.').' '; |
&mt('There was a problem removing a lockfile.').' '; |
if ($type eq 'paste') { |
if ($type eq 'paste') { |
Line 4456 sub new_timebased_suffix {
|
Line 4497 sub new_timebased_suffix {
|
} elsif ($type eq 'smppg') { |
} elsif ($type eq 'smppg') { |
$locknotfreed .= |
$locknotfreed .= |
&mt('This will prevent creation of additional simple pages in this course.'); |
&mt('This will prevent creation of additional simple pages in this course.'); |
|
} elsif ($type eq 'exttool') { |
|
$locknotfreed .= |
|
&mt('This will prevent creation of additional external tools in this course.'); |
} else { |
} else { |
$locknotfreed .= |
$locknotfreed .= |
&mt('This will prevent creation of additional discussion boards in this course.'); |
&mt('This will prevent creation of additional discussion boards in this course.'); |
Line 5081 sub handler {
|
Line 5125 sub handler {
|
# |
# |
# --------------------------------------------- Initialize help topics for this |
# --------------------------------------------- Initialize help topics for this |
foreach my $topic ('Adding_Course_Doc','Main_Course_Documents', |
foreach my $topic ('Adding_Course_Doc','Main_Course_Documents', |
'Adding_External_Resource','Navigate_Content', |
'Adding_External_Resource','Adding_External_Tool', |
'Adding_Folders','Docs_Overview', 'Load_Map', |
'Navigate_Content','Adding_Folders','Docs_Overview', |
'Supplemental','Score_Upload_Form','Adding_Pages', |
'Load_Map','Supplemental','Score_Upload_Form', |
'Importing_LON-CAPA_Resource','Importing_IMS_Course', |
'Adding_Pages','Importing_LON-CAPA_Resource', |
'Uploading_From_Harddrive','Course_Roster','Web_Page', |
'Importing_IMS_Course','Uploading_From_Harddrive', |
'Dropbox','Simple_Problem') { |
'Course_Roster','Web_Page','Dropbox','Simple_Problem') { |
$help{$topic}=&Apache::loncommon::help_open_topic('Docs_'.$topic); |
$help{$topic}=&Apache::loncommon::help_open_topic('Docs_'.$topic); |
} |
} |
# Composite help files |
# Composite help files |
Line 5509 sub handler {
|
Line 5553 sub handler {
|
my ($destination,$dir_root) = &embedded_destination(); |
my ($destination,$dir_root) = &embedded_destination(); |
my $url_root = '/uploaded/'.$docudom.'/'.$docuname; |
my $url_root = '/uploaded/'.$docudom.'/'.$docuname; |
my $actionurl = '/adm/coursedocs'; |
my $actionurl = '/adm/coursedocs'; |
my ($result,$flag) = |
my ($result,$flag) = |
&Apache::loncommon::upload_embedded('coursedoc',$destination, |
&Apache::loncommon::upload_embedded('coursedoc',$destination, |
$docuname,$docudom,$dir_root,$url_root,undef,undef,undef,$state, |
$docuname,$docudom,$dir_root,$url_root,undef,undef,undef,$state, |
$actionurl); |
$actionurl); |
Line 5520 sub handler {
|
Line 5564 sub handler {
|
my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my ($destination,$dir_root) = &embedded_destination(); |
my ($destination,$dir_root) = &embedded_destination(); |
my $result = |
my $result = |
&Apache::loncommon::modify_html_refs('coursedoc',$destination, |
&Apache::loncommon::modify_html_refs('coursedoc',$destination, |
$docuname,$docudom,undef, |
$docuname,$docudom,undef, |
$dir_root); |
$dir_root); |
$r->print($result.&return_to_editor()); |
$r->print($result.&return_to_editor()); |
} elsif ($env{'form.phase'} eq 'decompress_uploaded') { |
} elsif ($env{'form.phase'} eq 'decompress_uploaded') { |
$uploadphase = 'decompress_phase_one'; |
$uploadphase = 'decompress_phase_one'; |
$r->print(&decompression_phase_one(). |
$r->print(&decompression_phase_one(). |
Line 5550 sub handler {
|
Line 5594 sub handler {
|
'impo' => 'Import', |
'impo' => 'Import', |
'lnks' => 'Import from Stored Links', |
'lnks' => 'Import from Stored Links', |
'impm' => 'Import from Assembled Map', |
'impm' => 'Import from Assembled Map', |
'imcr' => 'Import from Course Resources', |
'imcr' => 'Import from Course Resources', |
'extr' => 'External Resource', |
'extr' => 'External Resource', |
'extt' => 'External Tool', |
'extt' => 'External Tool', |
'selm' => 'Select Map', |
'selm' => 'Select Map', |
Line 5561 sub handler {
|
Line 5605 sub handler {
|
'navc' => 'Table of Contents', |
'navc' => 'Table of Contents', |
'sipa' => 'Simple Course Page', |
'sipa' => 'Simple Course Page', |
'sipr' => 'Simple Problem', |
'sipr' => 'Simple Problem', |
'webp' => 'Blank Web Page (editable)', |
'webp' => 'Blank Web Page (editable)', |
'stpr' => 'Standard Problem', |
'stpr' => 'Standard Problem', |
'news' => 'New sub-directory', |
'news' => 'New sub-directory', |
'crpr' => 'Create Problem', |
'crpr' => 'Create Problem', |
Line 6010 NWEBFORM
|
Line 6054 NWEBFORM
|
$numauthor ++; |
$numauthor ++; |
} |
} |
} |
} |
my ($pickdir,$showtitle);; |
my ($pickdir,$showtitle); |
if ($numauthor) { |
if ($numauthor) { |
my @order; |
my @order; |
my $defrole; |
my $defrole; |
Line 6237 NGFFORM
|
Line 6281 NGFFORM
|
); |
); |
if (keys(%ltitools)) { |
if (keys(%ltitools)) { |
push(@importdoc, |
push(@importdoc, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extt}.'" onclick="toggleUpload(\'tool\');" />'=>$exttoolform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.png" alt="'.$lt{extt}.'" onclick="toggleUpload(\'tool\');" />'=>$exttoolform}, |
); |
); |
} |
} |
unless ($container eq 'page') { |
unless ($container eq 'page') { |
Line 6319 unless ($container eq 'page') {
|
Line 6363 unless ($container eq 'page') {
|
<form action="/adm/coursedocs" method="post" name="supuploaddocument" enctype="multipart/form-data"> |
<form action="/adm/coursedocs" method="post" name="supuploaddocument" enctype="multipart/form-data"> |
<fieldset id="uploadsuppdocform" style="display: none;"> |
<fieldset id="uploadsuppdocform" style="display: none;"> |
<legend>$lt{'upfi'}</legend> |
<legend>$lt{'upfi'}</legend> |
<input type="hidden" name="active" value="ee" /> |
<input type="hidden" name="active" value="ee" /> |
$fileupload |
$fileupload |
<br /> |
<br /> |
<br /> |
<br /> |
Line 6414 my @supimportdoc = (
|
Line 6458 my @supimportdoc = (
|
=>$supextform}); |
=>$supextform}); |
if (keys(%ltitools)) { |
if (keys(%ltitools)) { |
push(@supimportdoc, |
push(@supimportdoc, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extt}.'" onclick="javascript:toggleUpload(\'supptool\')" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.png" alt="'.$lt{extt}.'" onclick="javascript:toggleUpload(\'supptool\')" />' |
=>$supexttoolform}); |
=>$supexttoolform}); |
} |
} |
push(@supimportdoc, |
push(@supimportdoc, |
Line 6446 my %suporderhash = (
|
Line 6490 my %suporderhash = (
|
} |
} |
&Apache::lonnet::get_numsuppfiles($coursenum,$coursedom,1); |
&Apache::lonnet::get_numsuppfiles($coursenum,$coursedom,1); |
undef($suppchanges); |
undef($suppchanges); |
} |
} |
} |
} |
} |
} |
} elsif ($supplementalflag) { |
} elsif ($supplementalflag) { |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, |
Line 6478 my %suporderhash = (
|
Line 6522 my %suporderhash = (
|
&entryline(0,&mt("Click to download or use your browser's Save Link function"),$showdoc).'</table>'); |
&entryline(0,&mt("Click to download or use your browser's Save Link function"),$showdoc).'</table>'); |
} |
} |
} |
} |
unless ($noendpage) { |
unless ($noendpage) { |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
return OK; |
return OK; |
Line 6550 sub decompression_phase_one {
|
Line 6594 sub decompression_phase_one {
|
$error = &mt('Archive file "[_1]" not in the expected location.',$env{'form.archiveurl'}); |
$error = &mt('Archive file "[_1]" not in the expected location.',$env{'form.archiveurl'}); |
} else { |
} else { |
my $file = $1; |
my $file = $1; |
$output = |
$output = |
&Apache::loncommon::process_decompression($docudom,$docuname,$file, |
&Apache::loncommon::process_decompression($docudom,$docuname,$file, |
$destination,$dir_root, |
$destination,$dir_root, |
$hiddenelem); |
$hiddenelem); |
Line 6909 sub editing_js {
|
Line 6953 sub editing_js {
|
if ($hostname ne '') { |
if ($hostname ne '') { |
$backtourl = 'http://'.$hostname.$backtourl; |
$backtourl = 'http://'.$hostname.$backtourl; |
} |
} |
$backtourl .= (($backtourl =~ /\?/) ? '&':'?').'usehttp=1'; |
$backtourl .= (($backtourl =~ /\?/) ? '&':'?').'usehttp=1'; |
} |
} |
} elsif ($backtourl =~ m{^/adm/wrapper/ext/(?!https:)}) { |
} elsif ($backtourl =~ m{^/adm/wrapper/ext/(?!https:)}) { |
if (($ENV{'SERVER_PORT'} == 443) && ($hostname ne '')) { |
if (($ENV{'SERVER_PORT'} == 443) && ($hostname ne '')) { |