--- loncom/interface/lonpreferences.pm 2009/04/05 17:18:29 1.150
+++ loncom/interface/lonpreferences.pm 2013/07/22 18:06:51 1.208
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Preferences
#
-# $Id: lonpreferences.pm,v 1.150 2009/04/05 17:18:29 droeschl Exp $
+# $Id: lonpreferences.pm,v 1.208 2013/07/22 18:06:51 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -42,6 +42,7 @@ use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::lonlocal;
use Apache::lonnet;
+use LONCAPA::lonauthcgi();
use LONCAPA();
#
@@ -116,7 +117,7 @@ sub wysiwygchanger {
my $switchon=&mt('Enable WYSIWYG editor');
my $warning='';
if ($env{'user.adv'}) {
- $warning.="
".&mt("The WYSIWYG editor only supports simple HTML and is in many cases unsuited for advanced authoring. In a number of cases, it may destroy advanced authoring involving LaTeX and script function calls.")."
";
+ $warning.='
'.&mt("The WYSIWYG editor only supports simple HTML and is in many cases unsuited for advanced authoring. In a number of cases, it may destroy advanced authoring involving LaTeX and script function calls.")."
";
}
$r->print(<
@@ -135,9 +136,9 @@ sub verify_and_change_wysiwyg {
my $newsetting=$env{'form.wysiwyg'};
&Apache::lonnet::put('environment',{'wysiwygeditor' => $newsetting});
&Apache::lonnet::appenv({'environment.wysiwygeditor' => $newsetting});
-# $r->print('
');
+ my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('WYSIWYG Editor').'',''.&mt($newsetting).''));
+ $message=&Apache::loncommon::confirmwrapper($message);
+ &print_main_menu($r,$message);
}
################################################################
@@ -151,28 +152,16 @@ sub languagechanger {
text => 'Change Language'});
$r->print(Apache::loncommon::start_page('Content Display Settings'));
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Language'));
- my $user = $env{'user.name'};
- my $domain = $env{'user.domain'};
- my %userenv = &Apache::lonnet::get
- ('environment',['languages']);
+ my %userenv = &Apache::lonnet::get('environment',['languages']);
my $language=$userenv{'languages'};
- my $pref=&mt('Preferred language');
- my %langchoices=('' => 'No language preference');
- foreach (&Apache::loncommon::languageids()) {
- if (&Apache::loncommon::supportedlanguagecode($_)) {
- $langchoices{&Apache::loncommon::supportedlanguagecode($_)}
- = &Apache::loncommon::plainlanguagedescription($_);
- }
- }
- my $selectionbox=&Apache::loncommon::select_form($language,'language',
- %langchoices);
- $r->print(<
-
- $pref: $selectionbox
-ENDLSCREEN
- $r->print(' ');
+ $r->print(
+ ''
+ );
}
@@ -187,17 +176,20 @@ sub verify_and_change_languages {
if ($newlanguage) {
&Apache::lonnet::put('environment',{'languages' => $newlanguage});
&Apache::lonnet::appenv({'environment.languages' => $newlanguage});
- $message=&mt('Set new preferred languages to ').'"'.$newlanguage.'".';
+ $message=&Apache::lonhtmlcommon::confirm_success(
+ &mt('Set [_1] to [_2]',
+ ''.&mt('Preferred language').'',
+ '"'.$newlanguage.'".'))
+ .' '
+ .&mt('The change will become active on the next page.');
} else {
&Apache::lonnet::del('environment',['languages']);
&Apache::lonnet::delenv('environment.languages');
- $message=&mt('Reset preferred language.');
+ $message=&Apache::lonhtmlcommon::confirm_success(&mt('Reset [_1]',''.&mt('Preferred language').''));
}
+ $message=&Apache::loncommon::confirmwrapper($message);
&Apache::loncommon::flush_langs_cache($user,$domain);
- print_main_menu($r, $message);
-# $r->print(< '/adm/preferences?action=changetexenginepref',
- text => 'Change How Math Equations Are Displayed'});
+ text => 'Math display settings'});
$r->print(Apache::loncommon::start_page('Content Display Settings'));
- $r->print(Apache::lonhtmlcommon::breadcrumbs('Change How Math Equations Are Displayed'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Math display settings'));
my $user = $env{'user.name'};
my $domain = $env{'user.domain'};
my %userenv = &Apache::lonnet::get('environment',['texengine']);
@@ -219,21 +211,44 @@ sub texenginechanger {
'tth' => 'tth (TeX to HTML)',
#'ttm' => 'TeX to MathML',
'jsMath' => 'jsMath',
- 'mimetex' => 'mimetex (Convert to Images)'
+ 'MathJax' => 'MathJax',
+ 'mimetex' => 'mimetex (Convert to Images)',
+ 'raw' => 'Raw (Screen Reader)'
);
- my $selectionbox=&Apache::loncommon::select_form($texengine,'texengine',
- %mathchoices);
+ %mathchoices = &Apache::lonlocal::texthash(%mathchoices);
+ my $selectionbox=
+ &Apache::loncommon::select_form(
+ $texengine,
+ 'texengine',
+ \%mathchoices);
+ my $MathJax_start=&Apache::lontexconvert::MathJax_header();
my $jsMath_start=&Apache::lontexconvert::jsMath_header();
my %lt=&Apache::lonlocal::texthash(
- 'headline' => 'Change Math Preferences',
- 'preftxt' => 'Preferred method to display Math',
+ 'headline' => 'Change how math is displayed',
+ 'preftxt' => 'Preferred method to display math',
'change' => 'Save',
'exmpl' => 'Examples',
+ 'mathjax' => 'MathJax:',
'jsmath' => 'jsMath:',
'tth' => 'tth (TeX to HTML):',
'mimetex' => 'mimetex (Convert to Images):',
);
+ my $jsMathWarning='
'
+ .'
'
+ .&mt("It looks like you don't have the TeX math fonts installed.")
+ .'
'
+ .'
'
+ .&mt('The jsMath example on this page may not look right without them. '
+ .'The [_1]jsMath Home Page[_2] has information on how to download the '
+ .'needed fonts. In the meantime, jsMath will do the best it can '
+ .'with the fonts you have, but it may not be pretty and some equations '
+ .'may not be rendered correctly.'
+ ,''
+ ,'')
+ .'
'
+ .'';
+
$r->print(<$lt{'headline'}
ENDSCREEN
@@ -676,8 +767,9 @@ sub verify_and_change_clicker {
$newclickers=~s/\,$//;
&Apache::lonnet::put('environment',{'clickers' => $newclickers});
&Apache::lonnet::appenv({'environment.clickers' => $newclickers});
-# $r->print(&mt('Registering clickers: [_1]',$newclickers));
- print_main_menu($r, &mt('Registering clickers: [_1]',$newclickers));
+ my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Registering clickers: [_1]',$newclickers));
+ $message=&Apache::loncommon::confirmwrapper($message);
+ &print_main_menu($r, $message);
}
################################################################
@@ -686,7 +778,7 @@ sub verify_and_change_clicker {
sub domcoordchanger {
my $r = shift;
- Apache::lonhtmlcommon::add_breadcrumb(
+ &Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/preferences?action=changedomcoord',
text => 'Restrict Domain Coordinator Access'});
$r->print(Apache::loncommon::start_page('Restrict Domain Coordinator Access'));
@@ -697,16 +789,16 @@ sub domcoordchanger {
('environment',['domcoord.author']);
my $constchecked='';
if ($userenv{'domcoord.author'} eq 'blocked') {
- $constchecked='checked="checked"';
+ $constchecked=' checked="checked"';
}
- my $text=&mt('By default, the Domain Coordinator can enter your construction space.');
- my $construction=&mt('Block access to construction space');
+ my $text=&mt('By default, the Domain Coordinator can enter your Authoring Space.');
+ my $construction=&mt('Block access to Authoring Space');
my $change=&mt('Save');
$r->print(<
$text
-
+
ENDSCREEN
@@ -720,8 +812,15 @@ sub verify_and_change_domcoord {
if ($env{'form.construction'}) { $domcoord{'domcoord.author'}='blocked'; }
&Apache::lonnet::put('environment',\%domcoord);
&Apache::lonnet::appenv({'environment.domcoord.author' => $domcoord{'domcoord.author'}});
-# $r->print(&mt('Registering Domain Coordinator access restrictions.'));
- print_main_menu($r, &mt('Registering Domain Coordinator access restrictions.'));
+ my $status='';
+ if ($domcoord{'domcoord.author'} eq 'blocked') {
+ $status=&mt('on');
+ } else {
+ $status=&mt('off');
+ }
+ my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Block access to Authoring Space').'',''.$status.''));
+ $message=&Apache::loncommon::confirmwrapper($message);
+ &print_main_menu($r,$message);
}
#################################################################
@@ -774,23 +873,23 @@ sub msgforwardchanger {
all => 'All',
crit => 'Critical only',
reg => 'Non-critical only',
- foad => 'Forwarding Address(es)',
- noti => 'Notification E-mail Address(es)',
- foad_exmpl => 'e.g. userA:domain1,userB:domain2,...',
- mnot => 'E-mail Address(es) which should be notified about new LON-CAPA messages',
- # old: 'Message Notification Email Address(es)',
- mnot_exmpl => 'e.g. joe@doe.com',
+ foad => 'Forward to account(s)',
+ fwdm => 'Forward messages to other account(s) in LON-CAPA',
+ noti => 'E-mail notification of LON-CAPA messages',
+ mnot => 'E-mail address(es) which should be notified about new LON-CAPA messages',
chg => 'Save',
email => 'The e-mail address entered in row ',
notv => 'is not a valid e-mail address',
toen => "To enter multiple addresses, enter one address at a time, click 'Change' and then add the next one",
prme => 'Back',
);
+ $lt{'foad_exmpl'} = &mt('e.g. [_1]userA:domain1,userB:domain2,...[_2]','','');
+ $lt{'mnot_exmpl'} = &mt('e.g. [_1]joe@doe.com[_2]','','');
Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/preferences?action=changemsgforward',
- text => 'Change Message Forwarding/Notification'});
- $r->print(Apache::loncommon::start_page('Message Management'));
- $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Message Forwarding/Notification'));
+ text => 'Messages & Notifications'});
+ $r->print(Apache::loncommon::start_page('Messages & Notifications'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Messages & Notifications'));
my $forwardingHelp = &Apache::loncommon::help_open_topic("Prefs_Forwarding");
my $notificationHelp = &Apache::loncommon::help_open_topic("Prefs_Notification");
my $criticalMessageHelp = &Apache::loncommon::help_open_topic("Course_Critical_Message");
@@ -856,11 +955,12 @@ $validatescript
$r->print(<$lt{'foad'} $forwardingHelp
+
-#ENDVCCOL
+ &print_main_menu($r, $message);
}
######################################################
@@ -1211,8 +1299,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,$defdom);
- Apache::lonhtmlcommon::add_breadcrumb(
+ my ($user,$domain,$currentpass);
+ &Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/preferences?action=changepass',
text => 'Change Password'});
unless ($caller eq 'reset_by_email') {
@@ -1226,10 +1314,14 @@ sub passwordchanger {
$caller = 'preferences';
}
} elsif ($caller eq 'reset_by_email') {
- $defdom = $r->dir_config('lonDefDomain');
my %data = &Apache::lonnet::tmpget($mailtoken);
if (keys(%data) == 0) {
- $r->print(&mt('Sorry, the URL you provided to complete the reset of your password was invalid. Either the token included in the URL has been deleted or the URL you provided was invalid. Please submit a new request for a password reset, and follow the link to the new URL included in the e-mail that will be sent to you, to allow you to enter a new password.'));
+ $r->print(
+ '
'
+ .&mt('Sorry, the URL you provided to complete the reset of your password was invalid. Either the token included in the URL has been deleted or the URL you provided was invalid. Please submit a [_1]new request[_2] for a password reset, and follow the link to the new URL included in the e-mail that will be sent to you, to allow you to enter a new password.'
+ ,'','')
+ .'
'
+ );
return;
}
if (defined($data{time})) {
@@ -1238,15 +1330,32 @@ sub passwordchanger {
$domain = $data{'domain'};
$currentpass = $data{'temppasswd'};
} else {
- $r->print(&mt('Sorry, the token generated when you requested a password reset has expired.').' ');
+ $r->print(
+ '
'
+ .&mt('Sorry, the token generated when you requested'
+ .' a password reset has expired.')
+ .'
'
+ );
return;
}
} else {
- $r->print(&mt('Sorry, the URL generated when you requested reset of your password contained incomplete information.').' ');
+ $r->print(
+ '
'
+ .&mt('Sorry, the URL generated when you requested reset of'
+ .' your password contained incomplete information.')
+ .'
-ENDFORM
+|;
return $output;
}
@@ -1410,6 +1521,7 @@ sub server_form {
+
|;
}
@@ -1515,14 +1627,14 @@ ENDERROR
}
if ($newpass1 ne $newpass2) {
&passwordchanger($r,
- ''.
+ ''.
&mt('The new passwords you entered do not match.').' '.
&mt('Please try again.').'',$caller,$mailtoken);
return 1;
}
if (length($newpass1) < 7) {
&passwordchanger($r,
- ''.
+ ''.
&mt('Passwords must be a minimum of 7 characters long.').' '.
&mt('Please try again.').'',$caller,$mailtoken);
return 1;
@@ -1535,7 +1647,7 @@ ENDERROR
}
if ($badpassword) {
# I can't figure out how to enter bad characters on my browser.
- my $errormessage =''.
+ my $errormessage =''.
&mt('The password you entered contained illegal characters.').' '.
&mt('Valid characters are').(<<"ENDERROR");
: space and
@@ -1554,22 +1666,27 @@ ENDERROR
# Inform the user the password has (not?) been changed
my $message;
if ($result =~ /^ok$/) {
- $message = &mt('The password for [_1] was successfully changed.',$user);
+ $message = &Apache::lonhtmlcommon::confirm_success(&mt('The password for user [_1] was successfully changed.',''.$user.''));
+ $message = &Apache::loncommon::confirmwrapper($message);
if ($caller eq 'reset_by_email') {
$r->print($message.' ');
} else {
&print_main_menu($r, $message);
}
-# $r->print("
".&mt('The password for [_1] was successfully changed',$user)."
");
} else {
# error error: run in circles, scream and shout
- $message = &mt("The password for [_1] was not changed.",$user).' '.&mt('Please make sure your old password was entered correctly.');
- unless ($caller eq 'reset_by_email') {
+ if ($caller eq 'reset_by_email') {
+ if (!$result) {
+ return 1;
+ } else {
+ return $result;
+ }
+ } else {
+ $message = &Apache::lonhtmlcommon::confirm_success(
+ &mt("The password for user [_1] was not changed.",''.$user.'').' '.&mt('Please make sure your old password was entered correctly.'),1);
+ $message=&Apache::loncommon::confirmwrapper($message);
&print_main_menu($r, $message);
}
-# $r->print("
".&mt("The password for [_1] was not changed",$user)."
".
-# &mt('Please make sure your old password was entered correctly.'));
- return 1;
}
return;
}
@@ -1582,7 +1699,7 @@ sub discussionchanger {
Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/preferences?action=changediscussions',
text => 'Change Discussion Preferences'});
- $r->print(Apache::loncommon::start_page('Message Management'));
+ $r->print(Apache::loncommon::start_page('Change Discussion Preferences'));
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Discussion Preferences'));
my $user = $env{'user.name'};
my $domain = $env{'user.domain'};
@@ -1597,7 +1714,7 @@ sub discussionchanger {
}
}
if (defined($userenv{'discmarkread'})) {
- unless ($userenv{'discdisplay'} eq '') {
+ unless ($userenv{'discmarkread'} eq '') {
$discmark = $userenv{'discmarkread'};
}
}
@@ -1615,13 +1732,13 @@ sub discussionchanger {
'sdpf' => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.',
'prca' => 'Preferences can be set that determine',
'whpo' => 'Which posts are displayed when you display a discussion board or resource, and',
- 'unwh' => 'Under what circumstances posts are identfied as "New"',
+ 'unwh' => 'Under what circumstances posts are identified as "NEW"',
'allposts' => 'All posts',
'unread' => 'New posts only',
'ondisp' => 'Once displayed',
- 'onmark' => 'Once marked as read',
+ 'onmark' => 'Once marked not NEW',
'disa' => 'Posts displayed?',
- 'npmr' => 'New posts cease to be identified as "New"?',
+ 'npmr' => 'New posts cease to be identified as "NEW"?',
'thde' => 'The preferences you set here can be overridden within each individual discussion.',
'chgt' => 'Change to '
);
@@ -1641,15 +1758,16 @@ sub discussionchanger {
$currmark = $lt{'ondisp'};
$newmark = 'onmark';
}
-
+
$r->print(<<"END");
@@ -1675,7 +1793,10 @@ END
$r->print(&Apache::loncommon::end_data_table_row().
&Apache::loncommon::end_data_table());
- $r->print('
'.&mt('Note').': '.$lt{'thde'}.'');
+ $r->print(' '
+ .''
+ .''
+ );
}
sub verify_and_change_discussion {
@@ -1686,11 +1807,11 @@ sub verify_and_change_discussion {
if (defined($env{'form.discdisp'}) ) {
my $newdisp = $env{'form.newdisp'};
if ($newdisp eq 'unread') {
- $message .=&mt('In discussions: only new posts will be displayed.').' ';
+ $message .=&Apache::lonhtmlcommon::confirm_success(&mt('In discussions: only new posts will be displayed.')).' ';
&Apache::lonnet::put('environment',{'discdisplay' => $newdisp});
&Apache::lonnet::appenv({'environment.discdisplay' => $newdisp});
} else {
- $message .= &mt('In discussions: all posts will be displayed.').' ';
+ $message .= &Apache::lonhtmlcommon::confirm_success(&mt('In discussions: all posts will be displayed.')).' ';
&Apache::lonnet::del('environment',['discdisplay']);
&Apache::lonnet::delenv('environment.discdisplay');
}
@@ -1698,19 +1819,17 @@ sub verify_and_change_discussion {
if (defined($env{'form.discmark'}) ) {
my $newmark = $env{'form.newmark'};
if ($newmark eq 'ondisp') {
- $message.=&mt('In discussions: new posts will be cease to be identified as "NEW" after display.').' ';
+ $message.=&Apache::lonhtmlcommon::confirm_success(&mt('In discussions: new posts will be cease to be identified as "NEW" after display.')).' ';
&Apache::lonnet::put('environment',{'discmarkread' => $newmark});
&Apache::lonnet::appenv({'environment.discmarkread' => $newmark});
} else {
- $message.=&mt('In discussions: posts will be identified as "NEW" until marked as read by the reader.').' ';
+ $message.=&Apache::lonhtmlcommon::confirm_success(&mt('In discussions: posts will be identified as "NEW" until marked as not "NEW".')).' ';
&Apache::lonnet::del('environment',['discmarkread']);
&Apache::lonnet::delenv('environment.discmarkread');
}
}
-# $r->print(< '/adm/preferences?action=changecourseinit',
text => 'Change Course Init. Pref.'});
$r->print(Apache::loncommon::start_page('Change Course Initialization Preference'));
@@ -1791,17 +1910,102 @@ sub verify_and_change_coursepage {
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
my ($furl,$ferr)=
&Apache::lonuserstate::readmap($cdom.'/'.$cnum);
- $message .= ' '.$lt{'gtts'}.' '.&mt('now').'';
+ $message .= ' '.$lt{'gtts'}.' '.&mt('now').'';
} else {
- $message .= ' '.$lt{'dasp'}.'';
+ $message .= ' '.$lt{'dasp'}.'';
}
}
-# $r->print(<
-#ENDVCSCREEN
- print_main_menu($r, $message);
+ $message = &Apache::lonhtmlcommon::confirm_success($message);
+ $message = &Apache::loncommon::confirmwrapper($message);
+ &print_main_menu($r,$message);
+}
+
+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='';
+ if (&can_toggle_namelocking()) {
+ if ($userenv{'lockedname'}) {
+ $lockedname = ' checked="checked"';
+ }
+ my %updateable;
+ my %domconfig =
+ &Apache::lonnet::get_dom('configuration',['autoupdate'],$env{'user.domain'});
+ if (ref($domconfig{'autoupdate'}) eq 'HASH') {
+ if ($domconfig{'autoupdate'}{'run'}) {
+ my @inststatuses = split(':',$env{'environment.inststatus'});
+ unless (@inststatuses) {
+ @inststatuses = ('default');
+ }
+ %updateable = &updateable_userinfo($domconfig{'autoupdate'},\@inststatuses);
+ }
+ }
+ if (keys(%updateable)) {
+ my %longnames = &Apache::lonlocal::texthash (
+ firstname => 'First Name',
+ middlename => 'Middle Name',
+ lastname => 'Last Name',
+ );
+ my $text=&mt('By default, based on your institutional affiliation, your LON-CAPA account can be automatically updated nightly based on directory information from your institution.').' '.&mt('The following may be updated, unless you disallow updates:').
+ '
';
+ foreach my $item ('firstname','middlename','lastname') {
+ if ($updateable{$item}) {
+ $text .= '