--- loncom/interface/lonpreferences.pm 2019/04/24 21:15:48 1.231 +++ loncom/interface/lonpreferences.pm 2022/09/08 01:41:13 1.241 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.231 2019/04/24 21:15:48 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.241 2022/09/08 01:41:13 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -31,7 +31,6 @@ package Apache::lonpreferences; use strict; -use LONCAPA; use Apache::Constants qw(:common); use Apache::File; use Apache::loncommon(); @@ -40,6 +39,7 @@ use Apache::lonlocal; use Apache::lonnet; use LONCAPA::lonauthcgi(); use LONCAPA(); +use DateTime::TimeZone(); ################################################################ # Handler subroutines # @@ -363,7 +363,7 @@ $options.' &Apache::lonhtmlcommon::row_closure(1). &Apache::lonhtmlcommon::end_pick_box().' '); - if ($roles_check_list) { + if ($roles_check_list) { $r->print('
'.&mt('The table below can be used to [_1]freeze[_2] '.$lc_role.'s in the Hotlist.','','
').'
'.
@@ -627,7 +627,7 @@ sub icon_options {
}
sub icon_previews {
- my %icon_text = (
+ my %icon_text = &Apache::lonlocal::texthash (
annotate => 'Notes',
wishlist => 'Stored Links',
catalog => 'Info',
@@ -636,12 +636,12 @@ sub icon_previews {
printout => 'Print',
);
my %inlinetools = (
- printout => "s&8&3&prt.png&$icon_text{'printout'}&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document",
- wishlist => "s&9&1&wishlist-link.png&$icon_text{'wishlist'}&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository",
- evaluate => "s&8&1&eval.png&$icon_text{'evaluate'}&this[_1]&gopost('/adm/evaluate',currentURL,1)&Provide my evaluation of this resource",
- feedback => "s&8&2&fdbk.png&$icon_text{'feedback'}&discuss[_1]&gopost('/adm/feedback',currentURL,1)&Provide feedback messages or contribute to the course discussion about this resource",
- annotate => "s&9&3&anot.png&$icon_text{'annotate'}&tations[_1]&annotate()&Make notes and annotations about this resource",
- catalog => "s&6&3&catalog.png&$icon_text{'catalog'}&info[_1]&catalog_info()&Show Metadata",
+ printout => "s&8&3&prt.png&$icon_text{'printout'}&printout[_1]&gopost('/adm/printout',currentURL)&".&mt('Prepare a printable document'),
+ wishlist => "s&9&1&wishlist-link.png&$icon_text{'wishlist'}&wishlistlink[_2]&set_wishlistlink()&".&mt('Save a link for this resource in your personal Stored Links repository'),
+ evaluate => "s&8&1&eval.png&$icon_text{'evaluate'}&this[_1]&gopost('/adm/evaluate',currentURL,1)&".&mt('Provide my evaluation of this resource'),
+ feedback => "s&8&2&fdbk.png&$icon_text{'feedback'}&discuss[_1]&gopost('/adm/feedback',currentURL,1)&".&mt('Provide feedback messages or contribute to the course discussion about this resource'),
+ annotate => "s&9&3&anot.png&$icon_text{'annotate'}&tations[_1]&annotate()&".&mt('Make notes and annotations about this resource'),
+ catalog => "s&6&3&catalog.png&$icon_text{'catalog'}&info[_1]&catalog_info()&".&mt('Show Metadata'),
);
my @toolsorder = qw(annotate wishlist evaluate feedback printout catalog);
return (\%inlinetools,\@toolsorder);
@@ -1265,7 +1265,8 @@ sub passwordchanger {
# This function is a bit of a mess....
# Passwords are encrypted using londes.js (DES encryption)
$errormessage = ($errormessage || '');
- my ($user,$domain,$currentpass);
+ my ($user,$domain,$currentpass,$clientip);
+ $clientip = &Apache::lonnet::get_requestor_ip($r);
&Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/preferences?action=changepass',
text => 'Change Password'});
@@ -1273,18 +1274,18 @@ sub passwordchanger {
$r->print(Apache::loncommon::start_page('Personal Data'));
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Password'));
}
- my ($blocked,$blocktext) =
- &Apache::loncommon::blocking_status('passwd');
- if ($blocked) {
- $r->print('
'.$blocktext.'
'); - return; - } if ((!defined($caller)) || ($caller eq 'preferences')) { $user = $env{'user.name'}; $domain = $env{'user.domain'}; if (!defined($caller)) { $caller = 'preferences'; } + my ($blocked,$blocktext) = + &Apache::loncommon::blocking_status('passwd',$clientip); + if ($blocked) { + $r->print(''.$blocktext.'
'); + return; + } } elsif ($caller eq 'reset_by_email') { my %data = &Apache::lonnet::tmpget($mailtoken); if (keys(%data) == 0) { @@ -1301,6 +1302,12 @@ sub passwordchanger { $user = $data{'username'}; $domain = $data{'domain'}; $currentpass = $data{'temppasswd'}; + my ($blocked,$blocktext) = + &Apache::loncommon::blocking_status('passwd',$clientip,$user,$domain); + if ($blocked) { + $r->print(''.$blocktext.'
'); + return; + } } else { $r->print( ''
@@ -1360,7 +1367,7 @@ sub passwordchanger {
my $jsh=Apache::File->new($include."/londes.js");
$r->print(<$jsh>);
}
- $r->print(&jscript_send($caller,$extrafields));
+ $r->print(&jscript_send($caller,$domain,$currentauth,$extrafields));
$r->print(<
';
+ }
+ } elsif ($currtimezone) {
+ &Apache::lonnet::del('environment',['timezone']);
+ &Apache::lonnet::delenv('environment.timezone');
+ $message=&Apache::lonhtmlcommon::confirm_success(&mt('Time Zone now set by LON-CAPA'));
+ } else {
+ $message = &mt('Time Zone settings unchanged');
+ }
+ $message=&Apache::loncommon::confirmwrapper($message);
+ &print_main_menu($r,$message);
+ return;
+}
+
sub print_main_menu {
my ($r, $message) = @_;
# Determine current authentication method
@@ -2153,6 +2346,9 @@ my %permissions;
if (&Apache::lonnet::usertools_access($user,$domain,'aboutme')) {
$permissions{'aboutme'} = 'F';
}
+if (&Apache::lonnet::usertools_access($user,$domain,'timezone')) {
+ $permissions{'timezone'} = 'F';
+}
my @menu=
({ categorytitle=>'Personal Data',
items =>[
@@ -2195,6 +2391,14 @@ my @menu=
icon => 'dismath.png',
linktitle => 'Change how math is displayed.'
},
+ {
+ linktext => 'Time Zone',
+ url => '/adm/preferences?action=changetimezone',
+ permission => $permissions{'timezone'},
+ #help => '',
+ icon => 'timezone.png',
+ linktitle => 'Set your time zone.',
+ }
]
},
{ categorytitle=>'Page Display Settings',
@@ -2361,7 +2565,7 @@ sub handler {
} else {
$brlink ='/adm/preferences';
$brtxt = 'Set User Preferences';
- $brhelp = 'Prefs_About_Me,Prefs_Language,Prefs_Screen_Name_Nickname,Change_Colors,Change_Password,Prefs_Messages,Change_Discussion_Display';
+ $brhelp = 'Prefs_About_Me,Prefs_Language,Prefs_Screen_Name_Nickname,Change_Colors,Change_Password,Prefs_Messages,Change_Discussion_Display';
}
Apache::lonhtmlcommon::add_breadcrumb
({href => $brlink,
@@ -2373,7 +2577,7 @@ sub handler {
}elsif($env{'form.action'} eq 'changepass'){
&passwordchanger($r);
}elsif($env{'form.action'} eq 'verify_and_change_pass'){
- &verify_and_change_password($r,'preferences','',\$ended);
+ &verify_and_change_password($r,'preferences','','','',\$ended);
}elsif($env{'form.action'} eq 'changescreenname'){
&screennamechanger($r);
}elsif($env{'form.action'} eq 'verify_and_change_screenname'){
@@ -2449,10 +2653,14 @@ sub handler {
&print_main_menu($r);
$ended = 1;
} elsif ($env{'form.action'} eq 'changelockednames') {
- &lockednameschanger($r);
+ $ended = &lockednameschanger($r);
} elsif ($env{'form.action'} eq 'verify_and_change_lockednames') {
&verify_and_change_lockednames($r);
$ended = 1;
+ } elsif ($env{'form.action'} eq 'changetimezone') {
+ &timezonechanger($r);
+ } elsif ($env{'form.action'} eq 'verify_and_change_timezone') {
+ &verify_and_change_timezone($r);
}
# Properly end the HTML page of all preference pages