Diff for /loncom/interface/lonpreferences.pm between versions 1.101 and 1.102

version 1.101, 2007/05/02 01:33:49 version 1.102, 2007/05/08 17:23:10
Line 566  sub verify_and_change_icons { Line 566  sub verify_and_change_icons {
 ################################################################  ################################################################
   
 sub msgforwardchanger {  sub msgforwardchanger {
     my $r = shift;      my ($r,$message) = @_;
     my $user       = $env{'user.name'};      my $user       = $env{'user.name'};
     my $domain     = $env{'user.domain'};      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 $msgforward=$userenv{'msgforward'};
     my $notification=$userenv{'notification'};      my %lt = &Apache::lonlocal::texthash(
     my $critnotification=$userenv{'critnotification'};                                            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 you entered',
                                             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 $forwardingHelp = Apache::loncommon::help_open_topic("Prefs_Forwarding",
     "What are forwarding ".      "What are forwarding ".
     "and notification ".      "and notification ".
     "addresses");      "addresses");
     my $criticalMessageHelp = Apache::loncommon::help_open_topic("Course_Critical_Message",      my $criticalMessageHelp = Apache::loncommon::help_open_topic("Course_Critical_Message",
  "What are critical messages");   "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|
   <script type="text/javascript">
   function validate() {
       var checkaddress = 0;
       for (var i=0; i<document.prefs.numnotify.value; i++) {
           var addr = document.prefs.elements['address_'+i].value;
           if (i < document.prefs.numnotify.value-1) {
               if (document.prefs.elements['del_notify_'+i].value == false) {
                   checkaddress = 1;
               } 
           } else {
               if (document.prefs.elements['add_notify_'+i].checked == true) { 
                   checkaddress = 1;
               }
           }
           if (checkaddress== 1) {
               var addr = document.prefs.elements['address_'+i].value;
               if (validmail(document.prefs.elements['address_'+i]) == false) {
                   alert("$lt{'email'}: "+addr+" $lt{'notv'}.\\n($lt{'toen'}).");
                   return;
               }
           }
       }
       document.prefs.submit();
   }
   $validatescript
   </script>
   |;
     $r->print(<<ENDMSG);      $r->print(<<ENDMSG);
 $forwardingHelp <br />  $jscript
   $message
   $forwardingHelp
 <form name="prefs" action="/adm/preferences" method="post">  <form name="prefs" action="/adm/preferences" method="post">
 <input type="hidden" name="action" value="verify_and_change_msgforward" />  <input type="hidden" name="action" value="verify_and_change_msgforward" />
 New Forwarding Address(es) (<tt>user:domain,user:domain,...</tt>):  $lt{'foad'} (<tt>user:domain,user:domain,...</tt>):
 <input type="text" size="40" value="$msgforward" name="msgforward" /><hr />  <input type="text" size="40" value="$msgforward" name="msgforward" /><hr />
 New Message Notification Email Address(es) (<tt>joe\@doe.com,jane\@doe.edu,...</tt>):  $criticalMessageHelp
 <input type="text" size="40" value="$notification" name="notification" /><hr />  $lt{'mnot'} (<tt>joe\@doe.com</tt>):<br />
 New Critical Message Notification Email Address(es) (<tt>joe\@doe.com,jane\@doe.edu,...</tt>):  
 <input type="text" size="40" value="$critnotification" name="critnotification" />$criticalMessageHelp<hr />  
 <input type="submit" value="Change" />  
 </form>  
 ENDMSG  ENDMSG
       my @sortforwards = sort (keys(%allnot));
       my $output = &Apache::loncommon::start_data_table().
                    &Apache::loncommon::start_data_table_header_row().
                    '<th>'.&mt('Action').'</th>'.
                    '<th>'.&mt('Notification address').'</th><th>'.
                    &mt('Messages to forward').'</th><th>'.
                    &mt('Excerpt retains HTML tags included in message').'</th>'.
                    &Apache::loncommon::end_data_table_header_row();
       my $num = 0;
       foreach my $item (@sortforwards) {
           $output .= &Apache::loncommon::start_data_table_row().
                      '<td><input type="checkbox" name="del_notify_'.$num.'" />'.
                      &mt('Delete').'</td>'.
                      '<td><input type="text" value="'.$item.'" name="address_'.
                      $num.'" /></td><td>';
           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 .= '<span class="LC_nobreak"><label>'.
                          '<input type="radio" name="notify_type_'.$num. 
                          '" value="'.$type.'" '.$chk{$type}.'/>'.$lt{$type}.'</label></span>&nbsp;';
           }
           my $htmlon = '';
           my $htmloff = '';
           if (grep/^\Q$item\E/,@allow_html) {
               $htmlon = 'checked="checked" '; 
           } else {
               $htmloff = 'checked="checked" ';
           }
           $output .= '</td><td><label><input type="radio" name="html_'.$num.
                      '" value="1" '.$htmlon.'/>'.&mt('Yes').'</label>&nbsp;'.
                      '<label><input type="radio" name="html_'.$num.'" value="0" '.
                      $htmloff.'/>'.&mt('No').'</label></td>'.
                      &Apache::loncommon::end_data_table_row();
           $num ++;
       }
       my %defchk = (
                      all => 'checked="checked" ',
                      crit => '',
                      reg => '',
                    );
       $output .= &Apache::loncommon::start_data_table_row().
                  '<td><input type="checkbox" name="add_notify_'.$num.'" />'.
                  &mt('Add').'</td>'.
                  '<td><input type="text" value="" name="address_'.$num.
                  '" /></td><td>';
       foreach my $type ('all','crit','reg') {
           $output .= '<span class="LC_nobreak"><label>'.
                      '<input type="radio" name="notify_type_'.$num.
                      '" value="'.$type.'" '.$defchk{$type}.'/>'.
                      $lt{$type}.'</label></span>&nbsp;';
       }
       $output .= '</td><td><label><input type="radio" name="html_'.$num.
                  '" value="1" />'.&mt('Yes').'</label>&nbsp;'.
                  '<label><input type="radio" name="html_'.$num.'" value="0" '.
                  ' checked="checked" />'.
                  &mt('No').'</label></td>'.
                  &Apache::loncommon::end_data_table_row().
                  &Apache::loncommon::end_data_table();
       $num ++;
       $r->print($output);
       $r->print(qq|
   <hr />
   <input type="hidden" name="numnotify" value="$num" />
   <input type="button" value="$lt{'chg'}" onclick="javascript:validate()" />
   <input type="button" value="$lt{'prme'}" onclick="location.href='/adm/preferences'" />
   </form>
   |);
   
   }
   
   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 {  sub verify_and_change_msgforward {
Line 609  sub verify_and_change_msgforward { Line 738  sub verify_and_change_msgforward {
     if (&Apache::lonnet::homeserver($msuser,$msdomain) ne 'no_host') {      if (&Apache::lonnet::homeserver($msuser,$msdomain) ne 'no_host') {
                $newscreen.=$msuser.':'.$msdomain.',';                 $newscreen.=$msuser.':'.$msdomain.',';
    } else {     } else {
                $message.='No such user: '.$msuser.':'.$msdomain.'<br>';                 $message.= &mt('No such user: ').$msuser.':'.$msdomain.'<br>';
            }             }
         }          }
     }      }
Line 617  sub verify_and_change_msgforward { Line 746  sub verify_and_change_msgforward {
     if ($newscreen) {      if ($newscreen) {
         &Apache::lonnet::put('environment',{'msgforward' => $newscreen});          &Apache::lonnet::put('environment',{'msgforward' => $newscreen});
         &Apache::lonnet::appenv('environment.msgforward' => $newscreen);          &Apache::lonnet::appenv('environment.msgforward' => $newscreen);
         $message.='Set new message forwarding to '.$newscreen.'<br />';          $message .= &mt('Set message forwarding to: ').'<tt>'.$newscreen.
                       '</tt><br />';
     } else {      } else {
         &Apache::lonnet::del('environment',['msgforward']);          &Apache::lonnet::del('environment',['msgforward']);
         &Apache::lonnet::delenv('environment\.msgforward');          &Apache::lonnet::delenv('environment\.msgforward');
         $message.='Reset message forwarding<br />';          $message.= &mt("Set message forwarding to 'off'.").'<br />';
     }      }
     my $notification=$env{'form.notification'};      my $critnotification;
       my $notification;
       my $notify_with_html;
       my $lastnotify = $env{'form.numnotify'}-1;
       for (my $i=0; $i<$env{'form.numnotify'}; $i++) {
           if ((!defined($env{'form.del_notify_'.$i})) &&  
              ((($i==$lastnotify) && (defined($env{'form.add_notify_'.$lastnotify}))) ||
               ($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}.',';      
                   }
               }
           }
       }
       $critnotification =~ s/,$//;
       $critnotification=~s/\s//gs;
       $notification =~ s/,$//;
     $notification=~s/\s//gs;      $notification=~s/\s//gs;
       $notify_with_html =~ s/,$//;
       $notify_with_html =~ s/\s//gs;
     if ($notification) {      if ($notification) {
         &Apache::lonnet::put('environment',{'notification' => $notification});          &Apache::lonnet::put('environment',{'notification' => $notification});
         &Apache::lonnet::appenv('environment.notification' => $notification);          &Apache::lonnet::appenv('environment.notification' => $notification);
         $message.='Set message notification address to '.$notification.'<br />';          $message.=&mt('Set non-critical message notification address(es) to: ').'<tt>'.$notification.'</tt><br />';
     } else {      } else {
         &Apache::lonnet::del('environment',['notification']);          &Apache::lonnet::del('environment',['notification']);
         &Apache::lonnet::delenv('environment\.notification');          &Apache::lonnet::delenv('environment\.notification');
         $message.='Reset message notification<br />';          $message.=&mt("Non-critical message notification set to 'off'.").'<br />';
     }      }
     my $critnotification=$env{'form.critnotification'};  
     $critnotification=~s/\s//gs;  
     if ($critnotification) {      if ($critnotification) {
         &Apache::lonnet::put('environment',{'critnotification' => $critnotification});          &Apache::lonnet::put('environment',{'critnotification' => $critnotification});
         &Apache::lonnet::appenv('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: ').'<tt>'.$critnotification.'</tt><br />';
     } else {      } else {
         &Apache::lonnet::del('environment',['critnotification']);          &Apache::lonnet::del('environment',['critnotification']);
         &Apache::lonnet::delenv('environment\.critnotification');          &Apache::lonnet::delenv('environment\.critnotification');
         $message.='Reset critical message notification<br />';          $message.=&mt('Critical message notification set to off').'<br />';
     }      }
     $r->print(<<ENDVCMSG);      if ($critnotification || $notification) {
 $message          if ($notify_with_html) {
 ENDVCMSG              &Apache::lonnet::put('environment',{'notifywithhtml' => $notify_with_html});
               &Apache::lonnet::appenv('environment.notifywithhtml' => $notify_with_html);
               $message.=&mt('Set address(es) to receive excerpts with html retained: ').'<tt>'.$notify_with_html.'</tt>';
           } else {
               &Apache::lonnet::del('environment',['notifywithhtml']);
               &Apache::lonnet::delenv('environment\.notifywithhtml');
               $message.=&mt("Set all notification address(es) to receive excerpts with html stripped.").'<br />';
           }
       } else {
           &Apache::lonnet::del('environment',['notifywithhtml']);
           &Apache::lonnet::delenv('environment\.notifywithhtml');
       }
       if ($message) {
           $message .= '<br /><hr />';
       }
       &msgforwardchanger($r,$message);
 }  }
   
 ################################################################  ################################################################
Line 1405  sub handler { Line 1575  sub handler {
                       breadcrumb =>                         breadcrumb => 
                           { href => '/adm/preferences?action=changemsgforward',                            { href => '/adm/preferences?action=changemsgforward',
                             text => 'Change Message Forwarding'},                              text => 'Change Message Forwarding'},
                       printmenu => 'yes',                        printmenu => 'no',
                       subroutine => \&verify_and_change_msgforward }));                        subroutine => \&verify_and_change_msgforward }));
     my $aboutmeaction=      my $aboutmeaction=
         '/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme';          '/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme';

Removed from v.1.101  
changed lines
  Added in v.1.102


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>