version 1.691, 2023/01/05 21:33:31
|
version 1.710, 2024/06/07 14:37:55
|
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 103 sub authorhosts {
|
Line 102 sub authorhosts {
|
my %outhash=(); |
my %outhash=(); |
my $home=0; |
my $home=0; |
my $other=0; |
my $other=0; |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
foreach my $key (keys(%env)) { |
foreach my $key (keys(%env)) { |
if ($key=~/^user\.role\.(au|ca)\.(.+)$/) { |
if ($key=~/^user\.role\.(au|ca)\.(.+)$/) { |
my $role=$1; |
my $role=$1; |
Line 119 sub authorhosts {
|
Line 119 sub authorhosts {
|
} |
} |
my $allowed=0; |
my $allowed=0; |
my $myhome=&Apache::lonnet::homeserver($ca,$cd); |
my $myhome=&Apache::lonnet::homeserver($ca,$cd); |
my @ids=&Apache::lonnet::current_machine_ids(); |
|
foreach my $id (@ids) { |
foreach my $id (@ids) { |
if ($id eq $myhome) { |
if ($id eq $myhome) { |
$allowed=1; |
$allowed=1; |
Line 264 ENDJS
|
Line 263 ENDJS
|
add_entries => {'onload' => "hide_searching();"}, |
add_entries => {'onload' => "hide_searching();"}, |
}; |
}; |
} |
} |
$r->print(&Apache::loncommon::start_page('Copy '.$crstype.' Content to Authoring Space',$js,$starthash)."\n". |
$r->print(&Apache::loncommon::start_page('Copy uploaded content to Authoring Space',$js,$starthash)."\n". |
&Apache::lonhtmlcommon::breadcrumbs('Copy '.$crstype.' Content to Authoring Space')."\n"); |
&Apache::lonhtmlcommon::breadcrumbs('Copy uploaded content to Authoring Space')."\n"); |
$r->print(&startContentScreen('tools')); |
$r->print(&startContentScreen('tools')); |
my ($home,$other,%outhash)=&authorhosts(); |
my ($home,$other,%outhash)=&authorhosts(); |
unless ($home) { |
unless ($home) { |
Line 719 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 728 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 741 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 1207 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 1405 sub print_paste_buffer {
|
Line 1419 sub print_paste_buffer {
|
} |
} |
|
|
my @currpaste = split(/,/,$env{'docs.markedcopies'}); |
my @currpaste = split(/,/,$env{'docs.markedcopies'}); |
my ($pasteitems,@pasteable); |
my ($pasteitems,@pasteable,$same_institution,$checkedsameinst); |
my $clipboardcount = 0; |
my $clipboardcount = 0; |
|
|
# Construct identifiers for current contents of user's paste buffer |
# Construct identifiers for current contents of user's paste buffer |
Line 1418 sub print_paste_buffer {
|
Line 1432 sub print_paste_buffer {
|
($url ne '')) { |
($url ne '')) { |
$clipboardcount ++; |
$clipboardcount ++; |
my ($is_external,$othercourse,$fromsupp,$is_uploaded_map,$parent, |
my ($is_external,$othercourse,$fromsupp,$is_uploaded_map,$parent, |
$canpaste,$nopaste,$othercrs,$areachange,$is_exttool); |
$canpaste,$nopaste,$othercrs,$areachange,$is_exttool,$toolcdom, |
|
$toolcnum,$marker); |
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+/ext\.tool$}) { |
} elsif ($url =~ m{^/adm/($match_domain)/($match_courseid)/(\d+)/ext\.tool$}) { |
|
($toolcdom,$toolcnum,$marker) = ($1,$2,$3); |
$is_exttool = 1; |
$is_exttool = 1; |
} |
} |
if ($folder =~ /^supplemental/) { |
if ($folder =~ /^supplemental/) { |
Line 1460 sub print_paste_buffer {
|
Line 1476 sub print_paste_buffer {
|
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/) { |
if (($is_exttool) && ($srcdom ne $coursedom)) { |
if ($is_exttool) { |
$canpaste = 0; |
if ($toolcdom ne $coursedom) { |
$nopaste = &mt('Paste from another domain unavailable.'); |
$canpaste = 0; |
} else { |
$nopaste = &mt('Paste from another domain unavailable.'); |
$othercrs = '<br />'.&mt('(from another course)'); |
} elsif ($toolcnum ne $coursenum) { |
|
my %toolsettings = |
|
&Apache::lonnet::dump('exttool_'.$marker,$toolcdom,$toolcnum); |
|
my %tooltypes = &Apache::loncommon::usable_exttools(); |
|
if ((($toolsettings{'id'} =~ /^c\d+$/) && (!$tooltypes{'crs'})) || |
|
(($toolsettings{'id'} =~ /^\d+$/) && (!$tooltypes{'dom'}))) { |
|
$canpaste = 0; |
|
$nopaste = &mt('Paste from another course unavailable.'); |
|
} elsif ($toolsettings{'id'} =~ /^c\d+$/) { |
|
unless ($checkedsameinst) { |
|
my $primary_id = &Apache::lonnet::domain($coursedom,'primary'); |
|
my $intdom = &Apache::lonnet::internet_dom($primary_id); |
|
if ($intdom ne '') { |
|
my $internet_names = |
|
&Apache::lonnet::get_internet_names($Apache::lonnet::perlvar{'lonHostID'}); |
|
if (ref($internet_names) eq 'ARRAY') { |
|
if (grep(/^\Q$intdom\E$/,@{$internet_names})) { |
|
$same_institution = 1; |
|
} |
|
} |
|
} |
|
$checkedsameinst = 1; |
|
} |
|
if ($same_institution) { |
|
$othercrs = '<br />'.&mt('(from another course)'); |
|
} else { |
|
$nopaste = &mt('Paste from another course 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.'); |
} |
} |
} |
} |
|
} 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 1763 sub do_paste_from_buffer {
|
Line 1818 sub do_paste_from_buffer {
|
return(); |
return(); |
} |
} |
|
|
my (%msgs,%before,%after,@dopaste,%is_map,%notinsupp,%notincrs,%notindom,%duplicate, |
my (%msgs,%before,%after,@dopaste,%is_map,%notinsupp,%notincrs,%notindom, |
%prefixchg,%srcdom,%srcnum,%srcmapidx,%marktomove,$save_err,$lockerrors,$allresult); |
%othcrstool,%othcrsres,%duplicate,%prefixchg,%srcdom,%srcnum,%srcmapidx, |
|
%marktomove,$save_err,$lockerrors,$allresult,%currcrsltitools, |
|
%currltititles,$currltimax,$gotcrsltitools); |
|
$currltimax = 0; |
|
$gotcrsltitools = 0; |
foreach my $suffix (@topaste) { |
foreach my $suffix (@topaste) { |
my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url_'.$suffix}); |
my $url=&LONCAPA::map::qtescape($env{'docs.markedcopy_url_'.$suffix}); |
my $cid=&LONCAPA::map::qtescape($env{'docs.markedcopy_crs_'.$suffix}); |
my $cid=&LONCAPA::map::qtescape($env{'docs.markedcopy_crs_'.$suffix}); |
Line 1804 sub do_paste_from_buffer {
|
Line 1862 sub do_paste_from_buffer {
|
} |
} |
} |
} |
# When buffer was populated using an active role in a different course |
# When buffer was populated using an active role in a different course |
# disallow pasting of External Tool if course is in a different domain. |
# disallow pasting of External Tool if course is in a different domain, |
if (($url =~ m{/ext\.tool$}) && ($srcd ne $coursedom)) { |
# or if External Tool use is not permitted in this course. |
$notindom{$suffix} = 1; |
if ($url =~ m{^/adm/($match_domain)/($match_courseid)/(\d+)/ext\.tool$}) { |
next; |
my ($toolcdom,$toolcnum,$marker) = ($1,$2,$3); |
|
if ($toolcdom ne $coursedom) { |
|
$notindom{$suffix} = 1; |
|
next; |
|
} elsif ($toolcnum ne $coursenum) { |
|
my %toolsettings = |
|
&Apache::lonnet::dump('exttool_'.$marker,$toolcdom,$toolcnum); |
|
my %tooltypes = &Apache::loncommon::usable_exttools(); |
|
if ((($toolsettings{'id'} =~ /^c\d+$/) && (!$tooltypes{'crs'})) || |
|
(($toolsettings{'id'} =~ /^\d+$/) && (!$tooltypes{'dom'}))) { |
|
$othcrstool{$suffix} = 1; |
|
next; |
|
} |
|
if ($toolsettings{'id'} =~ /^c\d+$/) { |
|
unless ($gotcrsltitools) { |
|
%currcrsltitools = |
|
&Apache::lonnet::get_course_lti($coursenum,$coursedom,'consumer'); |
|
foreach my $item (sort(keys(%currcrsltitools))) { |
|
if (ref($currcrsltitools{$item}) eq 'HASH') { |
|
$currltimax ++; |
|
if (ref($currltititles{$currcrsltitools{$item}{'title'}}) eq 'ARRAY') { |
|
push(@{$currltititles{$currcrsltitools{$item}{'title'}}},$item); |
|
} else { |
|
$currltititles{$currcrsltitools{$item}{'title'}} = [$item]; |
|
} |
|
} |
|
} |
|
$gotcrsltitools = 1; |
|
} |
|
} |
|
} |
} |
} |
$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 1862 sub do_paste_from_buffer {
|
Line 1960 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.', |
|
othcrstool => 'Paste failed: Item is an external tool from a different course, for which use is not allowed in this course.', |
|
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 1890 sub do_paste_from_buffer {
|
Line 1990 sub do_paste_from_buffer {
|
# Retrieve information about all course maps in main content area |
# Retrieve information about all course maps in main content area |
|
|
my $allmaps = {}; |
my $allmaps = {}; |
my (@toclear,%mapurls,%lockerrs,%msgerrs,%results,$donechk); |
my (@toclear,%mapurls,%lockerrs,%msgerrs,%results,$donechk, |
|
@updatetoolsenc,$updatetoolscache,$checkedsameinst, |
|
$same_institution); |
|
|
# Loop over the items to paste |
# Loop over the items to paste |
foreach my $suffix (@dopaste) { |
foreach my $suffix (@dopaste) { |
Line 1989 sub do_paste_from_buffer {
|
Line 2091 sub do_paste_from_buffer {
|
$fromothercrs = 1; |
$fromothercrs = 1; |
$info{'cdom'} = $srcdom{$suffix}; |
$info{'cdom'} = $srcdom{$suffix}; |
$info{'cnum'} = $srcnum{$suffix}; |
$info{'cnum'} = $srcnum{$suffix}; |
|
unless ($checkedsameinst) { |
|
my $primary_id = &Apache::lonnet::domain($coursedom,'primary'); |
|
my $intdom = &Apache::lonnet::internet_dom($primary_id); |
|
if ($intdom ne '') { |
|
my $internet_names = |
|
&Apache::lonnet::get_internet_names($Apache::lonnet::perlvar{'lonHostID'}); |
|
if (ref($internet_names) eq 'ARRAY') { |
|
if (grep(/^\Q$intdom\E$/,@{$internet_names})) { |
|
$same_institution = 1; |
|
} |
|
} |
|
} |
|
$checkedsameinst = 1; |
|
} |
} |
} |
} |
} |
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,\%currltititles, |
|
\$currltimax,\@updatetoolsenc,\$updatetoolscache,$same_institution); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$url = $newurl; |
$url = $newurl; |
$title=&mt('Copy of').' '.$title; |
$title=&mt('Copy of').' '.$title; |
Line 2163 sub do_paste_from_buffer {
|
Line 2280 sub do_paste_from_buffer {
|
} |
} |
} |
} |
} |
} |
|
if (($updatetoolscache) || (@updatetoolsenc)) { |
|
&update_ltitools_caches($coursedom,$coursenum,$updatetoolscache, |
|
\@updatetoolsenc); |
|
} |
&clear_from_buffer(\@toclear,\@currpaste); |
&clear_from_buffer(\@toclear,\@currpaste); |
my $msgsarray; |
my $msgsarray; |
foreach my $suffix (keys(%msgs)) { |
foreach my $suffix (keys(%msgs)) { |
Line 2211 sub clear_from_buffer {
|
Line 2332 sub clear_from_buffer {
|
return $numdel; |
return $numdel; |
} |
} |
|
|
|
sub update_ltitools_caches { |
|
my ($coursedom,$coursenum,$updatetoolscache,$updatetoolsenc) = @_; |
|
my $hashid=$coursedom.'_'.$coursenum; |
|
if ($updatetoolscache) { |
|
&Apache::lonnet::devalidate_cache_new('courseltitools',$hashid); |
|
} |
|
if ((ref($updatetoolsenc) eq 'ARRAY') && |
|
(@{$updatetoolsenc})) { |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
my $updatedone; |
|
foreach my $lonhost (@{$updatetoolsenc}) { |
|
if (grep(/^\Q$lonhost\E$/,@ids)) { |
|
unless ($updatedone) { |
|
&Apache::lonnet::devalidate_cache_new('crsltitoolsenc',$hashid); |
|
} |
|
$updatedone = 1; |
|
} else { |
|
&Apache::lonnet::remote_devalidate_cache($lonhost,["crsltitoolsenc:$hashid"]); |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
sub get_newmap_url { |
sub get_newmap_url { |
my ($url,$folder,$prefixchg,$coursedom,$coursenum,$srcdom,$srcnum, |
my ($url,$folder,$prefixchg,$coursedom,$coursenum,$srcdom,$srcnum, |
$titleref,$allmaps,$newurls) = @_; |
$titleref,$allmaps,$newurls) = @_; |
Line 2272 sub get_newmap_url {
|
Line 2417 sub get_newmap_url {
|
} |
} |
|
|
sub dbcopy { |
sub dbcopy { |
my ($dbref,$coursedom,$coursenum,$lockerrorsref) = @_; |
my ($dbref,$coursedom,$coursenum,$lockerrorsref,$currltititles, |
|
$currltimax,$updatetoolsenc,$updatetoolscache,$same_institution) = @_; |
my ($url,$result,$errtext); |
my ($url,$result,$errtext); |
if (ref($dbref) eq 'HASH') { |
if (ref($dbref) eq 'HASH') { |
$url = $dbref->{'src'}; |
$url = $dbref->{'src'}; |
Line 2316 sub dbcopy {
|
Line 2462 sub dbcopy {
|
my %contents=&Apache::lonnet::dump($db_name, |
my %contents=&Apache::lonnet::dump($db_name, |
$dbref->{'cdom'}, |
$dbref->{'cdom'}, |
$dbref->{'cnum'}); |
$dbref->{'cnum'}); |
|
my ($toolcopyerror,$toolpassback,$toolroster,%toolinfo,$oldtoolid,$defincrs); |
|
if ($url eq '/adm/'.$dbref->{'cdom'}.'/'.$dbref->{'cnum'}."/$marker/ext.tool") { |
|
if ($contents{'id'} =~ /^(|c)(\d+)$/) { |
|
$oldtoolid = $2; |
|
if ($1 eq 'c') { |
|
$defincrs = 1; |
|
%toolinfo = |
|
&Apache::lonnet::get('ltitools',[$oldtoolid],$dbref->{'cdom'},$dbref->{'cnum'}); |
|
} else { |
|
%toolinfo= &Apache::lonnet::get_domain_lti($dbref->{'cdom'},'consumer'); |
|
} |
|
if (ref($toolinfo{$oldtoolid}) eq 'HASH') { |
|
if ($toolinfo{$oldtoolid}{'passback'}) { |
|
$toolpassback = 1; |
|
} |
|
if ($toolinfo{$oldtoolid}{'roster'}) { |
|
$toolroster = 1; |
|
} |
|
} else { |
|
$toolcopyerror = 1; |
|
$errtext = &mt('Could not retrieve original settings for pasted external tool.'); |
|
} |
|
} |
|
unless (($dbref->{'cnum'} eq $coursenum) && ($dbref->{'cdom'} eq $coursedom)) { |
|
$url = "/adm/$coursedom/$coursenum/$marker/ext.tool"; |
|
if ($contents{'crstitle'} ne '') { |
|
$contents{'crstitle'} = $env{'course.'.$coursedom.'_'.$coursenum.'.description'}; |
|
} |
|
if (($defincrs) && (!$toolcopyerror)) { |
|
my %newtool; |
|
my $oldcdom = $dbref->{'cdom'}; |
|
my $oldcnum = $dbref->{'cnum'}; |
|
my $title = $toolinfo{$oldtoolid}{'title'}; |
|
if (ref($currltititles) eq 'HASH') { |
|
if (exists($currltititles->{$title})) { |
|
$title .= ' (copied from another course)'; |
|
} |
|
} |
|
my ($newid,$iderror) = |
|
&Apache::lonnet::get_ltitools_id('course',$coursedom,$coursenum,$title); |
|
if ($newid =~ /^\d+$/) { |
|
%{$newtool{$newid}} = %{$toolinfo{$oldtoolid}}; |
|
$newtool{$newid}{'title'} = $title; |
|
if (ref($currltimax)) { |
|
$newtool{$newid}{'order'} = $$currltimax; |
|
} |
|
if ($newtool{$newid}{'image'} =~ m{^\Q/uploaded/$oldcdom/$oldcnum/toollogo/$oldtoolid/\E([^/]+)$}) { |
|
my $fname = $1; |
|
my $content = &Apache::lonnet::getfile($newtool{$newid}{'image'}); |
|
if ($content eq '-1') { |
|
delete($newtool{$newid}{'image'}); |
|
} else { |
|
$env{'form.'.$suffix.'.image'} = $content; |
|
my $newlogo = |
|
&Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$suffix.'.image',"toollogo/$newid/$fname"); |
|
delete($env{'form.'.$suffix.'.image'}); |
|
if ($newlogo =~ m{^/uploaded/}) { |
|
$newtool{$newid}{'image'} = $newlogo; |
|
} else { |
|
delete($newtool{$newid}{'image'}); |
|
} |
|
} |
|
} |
|
my $newusable; |
|
if ($same_institution) { |
|
my %oldtoolsenc = &Apache::lonnet::eget('nohist_toolsenc',[$oldtoolid],$oldcdom,$oldcnum); |
|
if (ref($oldtoolsenc{$oldtoolid}) eq 'HASH') { |
|
my %newtoolsenc; |
|
%{$newtoolsenc{$newid}} = %{$oldtoolsenc{$oldtoolid}}; |
|
my $putres = &Apache::lonnet::put('nohist_toolsenc',\%newtoolsenc,$coursedom,$coursenum,1); |
|
if ($putres eq 'ok') { |
|
if (ref($updatetoolsenc) eq 'ARRAY') { |
|
my $newhome = &Apache::lonnet::homeserver($coursenum,$coursedom); |
|
unless (grep(/^\Q$newhome\E$/,@{$updatetoolsenc})) { |
|
push(@{$updatetoolsenc},$newhome); |
|
} |
|
} |
|
$newusable = 1; |
|
} |
|
} |
|
} |
|
if ($newtool{$newid}{'usable'}) { |
|
unless ($newusable) { |
|
delete($newtool{$newid}{'usable'}); |
|
} |
|
} |
|
my $putres = &Apache::lonnet::put('ltitools',\%newtool,$coursedom,$coursenum); |
|
if ($putres eq 'ok') { |
|
$contents{'id'} = "c$newid"; |
|
if (ref($updatetoolscache)) { |
|
$$updatetoolscache ++; |
|
} |
|
if (ref($currltititles->{$title}) eq 'ARRAY') { |
|
push(@{$currltititles->{$title}},$newid); |
|
} else { |
|
$currltititles->{$title} = [$newid]; |
|
} |
|
if (ref($currltimax)) { |
|
$$currltimax ++; |
|
} |
|
} else { |
|
$toolcopyerror = 1; |
|
$errtext = &mt('Unable to save external tool definition in Course Settings.'); |
|
} |
|
} else { |
|
$toolcopyerror = 1; |
|
$errtext = &mt('Unable to retrieve new tool ID when adding external tool definition to Course Settings.'); |
|
} |
|
} |
|
} |
|
} |
if (exists($contents{'uploaded.photourl'})) { |
if (exists($contents{'uploaded.photourl'})) { |
my $photo = $contents{'uploaded.photourl'}; |
my $photo = $contents{'uploaded.photourl'}; |
my ($subdir,$fname) = |
my ($subdir,$fname) = |
Line 2335 sub dbcopy {
|
Line 2592 sub dbcopy {
|
} |
} |
} |
} |
$db_name =~ s{_\d*$ }{_$suffix}x; |
$db_name =~ s{_\d*$ }{_$suffix}x; |
if (($prefix eq 'exttool') && ($dbref->{'delgradable'}) && ($contents{'gradable'})) { |
if ($prefix eq 'exttool') { |
delete($contents{'gradable'}); |
unless ($toolcopyerror) { |
|
foreach my $key ('oldgradesecret','gradesecret','gradesecretdate','oldrostersecret','rostersecret','rostersecretdate') { |
|
if (exists($contents{$key})) { |
|
delete($contents{$key}); |
|
} |
|
} |
|
if ($dbref->{'delgradable'}) { |
|
if (exists($contents{'gradable'})) { |
|
delete($contents{'gradable'}); |
|
} |
|
} |
|
if ($toolpassback) { |
|
if ($contents{'gradable'}) { |
|
my $gradesecret = UUID::Tiny::create_uuid_as_string(UUID_V4); |
|
$contents{'gradesecret'} = $gradesecret; |
|
$contents{'gradesecretdate'} = time; |
|
} |
|
} |
|
if ($toolroster) { |
|
my $rostersecret = UUID::Tiny::create_uuid_as_string(UUID_V4); |
|
$contents{'rostersecret'} = $rostersecret; |
|
$contents{'rostersecretdate'} = time; |
|
} |
|
} |
} |
} |
$result=&Apache::lonnet::put($db_name,\%contents, |
if (($prefix eq 'exttool') && ($toolcopyerror)) { |
$coursedom,$coursenum); |
$result = 'error'; |
if ($result eq 'ok') { |
} else { |
$url =~ s{/(\d*)/(smppg|bulletinboard|ext\.tool)$}{/$suffix/$2}x; |
$result=&Apache::lonnet::put($db_name,\%contents, |
|
$coursedom,$coursenum); |
|
if ($result eq 'ok') { |
|
$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 2496 sub contained_map_check {
|
Line 2780 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 ($ressrc =~ m{^/adm/($match_domain)/$match_courseid/\d+/ext\.tool$}) { |
if ($ressrc =~ m{^/adm/($match_domain)/($match_courseid)/(\d+)/ext\.tool$}) { |
my $srcdom = $1; |
my ($srcdom,$srcnum,$marker) = ($1,$2,$3); |
unless ($srcdom eq $coursedom) { |
unless ($srcdom eq $coursedom) { |
$removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc; |
$removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc; |
next; |
next; |
} |
} |
|
unless ($srcnum eq $coursenum) { |
|
my %toolsettings = |
|
&Apache::lonnet::dump('exttool_'.$marker,$srcdom,$srcnum); |
|
my %tooltypes = &Apache::loncommon::usable_exttools(); |
|
if ((($toolsettings{'id'} =~ /^c\d+$/) && (!$tooltypes{'crs'})) || |
|
(($toolsettings{'id'} =~ /^\d+$/) && (!$tooltypes{'dom'}))) { |
|
$removefrommap->{$url}{$token->[2]->{'id'}} = $ressrc; |
|
next; |
|
} |
|
} |
} elsif ($folder =~ /^supplemental/) { |
} 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; |
} |
} |
} |
} |
|
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 2642 sub url_paste_fixups {
|
Line 2945 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 2702 sub apply_fixups {
|
Line 3005 sub apply_fixups {
|
$oldurl,$url,$caller) = @_; |
$oldurl,$url,$caller) = @_; |
my (%rewrites,%zombies,%removefrommap,%removeparam,%dbcopies,%retitles, |
my (%rewrites,%zombies,%removefrommap,%removeparam,%dbcopies,%retitles, |
%params,%newsubdir,%before,%after,%copies,%docmoves,%mapmoves,@msgs, |
%params,%newsubdir,%before,%after,%copies,%docmoves,%mapmoves,@msgs, |
%resdatacopy,%lockerrors,$lockmsg); |
%resdatacopy,%lockerrors,$lockmsg,%currcrsltitools,$gotcrsltitools, |
|
%currltititles,$currltimax); |
|
$currltimax = 0; |
if (ref($updated) eq 'HASH') { |
if (ref($updated) eq 'HASH') { |
if (ref($updated->{'rewrites'}) eq 'HASH') { |
if (ref($updated->{'rewrites'}) eq 'HASH') { |
%rewrites = %{$updated->{'rewrites'}}; |
%rewrites = %{$updated->{'rewrites'}}; |
Line 2853 sub apply_fixups {
|
Line 3158 sub apply_fixups {
|
} |
} |
} |
} |
} |
} |
|
my ($updatetoolscache,@updatetoolsenc,$same_institution,$checkedsameinst); |
foreach my $key (keys(%updates)) { |
foreach my $key (keys(%updates)) { |
my (%torewrite,%toretitle,%toremove,%remparam,%currparam,%zombie,%newdb); |
my (%torewrite,%toretitle,%toremove,%remparam,%currparam,%zombie,%newdb); |
if (ref($rewrites{$key}) eq 'HASH') { |
if (ref($rewrites{$key}) eq 'HASH') { |
Line 2873 sub apply_fixups {
|
Line 3179 sub apply_fixups {
|
if (ref($dbcopies{$key}) eq 'HASH') { |
if (ref($dbcopies{$key}) eq 'HASH') { |
foreach my $idx (keys(%{$dbcopies{$key}})) { |
foreach my $idx (keys(%{$dbcopies{$key}})) { |
if (ref($dbcopies{$key}{$idx}) eq 'HASH') { |
if (ref($dbcopies{$key}{$idx}) eq 'HASH') { |
|
my $oldurl = $dbcopies{$key}{$idx}{'src'}; |
|
my $oldcdom = $dbcopies{$key}{$idx}{'cdom'}; |
|
my $oldcnum = $dbcopies{$key}{$idx}{'cnum'}; |
|
my $oldmarker; |
|
if ($oldurl =~ m{^\Q/adm/$oldcdom/$oldcnum/\E(\d+)/ext\.tool$}) { |
|
$oldmarker = $1; |
|
unless (($gotcrsltitools) || |
|
(($oldcnum eq $cnum) && ($oldcdom eq $cdom))) { |
|
my %oldtoolsettings=&Apache::lonnet::dump('exttool_'.$oldmarker,$oldcdom,$oldcnum); |
|
if ($oldtoolsettings{'id'} =~ /^c\d+$/) { |
|
unless ($gotcrsltitools) { |
|
%currcrsltitools = |
|
&Apache::lonnet::get_course_lti($cnum,$cdom,'consumer'); |
|
foreach my $item (sort(keys(%currcrsltitools))) { |
|
if (ref($currcrsltitools{$item}) eq 'HASH') { |
|
$currltimax ++; |
|
if (ref($currltititles{$currcrsltitools{$item}{'title'}}) eq 'ARRAY') { |
|
push(@{$currltititles{$currcrsltitools{$item}{'title'}}},$item); |
|
} else { |
|
$currltititles{$currcrsltitools{$item}{'title'}} = [$item]; |
|
} |
|
} |
|
} |
|
$gotcrsltitools = 1; |
|
} |
|
unless ($checkedsameinst) { |
|
my $primary_id = &Apache::lonnet::domain($cdom,'primary'); |
|
my $intdom = &Apache::lonnet::internet_dom($primary_id); |
|
if ($intdom ne '') { |
|
my $internet_names = |
|
&Apache::lonnet::get_internet_names($Apache::lonnet::perlvar{'lonHostID'}); |
|
if (ref($internet_names) eq 'ARRAY') { |
|
if (grep(/^\Q$intdom\E$/,@{$internet_names})) { |
|
$same_institution = 1; |
|
} |
|
} |
|
} |
|
$checkedsameinst = 1; |
|
} |
|
} |
|
} |
|
} |
my ($newurl,$result,$errtext) = |
my ($newurl,$result,$errtext) = |
&dbcopy($dbcopies{$key}{$idx},$cdom,$cnum,\%lockerrors); |
&dbcopy($dbcopies{$key}{$idx},$cdom,$cnum,\%lockerrors,\%currltititles, |
|
\$currltimax,\@updatetoolsenc,\$updatetoolscache,$same_institution); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$newdb{$idx} = $newurl; |
$newdb{$idx} = $newurl; |
|
if ($newurl =~ /ext\.tool$/) { |
|
if ($torewrite{$idx} eq "/adm/$oldcdom/$oldcnum/$oldmarker/ext.tool") { |
|
if ($newurl =~ m{^\Q/adm/$cdom/$cnum/\E(\d+)/ext.tool$}) { |
|
my $newmarker = $1; |
|
unless ($oldmarker eq $newmarker) { |
|
$torewrite{$idx} = "/adm/$oldcdom/$oldcnum/$newmarker/ext.tool"; |
|
} |
|
} |
|
} |
|
} |
} elsif (ref($errors) eq 'HASH') { |
} elsif (ref($errors) eq 'HASH') { |
$errors->{$key} = 1; |
$errors->{$key} = 1; |
} |
} |
Line 3015 sub apply_fixups {
|
Line 3374 sub apply_fixups {
|
} |
} |
} |
} |
} |
} |
|
if (($updatetoolscache) || (@updatetoolsenc)) { |
|
&update_ltitools_caches($cdom,$cnum,$updatetoolscache, |
|
\@updatetoolsenc); |
|
} |
} |
} |
return ('ok',\@msgs,$lockmsg); |
return ('ok',\@msgs,$lockmsg); |
} |
} |
Line 3109 sub update_parameter {
|
Line 3472 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 3739 sub multiple_check_form {
|
Line 4102 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 3777 sub multiple_check_form {
|
Line 4140 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 4294 END
|
Line 4657 END
|
$nomodal = 1; |
$nomodal = 1; |
} |
} |
} |
} |
my ($checkencrypt,$shownurl); |
my $checkencrypt; |
if (!$env{'request.role.adv'}) { |
if (!$env{'request.role.adv'}) { |
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)) { |
Line 4314 END
|
Line 4677 END
|
my $currenc = $env{'request.enc'}; |
my $currenc = $env{'request.enc'}; |
$env{'request.enc'} = 1; |
$env{'request.enc'} = 1; |
$shownsymb = &Apache::lonenc::encrypted($symb); |
$shownsymb = &Apache::lonenc::encrypted($symb); |
$shownurl = &Apache::lonenc::encrypted($url); |
my $shownurl = &Apache::lonenc::encrypted($url); |
if (&Apache::lonnet::symbverify($symb,$url)) { |
if (&Apache::lonnet::symbverify($symb,$url)) { |
$url = $shownurl; |
$url = $shownurl; |
} else { |
} else { |
Line 4329 END
|
Line 4692 END
|
$url = &Apache::lonnet::clutter($url); |
$url = &Apache::lonnet::clutter($url); |
} |
} |
} |
} |
$shownurl = $url; |
} else { |
|
$url = ''; |
} |
} |
unless ($env{'request.role.adv'}) { |
unless ($env{'request.role.adv'}) { |
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
Line 4340 END
|
Line 4704 END
|
$hiddenres = 1; |
$hiddenres = 1; |
} |
} |
} |
} |
if ($url ne '') { |
if (($url ne '') && ($shownsymb ne '')) { |
$url = $shownurl.(($shownurl=~/\?/)?'&':'?').'symb='.&escape($shownsymb); |
$url .= (($url=~/\?/)?'&':'?').'symb='.&escape($shownsymb); |
} |
} |
} |
} |
} elsif ($supplementalflag) { |
} elsif ($supplementalflag) { |
Line 4370 END
|
Line 4734 END
|
} |
} |
$nomodal = 1; |
$nomodal = 1; |
} |
} |
} elsif (($uploaded) && (!$allowed) && ($url ne '/adm/supplemental?')) { |
} elsif (($uploaded) && ($url ne '/adm/supplemental?') && ($url ne '/adm/coursedocs?')) { |
my $embstyle=&Apache::loncommon::fileembstyle($extension); |
my $embstyle=&Apache::loncommon::fileembstyle($extension); |
unless ($embstyle eq 'ssi') { |
unless ($embstyle eq 'ssi') { |
if (($embstyle eq 'img') |
if (($embstyle eq 'img') |
Line 4476 $form_common."\n".
|
Line 4840 $form_common."\n".
|
'<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" id="randomorder_'.$orderidx.'" onclick="checkForSubmit(this.form,'."'randomorder','settings'".');" '.$ro_set.$disabled.' /> '.&mt('Random Order').' </label></span>'. |
'<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" id="randomorder_'.$orderidx.'" onclick="checkForSubmit(this.form,'."'randomorder','settings'".');" '.$ro_set.$disabled.' /> '.&mt('Random Order').' </label></span>'. |
$form_end; |
$form_end; |
} |
} |
} elsif ($supplementalflag && !$allowed) { |
} elsif ($supplementalflag) { |
my $isexttool; |
my $isexttool; |
if ($url=~m{^/adm/$coursedom/$coursenum/\d+/ext\.tool$}) { |
if ($url=~m{^/adm/$coursedom/$coursenum/\d+/ext\.tool$}) { |
$url='/adm/wrapper'.$url; |
$url='/adm/wrapper'.$url; |
Line 4539 $form_end;
|
Line 4903 $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 4550 $form_end;
|
Line 4914 $form_end;
|
$lt{'sa'}.'</a></span>'; |
$lt{'sa'}.'</a></span>'; |
} |
} |
} |
} |
$line.='</td><td>'; |
$line.='</td><td><span class="LC_nobreak">'; |
my ($link,$nolink); |
my ($link,$nolink); |
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) { |
if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) { |
if ($allowed && !$env{'request.role.adv'} && !$isfolder && !$ispage) { |
if ($allowed && !$env{'request.role.adv'} && !$isfolder && !$ispage) { |
Line 4571 $form_end;
|
Line 4935 $form_end;
|
$anchor = '#'.&HTML::Entities::encode($anchor,'"<>&'); |
$anchor = '#'.&HTML::Entities::encode($anchor,'"<>&'); |
} |
} |
} |
} |
if ((!$supplementalflag) && ($nomodal) && ($hostname ne '')) { |
if (($nomodal) && ($hostname ne '')) { |
$link = 'http://'.$hostname.$url; |
$link = 'http://'.$hostname.$url; |
} else { |
} else { |
$link = $url; |
$link = $url; |
} |
} |
$link = &js_escape($link.(($url=~/\?/)?'&':'?').'inhibitmenu=yes'.$anchor); |
my $inhibitmenu; |
|
if ((($supplementalflag) && ($allowed) && ($url =~ m{^/adm/wrapper/})) || |
|
(($allowed) && (($url =~ m{^/adm/(viewclasslist|$match_domain/$match_username/aboutme)(\?|$)}) || |
|
($url =~ m{^/public/$match_domain/$match_courseid/syllabus(\?|$)})))) { |
|
$inhibitmenu = 'only_body=1'; |
|
} else { |
|
$inhibitmenu = 'inhibitmenu=yes'; |
|
} |
|
$link = &js_escape($link.(($url=~/\?/)?'&':'?').$inhibitmenu.$anchor); |
if ($allowed && !$env{'request.role.adv'} && !$isfolder && !$ispage && !$uploaded) { |
if ($allowed && !$env{'request.role.adv'} && !$isfolder && !$ispage && !$uploaded) { |
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) { |
$nolink = 1; |
$nolink = 1; |
Line 4646 $form_end;
|
Line 5018 $form_end;
|
my ($enctext,$hidtext,$formhidden,$formurlhidden); |
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); |
} |
} |
} |
} |
Line 5520 sub handler {
|
Line 5892 sub handler {
|
'Load_Map','Supplemental','Score_Upload_Form', |
'Load_Map','Supplemental','Score_Upload_Form', |
'Adding_Pages','Importing_LON-CAPA_Resource', |
'Adding_Pages','Importing_LON-CAPA_Resource', |
'Importing_IMS_Course','Uploading_From_Harddrive', |
'Importing_IMS_Course','Uploading_From_Harddrive', |
'Course_Roster','Web_Page','Dropbox','Simple_Problem') { |
'Course_Roster','Web_Page','Dropbox','Simple_Problem', |
|
'Standard_Problem','Course_Resources', |
|
'Search_LON-CAPA_Resource','Import_Stored_Links') { |
$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 5591 sub handler {
|
Line 5965 sub handler {
|
&init_breadcrumbs('versions','Check/Set Resource Versions','Docs_Check_Resource_Versions'); |
&init_breadcrumbs('versions','Check/Set Resource Versions','Docs_Check_Resource_Versions'); |
&checkversions($r,$canedit); |
&checkversions($r,$canedit); |
} elsif ($canedit && $env{'form.dumpcourse'}) { |
} elsif ($canedit && $env{'form.dumpcourse'}) { |
&init_breadcrumbs('dumpcourse','Copy '.&Apache::loncommon::course_type().' Content to Authoring Space'); |
&init_breadcrumbs('dumpcourse','Copy uploaded content to Authoring Space'); |
&dumpcourse($r); |
&dumpcourse($r); |
} elsif ($canedit && $env{'form.exportcourse'}) { |
} elsif ($canedit && $env{'form.exportcourse'}) { |
&init_breadcrumbs('exportcourse','IMS Export'); |
&init_breadcrumbs('exportcourse','IMS Export'); |
Line 5695 sub handler {
|
Line 6069 sub handler {
|
} |
} |
if ($env{'form.forcesupplement'}) { $supplementalflag=1; } |
if ($env{'form.forcesupplement'}) { $supplementalflag=1; } |
if ($env{'form.forcestandard'}) { $supplementalflag=0; } |
if ($env{'form.forcestandard'}) { $supplementalflag=0; } |
unless ($allowed) { $supplementalflag=1; } |
unless (($supplementalflag) || |
unless ($standard) { $supplementalflag=1; } |
($r->uri =~ m{^/adm/coursedocs/showdoc/uploaded/\Q$coursedom\E/\Q$coursenum\E/docs/})) { |
|
unless ($allowed) { $supplementalflag=1; } |
|
unless ($standard) { $supplementalflag=1; } |
|
} |
my $toolsflag=0; |
my $toolsflag=0; |
if ($env{'form.tools'}) { $toolsflag=1; } |
if ($env{'form.tools'}) { $toolsflag=1; } |
|
|
Line 5718 sub handler {
|
Line 6095 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 5771 sub handler {
|
Line 6149 sub handler {
|
&Apache::loncommon::validate_folderpath($supplementalflag,$allowed,$coursenum,$coursedom); |
&Apache::loncommon::validate_folderpath($supplementalflag,$allowed,$coursenum,$coursedom); |
} |
} |
} |
} |
|
|
# If we are not allowed to make changes, all we can see are supplemental docs |
# Set folderpath if we are not allowed to make changes and this is supplemental content |
if (!$allowed) { |
if ((!$allowed) && ($supplementalflag)) { |
unless ($env{'form.folderpath'} =~ /^supplemental/) { |
unless ($env{'form.folderpath'} =~ /^supplemental/) { |
$env{'form.folderpath'} = &supplemental_base(); |
$env{'form.folderpath'} = &supplemental_base(); |
} |
} |
Line 5951 sub handler {
|
Line 6329 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 5993 sub handler {
|
Line 6382 sub handler {
|
if ($supplementalflag) { |
if ($supplementalflag) { |
my $title = &HTML::Entities::encode($env{'form.title'},'\'"<>&'); |
my $title = &HTML::Entities::encode($env{'form.title'},'\'"<>&'); |
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); |
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); |
$args = {'bread_crumbs' => $brcrum}; |
$args = {'bread_crumbs' => $brcrum, |
|
'bread_crumbs_nomenu' => 1}; |
} else { |
} else { |
$args = {'force_register' => $showdoc}; |
$args = {'force_register' => $showdoc}; |
} |
} |
Line 6022 sub handler {
|
Line 6412 sub handler {
|
} |
} |
} |
} |
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype); |
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype); |
|
my $args = {'bread_crumbs' => $brcrum}; |
|
unless (($env{'form.folderpath'} eq '') || |
|
($env{'form.folder'} eq 'supplemental')) { |
|
$args->{'bread_crumbs_nomenu'} = 1; |
|
} |
$r->print(&Apache::loncommon::start_page("Supplemental $crstype Content",undef, |
$r->print(&Apache::loncommon::start_page("Supplemental $crstype Content",undef, |
{'bread_crumbs' => $brcrum,})); |
$args)); |
} else { |
} else { |
my ($breadtext,$breadtitle,$helpitem); |
my ($breadtext,$breadtitle,$helpitem); |
$breadtext = "$crstype Editor"; |
$breadtext = "$crstype Editor"; |
Line 6108 sub handler {
|
Line 6503 sub handler {
|
|
|
if ($allowed && $toolsflag) { |
if ($allowed && $toolsflag) { |
$r->print(&startContentScreen('tools')); |
$r->print(&startContentScreen('tools')); |
$r->print(&generate_admin_menu($crstype,$canedit)); |
$r->print(&generate_admin_menu($crstype,$canedit,$coursenum,$coursedom)); |
$r->print(&endContentScreen()); |
$r->print(&endContentScreen()); |
} elsif ((!$showdoc) && (!$uploadphase)) { |
} elsif ((!$showdoc) && (!$uploadphase)) { |
# ----------------------------------------------------------------------------- |
# ----------------------------------------------------------------------------- |
Line 6116 sub handler {
|
Line 6511 sub handler {
|
'copm' => 'All documents out of a published map into this folder', |
'copm' => 'All documents out of a published map into this folder', |
'upfi' => 'Upload File', |
'upfi' => 'Upload File', |
'upld' => 'Upload Content', |
'upld' => 'Upload Content', |
'srch' => 'Search', |
'srch' => 'Search Repository', |
'impo' => 'Import', |
'impo' => 'Import from Repository', |
'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', |
Line 6156 sub handler {
|
Line 6551 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 6205 sub handler {
|
Line 6601 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 6228 CHBO
|
Line 6621 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 6254 IMSFORM
|
Line 6649 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 6292 FUFORM
|
Line 6689 FUFORM
|
</form> |
</form> |
|
|
SEDFFORM |
SEDFFORM |
my $importcrsresform; |
my ($importcrsresform,$checkcrsres); |
my ($numdirs,$pickfile) = |
if ($env{'course.'.$coursedom.'_'.$coursenum.'.internal.crsauthor'}) { |
&Apache::loncommon::import_crsauthor_form('coursepath','coursefile', |
$checkcrsres = 1; |
"resize_scrollbox('contentscroll','1','0');", |
} elsif ($env{'course.'.$coursedom.'_'.$coursenum.'.internal.crsauthor'} ne '0') { |
undef,'res'); |
my %domdefs=&Apache::lonnet::get_domain_defaults($coursedom); |
if ($pickfile) { |
my $type = lc($env{'course.'.$env{'request.course.id'}.'.type'}); |
$importcrsresform=(<<CRSFORM); |
unless (($type eq 'community') || ($type eq 'placement')) { |
|
$type = 'unofficial'; |
|
if ($env{'course.'.$env{'request.course.id'}.'internal.coursecode'} ne '') { |
|
$type = 'official'; |
|
} elsif ($env{'course.'.$env{'request.course.id'}.'internal.textbook'} ne '') { |
|
$type = 'textbook'; |
|
} else { |
|
$type = 'unofficial'; |
|
} |
|
} |
|
if ($domdefs{$type.'crsauthor'}) { |
|
$checkcrsres = 1; |
|
} |
|
} |
|
if ($checkcrsres) { |
|
my ($numdirs,$pickfile) = |
|
&Apache::loncommon::import_crsauthor_form('coursepath','coursefile', |
|
"resize_scrollbox('contentscroll','1','0');", |
|
undef,'res'); |
|
if ($pickfile) { |
|
$importcrsresform=(<<CRSFORM); |
<a class="LC_menubuttons_link" href="javascript:toggleImportCrsres('res');"> |
<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 /><br /> |
<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 |
|
} |
} |
} |
|
|
my $fromstoredjs; |
my $fromstoredjs; |
Line 6324 CRSFORM
|
Line 6749 CRSFORM
|
} |
} |
|
|
my @importpubforma = ( |
my @importpubforma = ( |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/src.png" alt="'.$lt{srch}.'" onclick="javascript:groupsearch()" />' => $pathitem."<a class='LC_menubuttons_link' href='javascript:groupsearch()'>$lt{'srch'}</a>" }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/src.png" alt="'.$lt{srch}.'" onclick="javascript:groupsearch()" />' => $pathitem."<a class='LC_menubuttons_link' href='javascript:groupsearch()'>$lt{'srch'}</a>$help{'Search_LON-CAPA_Resource'}" }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{impo}.'" onclick="javascript:groupimport();"/>' => "<a class='LC_menubuttons_link' href='javascript:groupimport();'>$lt{'impo'}</a>$help{'Importing_LON-CAPA_Resource'}" }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{impo}.'" onclick="javascript:groupimport();"/>' => "<a class='LC_menubuttons_link' href='javascript:groupimport();'>$lt{'impo'}</a>$help{'Importing_LON-CAPA_Resource'}" }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/wishlist.png" alt="'.$lt{lnks}.'" onclick="javascript:'.$fromstoredjs.';" />' => '<a class="LC_menubuttons_link" href="javascript:'.$fromstoredjs.';">'.$lt{'lnks'}.'</a>' }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/wishlist.png" alt="'.$lt{lnks}.'" onclick="javascript:'.$fromstoredjs.';" />' => '<a class="LC_menubuttons_link" href="javascript:'.$fromstoredjs.';">'.$lt{'lnks'}.'</a>'.$help{'Import_Stored_Links'} }, |
{ '<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 ($importcrsresform) { |
push(@importpubforma,{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{imcr}.'" onclick="javascript:toggleImportCrsres(\'res\');" />' => $importcrsresform}); |
push(@importpubforma,{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/impcrsau.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 6530 NROSTFORM
|
Line 6955 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 $machines_str = "'".join("','",@ids)."'"; |
my $machines_str = "'".join("','",@ids)."'"; |
my (%is_home,%toppath,$rolehomes); |
my (%is_home,%toppath,$rolehomes); |
Line 6582 NWEBFORM
|
Line 7007 NWEBFORM
|
} |
} |
} |
} |
} |
} |
$pickdir .= '<option value="course">'.&mt('Course Resource').'</option>'."\n". |
if ($checkcrsres) { |
'</select><br />'."\n". |
$pickdir .= '<option value="course">'.&mt('Course Resource').'</option>'."\n"; |
|
} |
|
$pickdir .= '</select><br />'."\n". |
$lt{'dire'}. |
$lt{'dire'}. |
'<select name="authorpath" onchange="toggleCrsResTitle();">'. |
'<select name="authorpath" onchange="toggleCrsResTitle();">'. |
'<option value=""></option>'. |
'<option value=""></option>'. |
'</select><br />'."\n"; |
'</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'); |
my @noexamplelink = ('blank.problem','blank.library','script.library'); |
my @noexamplelink = ('blank.problem','blank.library','script.library'); |
Line 6628 NWEBFORM
|
Line 7054 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; |
|
if (($env{'user.author'}) || ($checkcrsres)) { |
|
$crsresform=(<<RESFORM); |
<a class="LC_menubuttons_link" href="javascript:toggleCrsRes('res');"> |
<a class="LC_menubuttons_link" href="javascript:toggleCrsRes('res');"> |
$lt{'stpr'}</a>$help{'Course_Resource'} |
$lt{'stpr'}</a>$help{'Standard_Problem'} |
<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;"> |
<legend>$lt{'stpr'}</legend> |
<legend>$lt{'stpr'}</legend> |
<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;"> |
<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 6646 NWEBFORM
|
Line 7076 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 /> |
<p> |
|
<div id="newresource" style="display:none"> |
<div id="newresource" style="display:none"> |
|
<p> |
$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 6657 NWEBFORM
|
Line 7088 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> |
|
<div id="stdprobswitch" style="display:none;"> |
<div id="stdprobswitch" style="display:none;"> |
$rolehomes |
$rolehomes |
<input type="button" name="switchfornewprob" value="$lt{'swit'}" onclick="switchForProb();" /> |
<input type="button" name="switchfornewprob" value="$lt{'swit'}" onclick="switchForProb();" /> |
Line 6683 NWEBFORM
|
Line 7113 NWEBFORM
|
</form> |
</form> |
|
|
RESFORM |
RESFORM |
|
} |
|
|
my $specialdocumentsform; |
my $specialdocumentsform; |
my @specialdocumentsforma; |
my @specialdocumentsforma; |
Line 6755 NGFFORM
|
Line 7186 NGFFORM
|
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 6776 NGFFORM
|
Line 7207 NGFFORM
|
@gradingforma=( |
@gradingforma=( |
{'<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\');" />'=>$crsresform}, |
|
); |
); |
|
if ($crsresform) { |
|
push(@gradingforma, |
|
{'<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)); |
|
|
@communityforma=( |
@communityforma=( |
Line 6792 NGFFORM
|
Line 7227 NGFFORM
|
|
|
my %orderhash = ( |
my %orderhash = ( |
'aa' => ['Upload',$fileuploadform], |
'aa' => ['Upload',$fileuploadform], |
'bb' => ['Import',$importpubform], |
'bb' => ['External',$externalform], |
'cc' => ['External',$externalform], |
'cc' => ['Import',$importpubform], |
'dd' => ['Grading',$gradingform], |
'dd' => ['Assessment',$gradingform], |
'ff' => ['Other',$specialdocumentsform], |
'ff' => ['Other',$specialdocumentsform], |
); |
); |
unless ($container eq 'page') { |
unless ($container eq 'page') { |
Line 6847 unless ($container eq 'page') {
|
Line 7282 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 6859 unless ($container eq 'page') {
|
Line 7296 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 6938 my @specialdocs = (
|
Line 7376 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 7170 sub remove_archive {
|
Line 7608 sub remove_archive {
|
} |
} |
|
|
sub generate_admin_menu { |
sub generate_admin_menu { |
my ($crstype,$canedit) = @_; |
my ($crstype,$canedit,$coursenum,$coursedom) = @_; |
my $lc_crstype = lc($crstype); |
my $lc_crstype = lc($crstype); |
my ($home,$other,%outhash)=&authorhosts(); |
my ($home,$other,%outhash)=&authorhosts(); |
my %lt= ( # do not translate here |
my %lt= ( # do not translate here |
Line 7178 sub generate_admin_menu {
|
Line 7616 sub generate_admin_menu {
|
'cv' => 'Check/Set Resource Versions', |
'cv' => 'Check/Set Resource Versions', |
'ls' => 'List Resource Identifiers', |
'ls' => 'List Resource Identifiers', |
'ct' => 'Display/Set Shortened URLs for Deep-linking', |
'ct' => 'Display/Set Shortened URLs for Deep-linking', |
|
'ca' => "Enter $crstype Authoring Space", |
'imse' => 'Export contents to IMS Archive', |
'imse' => 'Export contents to IMS Archive', |
'dcd' => "Copy $crstype Content to Authoring Space", |
'dcd' => "Copy $crstype Content to Authoring Space", |
); |
); |
Line 7238 sub generate_admin_menu {
|
Line 7677 sub generate_admin_menu {
|
] |
] |
}); |
}); |
if ($canedit) { |
if ($canedit) { |
|
my ($crsauname,$crsaudom,$crshome); |
|
if (($coursenum ne '') && ($coursedom ne '')) { |
|
my $crsauthorurl = "/priv/$coursedom/$coursenum/"; |
|
($crsauname,$crsaudom,$crshome) = &Apache::lonnet::constructaccess($crsauthorurl); |
|
if (($crsauname eq $coursenum) && ($crsaudom eq $coursedom)) { |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
my $linkurl; |
|
if (grep(/^\Q$crshome\E$/,@ids)) { |
|
$linkurl = $crsauthorurl; |
|
} else { |
|
$linkurl = |
|
&Apache::lonhtmlcommon::jump_to_editres($crsauthorurl,$crshome,1); |
|
} |
|
if ((ref($menu[0]) eq 'HASH') && (ref($menu[0]->{'items'}) eq 'ARRAY')) { |
|
push(@{$menu[0]->{items}}, |
|
{ linktext => $lt{'ca'}, |
|
url => $linkurl, |
|
permission => 'F', |
|
help => 'Docs_Course_Authorspace', |
|
icon => 'impcrsau.png', |
|
linktitle => $lt{'ca'}, |
|
}); |
|
} |
|
} |
|
} |
push(@menu, |
push(@menu, |
{ categorytitle=>'Export', |
{ categorytitle=>'Export', |
items =>[ |
items =>[ |
Line 7775 function toggleMap(caller) {
|
Line 8239 function toggleMap(caller) {
|
} |
} |
} |
} |
document.getElementById('importmapform').style.display=disp; |
document.getElementById('importmapform').style.display=disp; |
|
if (disp == 'block') { |
|
if (document.getElementById('importcrsresform')) { |
|
if (document.getElementById('importcrsresform').style.display == 'block') { |
|
document.getElementById('importcrsresform').style.display = 'none'; |
|
} |
|
} |
|
} |
resize_scrollbox('contentscroll','1','1'); |
resize_scrollbox('contentscroll','1','1'); |
} |
} |
return; |
return; |
Line 7956 function toggleImportCrsres(caller) {
|
Line 8427 function toggleImportCrsres(caller) {
|
var curr = document.getElementById('importcrsresform').style.display; |
var curr = document.getElementById('importcrsresform').style.display; |
if (curr == 'none') { |
if (curr == 'none') { |
disp='block'; |
disp='block'; |
populateCrsSelects(document.crsresimportform,'coursepath','coursefile',1,'',1,0,1,1); |
populateCrsSelects(document.crsresimportform,'coursepath','coursefile',1,'',1,0,1,1,0); |
|
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'; |
|
} |
|
} |
} |
} |
} |
} |
document.getElementById('importcrsresform').style.display=disp; |
document.getElementById('importcrsresform').style.display=disp; |
|
if (disp == 'block') { |
|
if (document.getElementById('importmapform')) { |
|
if (document.getElementById('importmapform').style.display == 'block') { |
|
document.getElementById('importmapform').style.display = 'none'; |
|
} |
|
} |
|
} |
resize_scrollbox('contentscroll','1','0'); |
resize_scrollbox('contentscroll','1','0'); |
} |
} |
return; |
return; |
Line 8011 function populateDirSelects(form,locsel,
|
Line 8504 function populateDirSelects(form,locsel,
|
} |
} |
} |
} |
} |
} |
|
var templateradio = document.courseresform.elements['newresusetemp']; |
if (athome) { |
if (athome) { |
if (document.getElementById('stdprobswitch')) { |
if (document.getElementById('stdprobswitch')) { |
document.getElementById('stdprobswitch').style.display = 'none'; |
document.getElementById('stdprobswitch').style.display = 'none'; |
Line 8018 function populateDirSelects(form,locsel,
|
Line 8512 function populateDirSelects(form,locsel,
|
if (document.getElementById('newstdproblem')) { |
if (document.getElementById('newstdproblem')) { |
document.getElementById('newstdproblem').style.display = 'none'; |
document.getElementById('newstdproblem').style.display = 'none'; |
} |
} |
|
var canedit = '$canedit'; |
|
if (canedit) { |
|
if (templateradio.length > 1) { |
|
for (var i=0; i<templateradio.length; i++) { |
|
templateradio[i].disabled = false; |
|
} |
|
} |
|
document.courseresform.newresourcename.disabled = false; |
|
document.courseresform.newcrs.disabled = false; |
|
} |
var http = new XMLHttpRequest(); |
var http = new XMLHttpRequest(); |
var url = "/adm/courseauthor"; |
var url = "/adm/courseauthor"; |
var params = "role="+role+"&rec="+recurse+"&nonempty="+nonemptydir; |
var params = "role="+role+"&rec="+recurse+"&nonempty="+nonemptydir+"&addtop=1"; |
http.open("POST", url, true); |
http.open("POST", url, true); |
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
http.onreadystatechange = function() { |
http.onreadystatechange = function() { |
Line 8039 function populateDirSelects(form,locsel,
|
Line 8543 function populateDirSelects(form,locsel,
|
selelem.options[selelem.options.length] = new Option(data.dirs[j],data.dirs[j]); |
selelem.options[selelem.options.length] = new Option(data.dirs[j],data.dirs[j]); |
} |
} |
selelem.selectedIndex = 0; |
selelem.selectedIndex = 0; |
|
if (len == 1) { |
|
toggleCrsResTitle(); |
|
} |
} |
} |
} |
} |
} |
} |
Line 8053 function populateDirSelects(form,locsel,
|
Line 8560 function populateDirSelects(form,locsel,
|
if (document.getElementById('newstdproblem')) { |
if (document.getElementById('newstdproblem')) { |
document.getElementById('newstdproblem').style.display = 'none'; |
document.getElementById('newstdproblem').style.display = 'none'; |
} |
} |
|
if (templateradio.length > 1) { |
|
for (var i=0; i<templateradio.length; i++) { |
|
templateradio[i].disabled = true; |
|
} |
|
} |
|
document.courseresform.newresourcename.disabled = true; |
|
document.courseresform.newcrs.disabled = true; |
} |
} |
} |
} |
return; |
return; |
Line 8904 sub dump_switchserver_js {
|
Line 9418 sub dump_switchserver_js {
|
); |
); |
my %html_js_lt = &Apache::lonlocal::texthash( |
my %html_js_lt = &Apache::lonlocal::texthash( |
swit => 'Switch server?', |
swit => 'Switch server?', |
duco => 'Copying Content to Authoring Space', |
duco => 'Copying uploaded content to Authoring Space', |
yone => 'You need to switch to a server housing an Authoring Space for which you are author or co-author.', |
yone => 'You need to switch to a server housing an Authoring Space for which you are author or co-author.', |
chos => 'Choose server', |
chos => 'Choose server', |
); |
); |
Line 9045 sub makenewproblem {
|
Line 9559 sub makenewproblem {
|
if ($redirect) { |
if ($redirect) { |
my $rightsfile = 'default.rights'; |
my $rightsfile = 'default.rights'; |
my $sourcerights = "$path/$rightsfile"; |
my $sourcerights = "$path/$rightsfile"; |
|
&Apache::loncommon::crsauthor_rights($rightsfile,$path,$docroot,$coursenum,$coursedom); |
my $targetrights = $docroot."/res/$coursedom/$coursenum/$rightsfile"; |
my $targetrights = $docroot."/res/$coursedom/$coursenum/$rightsfile"; |
my $now = time; |
|
if (!-e $sourcerights) { |
|
my $cid = $coursedom.'_'.$coursenum; |
|
if (open(my $fh,">$sourcerights")) { |
|
print $fh <<END; |
|
<accessrule effect="deny" realm="" type="course" role="" /> |
|
<accessrule effect="allow" realm="$cid" type="course" role="" /> |
|
END |
|
close($fh); |
|
} |
|
} |
|
if (!-e "$sourcerights.meta") { |
|
if (open(my $fh,">$sourcerights.meta")) { |
|
my $author=$env{'environment.firstname'}.' '. |
|
$env{'environment.middlename'}.' '. |
|
$env{'environment.lastname'}.' '. |
|
$env{'environment.generation'}; |
|
$author =~ s/\s+$//; |
|
print $fh <<"END"; |
|
|
|
<abstract></abstract> |
|
<author>$author</author> |
|
<authorspace>$coursenum:$coursedom</authorspace> |
|
<copyright>private</copyright> |
|
<creationdate>$now</creationdate> |
|
<customdistributionfile></customdistributionfile> |
|
<dependencies></dependencies> |
|
<domain>$coursedom</domain> |
|
<highestgradelevel>0</highestgradelevel> |
|
<keywords></keywords> |
|
<language>notset </language> |
|
<lastrevisiondate>$now</lastrevisiondate> |
|
<lowestgradelevel>0</lowestgradelevel> |
|
<mime>rights</mime> |
|
<modifyinguser>$env{'user.name'}:$env{'user.domain'}</modifyinguser> |
|
<notes></notes> |
|
<obsolete></obsolete> |
|
<obsoletereplacement></obsoletereplacement> |
|
<owner>$coursenum:$coursedom</owner> |
|
<rule>deny:::course,allow:$cid::course</rule> |
|
<sourceavail></sourceavail> |
|
<standards></standards> |
|
<subject></subject> |
|
<title></title> |
|
END |
|
close($fh); |
|
} |
|
} |
|
if ((-e $sourcerights) && (-e "$sourcerights.meta")) { |
if ((-e $sourcerights) && (-e "$sourcerights.meta")) { |
if (!-e "$docroot/res/$coursedom") { |
if (!-e "$docroot/res/$coursedom") { |
mkdir("$docroot/res/$coursedom",0755); |
mkdir("$docroot/res/$coursedom",0755); |