--- loncom/interface/lonpreferences.pm 2002/10/14 20:41:07 1.15 +++ loncom/interface/lonpreferences.pm 2003/09/29 16:09:20 1.30 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.15 2002/10/14 20:41:07 albertel Exp $ +# $Id: lonpreferences.pm,v 1.30 2003/09/29 16:09:20 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -50,6 +50,7 @@ use Apache::File; use Crypt::DES; use DynaLoader; # for Crypt::DES version use Apache::loncommon(); +use Apache::lonhtmlcommon(); # # Write lonnet::passwd to do the call below. @@ -100,6 +101,82 @@ sub des_decrypt { ################################################################ ################################################################ +# Language Change Subroutines # +################################################################ +sub languagechanger { + my $r = shift; + my $user = $ENV{'user.name'}; + my $domain = $ENV{'user.domain'}; + my %userenv = &Apache::lonnet::get + ('environment',['languages','translator']); + my $language=$userenv{'languages'}; + my $translator=$userenv{'translator'}; + my $bodytag=&Apache::loncommon::bodytag( + 'Change Your Language Preferences'); + $r->print(< +$bodytag + +
+ +
Preferred language: + +ENDLSCREEN + if ($ENV{'user.adv'}) { + $r->print (<Willing to translate for language: + +ENDTRSC + } + $r->print('
'); +} + + +sub verify_and_change_languages { + my $r = shift; + my $user = $ENV{'user.name'}; + my $domain = $ENV{'user.domain'}; +# Screenname + my $newlanguage = $ENV{'form.language'}; + $newlanguage=~s/[^\-\w]//g; + my $message=''; + if ($newlanguage) { + &Apache::lonnet::put('environment',{'languages' => $newlanguage}); + &Apache::lonnet::appenv('environment.languages' => $newlanguage); + $message='Set new preferred languages to '.$newlanguage; + } else { + &Apache::lonnet::del('environment',['languages']); + &Apache::lonnet::delenv('environment\.languages'); + $message='Reset preferred language'; + } + if ($ENV{'user.adv'}) { + $message.='
'; + my $newtrans = $ENV{'form.translator'}; + $newtrans=~s/[^\-\w]//g; + if ($newtrans) { + &Apache::lonnet::put('environment',{'translator' => $newtrans}); + &Apache::lonnet::appenv('environment.translator' => $newtrans); + $message.='Set translator to '.$newtrans; + } else { + &Apache::lonnet::del('environment',['translator']); + &Apache::lonnet::delenv('environment\.translator'); + $message.='Reset translator'; + } + } + + my $bodytag=&Apache::loncommon::bodytag( + 'Change Your Language Preferences'); + $r->print(< +$bodytag +

+$message + +ENDVCSCREEN +} + + +################################################################ # Anonymous Discussion Name Change Subroutines # ################################################################ sub screennamechanger { @@ -148,7 +225,7 @@ sub verify_and_change_screenname { } # Nickname $message.='
'; - my $newscreen = $ENV{'form.nickname'}; + $newscreen = $ENV{'form.nickname'}; $newscreen=~s/[^ \w]//g; if ($newscreen) { &Apache::lonnet::put('environment',{'nickname' => $newscreen}); @@ -179,18 +256,31 @@ sub msgforwardchanger { my $r = shift; my $user = $ENV{'user.name'}; my $domain = $ENV{'user.domain'}; - my %userenv = &Apache::lonnet::get('environment',['msgforward']); + my %userenv = &Apache::lonnet::get('environment',['msgforward','notification','critnotification']); my $msgforward=$userenv{'msgforward'}; + my $notification=$userenv{'notification'}; + my $critnotification=$userenv{'critnotification'}; my $bodytag=&Apache::loncommon::bodytag( - 'Change Your Message Forwarding'); + 'Change Your Message Forwarding and Notification'); + my $forwardingHelp = Apache::loncommon::help_open_topic("Prefs_Forwarding", + "What are forwarding ". + "and notification ". + "addresses"); + my $criticalMessageHelp = Apache::loncommon::help_open_topic("Course_Critical_Message", + "What are critical messages"); + $r->print(< $bodytag - +$forwardingHelp
New Forwarding Address(es) (user:domain,user:domain,...): - +
+New Message Notification Email Address(es) (joe\@doe.com,jane\@doe.edu,...): +
+New Critical Message Notification Email Address(es) (joe\@doe.com,jane\@doe.edu,...): +$criticalMessageHelp
@@ -220,14 +310,36 @@ sub verify_and_change_msgforward { if ($newscreen) { &Apache::lonnet::put('environment',{'msgforward' => $newscreen}); &Apache::lonnet::appenv('environment.msgforward' => $newscreen); - $message.='Set new message forwarding to '.$newscreen; + $message.='Set new message forwarding to '.$newscreen.'
'; } else { &Apache::lonnet::del('environment',['msgforward']); &Apache::lonnet::delenv('environment\.msgforward'); - $message.='Reset message forwarding'; + $message.='Reset message forwarding
'; + } + my $notification=$ENV{'form.notification'}; + $notification=~s/\s//gs; + if ($notification) { + &Apache::lonnet::put('environment',{'notification' => $notification}); + &Apache::lonnet::appenv('environment.notification' => $notification); + $message.='Set message notification address to '.$notification.'
'; + } else { + &Apache::lonnet::del('environment',['notification']); + &Apache::lonnet::delenv('environment\.notification'); + $message.='Reset message notification
'; + } + my $critnotification=$ENV{'form.critnotification'}; + $critnotification=~s/\s//gs; + if ($critnotification) { + &Apache::lonnet::put('environment',{'critnotification' => $critnotification}); + &Apache::lonnet::appenv('environment.critnotification' => $critnotification); + $message.='Set critical message notification address to '.$critnotification; + } else { + &Apache::lonnet::del('environment',['critnotification']); + &Apache::lonnet::delenv('environment\.critnotification'); + $message.='Reset critical message notification
'; } my $bodytag=&Apache::loncommon::bodytag( - 'Change Your Message Forwarding'); + 'Change Your Message Forwarding and Notifications'); $r->print(< $bodytag @@ -237,6 +349,145 @@ $message ENDVCMSG } +################################################################ +# Colors # +################################################################ + +sub colorschanger { + my $r = shift; + my $bodytag=&Apache::loncommon::bodytag( + 'Change Color Scheme for Current Role Type','', + 'onUnload="pclose();"'); +# figure out colors + my $function='student'; + if ($ENV{'request.role'}=~/^(cc|in|ta|ep)/) { + $function='coordinator'; + } + if ($ENV{'request.role'}=~/^(su|dc|ad|li)/) { + $function='admin'; + } + if (($ENV{'request.role'}=~/^(au|ca)/) || + ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) { + $function='author'; + } + my $domain=&Apache::loncommon::determinedomain(); + my %colortypes=('pgbg' => 'Page Background', + 'tabbg' => 'Header Background', + 'sidebg'=> 'Header Border', + 'font' => 'Font', + 'link' => 'Un-Visited Link', + 'vlink' => 'Visited Link', + 'alink' => 'Active Link'); + my $chtable=''; + foreach my $item (sort(keys(%colortypes))) { + my $curcol=&Apache::loncommon::designparm($function.'.'.$item,$domain); + $chtable.=''.$colortypes{$item}.'      Select'; + } + my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); + $r->print(< + +$bodytag +
+ + + +
+
+ + +$chtable +
+ + +
+ + +ENDCOL +} + +sub verify_and_change_colors { + my $r = shift; +# figure out colors + my $function='student'; + if ($ENV{'request.role'}=~/^(cc|in|ta|ep)/) { + $function='coordinator'; + } + if ($ENV{'request.role'}=~/^(su|dc|ad|li)/) { + $function='admin'; + } + if (($ENV{'request.role'}=~/^(au|ca)/) || + ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) { + $function='author'; + } + my $domain=&Apache::loncommon::determinedomain(); + my %colortypes=('pgbg' => 'Page Background', + 'tabbg' => 'Header Background', + 'sidebg'=> 'Header Border', + 'font' => 'Font', + 'link' => 'Un-Visited Link', + 'vlink' => 'Visited Link', + 'alink' => 'Active Link'); + + my $message=''; + foreach my $item (keys %colortypes) { + my $color=$ENV{'form.'.$item}; + 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); + $message.='Set '.$colortypes{$item}.' to '.$color.'
'; + } else { + &Apache::lonnet::del('environment',[$entry]); + &Apache::lonnet::delenv('environment\.'.$entry); + $message.='Reset '.$colortypes{$item}.'
'; + } + } + my $bodytag=&Apache::loncommon::bodytag( + 'Change Color Scheme for Current Role Type'); + $r->print(< +$bodytag +

+$message +
+ + +
+ +ENDVCCOL +} + ###################################################### # password handler subroutines # ###################################################### @@ -378,7 +629,8 @@ ENDHEADER "Password data was blank.\n

"); return; } - # Get the keysecen my $lonhost = $r->dir_config('lonHostID'); + # Get the keys + my $lonhost = $r->dir_config('lonHostID'); my $tmpinfo = Apache::lonnet::reply('tmpget:'.$logtoken,$lonhost); if (($tmpinfo=~/^error/) || ($tmpinfo eq 'con_lost')) { # I do not a have a better idea about how to handle this @@ -393,9 +645,9 @@ ENDERROR } my ($ckey,$n1key,$n2key)=split(/&/,$tmpinfo); # - my $currentpass = &des_decrypt($ckey ,$currentpass); - my $newpass1 = &des_decrypt($n1key,$newpass1); - my $newpass2 = &des_decrypt($n2key,$newpass2); + $currentpass = &des_decrypt($ckey ,$currentpass); + $newpass1 = &des_decrypt($n1key,$newpass1); + $newpass2 = &des_decrypt($n2key,$newpass2); # if ($newpass1 ne $newpass2) { &passwordchanger($r, @@ -459,7 +711,7 @@ sub handler { my $r = shift; my $user = $ENV{'user.name'}; my $domain = $ENV{'user.domain'}; - $r->content_type('text/html'); + &Apache::loncommn::content_type($r,'text/html'); # Some pages contain DES keys and should not be cached. &Apache::loncommon::no_cache($r); $r->send_http_header; @@ -477,8 +729,18 @@ sub handler { &msgforwardchanger($r); } elsif ($ENV{'form.action'} eq 'verify_and_change_msgforward') { &verify_and_change_msgforward($r); + } elsif ($ENV{'form.action'} eq 'changecolors') { + &colorschanger($r); + } elsif ($ENV{'form.action'} eq 'verify_and_change_colors') { + &verify_and_change_colors($r); + } elsif ($ENV{'form.action'} eq 'changelanguages') { + &languagechanger($r); + } elsif ($ENV{'form.action'} eq 'verify_and_change_languages') { + &verify_and_change_languages($r); } elsif ($ENV{'form.action'} eq 'debugtoggle') { - if ($ENV{'user.name'} eq 'albertel' ) { + if (($ENV{'user.name'} eq 'albertel' ) || + ($ENV{'user.name'} eq 'kortemey' ) || + ($ENV{'user.name'} eq 'korte')) { if ($ENV{'user.debug'}) { &Apache::lonnet::delenv('user\.debug'); } else { @@ -514,7 +776,7 @@ ENDSCREENNAMEFORM $r->print(< - + ENDMSGFORWARDFORM # The "about me" page @@ -523,10 +785,26 @@ ENDMSGFORWARDFORM $r->print(< - + ENDABOUTME - if ($ENV{'user.name'} eq 'albertel') { + $r->print(< + + + +ENDCOLORFORM + + $r->print(< + + + +ENDLANGUAGES + + if (($ENV{'user.name'} eq 'albertel' ) || + ($ENV{'user.name'} eq 'kortemey' ) || + ($ENV{'user.name'} eq 'korte')) { $r->print(<