--- loncom/interface/lonpreferences.pm 2024/03/01 21:28:39 1.196.4.28.2.4
+++ loncom/interface/lonpreferences.pm 2021/03/06 13:42:55 1.237
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Preferences
#
-# $Id: lonpreferences.pm,v 1.196.4.28.2.4 2024/03/01 21:28:39 raeburn Exp $
+# $Id: lonpreferences.pm,v 1.237 2021/03/06 13:42:55 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -31,6 +31,7 @@
package Apache::lonpreferences;
use strict;
+use LONCAPA;
use Apache::Constants qw(:common);
use Apache::File;
use Apache::loncommon();
@@ -39,7 +40,6 @@ use Apache::lonlocal;
use Apache::lonnet;
use LONCAPA::lonauthcgi();
use LONCAPA();
-use DateTime::TimeZone();
################################################################
# Handler subroutines #
@@ -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"';
}
@@ -638,10 +638,10 @@ sub icon_previews {
my %inlinetools = (
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'),
+ 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'),
+ 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);
@@ -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);
}
@@ -1142,10 +1177,10 @@ sub colorschanger {
foreach my $item (sort(keys(%colortypes))) {
my $curcol=&Apache::loncommon::designparm($function.'.'.$item,$domain);
$chtable.=&Apache::loncommon::start_data_table_row().
- '
'.$colortypes{$item}.' | | '.
- &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();
@@ -1197,9 +1232,9 @@ sub verify_and_change_colors {
my $message='';
foreach my $item (keys(%colortypes)) {
my $color=$env{'form.'.$item};
- if (!($color =~ /^#/)) {
- $color = '#' . $color;
- }
+ if (!($color =~ /^#/)) {
+ $color = '#' . $color;
+ }
my $entry='color.'.$function.'.'.$item;
if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$env{'form.resetall'})) {
&Apache::lonnet::put('environment',{$entry => $color});
@@ -1230,8 +1265,7 @@ sub passwordchanger {
# This function is a bit of a mess....
# Passwords are encrypted using londes.js (DES encryption)
$errormessage = ($errormessage || '');
- my ($user,$domain,$currentpass,$clientip);
- $clientip = &Apache::lonnet::get_requestor_ip($r);
+ my ($user,$domain,$currentpass);
&Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/preferences?action=changepass',
text => 'Change Password'});
@@ -1246,7 +1280,7 @@ sub passwordchanger {
$caller = 'preferences';
}
my ($blocked,$blocktext) =
- &Apache::loncommon::blocking_status('passwd',$clientip);
+ &Apache::loncommon::blocking_status('passwd');
if ($blocked) {
$r->print(''.$blocktext.'
');
return;
@@ -1268,7 +1302,7 @@ sub passwordchanger {
$domain = $data{'domain'};
$currentpass = $data{'temppasswd'};
my ($blocked,$blocktext) =
- &Apache::loncommon::blocking_status('passwd',$clientip,$user,$domain);
+ &Apache::loncommon::blocking_status('passwd',$user,$domain);
if ($blocked) {
$r->print(''.$blocktext.'
');
return;
@@ -1285,9 +1319,9 @@ sub passwordchanger {
} else {
$r->print(
''
- .&mt('Sorry, the URL generated when you requested reset of'
- .' your password contained incomplete information.')
- .'
'
+ .&mt('Sorry, the URL generated when you requested reset of'
+ .' your password contained incomplete information.')
+ .''
);
return;
}
@@ -1402,7 +1436,7 @@ sub jscript_send {
var posspass = this.document.client.elements.newpass_1.value;
if (min > 0) {
if (posspass.length < min) {
- errors.push("$js_lt{'short'}");
+ errors.push("$js_lt{'short'}");
}
}
if (currauth == 'internal:') {
@@ -1431,7 +1465,7 @@ sub jscript_send {
} else if (rules[i] == 'spec') {
var pattern = /^[!@#$%^&*()_+\\-=\\[\\]{};':"\\\|,.\\/?]/;
if (!posspass.match(pattern)) {
- errors.push("$js_lt{'spec'}");
+ errors.push("$js_lt{'spec'}");
}
}
}
@@ -1589,7 +1623,7 @@ sub server_form {
sub verify_and_change_password {
my ($r,$caller,$mailtoken,$timelimit,$extrafields,$ended) = @_;
- my ($user,$domain,$homeserver,$clientip);
+ my ($user,$domain,$homeserver);
if ($caller eq 'reset_by_email') {
$user = $env{'form.uname'};
$domain = $env{'form.udom'};
@@ -1612,9 +1646,8 @@ sub verify_and_change_password {
$domain = $env{'user.domain'};
$homeserver = $env{'user.home'};
}
- $clientip = &Apache::lonnet::get_requestor_ip($r);
my ($blocked,$blocktext) =
- &Apache::loncommon::blocking_status('passwd',$clientip,$user,$domain);
+ &Apache::loncommon::blocking_status('passwd',$user,$domain);
if ($blocked) {
$r->print(''.$blocktext.'
');
if ($caller eq 'reset_by_email') {
@@ -1725,10 +1758,10 @@ ENDERROR
} else {
my $warning = &Apache::loncommon::check_passwd_rules($domain,$newpass1);
if ($warning) {
- &passwordchanger($r,''.
- $warning.
- &mt('Please try again.').'',
- $caller,$mailtoken,$timelimit,$extrafields);
+ &passwordchanger($r,''.
+ $warning.
+ &mt('Please try again.').'',
+ $caller,$mailtoken,$timelimit,$extrafields);
if ($caller eq 'reset_by_email') {
return 'rules';
} else {
@@ -2043,112 +2076,9 @@ sub author_space_settings {
my $domain = $env{'user.domain'};
my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au','ca','aa']);
if (keys(%author_roles) > 0) {
- my ($showdomdefs,$js,$args,@items);
- my $returnurl = &HTML::Entities::encode($env{'form.returnurl'},'"<>&\'');
- my $reqdmajor = 2;
- my $reqdminor = 11;
- my $reqddotnum = 4;
- my $reqddotlett= 'B';
- my $reqdreldate = '2024030109';
- my $reqletterfail;
- my $loncaparev = &Apache::lonnet::get_server_loncaparev($env{'user.domain'},$env{'user.home'});
- my ($major,$minor,$dotrel,$reldate) = ($loncaparev =~ /^\'?(\d+)\.(\d+)\.([\w.]+)\-(\d+)\'?$/);
- my ($dotnum,$dotlett) = split(/\./,$dotrel);
- my %lettdig = &Apache::lonnet::letter_to_digits();
- if ((exists($lettdig{$dotlett})) && (exists($lettdig{$reqddotlett}))) {
- if ($lettdig{$reqddotlett} > $lettdig{$dotlett}) {
- $reqletterfail = 1;
- }
- }
- unless (($major eq '' && $minor eq '') ||
- ($reqdmajor > $major) || (($reqdmajor == $major) && ($reqdminor > $minor)) ||
- (($reqdmajor == $major) && ($reqdminor == $minor) && ($reqddotnum > $dotnum)) ||
- (($reqdmajor == $major) && ($reqdminor == $minor) && ($reqddotnum == $dotnum) && $reqletterfail) ||
- (($reqdmajor == $major) && ($reqdminor == $minor) && ($reqddotnum == $dotnum) && ($reqdreldate > $reldate))) {
- @items = ('nocodemirror','copyright','sourceavail');
- $showdomdefs = 1;
- $js = &toggle_options_js();
- my $onload;
- foreach my $item (@items) {
- $onload .= "javascript:toggleOptions(document.prefs,'$item','user_$item');"
- }
- $args = { 'add_entries' => { 'onload' => $onload } };
- }
- $r->print(Apache::loncommon::start_page('Authoring Space Settings',$js,$args));
- $r->print(Apache::lonhtmlcommon::breadcrumbs('Authoring Space Settings'));
- if ($showdomdefs) {
- my %userenv = &Apache::lonnet::get('environment',\@items);
- my %domdefs = &Apache::lonnet::get_domain_defaults($domain);
- my %staticdefaults = (
- 'nocodemirror' => '0',
- 'copyright' => 'default',
- 'sourceavail' => 'closed',
- );
- my %lt = &authoring_settings_text();
- my %titles = &authoring_settings_titles();
- $r->print("$lt{'auss'}
\n".
- ''."\n");
- } else {
+ $r->print(Apache::loncommon::start_page('Authoring Space Settings'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Authoring Space Settings'));
+ my %userenv = &Apache::lonnet::get('environment',['nocodemirror']);
my $constchecked='';
if ($env{'environment.nocodemirror'}) {
$constchecked=' checked="checked"';
@@ -2156,6 +2086,7 @@ END
my $text=&mt('By default, CodeMirror an editor with advanced functionality for editing code is activated for authors.');
my $cmoff=&mt('Deactivate CodeMirror. This can improve performance on slow computers and accessibility.');
my $change=&mt('Save');
+ my $returnurl = &HTML::Entities::encode($env{'form.returnurl'},'"<>&\'');
$r->print(<
@@ -2165,7 +2096,6 @@ END
ENDSCREEN
- }
}
}
@@ -2175,8 +2105,6 @@ sub change_authoring_settings {
my $domain = $env{'user.domain'};
my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au','ca','aa']);
if (keys(%author_roles) > 0) {
- my $message;
- if (0) {
my %ausettings=('environment.nocodemirror' => '');
if ($env{'form.cmoff'}) { $ausettings{'environment.nocodemirror'}='yes'; }
&Apache::lonnet::put('environment',\%ausettings);
@@ -2187,143 +2115,25 @@ sub change_authoring_settings {
} else {
$status=&mt('off');
}
- $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Deactivate CodeMirror in Authoring Space').'',''.$status.''));
+ my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Deactivate CodeMirror in Authoring Space').'',''.$status.''));
$message=&Apache::loncommon::confirmwrapper($message);
- } else {
- my @items = ('nocodemirror','copyright','sourceavail');
- my %oldsettings = &Apache::lonnet::get('environment',\@items);
- my %domdefs = &Apache::lonnet::get_domain_defaults($domain);
- my %lt = &authoring_settings_text();
- my %titles = &authoring_settings_titles();
- my ($result,%newsettings,%changes,@delete,@unchanged,@delerrors,@adderrors);
- foreach my $item (@items) {
- if ($env{'form.'.$item} eq 'dom') {
- if ($oldsettings{$item} eq '') {
- push(@unchanged,$item);
- } else {
- push(@delete,$item);
- }
- } elsif ($env{'form.'.$item} eq 'user') {
- my $newval = $env{'form.userchoice_'.$item};
- my @possibles;
- if ($item eq 'nocodemirror') {
- if ($newval =~ /^yes|no$/) {
- $newsettings{$item} = $newval;
- }
- } elsif ($item eq 'copyright') {
- @possibles = (grep !/^priv|custom$/,(&Apache::loncommon::copyrightids));
- if (grep(/^\Q$newval\E$/,@possibles)) {
- $newsettings{$item} = $newval;
- }
- } elsif ($item eq 'sourceavail') {
- @possibles = (&Apache::loncommon::source_copyrightids);
- if (grep(/^\Q$newval\E$/,@possibles)) {
- $newsettings{$item} = $newval;
- }
- }
- if ($oldsettings{$item} eq $newsettings{$item}) {
- push(@unchanged,$item);
- } else {
- $changes{$item} = $newsettings{$item};
- }
- }
- }
- if (@delete) {
- if (&Apache::lonnet::del('environment',\@delete) eq 'ok') {
- foreach my $key (@delete) {
- &Apache::lonnet::delenv('environment.'.$key);
- }
- } else {
- @delerrors = @delete;
- }
- }
- if (keys(%changes)) {
- if (&Apache::lonnet::put('environment',\%changes) eq 'ok') {
- my %newenvhash;
- map {$newenvhash{'environment.'.$_} = $changes{$_}; } (keys(%changes));
- &Apache::lonnet::appenv(\%newenvhash);
- } else {
- foreach my $item (@items) {
- if (exists($changes{$item})) {
- push(@adderrors,$item);
- }
- }
- }
- }
- if (@adderrors) {
- $result = &mt('An error occurred when saving user-specific settings for').': '.
- join(', ', map { $titles{$_} } @adderrors);
- $message = &Apache::loncommon::confirmwrapper(&Apache::lonhtmlcommon::confirm_success($result,1));
- } elsif (keys(%changes)) {
- $result = &mt('User-specific settings saved:').'';
- foreach my $item (@items) {
- next unless (exists($changes{$item}));
- my $value = $changes{$item};
- if ($item eq 'nocodemirror') {
- $value = $lt{$changes{$item}};
- } elsif ($item eq 'copyright') {
- $value = &Apache::loncommon::copyrightdescription($changes{$item});
- } elsif ($item eq 'sourceavail') {
- $value = &Apache::loncommon::source_copyrightdescription($changes{$item});
- }
- $result .= '- '.
- &mt('[_1] set to [_2]',
- $titles{$item},
- ''.$value.'').
- '
';
- }
- $result .= '
';
- $message = &Apache::loncommon::confirmwrapper(&Apache::lonhtmlcommon::confirm_success($result));
- }
- if (@delerrors) {
- $result = &mt('An error occurred when deleting user-specific settings for').':- '.
- join('
- ', map { $titles{$_} } @delerrors).'
';
- $message .= &Apache::loncommon::confirmwrapper(&Apache::lonhtmlcommon::confirm_success($result,1));
- } elsif (@delete) {
- $result = &mt('Set use of domain default for').':- '.
- join('
- ', map { $titles{$_} } @delete).'
';
- $message .= &Apache::loncommon::confirmwrapper(&Apache::lonhtmlcommon::confirm_success($result));
- }
- if (@unchanged) {
- $result = &mt('No changes made for').':- '.
- join('
- ', map { $titles{$_} } @unchanged).'
';
- $message .= &Apache::loncommon::confirmwrapper(&Apache::lonhtmlcommon::confirm_success($result));
+ if ($env{'form.returnurl'}) {
+ &do_redirect($r,$env{'form.returnurl'},$message);
+ } else {
+ &print_main_menu($r,$message);
}
- }
- if ($env{'form.returnurl'}) {
- &do_redirect($r,$env{'form.returnurl'},$message);
- } else {
- &print_main_menu($r,$message);
- }
}
}
-sub authoring_settings_text {
- return &Apache::lonlocal::texthash(
- 'auss' => 'Authoring Space Settings',
- 'used' => 'Use domain default',
- 'usyo' => 'Use your own user-specific setting',
- 'curd' => 'Current domain default is',
- 'ousv' => 'Own user-specific value',
- 'save' => 'Save',
- 'yes' => 'Deactivated',
- 'no' => 'Activated',
- );
-}
-
-sub authoring_settings_titles {
- return &Apache::lonlocal::texthash(
- 'nocodemirror' => 'CodeMirror for EditXML editor',
- 'copyright' => 'Default Copyright/Distribution in new metadata file',
- 'sourceavail' => 'Default Source Available in new metadata file',
- );
-}
-
sub lockednameschanger {
my $r = shift;
+ &Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changelockednames',
+ text => 'Automatic name changes'});
+ $r->print(Apache::loncommon::start_page('Automatic name changes'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Allow/disallow name updates'));
my %userenv = &Apache::lonnet::get('environment',['lockedname']);
my $lockedname='';
- my $ended;
if (&can_toggle_namelocking()) {
if ($userenv{'lockedname'}) {
$lockedname = ' checked="checked"';
@@ -2341,11 +2151,6 @@ sub lockednameschanger {
}
}
if (keys(%updateable)) {
- &Apache::lonhtmlcommon::add_breadcrumb(
- { href => '/adm/preferences?action=changelockednames',
- text => 'Automatic name changes'});
- $r->print(Apache::loncommon::start_page('Automatic name changes'));
- $r->print(Apache::lonhtmlcommon::breadcrumbs('Allow/disallow name updates'));
my %longnames = &Apache::lonlocal::texthash (
firstname => 'First Name',
middlename => 'Middle Name',
@@ -2372,14 +2177,11 @@ ENDSCREEN
} else {
my $message = &mt('Based on your institutional affiliation no name information is automatically updated for your LON-CAPA account.');
&print_main_menu($r,$message);
- $ended = 1;
}
} else {
my $message = &mt('You are not permitted to set a user preference for automatic name updates for your LON-CAPA account.');
&print_main_menu($r,$message);
- $ended = 1;
}
- return $ended;
}
sub verify_and_change_lockednames {
@@ -2410,90 +2212,6 @@ sub verify_and_change_lockednames {
&print_main_menu($r,$message);
}
-sub timezonechanger {
- my $r = shift;
- my $uname = $env{'user.name'};
- my $udom = $env{'user.domain'};
- if (&Apache::lonnet::usertools_access($uname,$udom,'timezone')) {
- my $js = &toggle_options_js();
- my %loaditems = (
- onload => "javascript:toggleOptions(document.prefs,'settimezone','LC_timezone_selector');",
- );
- my $args = { 'add_entries' => \%loaditems };
- &Apache::lonhtmlcommon::add_breadcrumb(
- { href => '/adm/preferences?action=',
- text => 'Set Your Time Zone'});
- $r->print(Apache::loncommon::start_page('Set Your Time Zone',$js,$args));
- $r->print(Apache::lonhtmlcommon::breadcrumbs('Set Your Time Zone'));
- my %userenv = &Apache::lonnet::get('environment',['timezone']);
- my $timezone = $userenv{'timezone'};
- my %lt = &Apache::lonlocal::texthash(
- lctz => 'Use Time Zone set by LON-CAPA',
- owntz => 'Use Time Zone set by you',
- save => 'Save',
- );
- my (%checked,$tzsty);
- if ($userenv{'timezone'} ne '') {
- $checked{'owntz'} = ' checked="checked"';
- $tzsty = 'inline-block';
- } else {
- $checked{'lctz'} = ' checked="checked"';
- $tzsty = 'none';
- }
- my $onclick = ' onclick="javascript:toggleOptions(this.form,'."'settimezone','LC_timezone_selector'".');"';
- my $selector = &Apache::loncommon::select_timezone('timezone',$timezone,undef,1);
- $r->print(<<"END");
-
-END
- }
- return;
-}
-
-sub verify_and_change_timezone {
- my $r = shift;
- my $currtimezone = $env{'environment.timezone'};
- my $newtimezone;
- if ($env{'form.settimezone'}) {
- $newtimezone = $env{'form.timezone'};
- if (DateTime::TimeZone->is_valid_name($env{'form.timezone'})) {
- $newtimezone = $env{'form.timezone'};
- }
- }
- my $message='';
- if ($newtimezone) {
- if ($newtimezone eq $currtimezone) {
- $message = &mt('Time Zone settings unchanged');
- } else {
- &Apache::lonnet::put('environment',{'timezone' => $newtimezone});
- &Apache::lonnet::appenv({'environment.timezone' => $newtimezone});
- $message=&Apache::lonhtmlcommon::confirm_success(
- &mt('Set [_1] to [_2]',
- ''.&mt('Your Time Zone').'',
- '"'.$newtimezone.'".')).
- '
';
- }
- } 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
@@ -2508,11 +2226,6 @@ 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 %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au']);
-my %author_coauthor_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au','ca','aa']);
my @menu=
({ categorytitle=>'Personal Data',
items =>[
@@ -2555,14 +2268,6 @@ 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',
@@ -2601,33 +2306,6 @@ my @menu=
},
]
},
- );
-if (keys(%author_coauthor_roles) > 0) {
- push(@menu,
- { categorytitle=>'Authoring Settings',
- items => [
- {
- linktext => 'Authoring Space Configuration',
- url => '/adm/preferences?action=authorsettings',
- permission => 'F',
- icon => 'codemirror.png',
- linktitle => 'Settings for your authoring space.',
- },
- ]
- },
- );
- if (keys(%author_roles) > 0) {
- push(@{ $menu[4]->{items} }, {
- linktext => 'Restrict Domain Coordinator Access',
- url => '/adm/preferences?action=changedomcoord',
- permission => 'F',
- #help => '',
- icon => 'system-lock-screen.png',
- linktitle => 'Restrict domain coordinator access.',
- });
- }
-}
-push(@menu,
{ categorytitle=>'Other',
items =>[
{ linktext => 'Register Response Devices ("Clickers")',
@@ -2642,7 +2320,7 @@ push(@menu,
);
if ($currentauth =~ /^(unix|internal):/) {
- push(@{ $menu[0]->{items} }, {
+push(@{ $menu[0]->{items} }, {
linktext => 'Password',
url => '/adm/preferences?action=changepass',
permission => 'F',
@@ -2651,25 +2329,6 @@ push(@menu,
linktitle => 'Change your password.',
});
}
- if ($env{'environment.remote'} eq 'off') {
- push(@{ $menu[1]->{items} }, {
- linktext => 'Launch Remote Control',
- url => '/adm/remote?url=/adm/preferences&action=launch',
- permission => 'F',
- #help => '',
- icon => 'remotecontrol.png',
- linktitle => 'Launch the remote control for LON-CAPA.',
- });
- }else{
-push(@{ $menu[1]->{items} }, {
- linktext => 'Collapse Remote Control',
- url => '/adm/remote?url=/adm/preferences&action=collapse',
- permission => 'F',
- #help => '',
- icon => 'remotecontrol.png',
- linktitle => 'Collapse the remote control for LON-CAPA.',
- });
- }
if (&can_toggle_namelocking()) {
push(@{ $menu[0]->{items} }, {
@@ -2682,10 +2341,22 @@ push(@{ $menu[1]->{items} }, {
});
}
+ my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au']);
+ if (keys(%author_roles) > 0) {
+push(@{ $menu[4]->{items} }, {
+ linktext => 'Restrict Domain Coordinator Access',
+ url => '/adm/preferences?action=changedomcoord',
+ permission => 'F',
+ #help => '',
+ icon => 'system-lock-screen.png',
+ linktitle => 'Restrict domain coordinator access.',
+ });
+ }
+
if (&Apache::lonnet::allowed('whn',$env{'request.course.id'})
|| &Apache::lonnet::allowed('whn',$env{'request.course.id'}.'/'
.$env{'request.course.sec'})) {
-push(@{ $menu[-1]->{items} }, {
+push(@{ $menu[4]->{items} }, {
linktext => 'Course Initialization',
url => '/adm/preferences?action=changecourseinit',
permission => 'F',
@@ -2696,8 +2367,19 @@ push(@{ $menu[-1]->{items} }, {
}
+ my %author_coauthor_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au','ca','aa']);
+ if (keys(%author_coauthor_roles) > 0) {
+ push(@{ $menu[4]->{items} }, {
+ linktext => 'Authoring Space Configuration',
+ url => '/adm/preferences?action=authorsettings',
+ permission => 'F',
+ icon => 'codemirror.png',
+ linktitle => 'Settings for your authoring space.',
+ });
+ }
+
if (&can_toggle_debug()) {
-push(@{ $menu[-1]->{items} }, {
+push(@{ $menu[4]->{items} }, {
linktext => 'Toggle Debug Messages (Currently '.($env{'user.debug'} ? 'on)' : 'off)'),
url => '/adm/preferences?action=debugtoggle',
permission => 'F',
@@ -2759,8 +2441,8 @@ sub handler {
text => $brtxt,
help => $brhelp,});
if(!exists $env{'form.action'}) {
- &print_main_menu($r);
- $ended = 1;
+ &print_main_menu($r);
+ $ended = 1;
}elsif($env{'form.action'} eq 'changepass'){
&passwordchanger($r);
}elsif($env{'form.action'} eq 'verify_and_change_pass'){
@@ -2840,14 +2522,10 @@ sub handler {
&print_main_menu($r);
$ended = 1;
} elsif ($env{'form.action'} eq 'changelockednames') {
- $ended = &lockednameschanger($r);
+ &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
@@ -2929,66 +2607,13 @@ sub updateable_userinfo {
sub do_redirect {
my ($r,$url,$msg) = @_;
$r->print(
- &Apache::loncommon::start_page('Loading ...',undef,
- {'redirect' => [2,$url]}).
+ &Apache::loncommon::start_page('Switching Server ...',undef,
+ {'redirect' => [0.5,$url]}).
''."\n".
"$msg\n".
&Apache::loncommon::end_page());
return;
}
-sub toggle_options_js {
- return <<"ENDSCRIPT";
-
-ENDSCRIPT
-}
-
-sub selectbox {
- my ($name,$value,$readonly,$functionref,@idlist)=@_;
- my $selout = '';
- return $selout;
-}
-
1;
__END__