Diff for /loncom/interface/londocs.pm between versions 1.536 and 1.537

version 1.536, 2013/03/13 00:29:09 version 1.537, 2013/03/17 14:27:34
Line 1889  my %parameter_type = ( 'randompick' Line 1889  my %parameter_type = ( 'randompick'
 my $valid_parameters_re = join('|',keys(%parameter_type));  my $valid_parameters_re = join('|',keys(%parameter_type));
 # set parameters  # set parameters
 sub update_parameter {  sub update_parameter {
       if ($env{'form.changeparms'} eq 'all') {
     return 0 if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/);          my (@allidx,@allmapidx,%allchecked,%currchecked);
           %allchecked = (
     my $which = $env{'form.changeparms'};                           'hiddenresource' => {},
     my $idx = $env{'form.setparms'};                           'encrypturl'     => {},
     if ($env{'form.'.$which.'_'.$idx}) {                           'randompick'     => {},
  my $value = ($which eq 'randompick') ? $env{'form.'.$which.'_'.$idx}                           'randomorder'    => {},
                                      : 'yes';                        );
  &LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $value,          foreach my $which (keys(%allchecked)) {
       $parameter_type{$which});              $env{'form.all'.$which} =~ s/,$//;   
  &remember_parms($idx,$which,'set',$value);              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 {      } else {
  &LONCAPA::map::delparameter($idx,'parameter_'.$which);          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);
   
  &remember_parms($idx,$which,'del');      &remember_parms($idx,$which,'del');
           }
           return 1;
     }      }
     return 1;  
 }  }
   
   
Line 2167  sub editor { Line 2237  sub editor {
         $r->print('</div>');          $r->print('</div>');
     }      }
   
     my ($to_show,$output);      my ($to_show,$output,@allidx,@allmapidx);
   
     &Apache::loncommon::start_data_table_count(); #setup a row counter       &Apache::loncommon::start_data_table_count(); #setup a row counter 
     foreach my $res (@LONCAPA::map::order) {      foreach my $res (@LONCAPA::map::order) {
Line 2176  sub editor { Line 2246  sub editor {
         $url=&LONCAPA::map::qtescape($url);          $url=&LONCAPA::map::qtescape($url);
         unless ($name) {  $name=(split(/\//,$url))[-1]; }          unless ($name) {  $name=(split(/\//,$url))[-1]; }
         unless ($name) { $idx++; next; }          unless ($name) { $idx++; next; }
           push(@allidx,$res);
           if ($url =~ m{/uploaded/.+\.(page|sequence)$}) {
               push(@allmapidx,$res);
           }
         $output .= &entryline($idx,$name,$url,$folder,$allowed,$res,          $output .= &entryline($idx,$name,$url,$folder,$allowed,$res,
                               $coursenum,$coursedom,$crstype,                                $coursenum,$coursedom,$crstype,
                               $pathitem,$supplementalflag,$container);                                $pathitem,$supplementalflag,$container);
Line 2206  sub editor { Line 2280  sub editor {
                 if ($folder !~ /^supplemental/) {                  if ($folder !~ /^supplemental/) {
                     $to_show .= '<th colspan="4">'.&mt('Settings').'</th>';                      $to_show .= '<th colspan="4">'.&mt('Settings').'</th>';
                 }                  }
                 $to_show .= &Apache::loncommon::end_data_table_header_row()                  $to_show .= &Apache::loncommon::end_data_table_header_row();
                            .$output.' '                  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().
                               '<td colspan="5">&nbsp;</td>'.
                               '<td colspan="4">'.
                               '<form action="/adm/coursedocs" method="post" name="togglemultchecks">'.
                               '<span class="LC_nobreak" style="font-size:x-small;font-weight:bold;">'.&mt('Select:').'&nbsp;'.
                               '<label><input type="radio" name="showmultpick" value="0" onclick="javascript:togglePick();" checked="checked" />'.&mt('single').'</label>'.('&nbsp;'x2).'<label><input type="radio" name="showmultpick" value="1" onclick="javascript:togglePick();" />'.&mt('multiple').'</label></span></form>'.
                               '<div id="multiclick" style="display: none">'.
                               '<form action="/adm/coursedocs" method="post" name="cumulativechecks" onsubmit="return submitSettings(this);">'."\n".
                               '<fieldset><legend style="font-size:x-small;">'.&mt('check/uncheck all').'</legend>'."\n".
                               '<table><tr><td class="LC_docs_entry_parameter"><span class="LC_nobreak"><input type="checkbox" name="hiddenresourceall" id="hiddenresourceall" onclick="propagateState(this.form,'."'hiddenresource'".')" />'.&mt('Hidden').'</span></td><td class="LC_docs_entry_parameter"><span class="LC_nobreak"><input type="checkbox" name="randompickall" id="randompickall" onclick="updatePick(this.form,'."'all','check'".');propagateState(this.form,'."'randompick'".');propagateState(this.form,'."'rpicknum'".');" />'.&mt('Randomly Pick').'<span id="rpicktextall"></span><input type="hidden" name="rpicknumall" id="rpicknumall" value="" /></span></td>'.
                               '</tr>'."\n".
                               '<tr><td class="LC_docs_entry_parameter"><span class="LC_nobreak"><input type="checkbox" name="encrypturlall" id="encrypturlall" onclick="propagateState(this.form,'."'encrypturl'".')" />'.&mt('URL hidden').'</span></td><td class="LC_docs_entry_parameter"><span class="LC_nobreak"><input type="checkbox" name="randomorderall" id="randomorderall" onclick="propagateState(this.form,'."'randomorder'".')" />'.&mt('Random Order').'</span></td></tr></table>'."\n".
                               '</fieldset>'.
                               '<input type="hidden" name="folderpath" value="'.$path.'" />'.
                               '<input type="hidden" name="symb" value="'.$env{'form.symb'}.'" />'.
                               '<input type="hidden" name="allhiddenresource" value="" />'.
                               '<input type="hidden" name="allencrypturl" value="" />'.
                               '<input type="hidden" name="allrandompick" value="" />'.
                               '<input type="hidden" name="allrandomorder" value="" />'.
                               '<input type="hidden" name="allidx" value="'.$idxlist.'" />'.
                               '<input type="hidden" name="allmapidx" value="'.$mapidxlist.'" />'.
                               '<input type="hidden" name="changeparms" value="all" />'.
                               '<input type="submit" name="multiplesettings" value="'.&mt('Save settings below').'" />'.
                               '</form>'.
                               '</div>'.
   
                               '</td>'.
                               &Apache::loncommon::end_data_table_row();
                       }
                   }
                   $to_show .= $output.' '
                            .&Apache::loncommon::end_data_table()                             .&Apache::loncommon::end_data_table()
                            .'<br style="line-height:2px;" />'                             .'<br style="line-height:2px;" />'
                            .&Apache::loncommon::end_scrollbox();                             .&Apache::loncommon::end_scrollbox();
Line 2718  END Line 2832  END
             if ($rpicknum) {              if ($rpicknum) {
                 $rpckchk = ' checked="checked"';                  $rpckchk = ' checked="checked"';
             }              }
             my $formname = 'edit_rpick_'.$orderidx;              my $formname = 'edit_randompick_'.$orderidx;
     $rand_pick_text =       $rand_pick_text = 
 '<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n".  '<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n".
 $form_common."\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.'" />';  '<span class="LC_nobreak"><label><input type="checkbox" name="randompick_'.$orderidx.'" id="randompick_'.$orderidx.'" onclick="'."updatePick(this.form,'$orderidx','check');".'"'.$rpckchk.' /> '.&mt('Randomly Pick').'</label><input type="hidden" name="rpicknum_'.$orderidx.'" id="rpicknum_'.$orderidx.'" value="'.$rpicknum.'" /><span id="randompicknum_'.$orderidx.'">';
             if ($rpicknum ne '') {              if ($rpicknum ne '') {
                 $rand_pick_text .= ':&nbsp;<a href="javascript:updatePick('."document.$formname,'$orderidx','link'".')">'.$rpicknum.'</a>';                  $rand_pick_text .= ':&nbsp;<a href="javascript:updatePick('."document.$formname,'$orderidx','link'".')">'.$rpicknum.'</a>';
             }              }
             $rand_pick_text .= '</span></form>';              $rand_pick_text .= '</span></span>'.
                                  $form_end;
        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"':'');
               my $formname = 'edit_rorder_'.$orderidx;
     $rand_order_text =       $rand_order_text = 
 $form_start.  '<form action="/adm/coursedocs" method="post" name="'.$formname.'">'."\n".
 $form_common.'  $form_common."\n".
 <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>';  '<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" id="randomorder_'.$orderidx.'" onclick="checkForSubmit(this.form,'."'randomorder'".')"; '.$ro_set.' /> '.&mt('Random Order').' </label></span>'.
   $form_end; 
         }          }
     } elsif ($supplementalflag && !$allowed) {      } elsif ($supplementalflag && !$allowed) {
         $url .= ($url =~ /\?/) ? '&amp;':'?';          $url .= ($url =~ /\?/) ? '&amp;':'?';
Line 2806  $form_common.' Line 2923  $form_common.'
     ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':'');      ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':'');
  my $hidtext=   my $hidtext=
     ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':'');      ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':'');
           my $formhidden = 'edit_hiddenresource_'.$orderidx;
           my $formurlhidden = 'edit_encrypturl_'.$orderidx;
  $line.=(<<ENDPARMS);   $line.=(<<ENDPARMS);
   <td class="LC_docs_entry_parameter">    <td class="LC_docs_entry_parameter">
     $form_start      <form action="/adm/coursedocs" method="post" name="$formhidden">
     $form_common      $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" id="hiddenresource_$orderidx" onclick="checkForSubmit(this.form,'."'hiddenresource'".');" $hidtext /> $lt{'hd'}</label>
     $form_end      $form_end
     <br />      <br />
     $form_start      <form action="/adm/coursedocs" method="post" name="$formurlhidden">
     $form_common      $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" id="encrypturl_$orderidx" onclick="checkForSubmit(this.form,'."'encrypturl'".');" $enctext /> $lt{'ec'}</label>
     $form_end      $form_end
   </td>    </td>
   <td class="LC_docs_entry_parameter">$rand_pick_text<br />    <td class="LC_docs_entry_parameter">$rand_pick_text<br />
Line 4922  this.document.forms.renameform.submit(); Line 5041  this.document.forms.renameform.submit();
 }  }
   
 function updatePick(targetform,index,caller) {  function updatePick(targetform,index,caller) {
     var pickitem = document.getElementById('rpick_'+index);      var pickitem;
     var picknumitem = document.getElementById('rpicknum_'+index);      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);
       }
     if (pickitem.checked) {      if (pickitem.checked) {
         var picknum=prompt('$lt{"rpck"}',picknumitem.value);          var picknum=prompt('$lt{"rpck"}',picknumitem.value);
         if (picknum == '' || picknum == null) {          if (picknum == '' || picknum == null) {
             if (caller == 'check') {              if (caller == 'check') {
                 pickitem.checked=false;                  pickitem.checked=false;
                 return;                  if (index == 'all') {
                       picknumtext.innerHTML = '';
                       if (caller == 'link') {
                           propagateState(targetform,'rpicknum');
                       }
                   } else {
                       checkForSubmit(targetform,'randompick');
                   }
             }              }
         } else {          } else {
             picknum.toString();              picknum.toString();
             var regexdigit=/^\\d+\$/;              var regexdigit=/^\\d+\$/;
             if (regexdigit.test(picknum)) {              if (regexdigit.test(picknum)) {
                 picknumitem.value = picknum;                  picknumitem.value = picknum;
                 targetform.changeparms.value='randompick';                  if (index == 'all') {
                 targetform.submit();                      picknumtext.innerHTML = '&nbsp;<a href="javascript:updatePick(document.cumulativechecks,\\'all\\',\\'link\\');">'+picknum+'</a>';
                       if (caller == 'link') {
                           propagateState(targetform,'rpicknum');
                       }
                   } else {
                       picknumtext.innerHTML = '&nbsp;<a href="javascript:updatePick(document.edit_randompick_'+index+',\\''+index+'\\',\\'link\\');">'+picknum+'</a>';
                       checkForSubmit(targetform,'randompick');
                   }
             } else {              } else {
                 if (caller == 'check') {                  if (caller == 'check') {
                     pickitem.checked=false;                      if (index == 'all') {
                           picknumtext.innerHTML = '';
                           if (caller == 'link') {
                               propagateState(targetform,'rpicknum');
                           }
                       } else {
                           pickitem.checked=false;
                           checkForSubmit(targetform,'randompick');
                       }
                 }                  }
                 return;                  return;
             }              }
         }          }
     } else {      } else {
         picknumitem.value = 0;          picknumitem.value = '';
         targetform.changeparms.value='randompick';          picknumtext.innerHTML = '';
         targetform.submit();          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<allidxs.length; i++) {
                           if (document.getElementById(param+'_'+allidxs[i])) {
                               if (setcheck == 1) {
                                   document.getElementById(param+'_'+allidxs[i]).checked = true;
                               } else {
                                   document.getElementById(param+'_'+allidxs[i]).checked = false;
                               }
                           }
                       }
                   }
               }
           } else {
               var allmapidxlist = form.allmapidx.value;
               if (allmapidxlist != '') {
                   var allmapidxs = allmapidxlist.split(',');
                   if (allmapidxs.length > 1) {
                       for (var i=0; i<allmapidxs.length; i++) {
                           var item = param+'_'+allmapidxs[i];
                           if (document.getElementById(item)) {
                               if (param == 'rpicknum') {
                                   if (document.getElementById('randompick_'+allmapidxs[i])) {
                                       if (document.getElementById('randompick_'+allmapidxs[i]).checked) {
                                           document.getElementById(param+'_'+allmapidxs[i]).value = rpick;
                                           if (rpick > 0) {
                                               document.getElementById('randompicknum_'+allmapidxs[i]).innerHTML = ':&nbsp;<a href="javascript:updatePick(document.edit_randompick_'+allmapidxs[i]+',\\''+allmapidxs[i]+'\\',\\'link\\')">'+rpick+'</a>';
                                           } 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<document.togglemultchecks.showmultpick.length; i++) {
               if (document.togglemultchecks.showmultpick[i].checked) {
                   if (document.togglemultchecks.showmultpick[i].value == 0) {
                       targetform.changeparms.value=param;
                       targetform.submit();
                   }
               }
           }
       }
       return;
   }
   
 function unselectInactive(nav) {  function unselectInactive(nav) {
 currentNav = document.getElementById(nav);  currentNav = document.getElementById(nav);
 currentLis = currentNav.getElementsByTagName('LI');  currentLis = currentNav.getElementsByTagName('LI');
Line 5056  function toContents(jumpto) { Line 5295  function toContents(jumpto) {
     location.href=newurl;      location.href=newurl;
 }  }
   
   function submitSettings(form) {
       var allidxlist = form.allidx.value;
       form.allencrypturl.value = '';
       form.allhiddenresource.value = '';
       if (allidxlist != '') {
           var allidxs = allidxlist.split(',');
           if (allidxs.length > 1) {
               for (var i=0; i<allidxs.length; i++) {
                   if (document.getElementById('hiddenresource_'+allidxs[i])) {
                       if (document.getElementById('hiddenresource_'+allidxs[i]).checked) {
                           form.allhiddenresource.value += allidxs[i]+',';
                       }
                   }
                   if (document.getElementById('encrypturl_'+allidxs[i])) {
                       if (document.getElementById('encrypturl_'+allidxs[i]).checked) {
                           form.allencrypturl.value += allidxs[i]+',';
                       }
                   }
               }
           }
       }
       var allmapidxlist = form.allmapidx.value;
       form.allrandompick.value = '';
       form.allrandomorder.value = '';
       if (allmapidxlist != '') {
           var allmapidxs = allmapidxlist.split(',');
           for (var i=0; i<allmapidxs.length; i++) {
               var randompick = document.getElementById('randompick_'+allmapidxs[i]);
               var rpicknum = document.getElementById('rpicknum_'+allmapidxs[i]);
               var randorder = document.getElementById('randomorder_'+allmapidxs[i]);
               if ((randompick.checked) && (rpicknum.value != '')) {
                   form.allrandompick.value += allmapidxs[i]+':'+rpicknum.value+',';
               }
               if (randorder.checked) {
                   form.allrandomorder.value += allmapidxs[i]+',';
               }
           }
       }
       form.submit();
       return true;
   }
   
   function togglePick() {
       var disp = 'none';
       if (document.getElementById('multiclick')) {
           var curr = document.getElementById('multiclick').style.display;
           if (curr == 'none') {
               disp='block';
           }
           document.getElementById('multiclick').style.display=disp;
       }
       if (document.getElementById('savemulti')) {
           var curr = document.getElementById('save.multi').style.display;
           if (curr == 'none') {
               disp='inline';
           }
           document.getElementById('savemulti').style.display=disp;
       }
       resize_scrollbox('contentscroll','1','1');
       return;
   }
   
 ENDNEWSCRIPT  ENDNEWSCRIPT
 }  }
   

Removed from v.1.536  
changed lines
  Added in v.1.537


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>