+
+$title
+$texttop
+
+$textbottom
+
+
+ENDSCREEN
+}
+
+sub verify_and_change_lockwarning {
+ my $r = shift;
+ &Apache::lonnet::remove_all_locks();
+ $r->print(&mt('Cleared locks.'));
+}
+
+
+################################################################
# Message Forward #
################################################################
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 $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 %lt = &Apache::lonlocal::texthash(
+ all => 'All',
+ crit => 'Critical only',
+ reg => 'Non-critical only',
+ foad => 'Forwarding Address(es)',
+ noti => 'Notification E-mail Address(es)',
+ foad_exmpl => 'e.g. userA:domain1,userB:domain2,...',
+ mnot => 'Email Address(es) which should be notified about new LON-CAPA messages', # old: 'Message Notification Email Address(es)',
+ mnot_exmpl => 'e.g. joe@doe.com',
+ 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");
+ my $notificationHelp = &Apache::loncommon::help_open_topic("Prefs_Notification");
+ my $criticalMessageHelp = &Apache::loncommon::help_open_topic("Course_Critical_Message");
+ 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
+$lt{'foad'} $forwardingHelp
+$lt{'foad'} ($lt{'foad_exmpl'}):
+
+$lt{'noti'} $notificationHelp
+$lt{'mnot'} ($lt{'mnot_exmpl'}):
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 for which notification is sent').
+ $criticalMessageHelp.' | '.
+ &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 {
@@ -602,45 +870,93 @@ 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.'
';
}
}
}
$newscreen=~s/\,$//;
if ($newscreen) {
&Apache::lonnet::put('environment',{'msgforward' => $newscreen});
- &Apache::lonnet::appenv('environment.msgforward' => $newscreen);
- $message.='Set new message forwarding to '.$newscreen.'
';
+ &Apache::lonnet::appenv({'environment.msgforward' => $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.'
';
+ &Apache::lonnet::appenv({'environment.notification' => $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("Set non-critical message notification 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;
+ &Apache::lonnet::appenv({'environment.critnotification' => $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("Set critical message notification 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 .= '
';
+ }
+ &Apache::loncommon::flush_email_cache($user,$domain);
+ &msgforwardchanger($r,$message);
}
################################################################
@@ -737,17 +1053,17 @@ sub verify_and_change_colors {
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.'
';
+ &Apache::lonnet::appenv({'environment.'.$entry => $color});
+ $message.=&mt('Set '.$colortypes{$item}.' to ').'"'.$color.'".
';
} else {
&Apache::lonnet::del('environment',[$entry]);
&Apache::lonnet::delenv('environment\.'.$entry);
- $message.='Reset '.$colortypes{$item}.'
';
+ $message.=&mt('Reset '.$colortypes{$item}.'.').'
';
}
}
my $now = time;
&Apache::lonnet::put('environment',{'color.timestamp' => $now});
- &Apache::lonnet::appenv('environment.color.timestamp' => $now);
+ &Apache::lonnet::appenv({'environment.color.timestamp' => $now});
$r->print(<dir_config('lonDefDomain');
my %data = &Apache::lonnet::tmpget($mailtoken);
if (keys(%data) == 0) {
- $r->print(&mt('Sorry, the URL you provided to complete the reset of your password was invalid. Either the token included in the URL has been deleted or the URL you provided was invalid. Please submit a new request for a password reset, and follow the link to the new URL included in the e-mail that will be sent to you, to allow you to enter a new password.'));
+ $r->print(&mt('Sorry, the URL you provided to complete the reset of your password was invalid. Either the token included in the URL has been deleted or the URL you provided was invalid. Please submit a new request for a password reset, and follow the link to the new URL included in the e-mail that will be sent to you, to allow you to enter a new password.'));
return;
}
if (defined($data{time})) {
@@ -884,20 +1200,29 @@ sub jscript_send {
sub client_form {
my ($caller,$hexkey,$currentpass,$defdom) = @_;
+ my %lt=&Apache::lonlocal::texthash(
+ 'email' => 'E-mail Address',
+ 'username' => 'Username',
+ 'domain' => 'Domain',
+ 'currentpass' => 'Current Password',
+ 'newpass' => 'New Password',
+ 'confirmpass' => 'Confirm Password',
+ 'changepass' => 'Change Password');
+
my $output = qq|