--- loncom/interface/lonpreferences.pm 2007/04/28 23:13:56 1.100 +++ loncom/interface/lonpreferences.pm 2007/05/13 22:04:06 1.104 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.100 2007/04/28 23:13:56 www Exp $ +# $Id: lonpreferences.pm,v 1.104 2007/05/13 22:04:06 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -566,33 +566,209 @@ sub verify_and_change_icons { ################################################################ sub msgforwardchanger { - my $r = shift; + my ($r,$message) = @_; my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; - my %userenv = &Apache::lonnet::get('environment',['msgforward','notification','critnotification']); + my %userenv = &Apache::lonnet::get('environment',['msgforward','notification','critnotification','notifywithhtml']); my $msgforward=$userenv{'msgforward'}; - my $notification=$userenv{'notification'}; - my $critnotification=$userenv{'critnotification'}; + my %lt = &Apache::lonlocal::texthash( + all => 'All', + crit => 'Critical only', + reg => 'Non-critical only', + foad => 'Forwarding Address(es)', + mnot => 'Message Notification Email Address(es)', + chg => 'Change', + email => 'The e-mail address entered in row ', + notv => 'is not a valid e-mail address', + toen => "To enter multiple addresses, enter one address at a time, click 'Change' and then add the next one", + prme => 'Back to preferences menu', + ); 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"); + my @allow_html = split(/,/,$userenv{'notifywithhtml'}); + my %allnot = &get_notifications(\%userenv); + my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email(); + my $jscript = qq| + +|; $r->print(< +$jscript +$message +$forwardingHelp
-New Forwarding Address(es) (user:domain,user:domain,...): +$lt{'foad'} (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
- -
+$criticalMessageHelp +$lt{'mnot'} (joe\@doe.com):
ENDMSG + my @sortforwards = sort (keys(%allnot)); + my $output = &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row(). + ' '. + ''.&mt('Action').''. + ''.&mt('Notification address').''. + &mt('Types of message to forward to this address').''. + &mt('Excerpt retains HTML tags in message').''. + &Apache::loncommon::end_data_table_header_row(); + my $num = 0; + my $counter = 1; + foreach my $item (@sortforwards) { + $output .= &Apache::loncommon::start_data_table_row(). + ''.$counter.''. + '   '. + ''. + ''; + my %chk; + if (defined($allnot{$item}{'crit'})) { + if (defined($allnot{$item}{'reg'})) { + $chk{'all'} = 'checked="checked" '; + } else { + $chk{'crit'} = 'checked="checked" '; + } + } else { + $chk{'reg'} = 'checked="checked" '; + } + foreach my $type ('all','crit','reg') { + $output .= ' '; + } + my $htmlon = ''; + my $htmloff = ''; + if (grep/^\Q$item\E/,@allow_html) { + $htmlon = 'checked="checked" '; + } else { + $htmloff = 'checked="checked" '; + } + $output .= ' '. + ''. + &Apache::loncommon::end_data_table_row(); + $num ++; + $counter ++; + } + my %defchk = ( + all => 'checked="checked" ', + crit => '', + reg => '', + ); + $output .= &Apache::loncommon::start_data_table_row(). + ''.$counter.''. + ''. + ''; + foreach my $type ('all','crit','reg') { + $output .= ' '; + } + $output .= ' '. + ''. + &Apache::loncommon::end_data_table_row(). + &Apache::loncommon::end_data_table(); + $num ++; + $r->print($output); + $r->print(qq| +
+ + + + +|); + +} + +sub get_notifications { + my ($userenv) = @_; + my %allnot; + my @critnot = split(/,/,$userenv->{'critnotification'}); + my @regnot = split(/,/,$userenv->{'notification'}); + foreach my $item (@critnot) { + $allnot{$item}{crit} = 1; + } + foreach my $item (@regnot) { + $allnot{$item}{reg} = 1; + } + return %allnot; } sub verify_and_change_msgforward { @@ -609,7 +785,7 @@ sub verify_and_change_msgforward { if (&Apache::lonnet::homeserver($msuser,$msdomain) ne 'no_host') { $newscreen.=$msuser.':'.$msdomain.','; } else { - $message.='No such user: '.$msuser.':'.$msdomain.'
'; + $message.= &mt('No such user: ').$msuser.':'.$msdomain.'
'; } } } @@ -617,37 +793,84 @@ 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 .= &mt('Set message forwarding to: ').''.$newscreen. + '
'; } else { &Apache::lonnet::del('environment',['msgforward']); &Apache::lonnet::delenv('environment\.msgforward'); - $message.='Reset message forwarding
'; + $message.= &mt("Set message forwarding to 'off'.").'
'; } - my $notification=$env{'form.notification'}; + my $critnotification; + my $notification; + my $notify_with_html; + my $lastnotify = $env{'form.numnotify'}-1; + my $totaladdresses = 0; + for (my $i=0; $i<$env{'form.numnotify'}; $i++) { + if ((!defined($env{'form.del_notify_'.$i})) && + ((($i==$lastnotify) && ($env{'form.add_notify_'.$lastnotify} == 1)) || + ($i<$lastnotify))) { + if (defined($env{'form.address_'.$i})) { + if ($env{'form.notify_type_'.$i} eq 'all') { + $critnotification .= $env{'form.address_'.$i}.','; + $notification .= $env{'form.address_'.$i}.','; + } elsif ($env{'form.notify_type_'.$i} eq 'crit') { + $critnotification .= $env{'form.address_'.$i}.','; + } elsif ($env{'form.notify_type_'.$i} eq 'reg') { + $notification .= $env{'form.address_'.$i}.','; + } + if ($env{'form.html_'.$i} eq '1') { + $notify_with_html .= $env{'form.address_'.$i}.','; + } + $totaladdresses ++; + } + } + } + $critnotification =~ s/,$//; + $critnotification=~s/\s//gs; + $notification =~ s/,$//; $notification=~s/\s//gs; + $notify_with_html =~ s/,$//; + $notify_with_html =~ s/\s//gs; if ($notification) { &Apache::lonnet::put('environment',{'notification' => $notification}); &Apache::lonnet::appenv('environment.notification' => $notification); - $message.='Set message notification address to '.$notification.'
'; + $message.=&mt('Set non-critical message notification address(es) to: ').''.$notification.'
'; } else { &Apache::lonnet::del('environment',['notification']); &Apache::lonnet::delenv('environment\.notification'); - $message.='Reset message notification
'; + $message.=&mt("Non-critical message notification set to 'off'.").'
'; } - 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; + $message.=&mt('Set critical message notification address(es) to: ').''.$critnotification.'
'; } else { &Apache::lonnet::del('environment',['critnotification']); &Apache::lonnet::delenv('environment\.critnotification'); - $message.='Reset critical message notification
'; + $message.=&mt("Critical message notification set to 'off'.").'
'; } - $r->print(< $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']); + &Apache::lonnet::delenv('environment\.notifywithhtml'); + if ($totaladdresses == 1) { + $message.=&mt("Set notification address to receive excerpts with html stripped."); + } else { + $message.=&mt("Set all notification addresses to receive excerpts with html stripped."); + } + } + } else { + &Apache::lonnet::del('environment',['notifywithhtml']); + &Apache::lonnet::delenv('environment\.notifywithhtml'); + } + if ($message) { + $message .= '

'; + } + &msgforwardchanger($r,$message); } ################################################################ @@ -1035,7 +1258,7 @@ sub verify_and_change_password { if ($caller eq 'reset_by_email') { $tryagain_text = &mt('Please try again later.'); } - my $unable=&mt("Unable to retrieve stored token for password decryption"); + my $unable=&mt("Unable to retrieve saved token for password decryption"); $r->print(< $unable. $tryagain_text @@ -1208,7 +1431,7 @@ END $r->print(<<"END");

- +

Note: $lt{'thde'} @@ -1405,7 +1628,7 @@ sub handler { breadcrumb => { href => '/adm/preferences?action=changemsgforward', text => 'Change Message Forwarding'}, - printmenu => 'yes', + printmenu => 'no', subroutine => \&verify_and_change_msgforward })); my $aboutmeaction= '/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme';