version 1.475, 2012/01/29 19:50:53
|
version 1.478, 2012/03/10 21:24:59
|
Line 26
|
Line 26
|
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
|
|
|
|
|
|
package Apache::londocs; |
package Apache::londocs; |
|
|
use strict; |
use strict; |
Line 1109 sub process_file_upload {
|
Line 1107 sub process_file_upload {
|
$$upload_output .= &mt('No embedded items identified').'<br />'; |
$$upload_output .= &mt('No embedded items identified').'<br />'; |
} |
} |
$$upload_output = '<div id="uploadfileresult">'.$$upload_output.'</div>'; |
$$upload_output = '<div id="uploadfileresult">'.$$upload_output.'</div>'; |
|
} elsif (&Apache::loncommon::is_archive_file($mimetype)) { |
|
$nextphase = 'decompress_uploaded'; |
|
my $position = scalar(@LONCAPA::map::order)-1; |
|
my $noextract = &return_to_editor(); |
|
my $archiveurl = &HTML::Entities::encode($url,'<>&"'); |
|
my %archiveitems = ( |
|
folderpath => $env{'form.folderpath'}, |
|
pagepath => $env{'form.pagepath'}, |
|
cmd => $nextphase, |
|
newidx => $newidx, |
|
position => $position, |
|
phase => $nextphase, |
|
comment => $comment, |
|
); |
|
$$upload_output = $showupload. |
|
&Apache::loncommon::decompress_form($mimetype, |
|
$archiveurl,'/adm/coursedocs',$noextract, |
|
\%archiveitems); |
} |
} |
} |
} |
} |
} |
Line 1165 sub entryline {
|
Line 1181 sub entryline {
|
$renametitle=~s/\"\;/\\\"/g; |
$renametitle=~s/\"\;/\\\"/g; |
$renametitle=~s/ /%20/g; |
$renametitle=~s/ /%20/g; |
my $line=&Apache::loncommon::start_data_table_row(); |
my $line=&Apache::loncommon::start_data_table_row(); |
my ($form_start,$form_end); |
my ($form_start,$form_end,$form_common); |
# Edit commands |
# Edit commands |
my ($container, $type, $esc_path, $path, $symb); |
my ($container, $type, $esc_path, $path, $symb); |
if ($env{'form.folderpath'}) { |
if ($env{'form.folderpath'}) { |
Line 1256 ENDCOPY
|
Line 1272 ENDCOPY
|
<a href='javascript:cutres("$esc_path","$index","$renametitle","$container","$symb","$folder",$skip_confirm);' class="LC_docs_cut">$lt{'ct'}</a> |
<a href='javascript:cutres("$esc_path","$index","$renametitle","$container","$symb","$folder",$skip_confirm);' class="LC_docs_cut">$lt{'ct'}</a> |
ENDCUT |
ENDCUT |
} |
} |
$form_start = (<<END); |
$form_start = ' |
<form action="/adm/coursedocs" method="post"> |
<form action="/adm/coursedocs" method="post"> |
|
'; |
|
$form_common=(<<END); |
<input type="hidden" name="${type}path" value="$path" /> |
<input type="hidden" name="${type}path" value="$path" /> |
<input type="hidden" name="${type}symb" value="$symb" /> |
<input type="hidden" name="${type}symb" value="$symb" /> |
<input type="hidden" name="setparms" value="$orderidx" /> |
<input type="hidden" name="setparms" value="$orderidx" /> |
Line 1279 END
|
Line 1297 END
|
</td> |
</td> |
<td> |
<td> |
$form_start |
$form_start |
|
$form_common |
$selectbox |
$selectbox |
$form_end |
$form_end |
</td> |
</td> |
Line 1362 END
|
Line 1381 END
|
$url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb); |
$url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb); |
} |
} |
} |
} |
my ($parameterset,$rand_order_text) = (' ', ' '); |
my ($rand_pick_text,$rand_order_text); |
if ($isfolder || $extension eq 'sequence') { |
if ($isfolder || $extension eq 'sequence') { |
my $foldername=&escape($foldertitle); |
my $foldername=&escape($foldertitle); |
my $folderpath=$env{'form.folderpath'}; |
my $folderpath=$env{'form.folderpath'}; |
Line 1378 END
|
Line 1397 END
|
.':'.((&LONCAPA::map::getparameter($orderidx, |
.':'.((&LONCAPA::map::getparameter($orderidx, |
'parameter_randomorder'))[0]=~/^yes$/i); |
'parameter_randomorder'))[0]=~/^yes$/i); |
$url.='folderpath='.&escape($folderpath).$cpinfo; |
$url.='folderpath='.&escape($folderpath).$cpinfo; |
$parameterset='<label>'.&mt('Randomly Pick: '). |
my $rpicknum = (&LONCAPA::map::getparameter($orderidx, |
'<input type="text" size="4" onchange="this.form.changeparms.value='."'randompick'".';this.form.submit()" name="randompick_'.$orderidx.'" value="'. |
'parameter_randompick'))[0]; |
(&LONCAPA::map::getparameter($orderidx, |
my $rpckchk; |
'parameter_randompick'))[0]. |
if ($rpicknum) { |
'" />'. |
$rpckchk = ' checked="checked"'; |
'<a href="javascript:void(0)">'.&mt('Save').'</a></label>'; |
} |
|
my $formname = 'edit_rpick_'.$orderidx; |
|
$rand_pick_text = |
|
'<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n". |
|
$form_common."\n". |
|
'<span class="LC_nobreak"><label><input type="checkbox" name="randpickon_'.$orderidx.'" id="rpick_'.$orderidx.'" onclick="'."updatePick(this.form,'$orderidx','check');".'"'.$rpckchk.' /> '.&mt('Randomly Pick').'</label><input type="hidden" name="randompick_'.$orderidx.'" id="rpicknum_'.$orderidx.'" value="'.$rpicknum.'" />'; |
|
if ($rpicknum ne '') { |
|
$rand_pick_text .= ': <a href="javascript:updatePick('."document.$formname,'$orderidx','link'".')">'.$rpicknum.'</a>'; |
|
} |
|
$rand_pick_text .= '</span></form>'; |
my $ro_set= |
my $ro_set= |
((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); |
((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); |
$rand_order_text =' |
$rand_order_text = |
<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onclick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></span>'; |
$form_start. |
|
$form_common.' |
|
<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onclick="'."this.form.changeparms.value='randomorder';this.form.submit()".'" '.$ro_set.' /> '.&mt('Random Order').' </label></span></form>'; |
} |
} |
if ($ispage) { |
if ($ispage) { |
my $pagename=&escape($pagetitle); |
my $pagename=&escape($pagetitle); |
Line 1438 END
|
Line 1468 END
|
$line.=$title.' <span class="LC_docs_reinit_warn">'.$reinit.'</span>'; |
$line.=$title.' <span class="LC_docs_reinit_warn">'.$reinit.'</span>'; |
} |
} |
$line.=$external."</td>"; |
$line.=$external."</td>"; |
|
$rand_pick_text = ' ' if ($rand_pick_text eq ''); |
|
$rand_order_text = ' ' if ($rand_order_text eq ''); |
if (($allowed) && ($folder!~/^supplemental/)) { |
if (($allowed) && ($folder!~/^supplemental/)) { |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'hd' => 'Hidden', |
'hd' => 'Hidden', |
Line 1449 END
|
Line 1481 END
|
$line.=(<<ENDPARMS); |
$line.=(<<ENDPARMS); |
<td class="LC_docs_entry_parameter"> |
<td class="LC_docs_entry_parameter"> |
$form_start |
$form_start |
|
$form_common |
<label><input type="checkbox" name="hiddenresource_$orderidx" onclick="this.form.changeparms.value='hiddenresource';this.form.submit()" $hidtext /> $lt{'hd'}</label> |
<label><input type="checkbox" name="hiddenresource_$orderidx" onclick="this.form.changeparms.value='hiddenresource';this.form.submit()" $hidtext /> $lt{'hd'}</label> |
$form_end |
$form_end |
<br /> |
<br /> |
$form_start |
$form_start |
|
$form_common |
<label><input type="checkbox" name="encrypturl_$orderidx" onclick="this.form.changeparms.value='encrypturl';this.form.submit()" $enctext /> $lt{'ec'}</label> |
<label><input type="checkbox" name="encrypturl_$orderidx" onclick="this.form.changeparms.value='encrypturl';this.form.submit()" $enctext /> $lt{'ec'}</label> |
$form_end |
$form_end |
</td> |
</td> |
<td class="LC_docs_entry_parameter">$form_start $parameterset $form_end<br /> |
<td class="LC_docs_entry_parameter">$rand_pick_text<br /> |
$form_start $rand_order_text $form_end</td> |
$rand_order_text</td> |
ENDPARMS |
ENDPARMS |
} |
} |
$line.=&Apache::loncommon::end_data_table_row(); |
$line.=&Apache::loncommon::end_data_table_row(); |
Line 2363 sub handler {
|
Line 2397 sub handler {
|
$docuname,$docudom,undef, |
$docuname,$docudom,undef, |
$dir_root). |
$dir_root). |
&return_to_editor()); |
&return_to_editor()); |
|
} elsif ($env{'form.phase'} eq 'decompress_uploaded') { |
|
$uploadphase = 'decompress_phase_one'; |
|
$r->print(&decompression_phase_one(). |
|
&return_to_editor()); |
|
} elsif ($env{'form.phase'} eq 'decompress_cleanup') { |
|
$uploadphase = 'decompress_phase_two'; |
|
$r->print(&decompression_phase_two(). |
|
&return_to_editor()); |
} |
} |
} |
} |
|
|
Line 2933 sub return_to_editor {
|
Line 2975 sub return_to_editor {
|
'</a></p>'; |
'</a></p>'; |
} |
} |
|
|
|
sub decompression_info { |
|
my ($destination,$dir_root) = &embedded_destination(); |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
|
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $container='sequence'; |
|
my $hiddenelem; |
|
if ($env{'form.pagepath'}) { |
|
$container='page'; |
|
$hiddenelem = '<input type="hidden" name="pagepath" value="'.$env{'form.pagepath'}.'" />'."\n"; |
|
} else { |
|
$hiddenelem = '<input type="hidden" name="folderpath" value="'.$env{'form.folderpath'}.'" />'."\n"; |
|
} |
|
if ($env{'form.newidx'}) { |
|
$hiddenelem .= '<input type="hidden" name="newidx" value="'.$env{'form.newidx'}.'" />'."\n"; |
|
} |
|
if ($env{'form.comment'}) { |
|
$hiddenelem .= '<input type="hidden" name="comment" value="'.$env{'form.comment'}.'" />'."\n"; |
|
} |
|
return ($destination,$dir_root,$londocroot,$docudom,$docuname,$container, |
|
$hiddenelem); |
|
} |
|
|
|
sub decompression_phase_one { |
|
my ($dir,$file,$warning,$error,$output); |
|
my ($destination,$dir_root,$londocroot,$docudom,$docuname,$container,$hiddenelem)= |
|
&decompression_info(); |
|
if ($env{'form.archiveurl'} !~ m{^/uploaded/\Q$docudom/$docuname/docs/\E(?:default|supplemental|\d+).*/([^/]+)$}) { |
|
$error = &mt('Archive file "[_1]" not in the expected location.',$env{'form.archiveurl'}); |
|
} else { |
|
my $file = $1; |
|
$output = &Apache::loncommon::process_decompression($docudom,$docuname,$file,$destination,$dir_root,$hiddenelem); |
|
if ($env{'form.archivedelete'}) { |
|
my $map = $env{'form.folder'}.'.'.$container; |
|
my ($delwarning,$delresult); |
|
my ($errtext,$fatal) = &mapread($docuname,$docudom,$map); |
|
if ($fatal) { |
|
if ($container eq 'page') { |
|
$delwarning = &mt('An error occurred retrieving the contents of the current page.'); |
|
} else { |
|
$delwarning = &mt('An error occurred retrieving the contents of the current folder.'); |
|
} |
|
$delwarning .= &mt('As a result the archive file has not been removed.'); |
|
} else { |
|
my $currcmd = $env{'form.cmd'}; |
|
$env{'form.cmd'} = 'del_'.$env{'form.position'}; |
|
if (&handle_edit_cmd($docuname,$docudom)) { |
|
($errtext,$fatal) = &storemap($docuname,$docudom,$map); |
|
if ($fatal) { |
|
if ($container eq 'page') { |
|
$delwarning = &mt('An error occurred updating the contents of the current page.'); |
|
} else { |
|
$delwarning = &mt('An error occurred updating the contents of the current folder.'); |
|
} |
|
} |
|
} |
|
$env{'form.cmd'} = $currcmd; |
|
$delresult = &mt('Archive file removed after extracting files.'); |
|
} |
|
if ($delwarning) { |
|
$output .= '<p class="LC_warning">'. |
|
$delwarning. |
|
'</p>'; |
|
} |
|
if ($delresult) { |
|
$output .= '<p class="LC_info">'. |
|
$delresult. |
|
'</p>'; |
|
} |
|
} |
|
} |
|
if ($error) { |
|
$output .= '<p class="LC_error">'.&mt('Not extracted.').'<br />'. |
|
$error.'</p>'."\n"; |
|
} |
|
if ($warning) { |
|
$output .= '<p class="LC_warning">'.$warning.'</p>'."\n"; |
|
} |
|
return $output; |
|
} |
|
|
|
sub decompression_phase_two { |
|
my ($destination,$dir_root,$londocroot,$docudom,$docuname,$container,$hiddenelem)= |
|
&decompression_info(); |
|
my $output = |
|
&Apache::loncommon::process_extracted_files('coursedocs',$docudom,$docuname, |
|
$destination,$dir_root,$hiddenelem); |
|
return $output; |
|
} |
|
|
sub generate_admin_options { |
sub generate_admin_options { |
my ($help_ref,$env_ref) = @_; |
my ($help_ref,$env_ref) = @_; |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
Line 3048 sub editing_js {
|
Line 3180 sub editing_js {
|
p_ctr1a => 'WARNING: Cutting a resource makes associated grades and scores inaccessible!', |
p_ctr1a => 'WARNING: Cutting a resource makes associated grades and scores inaccessible!', |
p_ctr1b => 'Grades remain inaccessible if resource is pasted into another folder.', |
p_ctr1b => 'Grades remain inaccessible if resource is pasted into another folder.', |
p_ctr2a => 'Cut[_98]', |
p_ctr2a => 'Cut[_98]', |
p_ctr2b => '?[_98]' |
p_ctr2b => '?[_98]', |
|
rpck => 'Enter number to pick (e.g., 3)', |
); |
); |
|
|
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
Line 3242 this.document.forms.renameform.pagesymb.
|
Line 3375 this.document.forms.renameform.pagesymb.
|
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
|
|
|
function updatePick(targetform,index,caller) { |
|
var pickitem = document.getElementById('rpick_'+index); |
|
var picknumitem = document.getElementById('rpicknum_'+index); |
|
if (pickitem.checked) { |
|
var picknum=prompt('$lt{"rpck"}',picknumitem.value); |
|
if (picknum == '' || picknum == null) { |
|
if (caller == 'check') { |
|
pickitem.checked=false; |
|
return; |
|
} |
|
} else { |
|
picknum.toString(); |
|
var regexdigit=/^\\d+\$/; |
|
if (regexdigit.test(picknum)) { |
|
picknumitem.value = picknum; |
|
targetform.changeparms.value='randompick'; |
|
targetform.submit(); |
|
} else { |
|
if (caller == 'check') { |
|
pickitem.checked=false; |
|
} |
|
return; |
|
} |
|
} |
|
} else { |
|
picknumitem.value = 0; |
|
targetform.changeparms.value='randompick'; |
|
targetform.submit(); |
|
} |
|
} |
|
|
function unselectInactive(nav) { |
function unselectInactive(nav) { |
currentNav = document.getElementById(nav); |
currentNav = document.getElementById(nav); |
currentLis = currentNav.getElementsByTagName('LI'); |
currentLis = currentNav.getElementsByTagName('LI'); |