--- loncom/interface/lonpreferences.pm 2004/06/08 01:32:02 1.44
+++ loncom/interface/lonpreferences.pm 2005/07/05 15:25:34 1.66
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Preferences
#
-# $Id: lonpreferences.pm,v 1.44 2004/06/08 01:32:02 www Exp $
+# $Id: lonpreferences.pm,v 1.66 2005/07/05 15:25:34 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -40,6 +40,7 @@ use DynaLoader; # for Crypt::DES version
use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::lonlocal;
+use Apache::lonnet;
#
# Write lonnet::passwd to do the call below.
@@ -109,8 +110,8 @@ sub wysiwygchanger {
+Examples:
+ TeX to HTML
$tth_example
+
+
+jsMath
+
+
+
+$jsMath_example
+ Convert to Images
$mimetex_example
+ENDLSCREEN
+ if ($env{'environment.texengine'} ne 'jsMath') {
+ $r->print('');
+ }
+}
+
+
+sub verify_and_change_texengine {
+ my $r = shift;
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
+# Screenname
+ my $newtexengine = $env{'form.texengine'};
+ $newtexengine=~s/[^\-\w]//g;
+ if ($newtexengine eq 'ttm') {
+ &Apache::lonnet::appenv('browser.mathml' => 1);
+ } else {
+ if ($env{'environment.texengine'} eq 'ttm') {
+ &Apache::lonnet::appenv('browser.mathml' => 0);
+ }
+ }
+ my $message='';
+ if ($newtexengine) {
+ &Apache::lonnet::put('environment',{'texengine' => $newtexengine});
+ &Apache::lonnet::appenv('environment.texengine' => $newtexengine);
+ $message='Set new preferred math display to '.$newtexengine;
+ } else {
+ &Apache::lonnet::del('environment',['texengine']);
+ &Apache::lonnet::delenv('environment\.texengine');
+ $message='Reset preferred math display.';
+ }
+
+
+ $r->print(<print(<Some LON-CAPA users have a long list of roles. The Recent Roles Hotlist
+feature keeps track of the last N roles which have been
+visited and places a table of these at the top of the roles page.
+People with very few roles should leave this feature disabled.
+
+
+
+ENDSCREEN
+}
+
+sub verify_and_change_rolespref {
+ my $r = shift;
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
+# Recent Roles Hotlist Flag
+ my $hotlist_flag = $env{'form.recentroles'};
+ my $hotlist_n = $env{'form.recentrolesn'};
+ my $message='';
+ if ($hotlist_flag) {
+ &Apache::lonnet::put('environment',{'recentroles' => $hotlist_flag});
+ &Apache::lonnet::appenv('environment.recentroles' => $hotlist_flag);
+ $message='Recent Roles Hotlist is Enabled';
+ } else {
+ &Apache::lonnet::del('environment',['recentroles']);
+ &Apache::lonnet::delenv('environment\.recentroles');
+ $message='Recent Roles Hotlist is Disabled';
+ }
+ if ($hotlist_n) {
+ &Apache::lonnet::put('environment',{'recentrolesn' => $hotlist_n});
+ &Apache::lonnet::appenv('environment.recentrolesn' => $hotlist_n);
+ if ($hotlist_flag) {
+ $message.="
Display $hotlist_n Most Recent Roles\n";
+ }
+ }
+
+ $r->print(<';
- $newscreen = $ENV{'form.nickname'};
+ $newscreen = $env{'form.nickname'};
$newscreen=~s/[^ \w]//g;
if ($newscreen) {
&Apache::lonnet::put('environment',{'nickname' => $newscreen});
@@ -233,7 +404,6 @@ sub verify_and_change_screenname {
}
$r->print(<
$message
ENDVCSCREEN
}
@@ -244,8 +414,8 @@ ENDVCSCREEN
sub msgforwardchanger {
my $r = shift;
- my $user = $ENV{'user.name'};
- my $domain = $ENV{'user.domain'};
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
my %userenv = &Apache::lonnet::get('environment',['msgforward','notification','critnotification']);
my $msgforward=$userenv{'msgforward'};
my $notification=$userenv{'notification'};
@@ -274,11 +444,11 @@ ENDMSG
sub verify_and_change_msgforward {
my $r = shift;
- my $user = $ENV{'user.name'};
- my $domain = $ENV{'user.domain'};
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
my $newscreen = '';
my $message='';
- foreach (split(/\,/,$ENV{'form.msgforward'})) {
+ foreach (split(/\,/,$env{'form.msgforward'})) {
my ($msuser,$msdomain)=split(/[\@\:]/,$_);
$msuser=~s/\W//g;
$msdomain=~s/\W//g;
@@ -300,7 +470,7 @@ sub verify_and_change_msgforward {
&Apache::lonnet::delenv('environment\.msgforward');
$message.='Reset message forwarding
';
}
- my $notification=$ENV{'form.notification'};
+ my $notification=$env{'form.notification'};
$notification=~s/\s//gs;
if ($notification) {
&Apache::lonnet::put('environment',{'notification' => $notification});
@@ -311,7 +481,7 @@ sub verify_and_change_msgforward {
&Apache::lonnet::delenv('environment\.notification');
$message.='Reset message notification
';
}
- my $critnotification=$ENV{'form.critnotification'};
+ my $critnotification=$env{'form.critnotification'};
$critnotification=~s/\s//gs;
if ($critnotification) {
&Apache::lonnet::put('environment',{'critnotification' => $critnotification});
@@ -323,7 +493,6 @@ sub verify_and_change_msgforward {
$message.='Reset critical message notification
';
}
$r->print(<
$message
ENDVCMSG
}
@@ -336,13 +505,13 @@ sub colorschanger {
my $r = shift;
# figure out colors
my $function='student';
- if ($ENV{'request.role'}=~/^(cc|in|ta|ep)/) {
+ if ($env{'request.role'}=~/^(cc|in|ta|ep)/) {
$function='coordinator';
}
- if ($ENV{'request.role'}=~/^(su|dc|ad|li)/) {
+ if ($env{'request.role'}=~/^(su|dc|ad|li)/) {
$function='admin';
}
- if (($ENV{'request.role'}=~/^(au|ca)/) ||
+ if (($env{'request.role'}=~/^(au|ca)/) ||
($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) {
$function='author';
}
@@ -412,13 +581,13 @@ sub verify_and_change_colors {
my $r = shift;
# figure out colors
my $function='student';
- if ($ENV{'request.role'}=~/^(cc|in|ta|ep)/) {
+ if ($env{'request.role'}=~/^(cc|in|ta|ep)/) {
$function='coordinator';
}
- if ($ENV{'request.role'}=~/^(su|dc|ad|li)/) {
+ if ($env{'request.role'}=~/^(su|dc|ad|li)/) {
$function='admin';
}
- if (($ENV{'request.role'}=~/^(au|ca)/) ||
+ if (($env{'request.role'}=~/^(au|ca)/) ||
($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) {
$function='author';
}
@@ -433,9 +602,9 @@ sub verify_and_change_colors {
my $message='';
foreach my $item (keys %colortypes) {
- my $color=$ENV{'form.'.$item};
+ my $color=$env{'form.'.$item};
my $entry='color.'.$function.'.'.$item;
- if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$ENV{'form.resetall'})) {
+ if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$env{'form.resetall'})) {
&Apache::lonnet::put('environment',{$entry => $color});
&Apache::lonnet::appenv('environment.'.$entry => $color);
$message.='Set '.$colortypes{$item}.' to '.$color.'
';
@@ -446,7 +615,6 @@ sub verify_and_change_colors {
}
}
$r->print(<
$message
');
+}
+
+sub verify_and_change_coursepage {
+ my $r = shift;
+ my $message='';
+ my %lt = &Apache::lonlocal::texthash(
+ 'when' => 'Whenever you select the Course Coordinator role from the roles screen',
+ 'ywbt' => 'you will be taken to the start of the course.',
+ 'apwb' => 'a page will be displayed that lists items in the course that may require action from you.',
+ 'gtts' => 'Go to the start of the course',
+ 'dasp' => 'Display a summary page listing course action items',
+ );
+ my $newdisp = $env{'form.newdisp'};
+ if ($newdisp eq 'firstres') {
+ $message .= $lt{'when'}.', '.$lt{'ywbt'}.'
';
+ &Apache::lonnet::put('environment',{'course_init_display' => $newdisp});
+ &Apache::lonnet::appenv('environment.course_init_display' => $newdisp);
+ } else {
+ $message .= $lt{'when'}.', '.$lt{'apwb'}.'
';
+ &Apache::lonnet::del('environment',['course_init_display']);
+ &Apache::lonnet::delenv('environment\.course_init_display');
+ }
+ if (($env{'request.course.fn'}) && ($env{'request.course.id'})) {
+ if ($newdisp eq 'firstres') {
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my ($furl,$ferr)=
+ &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
+ $message .= '
'.$lt{'gtts'}.' '.&mt('now').'';
+ } else {
+ $message .= '
'.$lt{'dasp'}.'';
+ }
+ }
+ $r->print(<
+ENDVCSCREEN
+}
+
+
######################################################
# other handler subroutines #
######################################################
@@ -813,8 +1049,8 @@ ENDVCSCREEN
################################################################
sub handler {
my $r = shift;
- my $user = $ENV{'user.name'};
- my $domain = $ENV{'user.domain'};
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
&Apache::loncommon::content_type($r,'text/html');
# Some pages contain DES keys and should not be cached.
&Apache::loncommon::no_cache($r);
@@ -868,8 +1104,7 @@ sub handler {
}));
push (@Options,({ action => 'changemsgforward',
- linktext => 'Change Message Forwarding',
- text => 'and Notification Addresses',
+ linktext => 'Change Message Forwarding and Notification Addresses',
href => '/adm/preferences',
help => 'Prefs_Forwarding',
breadcrumb =>
@@ -884,10 +1119,11 @@ sub handler {
printmenu => 'yes',
subroutine => \&verify_and_change_msgforward }));
my $aboutmeaction=
- '/adm/'.$ENV{'user.domain'}.'/'.$ENV{'user.name'}.'/aboutme';
+ '/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme';
push (@Options,{ action => 'none',
linktext =>
q{Edit the 'About Me' Personal Information Screen},
+ help => 'Prefs_About_Me',
href => $aboutmeaction});
push (@Options,({ action => 'changecolors',
linktext => 'Change Color Scheme',
@@ -908,6 +1144,7 @@ sub handler {
push (@Options,({ action => 'changelanguages',
linktext => 'Change Language Preferences',
href => '/adm/preferences',
+ help => 'Prefs_Language',
breadcrumb=>
{ href => '/adm/preferences?action=changelanguages',
text => 'Change Language'},
@@ -938,6 +1175,7 @@ sub handler {
push (@Options,({ action => 'changediscussions',
linktext => 'Change Discussion Display Preferences',
href => '/adm/preferences',
+ help => 'Change_Discussion_Display',
breadcrumb =>
{ href => '/adm/preferences?action=changediscussions',
text => 'Change Discussion Preferences'},
@@ -951,45 +1189,96 @@ sub handler {
subroutine => \&verify_and_change_discussion, }
));
- if ($ENV{'user.name'} =~ /^(albertel|koretemey|korte|hallmat3|turtle)$/) {
+ push (@Options,({ action => 'changerolespref',
+ linktext => 'Change Roles Page Preferences',
+ href => '/adm/preferences',
+ subroutine => \&rolesprefchanger,
+ breadcrumb =>
+ { href => '/adm/preferences?action=changerolespref',
+ text => 'Change Roles Pref'},
+ },
+ { action => 'verify_and_change_rolespref',
+ subroutine => \&verify_and_change_rolespref,
+ breadcrumb =>
+ { href => '/adm/preferences?action=changerolespref',
+ text => 'Change Roles Preferences'},
+ printmenu => 'yes',
+ }));
+
+ push (@Options,({ action => 'changetexenginepref',
+ linktext => 'Change How Math Equations Are Displayed',
+ href => '/adm/preferences',
+ subroutine => \&texenginechanger,
+ breadcrumb =>
+ { href => '/adm/preferences?action=changetexenginepref',
+ text => 'Change Math Pref'},
+ },
+ { action => 'verify_and_change_texengine',
+ subroutine => \&verify_and_change_texengine,
+ breadcrumb =>
+ { href => '/adm/preferences?action=changetexenginepref',
+ text => 'Change Math Preferences'},
+ printmenu => 'yes',
+ }));
+ if($env{'request.role'} =~ /^cc\.\//) {
+ push (@Options,({ action => 'changecourseinit',
+ linktext => 'Change Course Initialization Preference',
+ href => '/adm/preferences',
+ subroutine => \&coursedisplaychanger,
+ breadcrumb =>
+ { href => '/adm/preferences?action=changecourseinit',
+ text => 'Change Course Init. Pref.'},
+ },
+ { action => 'verify_and_change_coursepage',
+ breadcrumb =>
+ { href => '/adm/preferences?action=changecourseinit', text => 'Change Course Initialization Preference'},
+ printmenu => 'yes',
+ subroutine => \&verify_and_change_coursepage,
+ }));
+ }
+
+ if ($env{'user.name'} =~ /^(albertel|fox|foxr|koretemey|korte|hallmat3|turtle|raeburn)$/) {
push (@Options,({ action => 'debugtoggle',
printmenu => 'yes',
subroutine => \&toggle_debug,
}));
}
+ my $html=&Apache::lonxml::xmlbegin();
$r->print(<
+$html
LON-CAPA Preferences
ENDHEADER
my $call = undef;
+ my $help = undef;
my $printmenu = 'yes';
foreach my $option (@Options) {
- if ($option->{'action'} eq $ENV{'form.action'}) {
+ if ($option->{'action'} eq $env{'form.action'}) {
$call = $option->{'subroutine'};
$printmenu = $option->{'printmenu'};
if (exists($option->{'breadcrumb'})) {
&Apache::lonhtmlcommon::add_breadcrumb
($option->{'breadcrumb'});
}
+ $help=$option->{'help'};
}
}
$r->print(&Apache::loncommon::bodytag('Change Preferences'));
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Change Preferences'));
+ (undef,'Change Preferences',$help));
if (defined($call)) {
$call->($r);
}
- if (($printmenu eq 'yes') && (!$ENV{'form.returnurl'})) {
+ if (($printmenu eq 'yes') && (!$env{'form.returnurl'})) {
my $optionlist = '';
- if ($ENV{'user.name'} =~
- /^(albertel|kortemey|korte|hallmat3|turtle)$/
+ if ($env{'user.name'} =~
+ /^(albertel|kortemey|fox|foxr|korte|hallmat3|turtle|raeburn)$/
) {
push (@Options,({ action => 'debugtoggle',
linktext => 'Toggle Debug Messages',
text => 'Current Debug status is -'.
- $ENV{'user.debug'}.'-.',
+ $env{'user.debug'}.'-.',
href => '/adm/preferences',
printmenu => 'yes',
subroutine => \&toggle_debug,
@@ -1001,10 +1290,10 @@ ENDHEADER
$optiontext .=
''.
- $option->{'linktext'}.'';
+ &mt($option->{'linktext'}).'';
}
if (exists($option->{'text'})) {
- $optiontext .= ' '.$option->{'text'};
+ $optiontext .= ' '.&mt($option->{'text'});
}
if ($optiontext ne '') {
$optiontext = ''.$optiontext.'';
@@ -1021,19 +1310,16 @@ ENDHEADER
}
$optionlist .= '
';
$r->print($optionlist);
- } elsif ($ENV{'form.returnurl'}) {
- $r->print('
'.
+ } elsif ($env{'form.returnurl'}) {
+ $r->print('
'.
&mt('Return').'');
}
- $r->print(<
-
-ENDFOOTER
+ $r->print(&Apache::loncommon::endbodytag().'');
return OK;
}
sub toggle_debug {
- if ($ENV{'user.debug'}) {
+ if ($env{'user.debug'}) {
&Apache::lonnet::delenv('user\.debug');
} else {
&Apache::lonnet::appenv('user.debug' => 1);