Diff for /loncom/interface/courseprefs.pm between versions 1.135 and 1.136

version 1.135, 2025/05/13 04:07:07 version 1.136, 2025/06/14 02:50:25
Line 2026  sub process_ltitools { Line 2026  sub process_ltitools {
             } else {              } else {
                 $ltitools{$newid}{'display'}{'target'} = 'iframe';                  $ltitools{$newid}{'display'}{'target'} = 'iframe';
             }              }
             foreach my $item ('passback','roster','returnurl') {              foreach my $item ('desturl','returnurl','passback','roster') {
                 if ($env{'form.ltitools_'.$item.'_add'}) {                  if ($env{'form.ltitools_'.$item.'_add'}) {
                     $ltitools{$newid}{$item} = 1;                      $ltitools{$newid}{$item} = 1;
                     if ($item eq 'returnurl') {                      if (($item eq 'returnurl') || ($item eq 'desturl')) {
                         if ($env{'form.ltitools_crs'.$item.'_add'}) {                          if ($env{'form.ltitools_crs'.$item.'_add'}) {
                             $ltitools{$newid}{'crsconf'}{$item} = 1;                              $ltitools{$newid}{'crsconf'}{$item} = 1;
                         }                          }
                           if ($item eq 'desturl') {
                               $env{'form.ltitools_defdest_add'} =~ s{^\s+|\s+$}{}g;
                               $env{'form.ltitools_defdelay_add'} =~ s{^\s+|\s+$}{}g;
                               if ($env{'form.ltitools_defdest_add'} ne '') {
                                   $ltitools{$newid}{'defdest'} = $env{'form.ltitools_defdest_add'};
                                   if ($env{'form.ltitools_defdelay_add'} =~ /^(\d+\.?\d*)$/) {
                                       $ltitools{$newid}{'defdelay'} = $1;
                                   }
                               }
                           }
                     } elsif ($env{'form.ltitools_'.$item.'valid_add'} ne '') {                      } elsif ($env{'form.ltitools_'.$item.'valid_add'} ne '') {
                         my $lifetime = $env{'form.ltitools_'.$item.'valid_add'};                          my $lifetime = $env{'form.ltitools_'.$item.'valid_add'};
                         $lifetime =~ s/^\s+|\s+$//g;                          $lifetime =~ s/^\s+|\s+$//g;
Line 2217  sub process_ltitools { Line 2227  sub process_ltitools {
                     } else {                      } else {
                         $haschanges{$itemid} = 1;                          $haschanges{$itemid} = 1;
                     }                      }
                     foreach my $extra ('passback','roster','returnurl') {                      foreach my $extra ('desturl','returnurl','passback','roster') {
                         if ($env{'form.ltitools_'.$extra.'_'.$i}) {                          if ($env{'form.ltitools_'.$extra.'_'.$i}) {
                             $ltitools{$itemid}{$extra} = 1;                              $ltitools{$itemid}{$extra} = 1;
                             if ($extra eq 'returnurl') {                              if (($extra eq 'returnurl') || ($extra eq 'desturl')) {
                                 if ($env{'form.ltitools_crs'.$extra.'_'.$i}) {                                  if ($env{'form.ltitools_crs'.$extra.'_'.$i}) {
                                     $ltitools{$itemid}{'crsconf'}{$extra} = 1;                                      $ltitools{$itemid}{'crsconf'}{$extra} = 1;
                                     if (ref($values->{$itemid}{'crsconf'}) eq 'HASH') {                                      if (ref($values->{$itemid}{'crsconf'}) eq 'HASH') {
Line 2231  sub process_ltitools { Line 2241  sub process_ltitools {
                                         $haschanges{$itemid} = 1;                                          $haschanges{$itemid} = 1;
                                     }                                      }
                                 }                                  }
                                   if ($extra eq 'desturl') {
                                       $env{'form.ltitools_defdest_'.$i} =~ s{^\s+|\s+$}{}g;
                                       $env{'form.ltitools_defdelay_'.$i} =~ s{^\s+|\s+$}{}g;
                                       if ($env{'form.ltitools_defdest_'.$i} =~ m{^(https?\://|/)}) {
                                           $ltitools{$itemid}{'defdest'} = $env{'form.ltitools_defdest_'.$i};
                                           if ($values->{$itemid}{'defdest'} ne $ltitools{$itemid}{'defdest'}) {
                                               $haschanges{$itemid} = 1;
                                           }
                                       } elsif ($values->{$itemid}{'defdest'} ne '') {
                                           $haschanges{$itemid} = 1;
                                       }
                                       if ($env{'form.ltitools_defdelay_'.$i} =~ /^(\d+\.?\d*)$/) {
                                           $ltitools{$itemid}{'defdelay'} = $1;
                                           if ($values->{$itemid}{'defdelay'} ne $ltitools{$itemid}{'defdelay'}) {
                                               $haschanges{$itemid} = 1;
                                           }
                                       } elsif ($values->{$itemid} =~ /^(\d+\.?\d*)$/) {
                                           $haschanges{$itemid} = 1;
                                       }
                                   }
                             } elsif ($env{'form.ltitools_'.$extra.'valid_'.$i} ne '') {                              } elsif ($env{'form.ltitools_'.$extra.'valid_'.$i} ne '') {
                                 my $lifetime = $env{'form.ltitools_'.$extra.'valid_'.$i};                                  my $lifetime = $env{'form.ltitools_'.$extra.'valid_'.$i};
                                 $lifetime =~ s/^\s+|\s+$//g;                                  $lifetime =~ s/^\s+|\s+$//g;
Line 3356  sub store_ltitools { Line 3386  sub store_ltitools {
                         $output .= ' '.&mt('None');                          $output .= ' '.&mt('None');
                     }                      }
                     $output .= '</li>';                      $output .= '</li>';
                     foreach my $item ('passback','roster','returnurl') {                      foreach my $item ('desturl','returnurl','passback','roster') {
                         $output .= '<li>'.$lt{$item}.'&nbsp;';                          $output .= '<li>'.$lt{$item};
                         if ($changes->{$itemid}{$item}) {                          if ($changes->{$itemid}{$item}) {
                             $output .= &mt('Yes');                              if ($item eq 'desturl') {
                             if ($item eq 'returnurl') {                                  $output .= ':';
                               }
                               $output .= '&nbsp;'.&mt('Yes');
                               if (($item eq 'returnurl') || ($item eq 'desturl')) {
                                 if (ref($changes->{$itemid}{'crsconf'}) eq 'HASH') {                                  if (ref($changes->{$itemid}{'crsconf'}) eq 'HASH') {
                                     $output .= ' ['.&mt('Configurable in course').': ';                                      $output .= ' ['.&mt('Configurable in course').': ';
                                     if ($changes->{$itemid}{'crsconf'}{$item}) {                                      if ($changes->{$itemid}{'crsconf'}{$item}) {
Line 3368  sub store_ltitools { Line 3401  sub store_ltitools {
                                     } else {                                      } else {
                                         $output .= &mt('No');                                          $output .= &mt('No');
                                     }                                      }
                                     $output .= ']';                                      $output .= ' ]';
                                   }
                                   if ($item eq 'desturl') {
                                       $output .=  '</li><li>'.&mt('Default destination').': ';
                                       if ($changes->{$itemid}{'defdest'} ne '') {
                                           $output .= $changes->{$itemid}{'defdest'}.
                                                      '</li><li>'.&mt('Default delay between login and redirect').': ';
                                           if ($changes->{$itemid}{'defdelay'} ne '') {
                                               $output .= $changes->{$itemid}{'defdelay'}.' s';
                                           } else {
                                               $output .= &mt('None set');
                                           }
                                           $output .= '</li>';
                                       } else {
                                           $output .= &mt('None').'</li>';
                                       }
                                 }                                  }
                             } elsif ($changes->{$itemid}{$item.'valid'}) {                              } elsif ($changes->{$itemid}{$item.'valid'}) {
                                 if ($item eq 'passback') {                                  if ($item eq 'passback') {
Line 3379  sub store_ltitools { Line 3427  sub store_ltitools {
                                                        $changes->{$itemid}{$item.'valid'});                                                         $changes->{$itemid}{$item.'valid'});
                                 }                                  }
                             }                              }
                               unless ($item eq 'desturl') {
                                   $output .= '</li>';
                               }
                         } else {                          } else {
                             $output .= &mt('No');                              $output .= '&nbsp;'.&mt('No').'</li>';
                         }                          }
                         $output .= '</li>';  
                     }                      }
                     if (ref($changes->{$itemid}{'display'}) eq 'HASH') {                      if (ref($changes->{$itemid}{'display'}) eq 'HASH') {
                         my $displaylist;                          my $displaylist;
Line 6664  sub print_ltitools { Line 6714  sub print_ltitools {
                     %courseconfig = %{$settings->{$item}->{'crsconf'}};                      %courseconfig = %{$settings->{$item}->{'crsconf'}};
                 }                  }
             }              }
             foreach my $extra ('passback','roster','returnurl') {              foreach my $extra ('desturl','returnurl','passback','roster') {
                 my $validsty = 'none';                  my $validsty = 'none';
                 my $currvalid;                  my $currvalid;
                 my $checkedon = '';                  my $checkedon = '';
                 my $checkedoff = ' checked="checked"';                  my $checkedoff = ' checked="checked"';
                 my $crscheckedon = '';                  my $crscheckedon = '';
                 my $crscheckedoff = ' checked="checked"';                  my $crscheckedoff = ' checked="checked"';
                   my ($defdest,$defdelay);
                 if ($settings->{$item}->{$extra}) {                  if ($settings->{$item}->{$extra}) {
                     $checkedon = $checkedoff;                      $checkedon = $checkedoff;
                     $checkedoff = '';                      $checkedoff = '';
                     $validsty = 'inline-block';                      $validsty = 'inline-block';
                     if ($extra eq 'returnurl') {                      if (($extra eq 'returnurl') || ($extra eq 'desturl')) {
                         if ($courseconfig{$extra}) {                          if ($courseconfig{$extra}) {
                             $crscheckedon = ' checked="checked"';                              $crscheckedon = ' checked="checked"';
                             $crscheckedoff = '';                              $crscheckedoff = '';
                         }                          }
                           if ($extra eq 'desturl') {
                               $defdest = $settings->{$item}->{'defdest'};
                               $defdelay = $settings->{$item}->{'defdelay'};  
                           }
                     } elsif ($settings->{$item}->{$extra.'valid'} =~ /^\d+\.?\d*$/) {                      } elsif ($settings->{$item}->{$extra.'valid'} =~ /^\d+\.?\d*$/) {
                         $currvalid = $settings->{$item}->{$extra.'valid'};                          $currvalid = $settings->{$item}->{$extra.'valid'};
                     }                      }
Line 6690  sub print_ltitools { Line 6745  sub print_ltitools {
                               &mt('No').'</label>'.('&nbsp;'x2).                                &mt('No').'</label>'.('&nbsp;'x2).
                               '<label><input type="radio" name="ltitools_'.$extra.'_'.$i.'" value="1"'.$checkedon.$onclick.' />'.                                '<label><input type="radio" name="ltitools_'.$extra.'_'.$i.'" value="1"'.$checkedon.$onclick.' />'.
                               &mt('Yes').'</label></span></div>';                                &mt('Yes').'</label></span></div>';
                 if ($extra eq 'returnurl') {                  if (($extra eq 'returnurl') || ($extra eq 'desturl')) {
                     $datatable .= '<div class="LC_floatleft" style="display:'.$validsty.';" id="ltitools_course'.$extra.'_'.$i.'">'.                      $datatable .= '<div class="LC_floatleft" style="display:'.$validsty.';" id="ltitools_course'.$extra.'_'.$i.'">'.
                                   '<span class="LC_nobreak"> -- '.&mt('configurable in course').':&nbsp;'.                                    '<span class="LC_nobreak"> -- '.&mt('configurable in course').':&nbsp;'.
                                   '<label><input type="radio" name="ltitools_crs'.$extra.'_'.$i.'" value="0"'.$crscheckedoff.' />'.                                    '<label><input type="radio" name="ltitools_crs'.$extra.'_'.$i.'" value="0"'.$crscheckedoff.' />'.
Line 6704  sub print_ltitools { Line 6759  sub print_ltitools {
                                       '<input type="text" name="ltitools_'.$extra.'valid_'.$i.'" value="'.$currvalid.'" />');                                        '<input type="text" name="ltitools_'.$extra.'valid_'.$i.'" value="'.$currvalid.'" />');
                 }                  }
                 $datatable .= '</span></div><div style="padding:0;clear:both;margin:0;border:0"></div>';                  $datatable .= '</span></div><div style="padding:0;clear:both;margin:0;border:0"></div>';
    if ($extra eq 'desturl') {
                       $datatable .= '<div style="display:'.$validsty.';" id="ltitools_default'.$extra.'_'.$i.'">'.
                                     '<span class="LC_nobreak"><label>'.&mt('Default destination URL').':'.
                                     '<input type="text" size="60" name="ltitools_defdest_'.$i.'" value="'.$defdest.'" />'.
                                     '</label><span><br /><span class="LC_nobreak"><label>'.
                                     &mt('Default delay between login and redirect').':'.
                                     '<input type="text" size="3" name="ltitools_defdelay_'.$i.'" value="'.$defdelay.'" />'.
                                     '(s)</label></span></div><br />';
                   }
             }              }
             $datatable .= '<span class="LC_nobreak">'.$lt{'icon'}.':&nbsp;';              $datatable .= '<span class="LC_nobreak">'.$lt{'icon'}.':&nbsp;';
             if ($imgsrc) {              if ($imgsrc) {
Line 6898  sub print_ltitools { Line 6962  sub print_ltitools {
                      'passback' => '7',                       'passback' => '7',
                      'roster'   => '300',                       'roster'   => '300',
                    );                     );
     foreach my $extra ('passback','roster','returnurl') {      foreach my $extra ('desturl','returnurl','passback','roster') {
         my $onclick = ' onclick="toggleLTITools(this.form,'."'$extra','add'".');"';          my $onclick = ' onclick="toggleLTITools(this.form,'."'$extra','add'".');"';
         $datatable .= '<div class="LC_floatleft"><span class="LC_nobreak">'.$lt{$extra}.'&nbsp;'.          $datatable .= '<div class="LC_floatleft"><span class="LC_nobreak">'.$lt{$extra}.'&nbsp;'.
                       '<label><input type="radio" name="ltitools_'.$extra.'_add" value="0" checked="checked"'.$onclick.' />'.                        '<label><input type="radio" name="ltitools_'.$extra.'_add" value="0" checked="checked"'.$onclick.' />'.
                       &mt('No').'</label></span>'.('&nbsp;'x2).'<span class="LC_nobreak">'.                        &mt('No').'</label></span>'.('&nbsp;'x2).'<span class="LC_nobreak">'.
                       '<label><input type="radio" name="ltitools_'.$extra.'_add" value="1"'.$onclick.' />'.                        '<label><input type="radio" name="ltitools_'.$extra.'_add" value="1"'.$onclick.' />'.
                       &mt('Yes').'</label></span></div>';                        &mt('Yes').'</label></span></div>';
         if ($extra eq 'returnurl') {          if (($extra eq 'returnurl') || ($extra eq 'desturl')) {
             $datatable .= '<div class="LC_floatleft" style="display:none;" id="ltitools_course'.$extra.'_add">'.              $datatable .= '<div class="LC_floatleft" style="display:none;" id="ltitools_course'.$extra.'_add">'.
                           '<span class="LC_nobreak"> -- '.&mt('configurable in course').':&nbsp;'.                            '<span class="LC_nobreak"> -- '.&mt('configurable in course').':&nbsp;'.
                           '<label><input type="radio" name="ltitools_crs'.$extra.'_add" value="0" checked="checked" />'.                            '<label><input type="radio" name="ltitools_crs'.$extra.'_add" value="0" checked="checked" />'.
Line 6919  sub print_ltitools { Line 6983  sub print_ltitools {
                               '<input type="text" name="ltitools_'.$extra.'valid_add" value="'.$defaulttimes{$extra}.'" />');                                '<input type="text" name="ltitools_'.$extra.'valid_add" value="'.$defaulttimes{$extra}.'" />');
         }          }
         $datatable .= '</span></div><div style="padding:0;clear:both;margin:0;border:0"></div>';          $datatable .= '</span></div><div style="padding:0;clear:both;margin:0;border:0"></div>';
           if ($extra eq 'desturl') {
               $datatable .= '<div style="display:none;" id="ltitools_default'.$extra.'_add">'.
                             '<span class="LC_nobreak"><label>'.&mt('Default destination URL').':'.
                             '<input type="text" size="50" name="ltitools_defdest_add" value="" />'.
                             '</label></span><br /><span class="LC_nobreak"><label>'.
                             &mt('Default delay between login and redirect').':'.
                             '<input type="text" size="3" name="ltitools_defdelay_add" value="1" />'.
                             '(s)</label></span></div><br />';
           }
     }      }
     $datatable .= '<span class="LC_nobreak">'.$lt{'icon'}.':&nbsp;'.      $datatable .= '<span class="LC_nobreak">'.$lt{'icon'}.':&nbsp;'.
                   '('.&mt('if larger than 21x21 pixels, image will be scaled').')&nbsp;';                    '('.&mt('if larger than 21x21 pixels, image will be scaled').')&nbsp;';
Line 7015  sub ltitools_names { Line 7088  sub ltitools_names {
                                           'explanation'    => 'Default Explanation',                                            'explanation'    => 'Default Explanation',
                                           'passback'       => 'Tool can return grades:',                                            'passback'       => 'Tool can return grades:',
                                           'roster'         => 'Tool can retrieve roster:',                                            'roster'         => 'Tool can retrieve roster:',
                                           'returnurl'      => 'Return URL sent on launch:',                                            'returnurl'      => 'Return LONCAPA URL sent on launch:',
                                           'crstarget'      => 'Display target',                                            'crstarget'      => 'Display target',
                                           'crslabel'       => 'Course label',                                            'crslabel'       => 'Course label',
                                           'crstitle'       => 'Course title',                                            'crstitle'       => 'Course title',
                                           'crslinktext'    => 'Link Text',                                            'crslinktext'    => 'Link Text',
                                           'crsexplanation' => 'Explanation',                                            'crsexplanation' => 'Explanation',
                                           'crsappend'      => 'Provider URL',                                            'crsappend'      => 'Provider URL',
                                             'desturl'        => 'Destination URL different from Provider URL',
                                             'delay'          => 'Second(s) delay before redirect to destination URL',
                                         );                                          );
     return %lt;      return %lt;
 }  }

Removed from v.1.135  
changed lines
  Added in v.1.136


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