Diff for /loncom/interface/lonpreferences.pm between versions 1.186.2.6 and 1.201

version 1.186.2.6, 2011/05/16 00:57:08 version 1.201, 2012/12/18 14:25:59
Line 227  sub texenginechanger { Line 227  sub texenginechanger {
      'tth' => 'tth (TeX to HTML)',       'tth' => 'tth (TeX to HTML)',
      #'ttm' => 'TeX to MathML',       #'ttm' => 'TeX to MathML',
      'jsMath' => 'jsMath',       'jsMath' => 'jsMath',
        'MathJax' => 'MathJax',
      'mimetex' => 'mimetex (Convert to Images)',       'mimetex' => 'mimetex (Convert to Images)',
                      'raw' => 'Raw (Screen Reader)'                       'raw' => 'Raw (Screen Reader)'
                      );                       );
Line 236  sub texenginechanger { Line 237  sub texenginechanger {
                $texengine,                 $texengine,
                'texengine',                 'texengine',
                \%mathchoices);                 \%mathchoices);
       my $MathJax_start=&Apache::lontexconvert::MathJax_header();
     my $jsMath_start=&Apache::lontexconvert::jsMath_header();      my $jsMath_start=&Apache::lontexconvert::jsMath_header();
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
       'headline' => 'Change how math is displayed',        'headline' => 'Change how math is displayed',
       'preftxt'  => 'Preferred method to display math',        'preftxt'  => 'Preferred method to display math',
       'change'   => 'Save',        'change'   => 'Save',
       'exmpl'    => 'Examples',        'exmpl'    => 'Examples',
         'mathjax'  => 'MathJax:',
       'jsmath'   => 'jsMath:',        'jsmath'   => 'jsMath:',
       'tth'      => 'tth (TeX to HTML):',        'tth'      => 'tth (TeX to HTML):',
       'mimetex'  => 'mimetex (Convert to Images):',        'mimetex'  => 'mimetex (Convert to Images):',
Line 276  $lt{'preftxt'}: $selectionbox Line 279  $lt{'preftxt'}: $selectionbox
 <hr />  <hr />
 $lt{'exmpl'}  $lt{'exmpl'}
   
   <h3>$lt{'mathjax'}</h3>
   </script>
   <iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=MathJax" width="400" height="120"></iframe>
   </p>
   <p>
   MathJax provides rendered equations whose source code can be extracted in TeX and MathML formats by right clicking the equation.
   </p>
   
 <h3>$lt{'jsmath'}</h3>   <h3>$lt{'jsmath'}</h3> 
 <p>  <p>
 $jsMath_start  $jsMath_start
Line 283  $jsMath_start Line 294  $jsMath_start
 if (jsMath.nofonts == 1) {  if (jsMath.nofonts == 1) {
     document.writeln($jsMathWarning);      document.writeln($jsMathWarning);
 }  }
   
 </script>  </script>
 <iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=jsMath" width="400" height="120"></iframe>  <iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=jsMath" width="400" height="120"></iframe>
 </p>  </p>
Line 342  sub rolesprefchanger { Line 354  sub rolesprefchanger {
     my $domain     = $env{'user.domain'};      my $domain     = $env{'user.domain'};
     my %userenv = &Apache::lonnet::get      my %userenv = &Apache::lonnet::get
         ('environment',['recentroles','recentrolesn']);          ('environment',['recentroles','recentrolesn']);
       my $brtext = 'Change '.$role.' Page Pref';
       my $brtitle;
       if ($env{'form.returnurl'} eq '/adm/roles') {
           $brtext = 'Configure Hotlist';
       } else {
           $brtitle = $brtext;
       }
     Apache::lonhtmlcommon::add_breadcrumb(      Apache::lonhtmlcommon::add_breadcrumb(
     { href => '/adm/preferences?action=changerolespref',      { href => '/adm/preferences?action=changerolespref',
                 text => 'Change '.$role.' Page Pref'});                  text => $brtext});
     $r->print(Apache::loncommon::start_page('Content Display Settings'));      $r->print(Apache::loncommon::start_page('Content Display Settings'));
     $r->print(Apache::lonhtmlcommon::breadcrumbs('Change '.$role.' Page Pref'));      $r->print(Apache::lonhtmlcommon::breadcrumbs($brtitle));
     my $hotlist_flag=$userenv{'recentroles'};      my $hotlist_flag=$userenv{'recentroles'};
     my $hotlist_n=$userenv{'recentrolesn'};      my $hotlist_n=$userenv{'recentrolesn'};
     my $checked;      my ($checkedon,$checkedoff);
     if ($hotlist_flag) {      if ($hotlist_flag) {
  $checked = 'checked="checked"';   $checkedon = 'checked="checked"';
       } else {
           $checkedoff = 'checked="checked"';
     }      }
           
     if (!$hotlist_n) { $hotlist_n=3; }      if (!$hotlist_n) { $hotlist_n=3; }
Line 378  sub rolesprefchanger { Line 399  sub rolesprefchanger {
     &Apache::loncommon::start_data_table().      &Apache::loncommon::start_data_table().
     &Apache::loncommon::start_data_table_header_row().      &Apache::loncommon::start_data_table_header_row().
     "<th>".&mt('Freeze '.$role)."</th>".      "<th>".&mt('Freeze '.$role)."</th>".
     "<th>".&mt($role)."</td>".      "<th>".&mt($role)."</th>".
     &Apache::loncommon::end_data_table_header_row().      &Apache::loncommon::end_data_table_header_row().
     "\n";      "\n";
  my $count;   my $count;
Line 401  sub rolesprefchanger { Line 422  sub rolesprefchanger {
         $roles_check_list .= "</table>\n";          $roles_check_list .= "</table>\n";
     }      }
   
       my $actionurl = '/adm/preferences';
       if ($env{'form.returnurl'} eq '/adm/roles') {
           $actionurl = '/adm/roles';
       }
       $r->print('<h3>'.&mt('Recent Roles Hotlist').'</h3>');
       unless ($checkedon) {
           $r->print(&mt('LON-CAPA users with several '.$lc_role.'s may wish to enable the Hotlist.').'<br />');
       }
     $r->print('      $r->print('
 <p>'.&mt('Some LON-CAPA users have a long list of '.$lc_role.'s. The Recent '.$role.'s Hotlist feature keeps track of the last N '.$lc_role.'s which have been visited and places a table of these at the top of the '.$lc_role.'s page. People with very few '.$lc_role.'s should leave this feature disabled.').'  <form name="prefs" action="'.$actionurl.'" method="post">
 </p>  
 <form name="prefs" action="/adm/preferences" method="post">  
 <input type="hidden" name="action" value="verify_and_change_rolespref" />  <input type="hidden" name="action" value="verify_and_change_rolespref" />
 <br />'.  <input type="hidden" name="returnurl" value="'.$env{'form.returnurl'}.'" />
 '<h2>'.&mt('Recent '.$role.'s Hotlist').'</h2>'.  <div class="LC_left_float"><h4>'.&mt('Hotlist options').'</h4>
   <p>'.
   &mt('When enabled, the Hotlist keeps track of the last N '.$lc_role.'s visited.').'<br />'.
   &mt('Those N '.$lc_role.'s are then shown in a table at the top of the '.$lc_role.'s page.').'</p>'.
 &Apache::lonhtmlcommon::start_pick_box().  &Apache::lonhtmlcommon::start_pick_box().
 &Apache::lonhtmlcommon::row_title('<label for="Hotlist">'.&mt('Enable Recent '.$role.'s Hotlist').'</label>').  &Apache::lonhtmlcommon::row_title(&mt('Use Recent '.$role.'s Hotlist')).
 '<input id="Hotlist" type="checkbox"'.$checked.' name="recentroles" value="true" />'.  '<span class="LC_nobreak">
   <label><input id="Hotliston" type="radio" '.$checkedon.' name="recentroles" value="1" />'.&mt('Yes').'</label>'.
   ('&nbsp;'x2).
   '<label><input id="Hotlistoff" type="radio" '.$checkedoff.' name="recentroles" value="0" />'.&mt('No').'</label>
   </span>'.
 &Apache::lonhtmlcommon::row_closure().  &Apache::lonhtmlcommon::row_closure().
 &Apache::lonhtmlcommon::row_title('<label for="NumberOfRoles">'.&mt('Number of '.$role.'s in Hotlist').'</label>').  &Apache::lonhtmlcommon::row_title('<label for="NumberOfRoles">'.&mt('Number of '.$role.'s in Hotlist').'</label>').
 '<select name="recentrolesn" size="1" id ="NumberOfRoles">'.  '<select name="recentrolesn" size="1" id ="NumberOfRoles">'.
 $options.  $options.'
 '</select>'.  </select>'.
 &Apache::lonhtmlcommon::row_closure(1).  &Apache::lonhtmlcommon::row_closure(1).
 &Apache::lonhtmlcommon::end_pick_box().  &Apache::lonhtmlcommon::end_pick_box().'
 '<br/><h2>'.&mt('Freeze Roles').'</h2>'.  </div>');
 '<p>'.&mt('This list below can be used to <q>freeze</q> '.$lc_role.'s on your screen. Those marked as frozen will not be removed from the list, even if they have not been used recently.').'      if ($roles_check_list) { 
           $r->print('<div class="LC_left_float">
   <h4>'.&mt('Freeze Roles').'</h4>
   <p>'.&mt('The table below can be used to [_1]freeze[_2] '.$lc_role.'s in the Hotlist.','<q>','</q>').'<br />'.
   &mt('Those '.$lc_role.'s marked frozen will not be removed from the list, even if not recently used.').'
 </p>  </p>
 '.$roles_check_list.'  '.$roles_check_list.'
 <br />  </div>');
        } else {
            $r->print('<br clear="all" />'.
                      &mt('Once the Hotlist contains recently visited '.$lc_role.'s, you can return to this page to also set frozen roles.'));
        }
        $r->print('
   <br clear="all" />
 <input type="submit" value="'.&mt('Save').'" />  <input type="submit" value="'.&mt('Save').'" />
 </form>');  </form>');
 }  }
Line 513  sub verify_and_change_rolespref { Line 557  sub verify_and_change_rolespref {
         }          }
     }      }
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     &print_main_menu($r, $message);      if ($env{'form.returnurl'} eq '/adm/roles') {
           return $message;
       } else {
           &print_main_menu($r, $message);
       }
 }  }
   
   
Line 620  sub iconchanger { Line 668  sub iconchanger {
     my ($inlinetools,$toolsorder) = &icon_previews();      my ($inlinetools,$toolsorder) = &icon_previews();
     if ((ref($inlinetools) eq 'HASH') && (ref($toolsorder) eq 'ARRAY')) {      if ((ref($inlinetools) eq 'HASH') && (ref($toolsorder) eq 'ARRAY')) {
         foreach my $tool (@{$toolsorder}) {          foreach my $tool (@{$toolsorder}) {
             my ($command,$row,$col,$img,$top,$bot,$act,$desc) =              my ($command,$row,$col,$img,$top,$bot,$act,$desc) = 
                 split(/\&/,$inlinetools->{$tool});                  split(/\&/,$inlinetools->{$tool});
             $iconic_preview .= '<li><a title="'.$desc.'" class="LC_menubuttons_link" href=""><img alt="'.$desc.'" src="/res/adm/pages/'.$img.'"  class="LC_icon" /><span class="LC_menubuttons_inline_text">'.$top.('&nbsp;' x 2).'</span></a></li>';              $iconic_preview .= '<li><a title="'.$desc.'" class="LC_menubuttons_link" href=""><img alt="'.$desc.'" src="/res/adm/pages/'.$img.'"  class="LC_icon" /><span class="LC_menubuttons_inline_text">'.$top.('&nbsp;' x 2).'</span></a></li>';
             $iconsonly_preview .= '<li><a title="'.$desc.'" class="LC_menubuttons_link" href=""><img alt="'.$desc.'" src="/res/adm/pages/'.$img.'"  class="LC_icon" />&nbsp;</a></li>';              $iconsonly_preview .= '<li><a title="'.$desc.'" class="LC_menubuttons_link" href=""><img alt="'.$desc.'" src="/res/adm/pages/'.$img.'"  class="LC_icon" />&nbsp;</a></li>';
Line 633  sub iconchanger { Line 681  sub iconchanger {
     $iconic_preview = '<ul class="LC_breadcrumb_tools_outerlist"><li>'.      $iconic_preview = '<ul class="LC_breadcrumb_tools_outerlist"><li>'.
                       '<ul>'.                        '<ul>'.
                       $iconic_preview.                        $iconic_preview.
                       '</ul></li></ul>';                        '</ul></li></ul>'; 
     $r->print(<<ENDSCREEN);      $r->print(<<ENDSCREEN);
 $classic  $classic
 <form name="prefs" action="/adm/preferences" method="post">  <form name="prefs" action="/adm/preferences" method="post">
Line 663  sub verify_and_change_icons { Line 711  sub verify_and_change_icons {
 }  }
   
 sub icon_options {  sub icon_options {
     my %lt = &Apache::lonlocal::texthash(      return &Apache::lonlocal::texthash(
                  iconic    => 'Use icons and text',                                          iconic    => 'Use icons and text',
                  iconsonly => 'Use icons only',                                          iconsonly => 'Use icons only',
              );                                        );
     return %lt;  
 }  }
   
 sub icon_previews {  sub icon_previews {
      my %icon_text = (       my %icon_text = (
                       annotate => 'Notes',                        annotate => 'Notes',
                       bookmark => 'Bookmark',                        wishlist => 'Stored Links',
                       catalog  => 'Info',                        catalog  => 'Info',
                       evaluate => 'Evaluate',                        evaluate => 'Evaluate',
                       feedback => 'Communicate',                        feedback => 'Communicate',
Line 681  sub icon_previews { Line 728  sub icon_previews {
                      );                       );
     my %inlinetools = (      my %inlinetools = (
         printout => "s&8&3&prt.png&$icon_text{'printout'}&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document",          printout => "s&8&3&prt.png&$icon_text{'printout'}&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document",
         bookmark => "s&9&1&sbkm.png&$icon_text{'bookmark'}&bookmark[_2]&set_bookmark()&Set a bookmark for this resource",          wishlist => "s&9&1&wishlist-link.png&$icon_text{'wishlist'}&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository",
         evaluate => "s&8&1&eval.png&$icon_text{'evaluate'}&this[_1]&gopost('/adm/evaluate',currentURL,1)&Provide my evaluation of this resource",          evaluate => "s&8&1&eval.png&$icon_text{'evaluate'}&this[_1]&gopost('/adm/evaluate',currentURL,1)&Provide my evaluation of this resource",
         feedback => "s&8&2&fdbk.png&$icon_text{'feedback'}&discuss[_1]&gopost('/adm/feedback',currentURL,1)&Provide feedback messages or contribute to the course discussion about this resource",          feedback => "s&8&2&fdbk.png&$icon_text{'feedback'}&discuss[_1]&gopost('/adm/feedback',currentURL,1)&Provide feedback messages or contribute to the course discussion about this resource",
         annotate => "s&9&3&anot.png&$icon_text{'annotate'}&tations[_1]&annotate()&Make notes and annotations about this resource",          annotate => "s&9&3&anot.png&$icon_text{'annotate'}&tations[_1]&annotate()&Make notes and annotations about this resource",
         catalog  => "s&6&3&catalog.png&$icon_text{'catalog'}&info[_1]&catalog_info()&Show Metadata",          catalog  => "s&6&3&catalog.png&$icon_text{'catalog'}&info[_1]&catalog_info()&Show Metadata",
     );      );
     my @toolsorder = qw(annotate bookmark evaluate feedback printout catalog);      my @toolsorder = qw(annotate wishlist evaluate feedback printout catalog);
     return (\%inlinetools,\@toolsorder);      return (\%inlinetools,\@toolsorder);
 }  }
   
Line 1180  sub colorschanger { Line 1227  sub colorschanger {
     foreach my $item (sort(keys(%colortypes))) {      foreach my $item (sort(keys(%colortypes))) {
        my $curcol=&Apache::loncommon::designparm($function.'.'.$item,$domain);         my $curcol=&Apache::loncommon::designparm($function.'.'.$item,$domain);
        $chtable.=&Apache::loncommon::start_data_table_row().         $chtable.=&Apache::loncommon::start_data_table_row().
    '<td>'.$colortypes{$item}.'</td><td style="background: '.$curcol.     '<td>'.$colortypes{$item}.'<td><input name="'.$item.
         '">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><input name="'.$item.          '" class="colorchooser"  size="10" value="'.$curcol.
         '" size="10" value="'.$curcol.  '" /></td>'.
 '" /></td><td><a href="javascript:pjump('."'color_custom','".$colortypes{$item}.  
 "','".$curcol."','"  
     .$item."','parmform.pres','psub'".');">'.&mt('Select').'</a></td>'.  
     &Apache::loncommon::end_data_table_row()."\n";      &Apache::loncommon::end_data_table_row()."\n";
     }      }
     my $end_data_table = &Apache::loncommon::end_data_table();      my $end_data_table = &Apache::loncommon::end_data_table();
Line 1193  sub colorschanger { Line 1237  sub colorschanger {
     my $savebutton = &mt('Save');      my $savebutton = &mt('Save');
     my $resetbutton = &mt('Reset All');      my $resetbutton = &mt('Reset All');
     my $resetbuttondesc = &mt('Reset All Colors to Default');      my $resetbuttondesc = &mt('Reset All Colors to Default');
       my $colorchooser=&Apache::lonhtmlcommon::color_picker();
       $r-print('<script type="text/javascript" language="JavaScript">
   ' . $colorchooser . '
   </script>
   ');
     $r->print(<<ENDCOL);      $r->print(<<ENDCOL);
 <script type="text/javascript" language="JavaScript">  
   
     function pclose() {  
         parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",  
                  "height=350,width=350,scrollbars=no,menubar=no");  
         parmwin.close();  
     }  
   
     $pjump_def  
   
     function psub() {  
         pclose();  
         if (document.parmform.pres_marker.value!='') {  
             if (document.parmform.pres_type.value!='') {  
                 eval('document.prefs.'+  
                      document.parmform.pres_marker.value+  
      '.value=document.parmform.pres_value.value;');  
     }  
         } else {  
             document.parmform.pres_value.value='';  
             document.parmform.pres_marker.value='';  
         }  
     }  
   
   
 </script>  
 <form name="parmform">  <form name="parmform">
 <input type="hidden" name="pres_marker" />  <input type="hidden" name="pres_marker" />
 <input type="hidden" name="pres_type" />  <input type="hidden" name="pres_type" />
Line 1258  sub verify_and_change_colors { Line 1282  sub verify_and_change_colors {
     my $message='';      my $message='';
     foreach my $item (keys %colortypes) {      foreach my $item (keys %colortypes) {
         my $color=$env{'form.'.$item};          my $color=$env{'form.'.$item};
    if (!($color =~ /^#/)) {
       $color = '#' . $color;
    }
         my $entry='color.'.$function.'.'.$item;          my $entry='color.'.$function.'.'.$item;
  if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$env{'form.resetall'})) {   if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$env{'form.resetall'})) {
     &Apache::lonnet::put('environment',{$entry => $color});      &Apache::lonnet::put('environment',{$entry => $color});
Line 1288  sub passwordchanger { Line 1315  sub passwordchanger {
     # This function is a bit of a mess....      # This function is a bit of a mess....
     # Passwords are encrypted using londes.js (DES encryption)      # Passwords are encrypted using londes.js (DES encryption)
     $errormessage = ($errormessage || '');      $errormessage = ($errormessage || '');
     my ($user,$domain,$currentpass,$defdom);      my ($user,$domain,$currentpass);
     &Apache::lonhtmlcommon::add_breadcrumb(      &Apache::lonhtmlcommon::add_breadcrumb(
  { href => '/adm/preferences?action=changepass',   { href => '/adm/preferences?action=changepass',
                   text => 'Change Password'});                    text => 'Change Password'});
Line 1303  sub passwordchanger { Line 1330  sub passwordchanger {
             $caller = 'preferences';              $caller = 'preferences';
         }          }
     } elsif ($caller eq 'reset_by_email') {      } elsif ($caller eq 'reset_by_email') {
             $defdom = $r->dir_config('lonDefDomain');  
             my %data = &Apache::lonnet::tmpget($mailtoken);              my %data = &Apache::lonnet::tmpget($mailtoken);
             if (keys(%data) == 0) {              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 [_1]new request[_2] 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(
                              ,'<a href="/adm/resetpw">','</a>')                      '<p class="LC_warning">'
                      .&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 [_1]new request[_2] 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.'
                          ,'<a href="/adm/resetpw">','</a>')
                      .'</p>'
                 );                  );
                 return;                  return;
             }              }
Line 1317  sub passwordchanger { Line 1346  sub passwordchanger {
                     $domain = $data{'domain'};                      $domain = $data{'domain'};
                     $currentpass = $data{'temppasswd'};                      $currentpass = $data{'temppasswd'};
                 } else {                  } else {
                     $r->print(&mt('Sorry, the token generated when you requested a password reset has expired.').'<br />');                      $r->print(
                           '<p class="LC_warning">'
                          .&mt('Sorry, the token generated when you requested'
                              .' a password reset has expired.')
                          .'</p>'
                       );
                     return;                      return;
                 }                  }
             } else {              } else {
                 $r->print(&mt('Sorry, the URL generated when you requested reset of your password contained incomplete information.').'<br />');                  $r->print(
                       '<p class="LC_warning">'
                      .&mt('Sorry, the URL generated when you requested reset of'
                          .' your password contained incomplete information.')
                      .'</p>'
                   );
                 return;                  return;
             }              }
    } else {              if (&Apache::lonnet::domain($domain) eq '') {
         $r->print(&mt('Page requested in unexpected context').'<br />');                  $domain = $r->dir_config('lonDefDomain');
               }
       } else {
           $r->print(
               '<p class="LC_error">'
              .&mt('Page requested in unexpected context')
              .'</p>'
           );
         return;          return;
     }      }
     my $currentauth=&Apache::lonnet::queryauthenticate($user,$domain);      my $currentauth=&Apache::lonnet::queryauthenticate($user,$domain);
Line 1368  $errormessage Line 1414  $errormessage
      crappy browser -->       crappy browser -->
 ENDFORM  ENDFORM
     $r->print(&server_form($logtoken,$caller,$mailtoken));      $r->print(&server_form($logtoken,$caller,$mailtoken));
     $r->print(&client_form($caller,\%hexkey,$currentpass,$defdom));      $r->print(&client_form($caller,\%hexkey,$currentpass,$domain));
   
     #      #
     return;      return;
Line 1597  ENDERROR Line 1643  ENDERROR
     }       } 
     if ($newpass1 ne $newpass2) {      if ($newpass1 ne $newpass2) {
  &passwordchanger($r,   &passwordchanger($r,
  '<span class="LC_error">'.   '<span class="LC_warning">'.
  &mt('The new passwords you entered do not match.').'  '.   &mt('The new passwords you entered do not match.').'  '.
  &mt('Please try again.').'</span>',$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,
  '<span class="LC_error">'.   '<span class="LC_warning">'.
  &mt('Passwords must be a minimum of 7 characters long.').'  '.   &mt('Passwords must be a minimum of 7 characters long.').'  '.
  &mt('Please try again.').'</span>',$caller,$mailtoken);   &mt('Please try again.').'</span>',$caller,$mailtoken);
  return 1;   return 1;
Line 1617  ENDERROR Line 1663  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 ='<span class="LC_error">'.   my $errormessage ='<span class="LC_warning">'.
            &mt('The password you entered contained illegal characters.').'<br />'.             &mt('The password you entered contained illegal characters.').'<br />'.
            &mt('Valid characters are').(<<"ENDERROR");             &mt('Valid characters are').(<<"ENDERROR");
 : space and <br />  : space and <br />
Line 1702  sub discussionchanger { Line 1748  sub discussionchanger {
         'sdpf' => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.',          'sdpf' => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.',
         'prca' => 'Preferences can be set that determine',          'prca' => 'Preferences can be set that determine',
         'whpo' => 'Which posts are displayed when you display a discussion board or resource, and',          'whpo' => 'Which posts are displayed when you display a discussion board or resource, and',
         'unwh' => 'Under what circumstances posts are identfied as "New"',          'unwh' => 'Under what circumstances posts are identified as "NEW"',
         'allposts' => 'All posts',          'allposts' => 'All posts',
         'unread' => 'New posts only',          'unread' => 'New posts only',
         'ondisp' => 'Once displayed',          'ondisp' => 'Once displayed',
         'onmark' => 'Once marked as read',          'onmark' => 'Once marked not NEW',
         'disa' => 'Posts displayed?',          'disa' => 'Posts displayed?',
         'npmr' => 'New posts cease to be identified as "New"?',          'npmr' => 'New posts cease to be identified as "NEW"?',
         'thde'  => 'The preferences you set here can be overridden within each individual discussion.',          'thde'  => 'The preferences you set here can be overridden within each individual discussion.',
         'chgt' => 'Change to '          'chgt' => 'Change to '
     );      );
Line 1793  sub verify_and_change_discussion { Line 1839  sub verify_and_change_discussion {
             &Apache::lonnet::put('environment',{'discmarkread' => $newmark});              &Apache::lonnet::put('environment',{'discmarkread' => $newmark});
             &Apache::lonnet::appenv({'environment.discmarkread' => $newmark});              &Apache::lonnet::appenv({'environment.discmarkread' => $newmark});
         } else {          } else {
             $message.=&Apache::lonhtmlcommon::confirm_success(&mt('In discussions: posts will be identified as "NEW" until marked as read by the reader.')).'<br />';              $message.=&Apache::lonhtmlcommon::confirm_success(&mt('In discussions: posts will be identified as "NEW" until marked as not "NEW".')).'<br />';
             &Apache::lonnet::del('environment',['discmarkread']);              &Apache::lonnet::del('environment',['discmarkread']);
             &Apache::lonnet::delenv('environment.discmarkread');              &Apache::lonnet::delenv('environment.discmarkread');
         }          }
Line 2095  push(@{ $menu[0]->{items} }, { Line 2141  push(@{ $menu[0]->{items} }, {
  linktitle => 'Change your password.',   linktitle => 'Change your password.',
  });   });
     }      }
     if ($env{'environment.remote'} eq 'off') {  
 push(@{ $menu[1]->{items} }, {  
         linktext => 'Launch Remote Control',  
         url => '/adm/remote?url=/adm/preferences&amp;action=launch',  
         permission => 'F',  
         #help => '',  
         icon => 'remotecontrol.png',  
         linktitle => 'Launch the remote control for LON-CAPA.',  
         });  
     }else{  
 push(@{ $menu[1]->{items} }, {  
         linktext => 'Collapse Remote Control',  
         url => '/adm/remote?url=/adm/preferences&amp;action=collapse',  
         permission => 'F',  
         #help => '',  
         icon => 'remotecontrol.png',  
         linktitle => 'Collapse the remote control for LON-CAPA.',  
         });  
     }  
   
   
     if (&can_toggle_namelocking()) {      if (&can_toggle_namelocking()) {
         push(@{ $menu[0]->{items} }, {          push(@{ $menu[0]->{items} }, {
Line 2189  sub handler { Line 2215  sub handler {
                                    ['action','wysiwyg','returnurl','refpage']);                                     ['action','wysiwyg','returnurl','refpage']);
     #      #
     Apache::lonhtmlcommon::clear_breadcrumbs();      Apache::lonhtmlcommon::clear_breadcrumbs();
       my ($brlink,$brtxt,$brhelp);
       if (($env{'form.action'} eq 'changerolespref') && ($env{'form.returnurl'} eq '/adm/roles')) {
           $brlink ='/adm/roles';
           $brtxt = 'User Roles';
       } else {
           $brlink ='/adm/preferences';
           $brtxt = 'Set User Preferences';
           $brhelp = 'Prefs_About_Me,Prefs_Language,Prefs_Screen_Name_Nickname,Change_Colors,Change_Password,Prefs_Messages,Change_Discussion_Display';   
       }
     Apache::lonhtmlcommon::add_breadcrumb      Apache::lonhtmlcommon::add_breadcrumb
         ({href => '/adm/preferences',          ({href => $brlink,
           text => 'Set User Preferences',            text => $brtxt,
           help =>            help => $brhelp,});
           'Prefs_About_Me,Prefs_Language,Prefs_Screen_Name_Nickname,Change_Colors,Change_Password,Prefs_Messages,Change_Discussion_Display'});  
     if(!exists $env{'form.action'}) {      if(!exists $env{'form.action'}) {
     &print_main_menu($r);      &print_main_menu($r);
     }elsif($env{'form.action'} eq 'changepass'){      }elsif($env{'form.action'} eq 'changepass'){

Removed from v.1.186.2.6  
changed lines
  Added in v.1.201


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