--- loncom/interface/lonpreferences.pm 2008/01/21 04:30:05 1.113
+++ loncom/interface/lonpreferences.pm 2009/01/14 15:46:19 1.133
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Preferences
#
-# $Id: lonpreferences.pm,v 1.113 2008/01/21 04:30:05 raeburn Exp $
+# $Id: lonpreferences.pm,v 1.133 2009/01/14 15:46:19 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -98,6 +98,12 @@ sub des_decrypt {
sub wysiwygchanger {
my $r = shift;
+ Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changewysiwyg',
+ text => 'Change WYSIWYG Preferences'});
+ $r->print(Apache::loncommon::start_page('Change WYSIWYG Preferences'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change WYSIWYG Preferences'));
+
my %userenv = &Apache::lonnet::get
('environment',['wysiwygeditor']);
my $onselect='checked="checked"';
@@ -108,9 +114,14 @@ sub wysiwygchanger {
}
my $switchoff=&mt('Disable WYSIWYG editor');
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.")."
";
+ }
$r->print(<
+$warning
@@ -123,8 +134,10 @@ sub verify_and_change_wysiwyg {
my $r = shift;
my $newsetting=$env{'form.wysiwyg'};
&Apache::lonnet::put('environment',{'wysiwygeditor' => $newsetting});
- &Apache::lonnet::appenv('environment.wysiwygeditor' => $newsetting);
- $r->print('
');
}
################################################################
@@ -132,6 +145,12 @@ sub verify_and_change_wysiwyg {
################################################################
sub languagechanger {
my $r = shift;
+
+ Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changelanguages',
+ text => 'Change Language'});
+ $r->print(Apache::loncommon::start_page('Change Language'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Language'));
my $user = $env{'user.name'};
my $domain = $env{'user.domain'};
my %userenv = &Apache::lonnet::get
@@ -167,16 +186,18 @@ sub verify_and_change_languages {
my $message='';
if ($newlanguage) {
&Apache::lonnet::put('environment',{'languages' => $newlanguage});
- &Apache::lonnet::appenv('environment.languages' => $newlanguage);
+ &Apache::lonnet::appenv({'environment.languages' => $newlanguage});
$message=&mt('Set new preferred languages to ').'"'.$newlanguage.'".';
} else {
&Apache::lonnet::del('environment',['languages']);
&Apache::lonnet::delenv('environment\.languages');
$message=&mt('Reset preferred language.');
}
- $r->print(<print(< '/adm/preferences?action=changetexenginepref',
+ text => 'Change How Math Equations Are Displayed'});
+ $r->print(Apache::loncommon::start_page('Change How Math Equations Are Displayed'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change How Math Equations Are Displayed'));
my $user = $env{'user.name'};
my $domain = $env{'user.domain'};
my %userenv = &Apache::lonnet::get('environment',['texengine']);
my $texengine=$userenv{'texengine'};
- my $pref=&mt('Preferred method to display Math');
my %mathchoices=('' => 'Default',
- 'tth' => 'TeX to HTML',
+ 'tth' => 'tth (TeX to HTML)',
#'ttm' => 'TeX to MathML',
'jsMath' => 'jsMath',
- 'mimetex' => 'Convert to Images'
+ 'mimetex' => 'mimetex (Convert to Images)'
);
my $selectionbox=&Apache::loncommon::select_form($texengine,'texengine',
%mathchoices);
my $jsMath_start=&Apache::lontexconvert::jsMath_header();
- my $change=&mt('Change');
- $r->print(<
+ my %lt=&Apache::lonlocal::texthash(
+ 'headline' => 'Change Math Preferences',
+ 'preftxt' => 'Preferred method to display Math',
+ 'change' => 'Change',
+ 'exmpl' => 'Examples',
+ 'jsmath' => 'jsMath:',
+ 'tth' => 'tth (TeX to HTML):',
+ 'mimetex' => 'mimetex (Convert to Images):',
+ );
+ $r->print(<$lt{'headline'}
-Examples:
-
TeX to HTML
-
+
+$lt{'preftxt'}:
+$selectionbox
-
jsMath
+
+
+
+$lt{'exmpl'}
+
+
$lt{'jsmath'}
+
$jsMath_start
-
+
+
+
$lt{'mimetex'}
+
+
-
Convert to Images
-
-
+
+
$lt{'tth'}
+
+
ENDLSCREEN
if ($env{'environment.texengine'} ne 'jsMath') {
@@ -252,16 +293,16 @@ sub verify_and_change_texengine {
my $newtexengine = $env{'form.texengine'};
$newtexengine=~s/[^\-\w]//g;
if ($newtexengine eq 'ttm') {
- &Apache::lonnet::appenv('browser.mathml' => 1);
+ &Apache::lonnet::appenv({'browser.mathml' => 1});
} else {
if ($env{'environment.texengine'} eq 'ttm') {
- &Apache::lonnet::appenv('browser.mathml' => 0);
+ &Apache::lonnet::appenv({'browser.mathml' => 0});
}
}
my $message='';
if ($newtexengine) {
&Apache::lonnet::put('environment',{'texengine' => $newtexengine});
- &Apache::lonnet::appenv('environment.texengine' => $newtexengine);
+ &Apache::lonnet::appenv({'environment.texengine' => $newtexengine});
$message=&mt('Set new preferred math display to ').'"'.$newtexengine.'".';
} else {
&Apache::lonnet::del('environment',['texengine']);
@@ -270,9 +311,10 @@ sub verify_and_change_texengine {
}
- $r->print(<print(< '/adm/preferences?action=changerolespref',
+ text => 'Change '.$role.' Page Pref'});
+ $r->print(Apache::loncommon::start_page('Change '.$role.' Page Pref'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change '.$role.' Page Pref'));
my $hotlist_flag=$userenv{'recentroles'};
my $hotlist_n=$userenv{'recentrolesn'};
my $checked;
@@ -400,7 +447,7 @@ sub verify_and_change_rolespref {
my $message='';
if ($hotlist_flag) {
&Apache::lonnet::put('environment',{'recentroles' => $hotlist_flag});
- &Apache::lonnet::appenv('environment.recentroles' => $hotlist_flag);
+ &Apache::lonnet::appenv({'environment.recentroles' => $hotlist_flag});
$message=&mt('Recent '.$role.'s Hotlist is Enabled');
} else {
&Apache::lonnet::del('environment',['recentroles']);
@@ -409,7 +456,7 @@ sub verify_and_change_rolespref {
}
if ($hotlist_n) {
&Apache::lonnet::put('environment',{'recentrolesn' => $hotlist_n});
- &Apache::lonnet::appenv('environment.recentrolesn' => $hotlist_n);
+ &Apache::lonnet::appenv({'environment.recentrolesn' => $hotlist_n});
if ($hotlist_flag) {
$message.=" ".
&mt('Display [_1] Most Recent '.$role.'s',$hotlist_n)."\n";
@@ -449,9 +496,10 @@ sub verify_and_change_rolespref {
}
$message .= " \n";
- $r->print(<print(< 'New screenname (shown if you post anonymously):',
- text_nickname => 'New nickname (shown if you post non-anonymously):',
- text_submit => 'Change',
- );
- $r->print(<
-
- $lt{'text_screenname'}
-
- $lt{'text_nickname'}
-
-
-
-
-ENDSCREEN
+ Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changescreenname',
+ text => 'Change Screen Name'});
+ $r->print(Apache::loncommon::start_page('Change Screen Name'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Screen Name'));
+ $r->print('
'
+ .&mt('Change the name that is displayed in your posts.')
+ .'
'
+ );
+ $r->print(''
+ );
}
sub verify_and_change_screenname {
@@ -495,7 +551,7 @@ sub verify_and_change_screenname {
my $message='';
if ($newscreen) {
&Apache::lonnet::put('environment',{'screenname' => $newscreen});
- &Apache::lonnet::appenv('environment.screenname' => $newscreen);
+ &Apache::lonnet::appenv({'environment.screenname' => $newscreen});
$message=&mt('Set new screenname to ').'"'.$newscreen.'.".';
} else {
&Apache::lonnet::del('environment',['screenname']);
@@ -508,7 +564,7 @@ sub verify_and_change_screenname {
$newscreen=~s/[^ \w]//g;
if ($newscreen) {
&Apache::lonnet::put('environment',{'nickname' => $newscreen});
- &Apache::lonnet::appenv('environment.nickname' => $newscreen);
+ &Apache::lonnet::appenv({'environment.nickname' => $newscreen});
$message.=&mt('Set new nickname to ').'"'.$newscreen.'".';
} else {
&Apache::lonnet::del('environment',['nickname']);
@@ -516,9 +572,10 @@ sub verify_and_change_screenname {
$message.=&mt('Reset nickname.');
}
&Apache::lonnet::devalidate_cache_new('namescache',$user.':'.$domain);
- $r->print(<print(< '/adm/preferences?action=changeicons',
+ text => 'Change Main Menu'});
+ $r->print(Apache::loncommon::start_page('Change Main Menu'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Main Menu'));
+
my $user = $env{'user.name'};
my $domain = $env{'user.domain'};
my %userenv = &Apache::lonnet::get
@@ -563,8 +626,9 @@ sub verify_and_change_icons {
my $newicons = $env{'form.menumode'};
&Apache::lonnet::put('environment',{'icons' => $newicons});
- &Apache::lonnet::appenv('environment.icons' => $newicons);
- $r->print(&mt('Set menu mode to [_1].',$newicons));
+ &Apache::lonnet::appenv({'environment.icons' => $newicons});
+# $r->print(&mt('Set menu mode to [_1].',$newicons));
+ print_main_menu($r, &mt('Set menu mode to [_1].',$newicons));
}
################################################################
@@ -573,6 +637,11 @@ sub verify_and_change_icons {
sub clickerchanger {
my $r = shift;
+ Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changeclicker',
+ text => 'Register Clicker'});
+ $r->print(Apache::loncommon::start_page('Register Clicker'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Register Clicker'));
my $user = $env{'user.name'};
my $domain = $env{'user.domain'};
my %userenv = &Apache::lonnet::get
@@ -581,7 +650,7 @@ sub clickerchanger {
$clickers=~s/\,/\n/gs;
my $text=&mt('Enter response device ("clicker") numbers');
my $change=&mt('Register');
- my $helplink=&Apache::loncommon::help_open_topic('Clicker_Registration', 'Locating your clicker ID');
+ my $helplink=&Apache::loncommon::help_open_topic('Clicker_Registration',&mt('Locating your clicker ID'));
$r->print(<
@@ -605,11 +674,92 @@ sub verify_and_change_clicker {
$newclickers=~s/^\,//;
$newclickers=~s/\,$//;
&Apache::lonnet::put('environment',{'clickers' => $newclickers});
- &Apache::lonnet::appenv('environment.clickers' => $newclickers);
- $r->print(&mt('Registering clickers: [_1]',$newclickers));
+ &Apache::lonnet::appenv({'environment.clickers' => $newclickers});
+# $r->print(&mt('Registering clickers: [_1]',$newclickers));
+ print_main_menu($r, &mt('Registering clickers: [_1]',$newclickers));
}
################################################################
+# Domcoord Access Subroutines #
+################################################################
+
+sub domcoordchanger {
+ my $r = shift;
+ Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changedomcoord',
+ text => 'Restrict Domain Coordinator Access'});
+ $r->print(Apache::loncommon::start_page('Restrict Domain Coordinator Access'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Restrict Domain Coordinator Access'));
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
+ my %userenv = &Apache::lonnet::get
+ ('environment',['domcoord.author']);
+ my $constchecked='';
+ if ($userenv{'domcoord.author'} eq 'blocked') {
+ $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 $change=&mt('Change');
+ $r->print(<
+
+$text
+
+
+
+ENDSCREEN
+}
+
+sub verify_and_change_domcoord {
+ my $r = shift;
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
+ my %domcoord=('domcoord.author' => '');
+ 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.'));
+}
+
+#################################################################
+## Lock Subroutines #
+#################################################################
+
+sub lockwarning {
+ my $r = shift;
+ my $title=&mt('Action locked');
+ my $texttop=&mt('LON-CAPA is currently performing the following actions:');
+ my $textbottom=&mt('Changing roles or logging out may result in data corruption.');
+ my ($num,%which)=&Apache::lonnet::get_locks();
+ my $which='';
+ foreach my $id (keys %which) {
+ $which.='
'.$which{$id}.'
';
+ }
+ my $change=&mt('Override');
+ $r->print(<
+
+
$title
+$texttop
+
+$which
+
+$textbottom
+
+
+ENDSCREEN
+}
+
+sub verify_and_change_lockwarning {
+ my $r = shift;
+ &Apache::lonnet::remove_all_locks();
+ $r->print(&mt('Cleared locks.'));
+}
+
+
+################################################################
# Message Forward #
################################################################
@@ -626,7 +776,8 @@ sub msgforwardchanger {
foad => 'Forwarding Address(es)',
noti => 'Notification E-mail Address(es)',
foad_exmpl => 'e.g. userA:domain1,userB:domain2,...',
- mnot => 'Email Address(es) which should be notified about new LON-CAPA messages', # old: 'Message Notification Email Address(es)',
+ 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',
chg => 'Change',
email => 'The e-mail address entered in row ',
@@ -634,6 +785,11 @@ sub msgforwardchanger {
toen => "To enter multiple addresses, enter one address at a time, click 'Change' and then add the next one",
prme => 'Back to preferences menu',
);
+ Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changemsgforward',
+ text => 'Change Message Forwarding/Notification'});
+ $r->print(Apache::loncommon::start_page('Change Message Forwarding/Notification'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Message Forwarding/Notification'));
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");
@@ -841,7 +997,7 @@ sub verify_and_change_msgforward {
$newscreen=~s/\,$//;
if ($newscreen) {
&Apache::lonnet::put('environment',{'msgforward' => $newscreen});
- &Apache::lonnet::appenv('environment.msgforward' => $newscreen);
+ &Apache::lonnet::appenv({'environment.msgforward' => $newscreen});
$message .= &mt('Set message forwarding to ').'"'.$newscreen.'".'
.' ';
} else {
@@ -882,7 +1038,7 @@ sub verify_and_change_msgforward {
$notify_with_html =~ s/\s//gs;
if ($notification) {
&Apache::lonnet::put('environment',{'notification' => $notification});
- &Apache::lonnet::appenv('environment.notification' => $notification);
+ &Apache::lonnet::appenv({'environment.notification' => $notification});
$message.=&mt('Set non-critical message notification address(es) to ').'"'.$notification.'". ';
} else {
&Apache::lonnet::del('environment',['notification']);
@@ -891,7 +1047,7 @@ sub verify_and_change_msgforward {
}
if ($critnotification) {
&Apache::lonnet::put('environment',{'critnotification' => $critnotification});
- &Apache::lonnet::appenv('environment.critnotification' => $critnotification);
+ &Apache::lonnet::appenv({'environment.critnotification' => $critnotification});
$message.=&mt('Set critical message notification address(es) to ').'"'.$critnotification.'". ';
} else {
&Apache::lonnet::del('environment',['critnotification']);
@@ -901,7 +1057,7 @@ sub verify_and_change_msgforward {
if ($critnotification || $notification) {
if ($notify_with_html) {
&Apache::lonnet::put('environment',{'notifywithhtml' => $notify_with_html});
- &Apache::lonnet::appenv('environment.notifywithhtml' => $notify_with_html);
+ &Apache::lonnet::appenv({'environment.notifywithhtml' => $notify_with_html});
$message.=&mt('Set address(es) to receive excerpts with html retained ').'"'.$notify_with_html.'".';
} else {
&Apache::lonnet::del('environment',['notifywithhtml']);
@@ -929,6 +1085,11 @@ sub verify_and_change_msgforward {
sub colorschanger {
my $r = shift;
+ Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changecolors',
+ text => 'Change Colors'});
+ $r->print(Apache::loncommon::start_page('Change Colors'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Colors'));
# figure out colors
my $function=&Apache::loncommon::get_users_function();
my $domain=&Apache::loncommon::determinedomain();
@@ -1017,7 +1178,7 @@ sub verify_and_change_colors {
my $entry='color.'.$function.'.'.$item;
if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$env{'form.resetall'})) {
&Apache::lonnet::put('environment',{$entry => $color});
- &Apache::lonnet::appenv('environment.'.$entry => $color);
+ &Apache::lonnet::appenv({'environment.'.$entry => $color});
$message.=&mt('Set '.$colortypes{$item}.' to ').'"'.$color.'". ';
} else {
&Apache::lonnet::del('environment',[$entry]);
@@ -1027,14 +1188,15 @@ sub verify_and_change_colors {
}
my $now = time;
&Apache::lonnet::put('environment',{'color.timestamp' => $now});
- &Apache::lonnet::appenv('environment.color.timestamp' => $now);
+ &Apache::lonnet::appenv({'environment.color.timestamp' => $now});
- $r->print(<
-
-
-ENDVCCOL
+ print_main_menu($r, $message);
+# $r->print(<
+#
+#
+#ENDVCCOL
}
######################################################
@@ -1046,6 +1208,11 @@ sub passwordchanger {
# Passwords are encrypted using londes.js (DES encryption)
$errormessage = ($errormessage || '');
my ($user,$domain,$currentpass,$defdom);
+ Apache::lonhtmlcommon::add_breadcrumb(
+ { href => '/adm/preferences?action=changepass',
+ text => 'Change Password'});
+ $r->print(Apache::loncommon::start_page('Change Password'));
+ $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Password'));
if ((!defined($caller)) || ($caller eq 'preferences')) {
$user = $env{'user.name'};
$domain = $env{'user.domain'};
@@ -1165,7 +1332,7 @@ sub jscript_send {
sub client_form {
my ($caller,$hexkey,$currentpass,$defdom) = @_;
my %lt=&Apache::lonlocal::texthash(
- 'email' => 'EMail Address',
+ 'email' => 'E-mail Address',
'username' => 'Username',
'domain' => 'Domain',
'currentpass' => 'Current Password',
@@ -1186,7 +1353,7 @@ sub client_form {
-
:
+
:
|;
$output .= &Apache::loncommon::select_dom_form($defdom,'udom').'
@@ -1325,6 +1492,13 @@ ENDERROR
#
if ($caller eq 'reset_by_email') {
my %data = &Apache::lonnet::tmpget($mailtoken);
+ if (keys(%data) == 0) {
+ &passwordchanger($r,
+ ''.
+ &mt('Could not verify current authentication.').' '.
+ &mt('Please try again.').'',$caller,$mailtoken);
+ return 1;
+ }
if ($currentpass ne $data{'temppasswd'}) {
&passwordchanger($r,
''.
@@ -1372,12 +1546,18 @@ ENDERROR
my $result = &Apache::lonnet::changepass
($user,$domain,$currentpass,$newpass1,$homeserver,$caller);
# Inform the user the password has (not?) been changed
+ my $message;
if ($result =~ /^ok$/) {
- $r->print("
".&mt('The password for [_1] was successfully changed',$user)."
");
+ $message = &mt('The password for [_1] was successfully changed',$user);
+ 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
- $r->print("
".&mt("The password for [_1] was not changed",$user)."
".
- &mt('Please make sure your old password was entered correctly.'));
+ $message = &mt("The password for [_1] was not changed",$user)
+ .&mt('Please make sure your old password was entered correctly.');
+ print_main_menu($r, $message);
+# $r->print("
".&mt("The password for [_1] was not changed",$user)."