');
+}
+
+################################################################
+# Language Change Subroutines #
+################################################################
sub languagechanger {
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',['languages']);
my $language=$userenv{'languages'};
@@ -121,10 +157,10 @@ ENDLSCREEN
sub verify_and_change_languages {
my $r = shift;
- my $user = $ENV{'user.name'};
- my $domain = $ENV{'user.domain'};
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
# Screenname
- my $newlanguage = $ENV{'form.language'};
+ my $newlanguage = $env{'form.language'};
$newlanguage=~s/[^\-\w]//g;
my $message='';
if ($newlanguage) {
@@ -137,19 +173,190 @@ sub verify_and_change_languages {
$message='Reset preferred language';
}
$r->print(< 'Default',
+ 'tth' => 'TeX to HTML',
+ #'ttm' => 'TeX to MathML',
+ 'jsMath' => 'jsMath',
+ '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(<
+
+
+Examples:
+
TeX to HTML
+
+
jsMath
+$jsMath_start
+
+
+
+
+
Convert to Images
+
+
+
+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});
@@ -196,9 +403,8 @@ sub verify_and_change_screenname {
&Apache::lonnet::delenv('environment\.nickname');
$message.='Reset nickname';
}
-
+ &Apache::lonnet::devalidate_cache_new('namescache',$user.':'.$domain);
$r->print(<
$message
ENDVCSCREEN
}
@@ -209,8 +415,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'};
@@ -239,11 +445,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;
@@ -265,7 +471,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});
@@ -276,7 +482,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});
@@ -288,7 +494,6 @@ sub verify_and_change_msgforward {
$message.='Reset critical message notification ';
}
$r->print(<
$message
ENDVCMSG
}
@@ -301,13 +506,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';
}
@@ -377,13 +582,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';
}
@@ -398,9 +603,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.' ';
@@ -411,7 +616,6 @@ sub verify_and_change_colors {
}
}
$r->print(<
$message
+END
}
sub verify_and_change_discussion {
my $r = shift;
- my $user = $ENV{'user.name'};
- my $domain = $ENV{'user.domain'};
-# Discussion
- my $discdisplay = $ENV{'form.discdisplay'};
+ my $user = $env{'user.name'};
+ my $domain = $env{'user.domain'};
my $message='';
- if ($discdisplay eq 'unread') {
- &Apache::lonnet::put('environment',{'discdisplay' => $discdisplay});
- &Apache::lonnet::appenv('environment.discdisplay' => $discdisplay);
- $message='Discussions set to display only unread posts';
- } else {
- &Apache::lonnet::del('environment',['discdisplay']);
- &Apache::lonnet::delenv('environment\.discdisplay');
- $message='Discussions set to display all posts';
+ if (defined($env{'form.discdisp'}) ) {
+ my $newdisp = $env{'form.newdisp'};
+ if ($newdisp eq 'unread') {
+ $message .='In discussions: only new posts will be displayed. ';
+ &Apache::lonnet::put('environment',{'discdisplay' => $newdisp});
+ &Apache::lonnet::appenv('environment.discdisplay' => $newdisp);
+ } else {
+ $message .= 'In discussions: all posts will be displayed. ';
+ &Apache::lonnet::del('environment',['discdisplay']);
+ &Apache::lonnet::delenv('environment\.discdisplay');
+ }
+ }
+ if (defined($env{'form.discmark'}) ) {
+ my $newmark = $env{'form.newmark'};
+ if ($newmark eq 'ondisp') {
+ $message.='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.='In discussions: posts will be identified as "new" until marked as read by the reader. ';
+ &Apache::lonnet::del('environment',['discmarkread']);
+ &Apache::lonnet::delenv('environment\.discmarkread');
+ }
+ }
+ $r->print(< 'First resource',
+ whatsnew => "What's new page",
+ );
+ my $whatsnew_off=&mt('Display the [_1] in the course.','first resource');
+ my $whatsnew_on=&mt('Display the "[_1]" page - a summary of items in the course which require attention.',"What's New");
+
+ $r->print(' '.&mt('Set the default page to be displayed when you select a course role').' '.&mt('(Currently: [_1])',$pagenames{$currvalue}).' '.&mt('The global user preference you set for your courses can be overridden in an individual course by setting a course specific setting via the "[_1]" page in the course',"What's New").'
+');
+}
+
+sub verify_and_change_coursepage {
+ my $r = shift;
+ my $message='';
+ my %lt = &Apache::lonlocal::texthash(
+ 'defs' => 'Default now set',
+ 'when' => 'when you select a course 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 the What's New page listing course action items",
+ );
+ my $newdisp = $env{'form.newdisp'};
+ $message = ''.$lt{'defs'}.': '.$lt{'when'}.', ';
+ if ($newdisp eq 'firstres') {
+ $message .= $lt{'ywbt'}.' ';
+ &Apache::lonnet::put('environment',{'course_init_display' => $newdisp});
+ &Apache::lonnet::appenv('environment.course_init_display' => $newdisp);
+ } else {
+ $message .= $lt{'apwb'}.' ';
+ &Apache::lonnet::del('environment',['course_init_display']);
+ &Apache::lonnet::delenv('environment\.course_init_display');
+ }
+ my $refpage = $env{'form.refpage'};
+ 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(<
$message
+