--- loncom/interface/lonpreferences.pm 2002/04/30 14:03:52 1.8 +++ loncom/interface/lonpreferences.pm 2003/06/20 19:22:14 1.25 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.8 2002/04/30 14:03:52 matthew Exp $ +# $Id: lonpreferences.pm,v 1.25 2003/06/20 19:22:14 bowersj2 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. @@ -98,29 +99,30 @@ sub des_decrypt { ################################################################ # Handler subroutines # ################################################################ + +################################################################ +# Anonymous Discussion Name Change Subroutines # +################################################################ sub screennamechanger { my $r = shift; - my $errormessage = shift; - $errormessage = ($errormessage || ''); my $user = $ENV{'user.name'}; my $domain = $ENV{'user.domain'}; - my $homeserver = $ENV{'user.home'}; - my %userenv = &Apache::lonnet::get('environment',['screenname']); + my %userenv = &Apache::lonnet::get + ('environment',['screenname','nickname']); my $screenname=$userenv{'screenname'}; + my $nickname=$userenv{'nickname'}; + my $bodytag=&Apache::loncommon::bodytag( + 'Change Your Nickname and Anonymous Screen Name'); $r->print(< - -

Preferences for $user

-

$user is a member of domain $domain

-$errormessage -

-Change anonymous discussion screen name for $user -

+$bodytag
-New screenname: +
New screenname (shown if you post anonymously): +
New nickname (shown if you post non-anonymously): +
@@ -132,9 +134,9 @@ sub verify_and_change_screenname { my $r = shift; my $user = $ENV{'user.name'}; my $domain = $ENV{'user.domain'}; - my $homeserver = $ENV{'user.home'}; +# Screenname my $newscreen = $ENV{'form.screenname'}; - $newscreen=~s/\W//g; + $newscreen=~s/[^ \w]//g; my $message=''; if ($newscreen) { &Apache::lonnet::put('environment',{'screenname' => $newscreen}); @@ -145,19 +147,268 @@ sub verify_and_change_screenname { &Apache::lonnet::delenv('environment\.screenname'); $message='Reset screenname'; } +# Nickname + $message.='
'; + $newscreen = $ENV{'form.nickname'}; + $newscreen=~s/[^ \w]//g; + if ($newscreen) { + &Apache::lonnet::put('environment',{'nickname' => $newscreen}); + &Apache::lonnet::appenv('environment.nickname' => $newscreen); + $message.='Set new nickname to '.$newscreen; + } else { + &Apache::lonnet::del('environment',['nickname']); + &Apache::lonnet::delenv('environment\.nickname'); + $message.='Reset nickname'; + } + + my $bodytag=&Apache::loncommon::bodytag( + 'Change Your Nickname and Anonymous Screen Name'); $r->print(< - -

Preferences for $user

-

$user is a member of domain $domain

-

-Change anonymous discussion screen name for $user +$bodytag

$message ENDVCSCREEN } +################################################################ +# Message Forward # +################################################################ + +sub msgforwardchanger { + my $r = shift; + my $user = $ENV{'user.name'}; + my $domain = $ENV{'user.domain'}; + my %userenv = &Apache::lonnet::get('environment',['msgforward']); + my $msgforward=$userenv{'msgforward'}; + my $notification=$userenv{'notification'}; + my $critnotification=$userenv{'critnotification'}; + my $bodytag=&Apache::loncommon::bodytag( + 'Change Your Message Forwarding and Notification'); + my $forwardingHelp = Apache::loncommon::help_open_topic("Prefs_Forwarding", + "What are forwarding ". + "and notification ". + "addresses"); + $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,...): +
+ +
+ + +ENDMSG +} + +sub verify_and_change_msgforward { + my $r = shift; + my $user = $ENV{'user.name'}; + my $domain = $ENV{'user.domain'}; + my $newscreen = ''; + my $message=''; + foreach (split(/\,/,$ENV{'form.msgforward'})) { + my ($msuser,$msdomain)=split(/[\@\:]/,$_); + $msuser=~s/\W//g; + $msdomain=~s/\W//g; + if (($msuser) && ($msdomain)) { + if (&Apache::lonnet::homeserver($msuser,$msdomain) ne 'no_host') { + $newscreen.=$msuser.':'.$msdomain.','; + } else { + $message.='No such user: '.$msuser.':'.$msdomain.'
'; + } + } + } + $newscreen=~s/\,$//; + if ($newscreen) { + &Apache::lonnet::put('environment',{'msgforward' => $newscreen}); + &Apache::lonnet::appenv('environment.msgforward' => $newscreen); + $message.='Set new message forwarding to '.$newscreen.'
'; + } else { + &Apache::lonnet::del('environment',['msgforward']); + &Apache::lonnet::delenv('environment\.msgforward'); + $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 and Notifications'); + $r->print(< +$bodytag +

+$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 # ###################################################### @@ -194,14 +445,17 @@ sub passwordchanger { $lkey_npass2= hex($lkey_npass2); # Output javascript to deal with passwords # Output DES javascript + $r->print(""); { my $include = $r->dir_config('lonIncludes'); my $jsh=Apache::File->new($include."/londes.js"); $r->print(<$jsh>); } + my $bodytag=&Apache::loncommon::bodytag('Change Password','', + 'onLoad="init();"'); $r->print(< + +$bodytag -

Preferences for $user

-

$user is a member of domain $domain

$errormessage -

-Change password for $user -

+