version 1.134, 2025/03/15 01:03:33
|
version 1.136, 2025/06/14 02:50:25
|
Line 1941 sub get_credentials {
|
Line 1941 sub get_credentials {
|
my $privkey = $privhash{'key'}; |
my $privkey = $privhash{'key'}; |
$privnum = $privhash{'version'}; |
$privnum = $privhash{'version'}; |
if (($privnum) && ($privkey ne '')) { |
if (($privnum) && ($privkey ne '')) { |
$cipher = Crypt::CBC->new({'key' => $privkey, |
$cipher = Crypt::CBC->new(-pass => $privkey, |
'cipher' => 'DES'}); |
-cipher => 'Crypt::DES'); |
} |
} |
} |
} |
} |
} |
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}.' '; |
$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 .= ' '.&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 .= ' '.&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>'.(' 'x2). |
&mt('No').'</label>'.(' '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').': '. |
'<span class="LC_nobreak"> -- '.&mt('configurable in course').': '. |
'<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'}.': '; |
$datatable .= '<span class="LC_nobreak">'.$lt{'icon'}.': '; |
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}.' '. |
$datatable .= '<div class="LC_floatleft"><span class="LC_nobreak">'.$lt{$extra}.' '. |
'<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>'.(' 'x2).'<span class="LC_nobreak">'. |
&mt('No').'</label></span>'.(' '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').': '. |
'<span class="LC_nobreak"> -- '.&mt('configurable in course').': '. |
'<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'}.': '. |
$datatable .= '<span class="LC_nobreak">'.$lt{'icon'}.': '. |
'('.&mt('if larger than 21x21 pixels, image will be scaled').') '; |
'('.&mt('if larger than 21x21 pixels, image will be scaled').') '; |
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; |
} |
} |