Diff for /loncom/interface/courseprefs.pm between versions 1.99 and 1.100

version 1.99, 2022/02/01 23:13:19 version 1.100, 2022/02/06 21:36:59
Line 808  sub print_config_box { Line 808  sub print_config_box {
   
 sub process_changes {  sub process_changes {
     my ($cdom,$cnum,$action,$values,$item,$changes,$allitems,$disallowed,$crstype) = @_;      my ($cdom,$cnum,$action,$values,$item,$changes,$allitems,$disallowed,$crstype) = @_;
     my (%newvalues,%lti,%ltienc,$errors);      my (%newvalues,%lti,%ltienc,$ltiauth,$errors);
     if (ref($item) eq 'HASH') {      if (ref($item) eq 'HASH') {
         if (ref($changes) eq 'HASH') {          if (ref($changes) eq 'HASH') {
             my @ordered;              my @ordered;
Line 840  sub process_changes { Line 840  sub process_changes {
                 if (($env{'form.linkprot_add'}) && ($env{'form.linkprot_maxnum'} =~ /^\d+$/)) {                  if (($env{'form.linkprot_add'}) && ($env{'form.linkprot_maxnum'} =~ /^\d+$/)) {
                     push(@ordered,$env{'form.linkprot_maxnum'});                      push(@ordered,$env{'form.linkprot_maxnum'});
                 }                  }
                   if (exists($env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'})) {
                       $ltiauth = $env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'};
                   } else {
                       my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
                       $ltiauth = $domdefs{'crsltiauth'};
                   }
             } elsif (ref($item->{'ordered'}) eq 'ARRAY') {              } elsif (ref($item->{'ordered'}) eq 'ARRAY') {
                 if ($action eq 'courseinfo') {                  if ($action eq 'courseinfo') {
                     my ($can_toggle_cat,$can_categorize) =                      my ($can_toggle_cat,$can_categorize) =
Line 1044  sub process_changes { Line 1050  sub process_changes {
                                 $lti{$itemid}{$inner} = $env{$formitem};                                  $lti{$itemid}{$inner} = $env{$formitem};
                             }                              }
                         }                          }
                           if ($ltiauth) {
                               my $reqitem = 'form.linkprot_requser_'.$idx;
                               $env{$reqitem} =~ s/(`)/'/g;
                               unless ($idx eq 'add') {
                                   if ($current{'requser'} ne $env{$reqitem}) {
                                       $haschanges{$itemid} = 1;
                                   }
                               }
                               if ($env{$reqitem} ne '') {
                                   $lti{$itemid}{'requser'} = $env{$reqitem};
                                   foreach my $inner ('mapuser','notstudent') {
                                       my $formitem = 'form.linkprot_'.$inner.'_'.$idx;
                                       $env{$formitem} =~ s/(`)/'/g;
                                       if ($inner eq 'mapuser') {
                                           if ($env{$formitem} eq 'other') {
                                               my $mapuser = $env{'form.linkprot_customuser_'.$idx};
                                               $mapuser =~ s/(`)/'/g;
                                               $mapuser =~ s/^\s+|\s+$//g;
                                               if ($mapuser ne '') {
                                                   $lti{$itemid}{$inner} = $mapuser;
                                               } else {
                                                   delete($lti{$itemid}{'requser'});
                                                   last;
                                               }
                                           } elsif ($env{$formitem} eq 'sourcedid') {
                                               $lti{$itemid}{$inner} = 'lis_person_sourcedid';
                                           } elsif ($env{$formitem} eq 'email') {
                                               $lti{$itemid}{$inner} = 'lis_person_contact_email_primary';
                                           }
                                       } else {
                                           $lti{$itemid}{$inner} = $env{$formitem};
                                       }
                                       unless ($idx eq 'add') {
                                           if ($current{$inner} ne $lti{$itemid}{$inner}) {
                                               $haschanges{$itemid} = 1;
                                           }
                                       }
                                   }
                               }
                           }
                         unless ($switchserver) {                          unless ($switchserver) {
                             my $keyitem = 'form.linkprot_key_'.$idx;                              my $keyitem = 'form.linkprot_key_'.$idx;
                             $env{$keyitem} =~ s/(`)/'/g;                              $env{$keyitem} =~ s/(`)/'/g;
Line 1711  sub store_changes { Line 1757  sub store_changes {
                             }                              }
                         }                          }
                     } elsif ($item eq 'linkprotection') {                      } elsif ($item eq 'linkprotection') {
                         my (%ltienc,$lti_save_error);                          my ($ltiauth,%ltienc,$lti_save_error);
                           if (exists($env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'})) {
                               $ltiauth = $env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'};
                           } else {
                               my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
                               $ltiauth = $domdefs{'crsltiauth'};
                           }
                         if (ref($changes->{$item}) eq 'HASH') {                          if (ref($changes->{$item}) eq 'HASH') {
                             foreach my $id (sort { $a <=> $b } keys(%{$changes->{$item}})) {                              foreach my $id (sort { $a <=> $b } keys(%{$changes->{$item}})) {
                                 if (ref($changes->{$item}->{$id}) eq 'HASH') {                                  if (ref($changes->{$item}->{$id}) eq 'HASH') {
Line 1748  sub store_changes { Line 1800  sub store_changes {
                                 $chome = &Apache::lonnet::homeserver($cnum,$cdom);                                  $chome = &Apache::lonnet::homeserver($cnum,$cdom);
                                 unless (($chome eq 'no_host') || ($chome eq '')) {                                  unless (($chome eq 'no_host') || ($chome eq '')) {
                                     my @ids=&Apache::lonnet::current_machine_ids();                                      my @ids=&Apache::lonnet::current_machine_ids();
                                     unless (grep(/^\Q$chome\E$/,@ids)) {                                      if (grep(/^\Q$chome\E$/,@ids)) {
                                         &Apache::lonnet::devalidate_cache_new('courseltienc',$hashid);                                          &Apache::lonnet::devalidate_cache_new('courseltienc',$hashid);
                                     }                                      }
                                 }                                  }
Line 1763  sub store_changes { Line 1815  sub store_changes {
                                                     if (exists($ltienc{$id}{$title})) {                                                      if (exists($ltienc{$id}{$title})) {
                                                         if ($title eq 'secret') {                                                          if ($title eq 'secret') {
                                                             my $length = length($ltienc{$id}{$title});                                                              my $length = length($ltienc{$id}{$title});
                                                             $display .= $desc{$title}.': '.('*' x $length);                                                              $display .= $desc{$title}.': '.('*' x $length).', ';
                                                         } else {                                                          } else {
                                                             $display .= $desc{$title}.': '.$ltienc{$id}{$title}.', ';                                                              $display .= $desc{$title}.': '.$ltienc{$id}{$title}.', ';
                                                         }                                                          }
Line 1777  sub store_changes { Line 1829  sub store_changes {
                                                 $display .= $desc{$title}.': '.$values{$title}.', ';                                                  $display .= $desc{$title}.': '.$values{$title}.', ';
                                             }                                              }
                                         }                                          }
                                           if ($ltiauth) {
                                               if (($values{'requser'}) && ($values{'mapuser'} ne '')) {
                                                   if ($values{'mapuser'} eq 'lis_person_contact_email_primary') {
                                                       $display .= &mt('Source of username: Email address [_1]',
                                                                      '(lis_person_contact_email_primary)').', ';
                                                   } elsif ($values{'mapuser'} eq 'lis_person_sourcedid') {
                                                       $display .= &mt('Source of username: User ID [_1]',
                                                                       '(lis_person_sourcedid)').', ';
                                                   } else {
                                                       $display .= &mt('Source of username: [_1]',$values{'mapuser'}).', ';
                                                   }
                                                   if ($values{'notstudent'} eq 'auth') {
                                                       $display .= &mt('Display LON-CAPA login page if no match').', ';
                                                   } elsif ($values{'notstudent'} eq 'reject') {
                                                       $display .= &mt('Discontinue launch if no match').', ';
                                                   }
                                               }
                                           }
                                         $display =~ s/, $//;                                          $display =~ s/, $//;
                                         $output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('[_1] set to [_2]','<i>'.$id.'</i>',                                          $output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('[_1] set to [_2]','<i>'.$id.'</i>',
                                                    "'$display'")).'</li>';                                                     "'$display'")).'</li>';
Line 2511  function toggleLTI(form,num,item) { Line 2581  function toggleLTI(form,num,item) {
     }      }
     return;      return;
 }  }
   
   function toggleLTIReqUser(form,item,extra,valon,styleon,num) {
       if (document.getElementById('linkprot_'+extra+'_'+num)) {
           var extraid = document.getElementById('linkprot_'+extra+'_'+num);
           var itemname = form.elements['linkprot_'+item+'_'+num];
           if (itemname) {
               if (itemname.length > 0) {
                   var setvis;
                   for (var i=0; i<itemname.length; i++) {
                       if (itemname[i].checked == true) {
                           if (itemname[i].value == valon) {
                               extraid.style.display = styleon;
                               setvis = 1;
                           }
                           break;
                       }
                   }
                   if (!setvis) {
                       extraid.style.display = 'none';
                   }
               }
           }
       }
       return;
   }
 ENDSCRIPT  ENDSCRIPT
     $jscript = '<script type="text/javascript" language="Javascript">'."\n".      $jscript = '<script type="text/javascript" language="Javascript">'."\n".
                '// <![CDATA['."\n".                   '// <![CDATA['."\n".  
Line 5418  sub print_linkprotection { Line 5513  sub print_linkprotection {
     if ($noedit) {      if ($noedit) {
         $disabled = ' disabled="disabled"';          $disabled = ' disabled="disabled"';
     }      }
     my %lt = &linkprot_names();      my %desc = &linkprot_names();
       my %lt = &Apache::lonlocal::texthash (
          'requ'      => 'Required settings',
          'opti'      => 'Optional settings',
       );
     my $itemcount = 0;      my $itemcount = 0;
   
       my $ltiauth;
       if (exists($env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'})) {
           $ltiauth = $env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'};
       } else {
           my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
           $ltiauth = $domdefs{'crsltiauth'};
       }
     my $switchserver = &check_switchserver($cdom,$cnum);      my $switchserver = &check_switchserver($cdom,$cnum);
   
     if (ref($settings->{'linkprotection'}) eq 'HASH') {      if (ref($settings->{'linkprotection'}) eq 'HASH') {
Line 5443  sub print_linkprotection { Line 5549  sub print_linkprotection {
                 $datatable .=                  $datatable .=
                     '<tr '.$css_class.'><td><span class="LC_nobreak">'.                      '<tr '.$css_class.'><td><span class="LC_nobreak">'.
                     '<label><input type="checkbox" name="linkprot_del" value="'.$i.'"'.$disabled.' />'.                      '<label><input type="checkbox" name="linkprot_del" value="'.$i.'"'.$disabled.' />'.
                     &mt('Delete?').'</label></span></td>'.                      &mt('Delete?').'</label></span></td><td>';
                     '<td><span class="LC_nobreak">'.$lt{'name'}.                  my ($usersty,$onclickrequser,%checkedrequser);
                   if ($ltiauth) {
                       $usersty = 'display:none';
                       $onclickrequser = ' onclick="toggleLTIReqUser(this.form,'."'requser','optional','1','block','$i'".');"';
                       %checkedrequser = (
                           no => ' checked="checked"',
                           yes  => '',
                       );
                       if ($values{'requser'}) {
                           $checkedrequser{'yes'} = $checkedrequser{'no'};
                           $checkedrequser{'no'} = '';
                       }
                       $datatable .= '<fieldset><legend>'.$lt{'requ'}.'</legend>';
                       if ($values{'requser'}) { 
                           $usersty = 'display:inline-block';
                       }
                   }
                   $datatable .=
                       '<span class="LC_nobreak">'.$desc{'name'}.
                     ':<input type="text" size="15" name="linkprot_name_'.$i.'" value="'.$values{'name'}.'" autocomplete="off"'.$disabled.' /></span> '.                      ':<input type="text" size="15" name="linkprot_name_'.$i.'" value="'.$values{'name'}.'" autocomplete="off"'.$disabled.' /></span> '.
                     ('&nbsp;'x2).                      ('&nbsp;'x2).
                     '<span class="LC_nobreak">'.$lt{'version'}.':<select name="linkprot_version_'.$i.'"'.$disabled.'>'.                      '<span class="LC_nobreak">'.$desc{'version'}.':<select name="linkprot_version_'.$i.'"'.$disabled.'>'.
                     '<option value="LTI-1p0" '.$selected.'>1.1</option></select></span> '."\n".                      '<option value="LTI-1p0" '.$selected.'>1.1</option></select></span> '."\n".
                     ('&nbsp;'x2).                      ('&nbsp;'x2).
                     '<span class="LC_nobreak">'.$lt{'lifetime'}.':<input type="text" name="linkprot_lifetime_'.$i.'"'.                      '<span class="LC_nobreak">'.$desc{'lifetime'}.':<input type="text" name="linkprot_lifetime_'.$i.'"'.
                     'value="'.$values{'lifetime'}.'" size="3"'.$disabled.' /></span>'.                      ' value="'.$values{'lifetime'}.'" size="3"'.$disabled.' /></span>';
                     '<br /><br />';                  if ($ltiauth) {
                       $datatable .= ('&nbsp;'x2).'<span class="LC_nobreak">'.$desc{'requser'}.'?'.
                                     '<label><input type="radio" name="linkprot_requser_'.$i.'" value="0"'.
                                     $onclickrequser.$checkedrequser{'no'}.$disabled.' />'.&mt('No').'</label>&nbsp;'.
                                     '<label><input type="radio" name="linkprot_requser_'.$i.'" value="1"'.
                                     $onclickrequser.$checkedrequser{'yes'}.$disabled.' />'.&mt('Yes').'</label></span>'.
                                     '<br /><br />';
                   }
                 if ($values{'key'} ne '') {                  if ($values{'key'} ne '') {
                     $datatable .= '<span class="LC_nobreak">'.$lt{'key'};                      $datatable .= '<span class="LC_nobreak">'.$desc{'key'};
                     if ($noedit) {                      if ($noedit) {
                         $datatable .= ': ['.&mt('not shown').']';                          $datatable .= ': ['.&mt('not shown').']';
                     } elsif ($switchserver) {                      } elsif ($switchserver) {
Line 5464  sub print_linkprotection { Line 5595  sub print_linkprotection {
                     }                      }
                     $datatable .= '</span> '.('&nbsp;'x2);                      $datatable .= '</span> '.('&nbsp;'x2);
                 } elsif (!$switchserver) {                  } elsif (!$switchserver) {
                     $datatable .= '<span class="LC_nobreak">'.$lt{'key'}.':'.                      $datatable .= '<span class="LC_nobreak">'.$desc{'key'}.':'.
                                   '<input type="text" size="25" name="linkprot_key_'.$i.'" value="'.$values{'key'}.'" autocomplete="off"'.$disabled.' />'.                                    '<input type="text" size="25" name="linkprot_key_'.$i.'" value="'.$values{'key'}.'" autocomplete="off"'.$disabled.' />'.
                                   '</span> '.('&nbsp;'x2);                                    '</span> '.('&nbsp;'x2);
                 }                  }
                 if ($switchserver) {                  if ($switchserver) {
                     if ($values{'usable'} ne '') {                      if ($values{'usable'} ne '') {
                         $datatable .= '<div id="linkprot_divcurrsecret_'.$i.'" style="display:inline-block" /><span class="LC_nobreak">'.                          $datatable .= '<div id="linkprot_divcurrsecret_'.$i.'" style="display:inline-block" /><span class="LC_nobreak">'.
                                       $lt{'secret'}.': ['.&mt('not shown').'] '.('&nbsp;'x2).'</span></div>'.                                        $desc{'secret'}.': ['.&mt('not shown').'] '.('&nbsp;'x2).'</span></div>'.
                                       '<span class="LC_nobreak">'.&mt('Change secret?').                                        '<span class="LC_nobreak">'.&mt('Change secret?').
                                       '<label><input type="radio" value="0" name="linkprot_changesecret_'.$i.'" onclick="javascript:toggleLTI(this.form,'."'$i','secret'".');" checked="checked"'.$disabled.' />'.&mt('No').'</label>'.                                        '<label><input type="radio" value="0" name="linkprot_changesecret_'.$i.'" onclick="javascript:toggleLTI(this.form,'."'$i','secret'".');" checked="checked"'.$disabled.' />'.&mt('No').'</label>'.
                                       ('&nbsp;'x2).                                        ('&nbsp;'x2).
Line 5487  sub print_linkprotection { Line 5618  sub print_linkprotection {
                 } else {                  } else {
                     if ($values{'usable'} ne '') {                      if ($values{'usable'} ne '') {
                         $datatable .= '<div id="linkprot_divcurrsecret_'.$i.'" style="display:inline-block" /><span class="LC_nobreak">'.                          $datatable .= '<div id="linkprot_divcurrsecret_'.$i.'" style="display:inline-block" /><span class="LC_nobreak">'.
                                       $lt{'secret'}.': ['.&mt('not shown').'] '.('&nbsp;'x2).'</span></div>'.                                        $desc{'secret'}.': ['.&mt('not shown').'] '.('&nbsp;'x2).'</span></div>'.
                                       '<span class="LC_nobreak">'.&mt('Change?').                                        '<span class="LC_nobreak">'.&mt('Change?').
                                       '<label><input type="radio" value="0" name="linkprot_changesecret_'.$i.'" onclick="javascript:toggleLTI(this.form,'."'$i','secret'".');" checked="checked"'.$disabled.' />'.&mt('No').'</label>'.                                        '<label><input type="radio" value="0" name="linkprot_changesecret_'.$i.'" onclick="javascript:toggleLTI(this.form,'."'$i','secret'".');" checked="checked"'.$disabled.' />'.&mt('No').'</label>'.
                                       ('&nbsp;'x2).                                        ('&nbsp;'x2).
Line 5499  sub print_linkprotection { Line 5630  sub print_linkprotection {
                                       '<input type="hidden" name="linkprot_id_'.$i.'" value="'.$num.'" /></span></div>';                                        '<input type="hidden" name="linkprot_id_'.$i.'" value="'.$num.'" /></span></div>';
                     } else {                      } else {
                         $datatable .=                          $datatable .=
                             '<span class="LC_nobreak">'.$lt{'secret'}.':'.                              '<span class="LC_nobreak">'.$desc{'secret'}.':'.
                             '<input type="password" size="20" name="linkprot_secret_'.$i.'" value="" autocomplete="off"'.$disabled.' />'.                              '<input type="password" size="20" name="linkprot_secret_'.$i.'" value="" autocomplete="off"'.$disabled.' />'.
                             '<label><input type="checkbox" name="visible" onclick="if (this.checked) { this.form.linkprot_secret_'.$i.'.type='."'text'".' } else { this.form.linkprot_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.                              '<label><input type="checkbox" name="visible" onclick="if (this.checked) { this.form.linkprot_secret_'.$i.'.type='."'text'".' } else { this.form.linkprot_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
                             '<input type="hidden" name="linkprot_id_'.$i.'" value="'.$num.'" /></span>';                              '<input type="hidden" name="linkprot_id_'.$i.'" value="'.$num.'" /></span>';
                     }                      }
                 }                  }
                   if ($ltiauth) {
                       $datatable .= 
                           '</fieldset>'.
                           '<fieldset id="linkprot_optional_'.$i.'" style="'.$usersty.'"><legend>'.$lt{'opti'}.'</legend>'.
                           &linkprot_options($i,$itemcount,$disabled,\%values,\%desc).
                           '</fieldset>';
                   }
                 $datatable .= '</td></tr>';                  $datatable .= '</td></tr>';
                 $itemcount ++;                  $itemcount ++;
             }              }
Line 5514  sub print_linkprotection { Line 5652  sub print_linkprotection {
     $datatable .= '<tr '.$css_class.'><td><span class="LC_nobreak">'."\n".      $datatable .= '<tr '.$css_class.'><td><span class="LC_nobreak">'."\n".
                   '<input type="hidden" name="linkprot_maxnum" value="'.$next.'" />'."\n".                    '<input type="hidden" name="linkprot_maxnum" value="'.$next.'" />'."\n".
                   '<input type="checkbox" name="linkprot_add" value="1"'.$disabled.' />'.&mt('Add').'</span></td>'."\n".                    '<input type="checkbox" name="linkprot_add" value="1"'.$disabled.' />'.&mt('Add').'</span></td>'."\n".
                   '<td>'.                    '<td>';
                   '<span class="LC_nobreak">'.$lt{'name'}.      my ($usersty,$onclickrequser,%checkedrequser);
       if ($ltiauth) {
           $usersty = 'display:none';
           $onclickrequser = ' onclick="toggleLTIReqUser(this.form,'."'requser','optional','1','block','add'".');"';
           %checkedrequser = (
               no => ' checked="checked"',
               yes  => '',
           );
           $datatable .= '<fieldset><legend>'.$lt{'requ'}.'</legend>';
       }
       $datatable .= '<span class="LC_nobreak">'.$desc{'name'}.
                   ':<input type="text" size="15" name="linkprot_name_add" value="" autocomplete="off"'.$disabled.' /></span> '."\n".                    ':<input type="text" size="15" name="linkprot_name_add" value="" autocomplete="off"'.$disabled.' /></span> '."\n".
                   ('&nbsp;'x2).                    ('&nbsp;'x2).
                   '<span class="LC_nobreak">'.$lt{'version'}.':<select name="linkprot_version_add"'.$disabled.'>'.                    '<span class="LC_nobreak">'.$desc{'version'}.':<select name="linkprot_version_add"'.$disabled.'>'.
                   '<option value="LTI-1p0" selected="selected">1.1</option></select></span> '."\n".                    '<option value="LTI-1p0" selected="selected">1.1</option></select></span> '."\n".
                   ('&nbsp;'x2).                    ('&nbsp;'x2).
                   '<span class="LC_nobreak">'.$lt{'lifetime'}.':<input type="text" size="3" name="linkprot_lifetime_add" value="300"'.$disabled.' /></span> '."\n".                    '<span class="LC_nobreak">'.$desc{'lifetime'}.':<input type="text" size="3" name="linkprot_lifetime_add" value="300"'.$disabled.' /></span> '."\n";
                   '<br /><br />';      if ($ltiauth) {
           $datatable .= ('&nbsp;'x2).'<span class="LC_nobreak">'.$desc{'requser'}.'?'.
                         '<label><input type="radio" name="linkprot_requser_add" value="0"'.
                         $onclickrequser.$checkedrequser{'no'}.$disabled.' />'.&mt('No').'</label>&nbsp;'.
                         '<label><input type="radio" name="linkprot_requser_add" value="1"'.
                         $onclickrequser.$checkedrequser{'yes'}.$disabled.' />'.&mt('Yes').'</label></span>';
       }
       $datatable .= '<br /><br />';
     if ($switchserver) {      if ($switchserver) {
         $datatable .= '<span class="LC_nobreak">'.&mt('Key and Secret are required').' - '.&mt("submit from course's home server: [_1].",$switchserver).'</span>'."\n";          $datatable .= '<span class="LC_nobreak">'.&mt('Key and Secret are required').' - '.&mt("submit from course's home server: [_1].",$switchserver).'</span>'."\n";
     } else {      } else {
         $datatable .= '<span class="LC_nobreak">'.$lt{'key'}.':<input type="text" size="25" name="linkprot_key_add" value="" autocomplete="off"'.$disabled.' /></span> '."\n".          $datatable .= '<span class="LC_nobreak">'.$desc{'key'}.':<input type="text" size="25" name="linkprot_key_add" value="" autocomplete="off"'.$disabled.' /></span> '."\n".
                       ('&nbsp;'x2).                        ('&nbsp;'x2).
                       '<span class="LC_nobreak">'.$lt{'secret'}.':<input type="password" size="20" name="linkprot_secret_add" value="" autocomplete="off"'.$disabled.' />'.                        '<span class="LC_nobreak">'.$desc{'secret'}.':<input type="password" size="20" name="linkprot_secret_add" value="" autocomplete="off"'.$disabled.' />'.
                       '<label><input type="checkbox" name="visible" onclick="if (this.checked) { this.form.linkprot_secret_add.type='."'text'".' } else { this.form.linkprot_secret_add.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label></span> '."\n";                        '<label><input type="checkbox" name="visible" onclick="if (this.checked) { this.form.linkprot_secret_add.type='."'text'".' } else { this.form.linkprot_secret_add.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label></span> '."\n";
     }      }
       if ($ltiauth) {
           $datatable .= '</fieldset>'.
                         '<fieldset id="linkprot_optional_add" style="'.$usersty.'"><legend>'.$lt{'opti'}.'</legend>'.
                         &linkprot_options('add',$itemcount,$disabled,{},\%desc).
                        '</fieldset>';
       }
     $datatable .= '</td></tr>';      $datatable .= '</td></tr>';
     $$rowtotal ++;      $$rowtotal ++;
     return $datatable;;      return $datatable;;
 }  }
   
 sub linkprot_names {  sub linkprot_names {
     my %lt = &Apache::lonlocal::texthash(      return &Apache::lonlocal::texthash(
                                           'version'   => 'LTI Version',                                            'version'   => 'LTI Version',
                                           'key'       => 'Key',                                            'key'       => 'Key',
                                           'lifetime'  => 'Nonce lifetime (s)',                                            'lifetime'  => 'Nonce lifetime (s)',
                                           'name'      => 'Launcher Application Name',                                            'name'      => 'Launcher Application',
                                           'secret'    => 'Secret',                                            'secret'    => 'Secret',
                                             'requser'   => 'Use identity',
                                             'email'     => 'Email address',
                                             'sourcedid' => 'User ID',
                                             'other'     => 'Other',
                                             'auth'      => 'Display LON-CAPA login page',
                                             'reject'    => 'Discontinue launch process',
                                         );                                          );
     return %lt;  
 }  }
   
 sub check_switchserver {  sub check_switchserver {
Line 5563  sub check_switchserver { Line 5729  sub check_switchserver {
     return $switchserver;      return $switchserver;
 }  }
   
   sub linkprot_options {
       my ($num,$itemcount,$disabled,$current,$desc) = @_;
       my %lt;
       if (ref($desc) eq 'HASH') {
           %lt = %{$desc};
       }
       my $userfieldsty = 'none';
       my (%checked,$userfield);
       $checked{'sourcedid'} = ' checked="checked"';
       $checked{'reject'} = ' checked="checked"';
       if (ref($current) eq 'HASH') {
           if (($current->{'mapuser'} ne '') && ($current->{'mapuser'} ne 'lis_person_sourcedid')) {
               $checked{'sourcedid'} = '';
               if ($current->{'mapuser'} eq 'lis_person_contact_email_primary') {
                   $checked{'email'} = ' checked="checked"';
               } else {
                   $checked{'other'} = ' checked="checked"';
                   $userfield = $current->{'mapuser'};
                   $userfieldsty = 'inline-block';
               }
           }
           if (($current->{'notstudent'} ne '') && ($current->{'notstudent'} ne 'reject')) {
               $checked{'reject'} = '';
               $checked{'auth'} = ' checked="checked"';
           }
       }
       my $onclickuser = ' onclick="toggleLTIReqUser(this.form,'."'mapuser','userfield','other','inline-block','$num'".');"';
       my $output = '<div class="LC_floatleft"><span class="LC_nobreak">'.
                    &mt('Source of LON-CAPA username in LTI request').':&nbsp;';
       foreach my $option ('sourcedid','email','other') {
           $output .= '<label><input type="radio" name="linkprot_mapuser_'.$num.'" value="'.$option.'"'.
                      $checked{$option}.$onclickuser.$disabled.' />'.$lt{$option}.'</label>'.
                      ($option eq 'other' ? '' : ('&nbsp;'x2) );
       }
       $output .= '</span></div>'.
                  '<div class="LC_floatleft" style="display:'.$userfieldsty.';" id="linkprot_userfield_'.$num.'">'.
                  '<input type="text" name="linkprot_customuser_'.$num.'" '.
                  'value="'.$userfield.'"'.$disabled.' /></div>';
       $output .= '<br />'.
                  '<div class="LC_floatleft"><span class="LC_nobreak">'.
                  &mt('Action when username is not for an enrolled student').':&nbsp;';
       foreach my $option ('reject','auth') {
           $output .= '<label><input type="radio" name="linkprot_notstudent_'.$num.'" value="'.$option.'"'.
                      $checked{$option}.$disabled.' />'.$lt{$option}.'</label>'.
                      ($option eq 'auth' ? '' : ('&nbsp;'x2) );
       }
       $output .= '</span></div>';
       return $output;
   }
   
 sub print_other {  sub print_other {
     my ($cdom,$settings,$allitems,$rowtotal,$crstype,$noedit) = @_;      my ($cdom,$settings,$allitems,$rowtotal,$crstype,$noedit) = @_;
     unless ((ref($settings) eq 'HASH') && (ref($allitems) eq 'ARRAY')) {      unless ((ref($settings) eq 'HASH') && (ref($allitems) eq 'ARRAY')) {

Removed from v.1.99  
changed lines
  Added in v.1.100


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