--- loncom/interface/londocs.pm 2013/03/17 23:55:01 1.484.2.29 +++ loncom/interface/londocs.pm 2013/03/13 00:29:09 1.536 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.484.2.29 2013/03/17 23:55:01 raeburn Exp $ +# $Id: londocs.pm,v 1.536 2013/03/13 00:29:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -353,7 +353,7 @@ $initialtext END $env{'form.output'}=$newhtml; - my $result = + my $result = &Apache::lonnet::finishuserfileupload($coursenum,$coursedom, 'output', "$filepath/$residx/$fname.html"); @@ -377,7 +377,7 @@ END removefrommap => \%removefrommap, removeparam => \%removeparam, ); - my ($result,$msgsarray,$lockerror) = + my ($result,$msgsarray,$lockerror) = &apply_fixups($folder,1,$coursedom,$coursenum,\%import_errors,\%updated); if (keys(%import_errors) > 0) { $fixuperrors = @@ -804,7 +804,7 @@ sub print_paste_buffer { $r->print('
'.$buffer); if ((!$areachange) && (!$othercourse) && ($env{'docs.markedcopy_cmd'} eq 'cut')) { - if (($is_uploaded_map) || + if (($is_uploaded_map) || ($env{'docs.markedcopy_url'} =~ /(bulletinboard|smppg)$/) || ($env{'docs.markedcopy_url'} =~ m{^/uploaded/$coursedom/$coursenum/(?:docs|supplemental)/(.+)$})) { my ($copytext,$movetext); @@ -1049,7 +1049,7 @@ sub do_paste_from_buffer { &url_paste_fixups($url,$folder,$prefixchg,$coursedom,$coursenum, $srcdom,$srcnum,$allmaps,\%rewrites, \%retitles,\%copies,\%dbcopies,\%zombies,\%params,\%mapmoves, - \%mapchanges,\%tomove,\%newsubdir,\%newurls); + \%mapchanges,\%tomove,\%newsubdir,\%newurls); } } elsif ($url=~m {^/res/}) { # published maps can only exists once, so remove it from paste buffer when done @@ -1085,9 +1085,9 @@ sub do_paste_from_buffer { $msg = &mt('Paste failed: An error occurred when copying the bulletin board.').' '.$errtext; } return ($result,undef,[$msg],$lockerr{$prefix}); - } + } if ($lockerr{$prefix}) { - $lockerrors = $lockerr{$prefix}; + $lockerrors = $lockerr{$prefix}; } } } @@ -1116,7 +1116,7 @@ sub do_paste_from_buffer { if ($newdocsdir eq '') { $newdocsdir = 'default'; } - if (($prefixchg) || + if (($prefixchg) || ($srcdom ne $coursedom) || ($srcnum ne $coursenum) || ($env{'form.docs.markedcopy_options'} ne 'move')) { my $newpath = "$newprefix/$newdocsdir/$newidx/$rem"; @@ -1194,7 +1194,7 @@ sub do_paste_from_buffer { $save_err = $errtext; } } - + if ($env{'form.docs.markedcopy_options'} eq 'move') { &Apache::lonnet::delenv('docs.markedcopy'); &Apache::lonnet::delenv('docs.markedcopy_nested'); @@ -1270,7 +1270,7 @@ sub dbcopy { if (ref($dbref) eq 'HASH') { if ($url =~ m{/(smppg|bulletinboard)$}) { my $prefix = $1; - if (($dbref->{'cdom'} =~ /^$match_domain$/) && + if (($dbref->{'cdom'} =~ /^$match_domain$/) && ($dbref->{'cnum'} =~ /^$match_courseid$/)) { my $db_name; my $marker = (split(m{/},$url))[4]; @@ -1305,12 +1305,12 @@ sub dbcopy { my $photo = $contents{'uploaded.photourl'}; my ($subdir,$fname) = ($photo =~ m{^/uploaded/$match_domain/$match_courseid/+(bulletin|simplepage)/(?:|\d+/)([^/]+)$}); - my $newphoto; + my $newphoto; if ($fname ne '') { my $content = &Apache::lonnet::getfile($photo); unless ($content eq '-1') { $env{'form.'.$suffix.'.photourl'} = $content; - $newphoto = + $newphoto = &Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$suffix.'.photourl',"$subdir/$suffix/$fname"); delete($env{'form.'.$suffix.'.photourl'}); } @@ -1327,11 +1327,11 @@ sub dbcopy { } } if (($freedlock ne 'ok') && (ref($lockerrorsref) eq 'HASH')) { - $lockerrorsref->{$prefix} = + $lockerrorsref->{$prefix} = '
'. &mt('There was a problem removing a lockfile.'); if ($prefix eq 'smppg') { - $lockerrorsref->{$prefix} .= + $lockerrorsref->{$prefix} .= &mt('This will prevent creation of additional simple pages in this course.'); } else { $lockerrorsref->{$prefix} .= &mt('This will prevent creation of additional bulletin boards in this course.'); @@ -1505,7 +1505,7 @@ sub url_paste_fixups { } } } elsif ($ressrc =~ m{^/adm/($match_domain)/($match_courseid)/.+$}) { - next if ($skip); + next if ($skip); my $srcdom = $1; my $srcnum = $2; if (($srcdom ne $cdom) || ($srcnum ne $cnum)) { @@ -1889,93 +1889,23 @@ my %parameter_type = ( 'randompick' my $valid_parameters_re = join('|',keys(%parameter_type)); # set parameters sub update_parameter { - if ($env{'form.changeparms'} eq 'all') { - my (@allidx,@allmapidx,%allchecked,%currchecked); - %allchecked = ( - 'hiddenresource' => {}, - 'encrypturl' => {}, - 'randompick' => {}, - 'randomorder' => {}, - ); - foreach my $which (keys(%allchecked)) { - $env{'form.all'.$which} =~ s/,$//; - if ($which eq 'randompick') { - foreach my $item (split(/,/,$env{'form.all'.$which})) { - my ($res,$value) = split(/:/,$item); - if ($value =~ /^\d+$/) { - $allchecked{$which}{$res} = $value; - } - } - } else { - map { $allchecked{$which}{$_} = 1; } split(/,/,$env{'form.all'.$which}); - } - } - my $haschanges = 0; - foreach my $res (@LONCAPA::map::order) { - my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]); - $name=&LONCAPA::map::qtescape($name); - $url=&LONCAPA::map::qtescape($url); - next unless ($name && $url); - my $is_map; - if ($url =~ m{/uploaded/.+\.(page|sequence)$}) { - $is_map = 1; - } - foreach my $which (keys(%allchecked)) { - if (($which eq 'randompick' || $which eq 'randomorder')) { - next if (!$is_map); - } - my $oldvalue = 0; - my $newvalue = 0; - if ($allchecked{$which}{$res}) { - $newvalue = $allchecked{$which}{$res}; - } - my $current = (&LONCAPA::map::getparameter($res,'parameter_'.$which))[0]; - if ($which eq 'randompick') { - if ($current =~ /^(\d+)$/) { - $oldvalue = $1; - } - } else { - if ($current =~ /^yes$/i) { - $oldvalue = 1; - } - } - if ($oldvalue ne $newvalue) { - $haschanges = 1; - if ($newvalue) { - my $storeval = 'yes'; - if ($which eq 'randompick') { - $storeval = $newvalue; - } - &LONCAPA::map::storeparameter($res,'parameter_'.$which, - $storeval, - $parameter_type{$which}); - &remember_parms($res,$which,'set',$storeval); - } elsif ($oldvalue) { - &LONCAPA::map::delparameter($res,'parameter_'.$which); - &remember_parms($res,$which,'del'); - } - } - } - } - return $haschanges; - } else { - return 0 if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/); - my $which = $env{'form.changeparms'}; - my $idx = $env{'form.setparms'}; - if ($env{'form.'.$which.'_'.$idx}) { - my $value = ($which eq 'randompick') ? $env{'form.rpicknum_'.$idx} - : 'yes'; - &LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $value, - $parameter_type{$which}); - &remember_parms($idx,$which,'set',$value); - } else { - &LONCAPA::map::delparameter($idx,'parameter_'.$which); + return 0 if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/); - &remember_parms($idx,$which,'del'); - } - return 1; + my $which = $env{'form.changeparms'}; + my $idx = $env{'form.setparms'}; + if ($env{'form.'.$which.'_'.$idx}) { + my $value = ($which eq 'randompick') ? $env{'form.'.$which.'_'.$idx} + : 'yes'; + &LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $value, + $parameter_type{$which}); + &remember_parms($idx,$which,'set',$value); + } else { + &LONCAPA::map::delparameter($idx,'parameter_'.$which); + + &remember_parms($idx,$which,'del'); } + return 1; } @@ -2087,7 +2017,7 @@ sub editor { \%paste_errors); if (ref($pastemsgarray) eq 'ARRAY') { if (@{$pastemsgarray} > 0) { - + $r->print('

'. join('
',@{$pastemsgarray}). '

'); @@ -2133,7 +2063,7 @@ sub editor { my ($name,$url,$residx)= map { &unescape($_); } split(/\=/,$item); if ($url =~ m{^\Q/uploaded/$coursedom/$coursenum/\E(default|supplemental)_new\.(sequence|page)$}) { - my ($suffix,$errortxt,$locknotfreed) = + my ($suffix,$errortxt,$locknotfreed) = &new_timebased_suffix($coursedom,$coursenum,'map',$1,$2); if ($locknotfreed) { $r->print($locknotfreed); @@ -2237,7 +2167,7 @@ sub editor { $r->print('
'); } - my ($to_show,$output,@allidx,@allmapidx); + my ($to_show,$output); &Apache::loncommon::start_data_table_count(); #setup a row counter foreach my $res (@LONCAPA::map::order) { @@ -2246,10 +2176,6 @@ sub editor { $url=&LONCAPA::map::qtescape($url); unless ($name) { $name=(split(/\//,$url))[-1]; } unless ($name) { $idx++; next; } - push(@allidx,$res); - if ($url =~ m{/uploaded/.+\.(page|sequence)$}) { - push(@allmapidx,$res); - } $output .= &entryline($idx,$name,$url,$folder,$allowed,$res, $coursenum,$coursedom,$crstype, $pathitem,$supplementalflag,$container); @@ -2280,48 +2206,8 @@ sub editor { if ($folder !~ /^supplemental/) { $to_show .= ''.&mt('Settings').''; } - $to_show .= &Apache::loncommon::end_data_table_header_row(); - if ($folder !~ /^supplemental/) { - my $idxlist = join(',',@allidx); - my $mapidxlist = join(',',@allmapidx); - if (@allidx > 0) { - my $path; - if ($env{'form.folderpath'}) { - $path = - &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); - } - $to_show .= - &Apache::loncommon::continue_data_table_row(). - ' '. - ''. - ''. - ''.&mt('Select:').' '. - ''.(' 'x2).'
'. - ''. - - ''. - &Apache::loncommon::end_data_table_row(); - } - } - $to_show .= $output.' ' + $to_show .= &Apache::loncommon::end_data_table_header_row() + .$output.' ' .&Apache::loncommon::end_data_table() .'
' .&Apache::loncommon::end_scrollbox(); @@ -2832,24 +2718,21 @@ END if ($rpicknum) { $rpckchk = ' checked="checked"'; } - my $formname = 'edit_randompick_'.$orderidx; + my $formname = 'edit_rpick_'.$orderidx; $rand_pick_text = '
'."\n". $form_common."\n". -''; +''; if ($rpicknum ne '') { $rand_pick_text .= ': '.$rpicknum.''; } - $rand_pick_text .= ''. - $form_end; + $rand_pick_text .= '
'; my $ro_set= ((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); - my $formname = 'edit_rorder_'.$orderidx; $rand_order_text = -'
'."\n". -$form_common."\n". -''. -$form_end; +$form_start. +$form_common.' +
'; } } elsif ($supplementalflag && !$allowed) { $url .= ($url =~ /\?/) ? '&':'?'; @@ -2923,18 +2806,16 @@ $form_end; ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':''); my $hidtext= ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':''); - my $formhidden = 'edit_hiddenresource_'.$orderidx; - my $formurlhidden = 'edit_encrypturl_'.$orderidx; $line.=(< -
+ $form_start $form_common - + $form_end
- + $form_start $form_common - + $form_end $rand_pick_text
@@ -2976,7 +2857,7 @@ sub new_timebased_suffix { } } if ($freedlock ne 'ok') { - $locknotfreed = + $locknotfreed = '
'. &mt('There was a problem removing a lockfile.').' '; if ($type eq 'map') { @@ -3531,6 +3412,7 @@ sub startContentScreen { if (($mode eq 'navmaps') || ($mode eq 'supplemental')) { $output .= '    '.&mt('Content Overview').'    '."\n"; $output .= '     '.&mt('Content Search').'     '."\n"; + $output .= '      '.&mt('Content Index').'      '."\n"; $output .= '
  • '.&mt('Supplemental Content').'
  • '; } else { $output .= '
  •       '.&mt('Content Editor').'      
  • '."\n"; @@ -3597,7 +3479,7 @@ sub handler { $help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); $help{'Course Roster'} = &Apache::loncommon::help_open_topic('Docs_Course_Roster'); $help{'Web Page'} = &Apache::loncommon::help_open_topic('Docs_Web_Page'); - + my $allowed; # URI is /adm/supplemental when viewing supplemental docs in non-edit mode. unless ($r->uri eq '/adm/supplemental') { @@ -3931,7 +3813,7 @@ sub handler { 'navc' => 'Table of Contents', 'sipa' => 'Simple Course Page', 'sipr' => 'Simple Problem', - 'webp' => 'Blank Web Page (editable)', + 'webp' => 'Blank Web Page (editable)', 'drbx' => 'Drop Box', 'scuf' => 'External Scores (handgrade, upload, clicker)', 'bull' => 'Discussion Board', @@ -4214,7 +4096,7 @@ NROSTFORM $help{'Web Page'} NWEBFORM - + my $specialdocumentsform; my @specialdocumentsforma; @@ -4804,7 +4686,7 @@ sub editing_js { p_msb => 'Title for the Problem', p_mdb => 'Title for the Drop Box', p_mbb => 'Title for the Discussion Board', - p_mwp => 'Title for Web Page', + p_mwp => 'Title for Web Page', p_mab => "Enter user:domain for User's Personal Information Page", p_mab2 => 'Personal Information Page of ', p_mab_alrt1 => 'Not a valid user:domain', @@ -4906,7 +4788,7 @@ function makewebpage(type) { formname = this.document.forms.newwebpage; } if (title) { - var webpage = formname.importdetail.value; + var webpage = formname.importdetail.value; formname.importdetail.value = escape(title)+'='+webpage; formname.submit(); } @@ -5040,154 +4922,34 @@ this.document.forms.renameform.submit(); } function updatePick(targetform,index,caller) { - var pickitem; - var picknumitem; - var picknumtext; - if (index == 'all') { - pickitem = document.getElementById('randompickall'); - picknumitem = document.getElementById('rpicknumall'); - picknumtext = document.getElementById('rpicktextall'); - } else { - pickitem = document.getElementById('randompick_'+index); - picknumitem = document.getElementById('rpicknum_'+index); - picknumtext = document.getElementById('randompicknum_'+index); - } + 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; - if (index == 'all') { - picknumtext.innerHTML = ''; - if (caller == 'link') { - propagateState(targetform,'rpicknum'); - } - } else { - checkForSubmit(targetform,'randompick'); - } + return; } } else { picknum.toString(); var regexdigit=/^\\d+\$/; if (regexdigit.test(picknum)) { picknumitem.value = picknum; - if (index == 'all') { - picknumtext.innerHTML = ' '+picknum+''; - if (caller == 'link') { - propagateState(targetform,'rpicknum'); - } - } else { - picknumtext.innerHTML = ' '+picknum+''; - checkForSubmit(targetform,'randompick'); - } + targetform.changeparms.value='randompick'; + targetform.submit(); } else { if (caller == 'check') { - if (index == 'all') { - picknumtext.innerHTML = ''; - if (caller == 'link') { - propagateState(targetform,'rpicknum'); - } - } else { - pickitem.checked=false; - checkForSubmit(targetform,'randompick'); - } + pickitem.checked=false; } return; } } } else { - picknumitem.value = ''; - picknumtext.innerHTML = ''; - if (index == 'all') { - if (caller == 'link') { - propagateState(targetform,'rpicknum'); - } - } else { - checkForSubmit(targetform,'randompick'); - } - } -} - -function propagateState(form,param) { - if (document.getElementById(param+'all')) { - var setcheck = 0; - var rpick = 0; - if (param == 'rpicknum') { - if (document.getElementById('randompickall')) { - if (document.getElementById('randompickall').checked) { - if (document.getElementById('rpicknumall')) { - rpick = document.getElementById('rpicknumall').value; - } - } - } - } else { - if (document.getElementById(param+'all').checked) { - setcheck = 1; - } - } - if ((param == 'encrypturl') || (param == 'hiddenresource')) { - var allidxlist = form.allidx.value; - if (allidxlist != '') { - var allidxs = allidxlist.split(','); - if (allidxs.length > 1) { - for (var i=0; i 1) { - for (var i=0; i 0) { - document.getElementById('randompicknum_'+allmapidxs[i]).innerHTML = ': '+rpick+''; - } else { - document.getElementById('randompicknum_'+allmapidxs[i]).innerHTML = ''; - } - } - } - } else { - if (setcheck == 1) { - document.getElementById(param+'_'+allmapidxs[i]).checked = true; - } else { - document.getElementById(param+'_'+allmapidxs[i]).checked = false; - } - } - } - } - } - } - } - } - return; -} - -function checkForSubmit(targetform,param) { - if (document.togglemultchecks.showmultpick.length) { - for (var i=0; i 1) { - for (var i=0; i