version 1.643, 2017/11/30 02:17:50
|
version 1.656, 2018/07/04 13:55:27
|
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 HTML::Entities; |
use HTML::Entities; |
use HTML::TokeParser; |
use HTML::TokeParser; |
use GDBM_File; |
use GDBM_File; |
Line 670 sub group_import {
|
Line 672 sub group_import {
|
} |
} |
$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{'linktext'},$toolhash{'explanation'},$toolhash{'crslabel'}, |
$toolhash{'crslabel'},$toolhash{'crstitle'},$toolhash{'crsappend'}) = @toolinfo; |
$toolhash{'crstitle'},$toolhash{'crsappend'},$toolhash{'gradable'}) = @toolinfo; |
foreach my $item (@extras) { |
foreach my $item (@extras) { |
$toolhash{$item} = &unescape($toolhash{$item}); |
$toolhash{$item} = &unescape($toolhash{$item}); |
} |
} |
|
if ($folder =~ /^supplemental/) { |
|
delete($toolhash{'gradable'}); |
|
} else { |
|
$toolhash{'gradable'} =~ s/\D+//g; |
|
} |
if (ref($ltitoolsref) eq 'HASH') { |
if (ref($ltitoolsref) eq 'HASH') { |
if (ref($ltitoolsref->{$toolid}) eq 'HASH') { |
if (ref($ltitoolsref->{$toolid}) eq 'HASH') { |
my @deleted; |
my @deleted; |
Line 762 sub group_import {
|
Line 769 sub group_import {
|
$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]))) { |
|
$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, |
|
'string_yesno'); |
|
&remember_parms($residx,'gradable','set',$val); |
|
} |
|
} else { |
|
return (&mt('Failed to save update to external tool.'),1); |
} |
} |
} |
} |
} |
} |
Line 1004 sub docs_change_log {
|
Line 1041 sub docs_change_log {
|
'encrypturl' => 'URL hidden', |
'encrypturl' => 'URL hidden', |
'randompick' => 'Randomly pick', |
'randompick' => 'Randomly pick', |
'randomorder' => 'Randomly ordered', |
'randomorder' => 'Randomly ordered', |
|
'gradable' => 'Grade can be assigned to External Tool', |
'set' => 'set to', |
'set' => 'set to', |
'del' => 'deleted'); |
'del' => 'deleted'); |
my $filter = &Apache::loncommon::display_filter('docslog')."\n". |
my $filter = &Apache::loncommon::display_filter('docslog')."\n". |
Line 1111 sub docs_change_log {
|
Line 1149 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>'); |
$r->print(&LONCAPA::map::qtescape((split(/\:/,$docslog{$id}{'logentry'}{'parameter_res'}))[0]).':<ul>'); |
foreach my $parameter ('randompick','hiddenresource','encrypturl','randomorder') { |
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 |
$r->print('<li>'. |
$r->print('<li>'. |
Line 1863 sub do_paste_from_buffer {
|
Line 1901 sub do_paste_from_buffer {
|
} |
} |
if ($url=~ m{/(bulletinboard|smppg|ext\.tool)$}) { |
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. |
my %info = ( |
my %info = ( |
src => $url, |
src => $url, |
cdom => $coursedom, |
cdom => $coursedom, |
cnum => $coursenum, |
cnum => $coursenum, |
); |
); |
|
if ($prefix eq 'ext.tool') { |
|
if ($prefixchg{$suffix} eq 'docstosupp') { |
|
$info{'delgradable'} = 1; |
|
} |
|
} |
if (($srcdom{$suffix} =~ /^$match_domain$/) && ($srcnum{$suffix} =~ /^$match_courseid$/)) { |
if (($srcdom{$suffix} =~ /^$match_domain$/) && ($srcnum{$suffix} =~ /^$match_courseid$/)) { |
unless (($srcdom{$suffix} eq $coursedom) && ($srcnum{$suffix} eq $coursenum)) { |
unless (($srcdom{$suffix} eq $coursedom) && ($srcnum{$suffix} eq $coursenum)) { |
$fromothercrs = 1; |
$fromothercrs = 1; |
Line 1961 sub do_paste_from_buffer {
|
Line 2004 sub do_paste_from_buffer {
|
©_templated_files($url,$srcdom{$suffix},$srcnum{$suffix},$srcmapidx{$suffix}, |
©_templated_files($url,$srcdom{$suffix},$srcnum{$suffix},$srcmapidx{$suffix}, |
$coursedom,$coursenum,$template,$newidx,"$folder.$container"); |
$coursedom,$coursenum,$template,$newidx,"$folder.$container"); |
} |
} |
|
} elsif ($url =~ /ext\.tool$/) { |
|
if (($newidx) && ($folder=~/^default/)) { |
|
my $marker = (split(m{/},$url))[4]; |
|
my %toolsettings = &Apache::lonnet::dump('exttool_'.$marker,$coursedom,$coursenum); |
|
my $val = 'no'; |
|
if ($toolsettings{'gradable'}) { |
|
$val = 'yes'; |
|
} |
|
&LONCAPA::map::storeparameter($newidx,'parameter_0_gradable',$val, |
|
'string_yesno'); |
|
&remember_parms($newidx,'gradable','set',$val); |
|
} |
} |
} |
$LONCAPA::map::resources[$newidx]=$title.':'.&LONCAPA::map::qtunescape($url). |
$LONCAPA::map::resources[$newidx]=$title.':'.&LONCAPA::map::qtunescape($url). |
':'.$ext.':normal:res'; |
':'.$ext.':normal:res'; |
Line 2209 sub dbcopy {
|
Line 2264 sub dbcopy {
|
} |
} |
} |
} |
$db_name =~ s{_\d*$ }{_$suffix}x; |
$db_name =~ s{_\d*$ }{_$suffix}x; |
|
if (($prefix eq 'exttool') && ($dbref->{'delgradable'}) && ($contents{'gradable'})) { |
|
delete($contents{'gradable'}); |
|
} |
$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') { |
Line 2493 sub url_paste_fixups {
|
Line 2551 sub url_paste_fixups {
|
$changed = 1; |
$changed = 1; |
} |
} |
} |
} |
} elsif ($ressrc =~ m{^/adm/($match_domain)/($match_courseid)/.+$}) { |
} elsif ($ressrc =~ m{^/adm/($match_domain)/($match_courseid)/(.+)$}) { |
next if ($skip); |
next if ($skip); |
my $srcdom = $1; |
my $srcdom = $1; |
my $srcnum = $2; |
my $srcnum = $2; |
|
my $rem = $3; |
|
my ($is_exttool,$exttoolchg); |
|
if ($rem =~ m{\d+/ext\.tool$}) { |
|
$is_exttool = 1; |
|
} |
if (($srcdom ne $cdom) || ($srcnum ne $cnum)) { |
if (($srcdom ne $cdom) || ($srcnum ne $cnum)) { |
$rewrites->{$oldurl}{$id} = $ressrc; |
$rewrites->{$oldurl}{$id} = $ressrc; |
$dbcopies->{$oldurl}{$id}{'src'} = $ressrc; |
$dbcopies->{$oldurl}{$id}{'src'} = $ressrc; |
$dbcopies->{$oldurl}{$id}{'cdom'} = $srcdom; |
$dbcopies->{$oldurl}{$id}{'cdom'} = $srcdom; |
$dbcopies->{$oldurl}{$id}{'cnum'} = $srcnum; |
$dbcopies->{$oldurl}{$id}{'cnum'} = $srcnum; |
$changed = 1; |
$changed = 1; |
|
if ($is_exttool) { |
|
$exttoolchg = 1; |
|
} |
|
} elsif (($rem =~ m{\d+/ext\.tool$}) && |
|
($env{'form.docs.markedcopy_options'} ne 'move')) { |
|
$dbcopies->{$oldurl}{$id}{'src'} = $ressrc; |
|
$dbcopies->{$oldurl}{$id}{'cdom'} = $srcdom; |
|
$dbcopies->{$oldurl}{$id}{'cnum'} = $srcnum; |
|
$changed = 1; |
|
$exttoolchg = 1; |
|
} |
|
if (($is_exttool) && ($prefixchg)) { |
|
if ($oldurl =~ m{^/uploaded/$match_domain/$match_courseid/default}) { |
|
if ($exttoolchg) { |
|
$dbcopies->{$oldurl}{$id}{'delgradable'} = 1; |
|
} |
|
} |
} |
} |
} elsif ($ressrc =~ m{^/adm/$match_domain/$match_username/\d+/(smppg|bulletinboard)$}) { |
} elsif ($ressrc =~ m{^/adm/$match_domain/$match_username/\d+/(smppg|bulletinboard)$}) { |
if (($fromcdom ne $cdom) || ($fromcnum ne $cnum) || |
if (($fromcdom ne $cdom) || ($fromcnum ne $cnum) || |
Line 2766 sub apply_fixups {
|
Line 2846 sub apply_fixups {
|
} |
} |
} |
} |
} |
} |
for (my $i=0; $i<@LONCAPA::map::order; $i++) { |
my $total = scalar(@LONCAPA::map::order) - 1; |
|
for (my $i=$total; $i>=0; $i--) { |
my $idx = $LONCAPA::map::order[$i]; |
my $idx = $LONCAPA::map::order[$i]; |
if (defined($LONCAPA::map::resources[$idx])) { |
if (defined($LONCAPA::map::resources[$idx])) { |
my $changed; |
my $changed; |
Line 2776 sub apply_fixups {
|
Line 2857 sub apply_fixups {
|
splice(@LONCAPA::map::order,$i,1); |
splice(@LONCAPA::map::order,$i,1); |
if (ref($currparam{$idx}) eq 'ARRAY') { |
if (ref($currparam{$idx}) eq 'ARRAY') { |
foreach my $name (@{$currparam{$idx}}) { |
foreach my $name (@{$currparam{$idx}}) { |
&LONCAPA::map::delparameter($idx,'parameter_'.$name); |
&LONCAPA::map::delparameter($idx,$name); |
} |
} |
} |
} |
next; |
next; |
Line 2818 sub apply_fixups {
|
Line 2899 sub apply_fixups {
|
foreach my $idx (keys(%remparam)) { |
foreach my $idx (keys(%remparam)) { |
if (ref($remparam{$idx}) eq 'ARRAY') { |
if (ref($remparam{$idx}) eq 'ARRAY') { |
foreach my $name (@{$remparam{$idx}}) { |
foreach my $name (@{$remparam{$idx}}) { |
&LONCAPA::map::delparameter($idx,'parameter_'.$name); |
&LONCAPA::map::delparameter($idx,$name); |
} |
} |
} |
} |
} |
} |
Line 4322 $form_end;
|
Line 4403 $form_end;
|
$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; |
if ($url =~ /$LONCAPA::assess_re/) { |
if ($orig_url =~ /$LONCAPA::assess_re/) { |
$line.= '<br />'; |
$line.= '<br />'; |
if ($curralias ne '') { |
if ($curralias ne '') { |
$line.='<span class="LC_nobreak"><a href="javascript:delalias('."'$esc_path','$orderidx'".');" class="LC_docs_alias">'. |
$line.='<span class="LC_nobreak"><a href="javascript:delalias('."'$esc_path','$orderidx'".');" class="LC_docs_alias">'. |
Line 4732 sub list_symbs {
|
Line 4813 sub list_symbs {
|
$r->print(&endContentScreen()); |
$r->print(&endContentScreen()); |
} |
} |
|
|
|
sub short_urls { |
|
my ($r,$canedit) = @_; |
|
my $crstype = &Apache::loncommon::course_type(); |
|
my $formname = 'shortenurl'; |
|
$r->print(&Apache::loncommon::start_page('Display/Set Shortened URLs')); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Shortened URLs')); |
|
$r->print(&startContentScreen('tools')); |
|
my ($navmap,$errormsg) = |
|
&Apache::loncourserespicker::get_navmap_object($crstype,'shorturls'); |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my (%maps,%resources,%titles); |
|
if (!ref($navmap)) { |
|
$r->print($errormsg. |
|
&endContentScreen()); |
|
return ''; |
|
} else { |
|
$r->print('<h4 class="LC_info">'.&mt('Tiny URLs for deep-linking into course').'</h4>'."\n"); |
|
$r->rflush(); |
|
my $readonly; |
|
if ($canedit) { |
|
my ($numnew,$errors) = &Apache::loncommon::make_short_symbs($cdom,$cnum,$navmap); |
|
if ($numnew) { |
|
$r->print('<p class="LC_info">'.&mt('Created [quant,_1,URL]',$numnew).'</p>'); |
|
} |
|
if ((ref($errors) eq 'ARRAY') && (@{$errors} > 0)) { |
|
$r->print(&mt('The following errors occurred when processing your request to create shortened URLs:').'<br /><ul>'); |
|
foreach my $error (@{$errors}) { |
|
$r->print('<li>'.$error.'</li>'); |
|
} |
|
$r->print('</ul><br />'); |
|
} |
|
} else { |
|
$readonly = 1; |
|
} |
|
my %currtiny = &Apache::lonnet::dump('tiny',$cdom,$cnum); |
|
$r->print(&Apache::loncourserespicker::create_picker($navmap,'shorturls',$formname,$crstype,undef, |
|
undef,undef,undef,undef,undef,\%currtiny,$readonly)); |
|
} |
|
$r->print(&endContentScreen()); |
|
} |
|
|
sub contentverifyform { |
sub contentverifyform { |
my ($r) = @_; |
my ($r) = @_; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
Line 5102 sub changewarning {
|
Line 5225 sub changewarning {
|
if (!defined($message)) { |
if (!defined($message)) { |
$message='Changes will become active for your current session after [_1], or the next time you log in.'; |
$message='Changes will become active for your current session after [_1], or the next time you log in.'; |
} |
} |
|
my $windowname = 'loncapaclient'; |
|
if ($env{'request.lti.login'}) { |
|
$windowname .= 'lti'; |
|
} |
$r->print("\n\n". |
$r->print("\n\n". |
'<script type="text/javascript">'."\n". |
'<script type="text/javascript">'."\n". |
'// <![CDATA['."\n". |
'// <![CDATA['."\n". |
'function reinit(tf) { tf.submit();'.$postexec.' }'."\n". |
'function reinit(tf) { tf.submit();'.$postexec.' }'."\n". |
'// ]]>'."\n". |
'// ]]>'."\n". |
'</script>'."\n". |
'</script>'."\n". |
'<form name="reinitform" method="post" action="/adm/roles" target="loncapaclient">'. |
'<form name="reinitform" method="post" action="/adm/roles" target="'.$windowname.'">'. |
'<input type="hidden" name="orgurl" value="'.$url. |
'<input type="hidden" name="orgurl" value="'.$url. |
'" /><input type="hidden" name="selectrole" value="1" /><p class="LC_warning">'. |
'" /><input type="hidden" name="selectrole" value="1" /><p class="LC_warning">'. |
&mt($message,' <input type="hidden" name="'. |
&mt($message,' <input type="hidden" name="'. |
Line 5267 sub handler {
|
Line 5394 sub handler {
|
} elsif ($allowed && $env{'form.listsymbs'}) { |
} elsif ($allowed && $env{'form.listsymbs'}) { |
&init_breadcrumbs('listsymbs','List Content IDs'); |
&init_breadcrumbs('listsymbs','List Content IDs'); |
&list_symbs($r); |
&list_symbs($r); |
|
} elsif ($allowed && $env{'form.shorturls'}) { |
|
&init_breadcrumbs('shorturls','Set/Display Shortened URLs','Docs_Short_URLs'); |
|
&short_urls($r,$canedit); |
} elsif ($allowed && $env{'form.docslog'}) { |
} elsif ($allowed && $env{'form.docslog'}) { |
&init_breadcrumbs('docslog','Show Log'); |
&init_breadcrumbs('docslog','Show Log'); |
my $folder = $env{'form.folder'}; |
my $folder = $env{'form.folder'}; |
Line 5330 sub handler {
|
Line 5460 sub handler {
|
$r->internal_redirect($redirect); |
$r->internal_redirect($redirect); |
return OK; |
return OK; |
} |
} |
|
} else { |
|
$r->internal_redirect($redirect); |
} |
} |
} |
} |
} |
} |
Line 5591 sub handler {
|
Line 5723 sub handler {
|
my $tid = 1; |
my $tid = 1; |
my @tabids; |
my @tabids; |
if ($supplementalflag) { |
if ($supplementalflag) { |
@tabids = ('002','ee2','ff2'); |
@tabids = ('002','dd2','ee2','ff2'); |
$tid = 2; |
$tid = 2; |
} else { |
} else { |
@tabids = ('aa1','bb1','cc1','ff1'); |
@tabids = ('aa1','bb1','cc1','ff1'); |
Line 5601 sub handler {
|
Line 5733 sub handler {
|
} |
} |
} |
} |
my $tabidstr = join("','",@tabids); |
my $tabidstr = join("','",@tabids); |
%ltitools = &Apache::lonnet::get_domain_ltitools($coursedom); |
%ltitools = &Apache::lonnet::get_domain_lti($coursedom,'consumer'); |
my $posslti = keys(%ltitools); |
my $posslti = keys(%ltitools); |
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, |
Line 6027 HIDDENFORM
|
Line 6159 HIDDENFORM
|
} |
} |
my $postexec=''; |
my $postexec=''; |
if ($folder eq 'default') { |
if ($folder eq 'default') { |
|
my $windowname = 'loncapaclient'; |
|
if ($env{'request.lti.login'}) { |
|
$windowname .= 'lti'; |
|
} |
$r->print('<script type="text/javascript">'."\n" |
$r->print('<script type="text/javascript">'."\n" |
.'// <![CDATA['."\n" |
.'// <![CDATA['."\n" |
.'this.window.name="loncapaclient";'."\n" |
.'this.window.name="'.$windowname.'";'."\n" |
.'// ]]>'."\n" |
.'// ]]>'."\n" |
.'</script>'."\n" |
.'</script>'."\n" |
); |
); |
Line 6042 HIDDENFORM
|
Line 6178 HIDDENFORM
|
|
|
my $newnavform=(<<NNFORM); |
my $newnavform=(<<NNFORM); |
<form action="/adm/coursedocs" method="post" name="newnav"> |
<form action="/adm/coursedocs" method="post" name="newnav"> |
<input type="hidden" name="active" value="ee" /> |
<input type="hidden" name="active" value="ff" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'navc'}=/adm/navmaps" /> |
value="$lt{'navc'}=/adm/navmaps" /> |
Line 6052 HIDDENFORM
|
Line 6188 HIDDENFORM
|
NNFORM |
NNFORM |
my $newsmppageform=(<<NSPFORM); |
my $newsmppageform=(<<NSPFORM); |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
<input type="hidden" name="active" value="ee" /> |
<input type="hidden" name="active" value="ff" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makesmppage();"> $lt{'sipa'}</a> |
<a class="LC_menubuttons_link" href="javascript:makesmppage();"> $lt{'sipa'}</a> |
Line 6062 NSPFORM
|
Line 6198 NSPFORM
|
|
|
my $newsmpproblemform=(<<NSPROBFORM); |
my $newsmpproblemform=(<<NSPROBFORM); |
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="dd" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makesmpproblem();">$lt{'sipr'}</a> |
<a class="LC_menubuttons_link" href="javascript:makesmpproblem();">$lt{'sipr'}</a> |
Line 6073 NSPROBFORM
|
Line 6209 NSPROBFORM
|
|
|
my $newdropboxform=(<<NDBFORM); |
my $newdropboxform=(<<NDBFORM); |
<form action="/adm/coursedocs" method="post" name="newdropbox"> |
<form action="/adm/coursedocs" method="post" name="newdropbox"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="dd" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makedropbox();">$lt{'drbx'}</a> |
<a class="LC_menubuttons_link" href="javascript:makedropbox();">$lt{'drbx'}</a> |
Line 6083 NDBFORM
|
Line 6219 NDBFORM
|
|
|
my $newexuploadform=(<<NEXUFORM); |
my $newexuploadform=(<<NEXUFORM); |
<form action="/adm/coursedocs" method="post" name="newexamupload"> |
<form action="/adm/coursedocs" method="post" name="newexamupload"> |
<input type="hidden" name="active" value="cc" /> |
<input type="hidden" name="active" value="dd" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makeexamupload();">$lt{'scuf'}</a> |
<a class="LC_menubuttons_link" href="javascript:makeexamupload();">$lt{'scuf'}</a> |
Line 6093 NEXUFORM
|
Line 6229 NEXUFORM
|
|
|
my $newbulform=(<<NBFORM); |
my $newbulform=(<<NBFORM); |
<form action="/adm/coursedocs" method="post" name="newbul"> |
<form action="/adm/coursedocs" method="post" name="newbul"> |
<input type="hidden" name="active" value="dd" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makebulboard();" >$lt{'bull'}</a> |
<a class="LC_menubuttons_link" href="javascript:makebulboard();" >$lt{'bull'}</a> |
Line 6103 NBFORM
|
Line 6239 NBFORM
|
|
|
my $newaboutmeform=(<<NAMFORM); |
my $newaboutmeform=(<<NAMFORM); |
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
<input type="hidden" name="active" value="dd" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
Line 6114 NAMFORM
|
Line 6250 NAMFORM
|
|
|
my $newaboutsomeoneform=(<<NASOFORM); |
my $newaboutsomeoneform=(<<NASOFORM); |
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
<input type="hidden" name="active" value="dd" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<a class="LC_menubuttons_link" href="javascript:makeabout();">$lt{'abou'}</a> |
<a class="LC_menubuttons_link" href="javascript:makeabout();">$lt{'abou'}</a> |
Line 6123 NASOFORM
|
Line 6259 NASOFORM
|
|
|
my $newrosterform=(<<NROSTFORM); |
my $newrosterform=(<<NROSTFORM); |
<form action="/adm/coursedocs" method="post" name="newroster"> |
<form action="/adm/coursedocs" method="post" name="newroster"> |
<input type="hidden" name="active" value="dd" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'rost'}=/adm/viewclasslist" /> |
value="$lt{'rost'}=/adm/viewclasslist" /> |
Line 6144 NROSTFORM
|
Line 6280 NROSTFORM
|
} |
} |
my $newwebpageform =(<<NWEBFORM); |
my $newwebpageform =(<<NWEBFORM); |
<form action="/adm/coursedocs" method="post" name="newwebpage"> |
<form action="/adm/coursedocs" method="post" name="newwebpage"> |
<input type="hidden" name="active" value="ee" /> |
<input type="hidden" name="active" value="ff" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" value="$newwebpage" /> |
<input type="hidden" name="importdetail" value="$newwebpage" /> |
<a class="LC_menubuttons_link" href="javascript:makewebpage();">$lt{'webp'}</a> |
<a class="LC_menubuttons_link" href="javascript:makewebpage();">$lt{'webp'}</a> |
Line 6327 NWEBFORM
|
Line 6463 NWEBFORM
|
<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="ee" /> |
<input type="hidden" name="active" value="bb" /> |
<p> |
<p> |
$pickdir |
$pickdir |
<span class="LC_nobreak">$lt{'news'}? |
<span class="LC_nobreak">$lt{'news'}? |
Line 6415 NSYLFORM
|
Line 6551 NSYLFORM
|
|
|
my $newgroupfileform=(<<NGFFORM); |
my $newgroupfileform=(<<NGFFORM); |
<form action="/adm/coursedocs" method="post" name="newgroupfiles"> |
<form action="/adm/coursedocs" method="post" name="newgroupfiles"> |
<input type="hidden" name="active" value="dd" /> |
<input type="hidden" name="active" value="ee" /> |
$pathitem |
$pathitem |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> |
value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> |
Line 6432 NGFFORM
|
Line 6568 NGFFORM
|
); |
); |
$specialdocumentsform = &create_form_ul(&create_list_elements(@specialdocumentsforma)); |
$specialdocumentsform = &create_form_ul(&create_list_elements(@specialdocumentsforma)); |
|
|
|
my @external = ( |
my @importdoc = ( |
{'<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="toggleUpload(\'ext\');" />'=>$extresourcesform} |
|
); |
); |
if (keys(%ltitools)) { |
if (keys(%ltitools)) { |
push(@importdoc, |
push(@external, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.png" alt="'.$lt{extt}.'" onclick="toggleUpload(\'tool\');" />'=>$exttoolform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.png" alt="'.$lt{extt}.'" onclick="toggleExternal(\'tool\');" />'=>$exttoolform}, |
); |
); |
} |
} |
|
my $externalform = &create_form_ul(&create_list_elements(@external)); |
|
|
|
my @importdoc = (); |
unless ($container eq 'page') { |
unless ($container eq 'page') { |
push(@importdoc, |
push(@importdoc, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" onclick="javascript:toggleUpload(\'ims\');" />'=>$imspform} |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" onclick="javascript:toggleUpload(\'ims\');" />'=>$imspform} |
Line 6471 NGFFORM
|
Line 6609 NGFFORM
|
my %orderhash = ( |
my %orderhash = ( |
'aa' => ['Upload',$fileuploadform], |
'aa' => ['Upload',$fileuploadform], |
'bb' => ['Import',$importpubform], |
'bb' => ['Import',$importpubform], |
'cc' => ['Grading',$gradingform], |
'cc' => ['External',$externalform], |
|
'dd' => ['Grading',$gradingform], |
); |
); |
unless ($container eq 'page') { |
unless ($container eq 'page') { |
$orderhash{'00'} = ['Newfolder',$newfolderform]; |
$orderhash{'00'} = ['Newfolder',$newfolderform]; |
$orderhash{'dd'} = ['Collaboration',$communityform]; |
$orderhash{'ee'} = ['Collaboration',$communityform]; |
$orderhash{'ee'} = ['Other',$specialdocumentsform]; |
$orderhash{'ff'} = ['Other',$specialdocumentsform]; |
} |
} |
|
|
$hadchanges=0; |
$hadchanges=0; |
Line 6612 my @specialdocs = (
|
Line 6751 my @specialdocs = (
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/webpage.png" alt="'.$lt{webp}.'" onclick="javascript:makewebpage('."'supp'".');" />'=>$supwebpageform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/webpage.png" alt="'.$lt{webp}.'" onclick="javascript:makewebpage('."'supp'".');" />'=>$supwebpageform}, |
|
|
); |
); |
my @supimportdoc = ( |
my @supexternal = ( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:toggleUpload(\'suppext\')" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:toggleExternal(\'suppext\')" />' |
=>$supextform}); |
=>$supextform}); |
if (keys(%ltitools)) { |
if (keys(%ltitools)) { |
push(@supimportdoc, |
push(@supexternal, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/exttool.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:toggleExternal(\'supptool\')" />' |
=>$supexttoolform}); |
=>$supexttoolform}); |
} |
} |
push(@supimportdoc, |
my @supimportdoc = ( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/pdfupload.png" alt="'.$lt{upl}.'" onclick="javascript:toggleUpload(\'suppdoc\');" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/pdfupload.png" alt="'.$lt{upl}.'" onclick="javascript:toggleUpload(\'suppdoc\');" />' |
=>$supupdocform}, |
=>$supupdocform}, |
); |
); |
Line 6628 my @supimportdoc = (
|
Line 6767 my @supimportdoc = (
|
$supupdocform = &create_form_ul(&create_list_elements(@supimportdoc)); |
$supupdocform = &create_form_ul(&create_list_elements(@supimportdoc)); |
my %suporderhash = ( |
my %suporderhash = ( |
'00' => ['Supnewfolder', $supnewfolderform], |
'00' => ['Supnewfolder', $supnewfolderform], |
'ee' => ['Upload',$supupdocform], |
'dd' => ['Upload',$supupdocform], |
|
'ee' => ['External',&create_form_ul(&create_list_elements(@supexternal))], |
'ff' => ['Other',&create_form_ul(&create_list_elements(@specialdocs))] |
'ff' => ['Other',&create_form_ul(&create_list_elements(@specialdocs))] |
); |
); |
if ($supplementalflag) { |
if ($supplementalflag) { |
Line 6856 sub generate_admin_menu {
|
Line 6996 sub generate_admin_menu {
|
'vc' => 'Verify Content', |
'vc' => 'Verify Content', |
'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', |
'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 6906 sub generate_admin_menu {
|
Line 7047 sub generate_admin_menu {
|
icon => 'symbs.png', |
icon => 'symbs.png', |
linktitle => "List the unique identifier used for each resource instance in your $lc_crstype" |
linktitle => "List the unique identifier used for each resource instance in your $lc_crstype" |
}, |
}, |
|
{ linktext => $lt{'ct'}, |
|
url => "javascript:injectData(document.courseverify,'dummy','shorturls','$lt{'ct'}')", |
|
permission => 'F', |
|
help => 'Docs_Short_URLs', |
|
icon => 'shorturls.png', |
|
linktitle => "Set shortened URLs for a resource or folder in your $lc_crstype for use in deep-linking" |
|
}, |
] |
] |
}); |
}); |
if ($canedit) { |
if ($canedit) { |
Line 7150 sub editing_js {
|
Line 7298 sub editing_js {
|
$backtourl = '/adm/navmaps'; |
$backtourl = '/adm/navmaps'; |
} |
} |
|
|
my $fieldsets = "'ext','doc'"; |
my $fieldsets = "'doc'"; |
if ($posslti) { |
|
$fieldsets .= ",'tool'"; |
|
} |
|
unless ($main_container_page) { |
unless ($main_container_page) { |
$fieldsets .=",'ims'"; |
$fieldsets .=",'ims'"; |
} |
} |
|
my $extfieldsets = "'ext'"; |
|
if ($posslti) { |
|
$extfieldsets .= ",'tool'"; |
|
} |
if ($supplementalflag) { |
if ($supplementalflag) { |
$fieldsets = "'suppext','suppdoc'"; |
$fieldsets = "'suppdoc'"; |
|
$extfieldsets = "'suppext'"; |
if ($posslti) { |
if ($posslti) { |
$fieldsets .= ",'supptool'"; |
$extfieldsets .= ",'supptool'"; |
} |
} |
} |
} |
|
|
my $jsmakefunctions; |
my $jsmakefunctions; |
if ($canedit) { |
if ($canedit) { |
$jsmakefunctions = <<ENDNEWSCRIPT; |
$jsmakefunctions = <<ENDNEWSCRIPT; |
Line 7384 function toggleUpload(caller) {
|
Line 7534 function toggleUpload(caller) {
|
} |
} |
} |
} |
document.getElementById('upload'+blocks[i]+'form').style.display=disp; |
document.getElementById('upload'+blocks[i]+'form').style.display=disp; |
|
} |
|
resize_scrollbox('contentscroll','1','1'); |
|
return; |
|
} |
|
|
|
function toggleExternal(caller) { |
|
var blocks = Array($extfieldsets); |
|
for (var i=0; i<blocks.length; i++) { |
|
var disp = 'none'; |
|
if (caller == blocks[i]) { |
|
var curr = document.getElementById('external'+caller+'form').style.display; |
|
if (curr == 'none') { |
|
disp='block'; |
|
} |
|
} |
|
document.getElementById('external'+blocks[i]+'form').style.display=disp; |
if ((caller == 'tool') || (caller == 'supptool')) { |
if ((caller == 'tool') || (caller == 'supptool')) { |
if (disp == 'block') { |
if (disp == 'block') { |
if (document.getElementById('LC_exttoolid')) { |
if (document.getElementById('LC_exttoolid')) { |
var toolselector = document.getElementById('LC_exttoolid'); |
var toolselector = document.getElementById('LC_exttoolid'); |
var suppflag = 0; |
var suppflag = 0; |
if (caller == 'supptool') { |
if (caller == 'supptool') { |
suppflag = 1; |
suppflag = 1; |
} |
} |
currForm = document.getElementById('new'+caller); |
currForm = document.getElementById('new'+caller); |
updateExttool(toolselector,currForm,suppflag); |
updateExttool(toolselector,currForm,suppflag); |
} |
} |
} |
} |
} |
} |
Line 7950 function showPage(current, pageId, nav,
|
Line 8116 function showPage(current, pageId, nav,
|
current.className = 'right'; |
current.className = 'right'; |
} |
} |
activeTab = ''; |
activeTab = ''; |
|
toggleExternal(); |
toggleUpload(); |
toggleUpload(); |
toggleMap(); |
toggleMap(); |
toggleCrsRes(); |
toggleCrsRes(); |
Line 7962 function showPage(current, pageId, nav,
|
Line 8129 function showPage(current, pageId, nav,
|
currentData = document.getElementById(pageId); |
currentData = document.getElementById(pageId); |
currentData.style.display = 'block'; |
currentData.style.display = 'block'; |
activeTab = pageId; |
activeTab = pageId; |
|
toggleExternal(); |
toggleUpload(); |
toggleUpload(); |
toggleMap(); |
toggleMap(); |
toggleCrsRes(); |
toggleCrsRes(); |
Line 8495 sub makenewproblem {
|
Line 8663 sub makenewproblem {
|
if ($env{'form.newsubdir'}) { |
if ($env{'form.newsubdir'}) { |
if ($env{'form.newsubdirname'} ne '') { |
if ($env{'form.newsubdirname'} ne '') { |
$newsubdir = $env{'form.newsubdirname'}; |
$newsubdir = $env{'form.newsubdirname'}; |
} |
} |
} |
} |
if ($env{'form.newresourcename'}) { |
if ($env{'form.newresourcename'}) { |
$filename = $env{'form.newresourcename'}; |
$filename = $env{'form.newresourcename'}; |
Line 8578 END
|
Line 8746 END
|
<subject></subject> |
<subject></subject> |
<title></title> |
<title></title> |
END |
END |
close($fh); |
close($fh); |
} |
|
if ((-e $sourcerights) && (-e "$sourcerights.meta")) { |
|
if (!-e "$docroot/res/$coursedom") { |
|
mkdir("$docroot/res/$coursedom",0755); |
|
} |
|
if (!-e "$docroot/res/$coursedom/$coursenum") { |
|
mkdir("$docroot/res/$coursedom/$coursenum",0755); |
|
} |
|
if ((-e "$docroot/res/$coursedom/$coursenum") && (!-e $targetrights)) { |
|
my $nokeyref = &Apache::lonpublisher::getnokey($r->dir_config('lonIncludes')); |
|
my $output = &Apache::lonpublisher::batchpublish($r,$sourcerights,$targetrights,$nokeyref,1); |
|
} |
|
} |
} |
} |
} |
if ($env{'form.newresourceadd'}) { |
if ((-e $sourcerights) && (-e "$sourcerights.meta")) { |
my $template = $env{'form.template'}; |
if (!-e "$docroot/res/$coursedom") { |
my $source = $docroot.$redirect; |
mkdir("$docroot/res/$coursedom",0755); |
my $target = $redirect; |
} |
$target =~ s{^/priv/}{/res/}; |
if (!-e "$docroot/res/$coursedom/$coursenum") { |
$target = $docroot.$target; |
mkdir("$docroot/res/$coursedom/$coursenum",0755); |
if (!-e $source) { |
} |
my $copyfrom; |
if ((-e "$docroot/res/$coursedom/$coursenum") && (!-e $targetrights)) { |
if ($template) { |
my $nokeyref = &Apache::lonpublisher::getnokey($r->dir_config('lonIncludes')); |
my %templates; |
my $output = &Apache::lonpublisher::batchpublish($r,$sourcerights,$targetrights,$nokeyref,1); |
my @files = &Apache::lonhomework::get_template_list('problem'); |
|
foreach my $poss (@files) { |
|
if (ref($poss) eq 'ARRAY') { |
|
if ($template eq $poss->[0]) { |
|
$templates{$template} = 1; |
|
last; |
|
} |
|
} |
|
} |
|
if ($templates{$template}) { |
|
$copyfrom = $template; |
|
} |
|
} |
|
unless ($copyfrom) { |
|
$copyfrom = $r->dir_config('lonIncludes').'/templates/blank.problem'; |
|
} |
|
&File::Copy::copy($copyfrom,$source); |
|
} |
} |
if (!-e "$source.meta") { |
} |
my $cid = $coursedom.'_'.$coursenum; |
my $source = $docroot.$redirect; |
my $now = time; |
if (!-e "$source.meta") { |
if (open(my $fh,">$source.meta")) { |
my $cid = $coursedom.'_'.$coursenum; |
my $author=$env{'environment.firstname'}.' '. |
my $now = time; |
$env{'environment.middlename'}.' '. |
if (open(my $fh,">$source.meta")) { |
$env{'environment.lastname'}.' '. |
my $author=$env{'environment.firstname'}.' '. |
$env{'environment.generation'}; |
$env{'environment.middlename'}.' '. |
$author =~ s/\s+$//; |
$env{'environment.lastname'}.' '. |
my $title = $env{'form.newresourcetitle'}; |
$env{'environment.generation'}; |
$title =~ s/^\s+|\s+$//g; |
$author =~ s/\s+$//; |
print $fh <<END; |
my $title = $env{'form.newresourcetitle'}; |
|
$title =~ s/^\s+|\s+$//g; |
|
print $fh <<END; |
|
|
<abstract></abstract> |
<abstract></abstract> |
<author>$author</author> |
<author>$author</author> |
Line 8658 END
|
Line 8799 END
|
<subject></subject> |
<subject></subject> |
<title>$title</title> |
<title>$title</title> |
END |
END |
close($fh); |
close($fh); |
} |
|
} |
} |
} |
} |
} |
} |
Line 8687 END
|
Line 8827 END
|
} |
} |
|
|
sub finishnewprob { |
sub finishnewprob { |
my ($url,$path,$subdir,$newsubdir,$filename) = @_; |
my ($url,$path,$subdir,$newsubdir,$filename,$context) = @_; |
unless (-d $path) { |
unless (-d $path) { |
unless (mkdir($path,02770)) { |
unless (mkdir($path,02770)) { |
return; |
return; |
Line 8730 sub finishnewprob {
|
Line 8870 sub finishnewprob {
|
$redirect = "$url/$filename"; |
$redirect = "$url/$filename"; |
} |
} |
} |
} |
|
if ((!-e $dest) && ($context ne 'upload')) { |
|
my $template = $env{'form.template'}; |
|
my $copyfrom; |
|
if ($template ne '') { |
|
my %templates; |
|
my @files = &Apache::lonhomework::get_template_list('problem'); |
|
foreach my $poss (@files) { |
|
if (ref($poss) eq 'ARRAY') { |
|
if ($template eq $poss->[0]) { |
|
$templates{$template} = 1; |
|
last; |
|
} |
|
} |
|
} |
|
if ($templates{$template}) { |
|
$copyfrom = $template; |
|
} |
|
} |
|
if ($filename =~ /\.problem$/) { |
|
unless ($copyfrom) { |
|
$copyfrom = $Apache::lonnet::perlvar{'lonIncludes'}.'/templates/blank.problem'; |
|
} |
|
&File::Copy::copy($copyfrom,$dest); |
|
} |
|
} |
return $redirect; |
return $redirect; |
} |
} |
|
|