Diff for /loncom/interface/lonpreferences.pm between versions 1.97 and 1.103

version 1.97, 2007/03/07 16:24:08 version 1.103, 2007/05/08 18:26:54
Line 516  ENDVCSCREEN Line 516  ENDVCSCREEN
 }  }
   
 ################################################################  ################################################################
   #                     Icon Subroutines                         #
   ################################################################
   sub iconchanger {
       my $r = shift;
       my $user       = $env{'user.name'};
       my $domain     = $env{'user.domain'};
       my %userenv = &Apache::lonnet::get
           ('environment',['icons']);
       my $iconic='checked="checked"';
       my $classic='';
       my $onlyicon='';
       if ($userenv{'icons'} eq 'classic') {
          $classic='checked="checked"';
          $iconic='';
       }
       if ($userenv{'icons'} eq 'iconsonly') {
          $onlyicon='checked="checked"';
          $iconic='';
       }
       my $useicons=&mt('Use icons and text');
       my $usebuttons=&mt('Use buttons and text');
       my $useicononly=&mt('Use icons only');
       my $change=&mt('Change');
       $r->print(<<ENDSCREEN);
   <form name="prefs" action="/adm/preferences" method="post">
   <input type="hidden" name="action" value="verify_and_change_icons" />
   <label><input type="radio" name="menumode" value="iconic" $iconic /> $useicons</label><br />
   <label><input type="radio" name="menumode" value="classic" $classic /> $usebuttons</label><br />
   <label><input type="radio" name="menumode" value="iconsonly" $onlyicon /> $useicononly</label><br />
   <input type="submit" value="$change" />
   </form>
   ENDSCREEN
   }
   
   sub verify_and_change_icons {
       my $r = shift;
       my $user       = $env{'user.name'};
       my $domain     = $env{'user.domain'};
       my $newicons  = $env{'form.menumode'};
   
       &Apache::lonnet::put('environment',{'icons' => $newicons});
       &Apache::lonnet::appenv('environment.icons' => $newicons);
       $r->print(&mt('Set menu mode to [_1].',$newicons));
   }
   
   ################################################################
 #         Message Forward                                      #  #         Message Forward                                      #
 ################################################################  ################################################################
   
 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 563  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 571  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 $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}.',';      
                   }
               }
           }
     }      }
     my $notification=$env{'form.notification'};      $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 845  sub jscript_send { Line 1061  sub jscript_send {
   
 sub client_form {  sub client_form {
     my ($caller,$hexkey,$currentpass,$defdom) = @_;      my ($caller,$hexkey,$currentpass,$defdom) = @_;
       my %lt=&Apache::lonlocal::texthash(
                   'email' => 'EMail Address',
                   'username' => 'Username',
                   'domain' => 'Domain',
                   'currentpass' => 'Current Password',
                   'newpass' => 'New Password',
                   'confirmpass' => 'Confirm Password',
                   'changepass' => 'Change Password');
   
     my $output = qq|      my $output = qq|
 <form name="client" >  <form name="client" >
 <table>  <table>
 |;  |;
     if ($caller eq 'reset_by_email') {      if ($caller eq 'reset_by_email') {
         $output .= qq|          $output .= qq|
 <tr><td align="right"> E-mail address:                        </td>  <tr><td class="LC_preferences_labeltext"><label for="email">$lt{'email'}</label>:</td>
     <td><input type="text" name="email" size="30" /> </td></tr>      <td><input type="text" name="email" size="30" /> </td></tr>
 <tr><td align="right"> Username:                        </td>  <tr><td class="LC_preferences_labeltext"><label for="uname">$lt{'username'}</label>:</td>
     <td>      <td>
      <input type="text" name="uname" size="15" />       <input type="text" name="uname" size="15" />
      <input type="hidden" name="currentpass" value="$currentpass" />       <input type="hidden" name="currentpass" value="$currentpass" />
     </td></tr>      </td></tr>
 <tr><td align="right"> Domain:                               </td>  <tr><td class="LC_preferences_labeltext"><label for="udom">$lt{'udom'}</label>:</td>
     <td>      <td>
 |;  |;
         $output .= &Apache::loncommon::select_dom_form($defdom,'udom').'          $output .= &Apache::loncommon::select_dom_form($defdom,'udom').'
Line 867  sub client_form { Line 1092  sub client_form {
 ';  ';
     } else {      } else {
         $output .= qq|          $output .= qq|
 <tr><td align="right"> Current password:                      </td>  <tr><td class="LC_preferences_labeltext"><label for="currentpass">$lt{'currentpass'}</label></td>
     <td><input type="password" name="currentpass" size="10"/> </td></tr>      <td><input type="password" name="currentpass" size="10"/> </td></tr>
 |;  |;
     }      }
     $output .= <<"ENDFORM";      $output .= <<"ENDFORM";
 <tr><td align="right"> New password:                          </td>  <tr><td class="LC_preferences_labeltext"><label for="newpass_1">$lt{'newpass'}</label></td>
     <td><input type="password" name="newpass_1" size="10"  /> </td></tr>      <td><input type="password" name="newpass_1" size="10"  /> </td></tr>
 <tr><td align="right"> Confirm password:                      </td>  <tr><td class="LC_preferences_labeltext"><label for="newpass_2">$lt{'confirmpass'}</label></td>
     <td><input type="password" name="newpass_2" size="10"  /> </td></tr>      <td><input type="password" name="newpass_2" size="10"  /> </td></tr>
 <tr><td colspan="2" align="center">  <tr><td colspan="2" align="center">
     <input type="button" value="Change Password" onClick="send();">      <input type="button" value="$lt{'changepass'}" onClick="send();">
 </table>  </table>
 <input type="hidden" name="ukey_cpass"  value="$hexkey->{'ukey_cpass'}" />  <input type="hidden" name="ukey_cpass"  value="$hexkey->{'ukey_cpass'}" />
 <input type="hidden" name="lkey_cpass"  value="$hexkey->{'lkey_cpass'}" />  <input type="hidden" name="lkey_cpass"  value="$hexkey->{'lkey_cpass'}" />
Line 928  sub verify_and_change_password { Line 1153  sub verify_and_change_password {
         if ($user ne '' && $domain ne '') {          if ($user ne '' && $domain ne '') {
             $homeserver = &Apache::lonnet::homeserver($user,$domain);              $homeserver = &Apache::lonnet::homeserver($user,$domain);
             if ($homeserver eq 'no_host') {              if ($homeserver eq 'no_host') {
         &passwordchanger($r,"<p>\n<font color='#ff0000'>ERROR</font>".          &passwordchanger($r,"<p>\n<span class='LC_error'>".
                          "Invalid username and/or domain .\n</p>",                           &mt("Invalid username and/or domain")."</span>\n</p>",
                          $caller,$mailtoken);                           $caller,$mailtoken);
                 return 1;                  return 1;
             }              }
         } else {          } else {
             &passwordchanger($r,"<p>\n<font color='#ff0000'>ERROR</font>".              &passwordchanger($r,"<p>\n<span class='LC_error'>".
                              "Username and Domain were blank.\n</p>",                               &mt("Username and domain were blank")."</span>\n</p>",
                              $caller,$mailtoken);                               $caller,$mailtoken);
             return 1;              return 1;
         }          }
Line 948  sub verify_and_change_password { Line 1173  sub verify_and_change_password {
     # Check for authentication types that allow changing of the password.      # Check for authentication types that allow changing of the password.
     if ($currentauth !~ /^(unix|internal):/) {      if ($currentauth !~ /^(unix|internal):/) {
         if ($caller eq 'reset_by_email') {          if ($caller eq 'reset_by_email') {
             &passwordchanger($r,"<p>\n<font color='#ff0000'>ERROR</font>".              &passwordchanger($r,"<p>\n<span class='LC_error'>".
                              "Authentication type for this user can not be changed by this mechanism..\n</p>",                               &mt("Authentication type for this user can not be changed by this mechanism").
                                "</span>\n</p>",
                               $caller,$mailtoken);                                $caller,$mailtoken);
             return 1;              return 1;
         } else {          } else {
Line 965  sub verify_and_change_password { Line 1191  sub verify_and_change_password {
     unless (defined($currentpass) &&       unless (defined($currentpass) && 
     defined($newpass1)    &&       defined($newpass1)    && 
     defined($newpass2)    ){      defined($newpass2)    ){
  &passwordchanger($r,"<p>\n<font color='#ff0000'>ERROR</font>".   &passwordchanger($r,"<p>\n<span class='LC_error'>".
  "One or more password fields were blank.\n</p>",$caller,$mailtoken);   &mt("One or more password fields were blank").
                            "</span>\n</p>",$caller,$mailtoken);
  return;   return;
     }      }
     # Get the keys      # Get the keys
Line 978  sub verify_and_change_password { Line 1205  sub verify_and_change_password {
         if ($caller eq 'reset_by_email') {          if ($caller eq 'reset_by_email') {
             $tryagain_text = &mt('Please try again later.');              $tryagain_text = &mt('Please try again later.');
         }          }
           my $unable=&mt("Unable to retrieve saved token for password decryption");
  $r->print(<<ENDERROR);   $r->print(<<ENDERROR);
 <p>  <p>
 <font color="#ff0000">ERROR:</font> Unable to retrieve stored token for  <span class="LC_error">$unable.  $tryagain_text</span>
 password decryption.  $tryagain_text  
 </p>  </p>
 ENDERROR  ENDERROR
         # Probably should log an error here          # Probably should log an error here
Line 997  ENDERROR Line 1224  ENDERROR
         my %data = &Apache::lonnet::tmpget($mailtoken);          my %data = &Apache::lonnet::tmpget($mailtoken);
         if ($currentpass ne $data{'temppasswd'}) {          if ($currentpass ne $data{'temppasswd'}) {
             &passwordchanger($r,              &passwordchanger($r,
                          '<font color="#ff0000">ERROR:</font>'.                           '<span class="LC_error">'.
                          'Could not verify current authentication.  '.                           &mt('Could not verify current authentication').'.  '.
                          'Please try again.',$caller,$mailtoken);                           &mt('Please try again').'.</span>',$caller,$mailtoken);
             return 1;              return 1;
         }          }
     }       } 
     if ($newpass1 ne $newpass2) {      if ($newpass1 ne $newpass2) {
  &passwordchanger($r,   &passwordchanger($r,
  '<font color="#ff0000">ERROR:</font>'.   '<span class="LC_error">'.
  'The new passwords you entered do not match.  '.   &mt('The new passwords you entered do not match').'.  '.
  'Please try again.',$caller,$mailtoken);   &mt('Please try again').'.</span>',$caller,$mailtoken);
  return 1;   return 1;
     }      }
     if (length($newpass1) < 7) {      if (length($newpass1) < 7) {
  &passwordchanger($r,   &passwordchanger($r,
  '<font color="#ff0000">ERROR:</font>'.   '<span class="LC_error">'.
  'Passwords must be a minimum of 7 characters long.  '.   &mt('Passwords must be a minimum of 7 characters long').'.  '.
  'Please try again.',$caller,$mailtoken);   &mt('Please try again').'</span>.',$caller,$mailtoken);
  return 1;   return 1;
     }      }
     #      #
Line 1025  ENDERROR Line 1252  ENDERROR
     }      }
     if ($badpassword) {      if ($badpassword) {
  # I can't figure out how to enter bad characters on my browser.   # I can't figure out how to enter bad characters on my browser.
  my $errormessage = <<"ENDERROR";   my $errormessage ='<span class="LC_error">'.
 <font color="#ff0000">ERROR:</font>             &mt('The password you entered contained illegal characters').'.<br />'.
 The password you entered contained illegal characters.<br />             &mt('Valid characters are').(<<"ENDERROR");
 Valid characters are: space and <br />  : space and <br />
 <pre>  <pre>
 !&quot;\#$%&amp;\'()*+,-./0123456789:;&lt;=&gt;?\@  !&quot;\#$%&amp;\'()*+,-./0123456789:;&lt;=&gt;?\@
 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_\`abcdefghijklmnopqrstuvwxyz{|}~  ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_\`abcdefghijklmnopqrstuvwxyz{|}~
 </pre>  </pre></span>
 ENDERROR  ENDERROR
         &passwordchanger($r,$errormessage,$caller,$mailtoken);          &passwordchanger($r,$errormessage,$caller,$mailtoken);
         return 1;          return 1;
Line 1043  ENDERROR Line 1270  ENDERROR
  ($user,$domain,$currentpass,$newpass1,$homeserver,$caller);   ($user,$domain,$currentpass,$newpass1,$homeserver,$caller);
     # Inform the user the password has (not?) been changed      # Inform the user the password has (not?) been changed
     if ($result =~ /^ok$/) {      if ($result =~ /^ok$/) {
  $r->print(<<"ENDTEXT");   $r->print("<h3>".&mt('The password for [_1] was successfully changed',$user)."</h3>");
 <h3>The password for $user was successfully changed</h3>  
 ENDTEXT  
     } else {      } else {
  # error error: run in circles, scream and shout   # error error: run in circles, scream and shout
         $r->print(<<ENDERROR);          $r->print("<h3><span class='LC_error'>".&mt("The password for [_1] was not changed",$user)."</span></h3>".
 <h3><font color="#ff0000">The password for $user was not changed</font></h3>                    &mt('Please make sure your old password was entered correctly').'.');
 Please make sure your old password was entered correctly.  
 ENDERROR  
         return 1;          return 1;
     }      }
     return;      return;
Line 1155  END Line 1378  END
     $r->print(<<"END");      $r->print(<<"END");
 <br />  <br />
 <br />  <br />
 <input type="submit" name="sub" value="Store Changes" />  <input type="submit" name="sub" value="Save Changes" />
 <br />  <br />
 <br />  <br />
 Note: $lt{'thde'}  Note: $lt{'thde'}
Line 1352  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';
Line 1470  sub handler { Line 1693  sub handler {
       }));        }));
     }      }
   
       push (@Options,({ action   => 'changeicons',
                         linktext => 'Change How Menus are Displayed',
                         href     => '/adm/preferences',
                         subroutine => \&iconchanger,
                         breadcrumb =>
                             { href => '/adm/preferences?action=changeicons',
                               text => 'Change Main Menu'},
                         },
                       { action   => 'verify_and_change_icons',
                         subroutine => \&verify_and_change_icons,
                         breadcrumb =>
                             { href => '/adm/preferences?action=changeicons',
                               text => 'Change Main Menu'},
                         printmenu => 'yes',
                         }));
   
     if (&Apache::lonnet::allowed('whn',$env{'request.course.id'})      if (&Apache::lonnet::allowed('whn',$env{'request.course.id'})
  || &Apache::lonnet::allowed('whn',$env{'request.course.id'}.'/'   || &Apache::lonnet::allowed('whn',$env{'request.course.id'}.'/'
     .$env{'request.course.sec'})) {      .$env{'request.course.sec'})) {

Removed from v.1.97  
changed lines
  Added in v.1.103


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