--- loncom/interface/lonpreferences.pm 2024/03/03 01:57:35 1.196.4.28.2.6
+++ loncom/interface/lonpreferences.pm 2025/03/05 02:27:00 1.246
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Preferences
#
-# $Id: lonpreferences.pm,v 1.196.4.28.2.6 2024/03/03 01:57:35 raeburn Exp $
+# $Id: lonpreferences.pm,v 1.246 2025/03/05 02:27:00 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -165,7 +165,7 @@ sub texenginechanger {
my %mathchoices=('' => 'Default',
'tth' => 'tth (TeX to HTML)',
#'ttm' => 'TeX to MathML',
- 'MathJax' => 'MathJax',
+ 'MathJax' => 'MathJax',
'mimetex' => 'mimetex (Convert to Images)',
'raw' => 'Raw (Screen Reader)'
);
@@ -182,7 +182,7 @@ sub texenginechanger {
'change' => 'Save',
'exmpl' => 'Examples',
'mathjax' => 'MathJax:',
- 'mathjaxinfo' => 'MathJax provides rendered equations whose source code can be extracted in TeX and MathML formats by right clicking the equation.',
+ 'mathjaxinfo' => 'MathJax provides rendered equations whose source code can be extracted in TeX and MathML formats by right clicking the equation.',
'tth' => 'tth (TeX to HTML):',
'mimetex' => 'mimetex (Convert to Images):',
);
@@ -280,7 +280,7 @@ sub rolesprefchanger {
my $hotlist_n=$userenv{'recentrolesn'};
my ($checkedon,$checkedoff);
if ($hotlist_flag) {
- $checkedon = 'checked="checked"';
+ $checkedon = 'checked="checked"';
} else {
$checkedoff = 'checked="checked"';
}
@@ -683,16 +683,51 @@ sub verify_and_change_clicker {
my $r = shift;
my $user = $env{'user.name'};
my $domain = $env{'user.domain'};
+ my $uhome = $env{'user.home'};
my $newclickers = $env{'form.clickers'};
+ my $message;
$newclickers=~s/[^\w\:\-]+/\,/gs;
$newclickers=~tr/a-z/A-Z/;
$newclickers=~s/[\:\-]+/\-/g;
$newclickers=~s/\,+/\,/g;
$newclickers=~s/^\,//;
$newclickers=~s/\,$//;
- &Apache::lonnet::put('environment',{'clickers' => $newclickers});
- &Apache::lonnet::appenv({'environment.clickers' => $newclickers});
- my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Registering clickers: [_1]',$newclickers));
+ my @oldclickers = split(/,/,$env{'environment.clickers'});
+ my @newclickers = split(/,/,$newclickers);
+ my %newuniq;
+ map { $newuniq{$_} = 1; } @newclickers;
+ @newclickers = sort(keys(%newuniq));
+ my @differences = &Apache::loncommon::compare_arrays(\@oldclickers,\@newclickers);
+ if (@differences) {
+ my $putres = &Apache::lonnet::put('environment',{'clickers' => $newclickers});
+ if ($putres eq 'ok') {
+ my @adds = ();
+ my @dels = ();
+ foreach my $item (@differences) {
+ if (grep(/^\Q$item\E$/,@newclickers)) {
+ push(@adds,$item);
+ } else {
+ push(@dels,$item);
+ }
+ }
+ if (@dels) {
+ my %delclicker;
+ map { $delclicker{$_} = $user; } @dels;
+ my $putresult = &Apache::lonnet::iddel($domain,\%delclicker,$uhome,'clickers');
+ }
+ if (@adds) {
+ my %addclicker;
+ map { $addclicker{$_} = $user; } @adds;
+ my $putresult = &Apache::lonnet::updateclickers($domain,'add',\%addclicker,$uhome,1);
+ }
+ &Apache::lonnet::appenv({'environment.clickers' => $newclickers});
+ $message=&Apache::lonhtmlcommon::confirm_success(&mt('Registering clickers: [_1]',$newclickers));
+ } else {
+ $message=&Apache::lonhtmlcommon::confirm_success(&mt('Error saving clicker ID').1);
+ }
+ } else {
+ $message=''.&mt('Clicker information unchanged').'';
+ }
$message=&Apache::loncommon::confirmwrapper($message);
&print_main_menu($r, $message);
}
@@ -829,6 +864,7 @@ sub msgforwardchanger {
my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email();
my $jscript = qq|
|;
$r->print(< '
- .&mt('Sorry, the URL generated when you requested reset of'
- .' your password contained incomplete information.')
- .''.
- &Apache::loncommon::end_data_table_row()."\n";
+ ' '.$colortypes{$item}.' '.
+ &Apache::loncommon::end_data_table_row()."\n";
}
my $end_data_table = &Apache::loncommon::end_data_table();
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();
@@ -1154,7 +1192,8 @@ sub colorschanger {
my $resetbuttondesc = &mt('Reset All Colors to Default');
my $colorchooser=&Apache::lonhtmlcommon::color_picker();
$r->print('
');
$r->print(<