Diff for /loncom/interface/lonpreferences.pm between versions 1.125.4.9 and 1.159

version 1.125.4.9, 2010/01/28 15:40:10 version 1.159, 2009/05/06 16:19:34
Line 42  use Apache::loncommon(); Line 42  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
 use LONCAPA::lonauthcgi();  
 use LONCAPA();  use LONCAPA();
   
 #  #
Line 99  sub des_decrypt { Line 98  sub des_decrypt {
   
 sub wysiwygchanger {  sub wysiwygchanger {
     my $r = shift;      my $r = shift;
       Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changewysiwyg',
                   text => 'Change WYSIWYG Preferences'});
       $r->print(Apache::loncommon::start_page('Content Display Settings'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change WYSIWYG Preferences'));
   
     my %userenv = &Apache::lonnet::get      my %userenv = &Apache::lonnet::get
         ('environment',['wysiwygeditor']);          ('environment',['wysiwygeditor']);
     my $onselect='checked="checked"';      my $onselect='checked="checked"';
Line 132  sub verify_and_change_wysiwyg { Line 137  sub verify_and_change_wysiwyg {
     &Apache::lonnet::appenv({'environment.wysiwygeditor' => $newsetting});      &Apache::lonnet::appenv({'environment.wysiwygeditor' => $newsetting});
     my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('WYSIWYG Editor').'</i>','<tt>'.&mt($newsetting).'</tt>'));      my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('WYSIWYG Editor').'</i>','<tt>'.&mt($newsetting).'</tt>'));
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     $r->print(<<ENDVCSCREEN);      &print_main_menu($r,$message);
 $message  
 ENDVCSCREEN  
 }  }
   
 ################################################################  ################################################################
Line 142  ENDVCSCREEN Line 145  ENDVCSCREEN
 ################################################################  ################################################################
 sub languagechanger {  sub languagechanger {
     my $r = shift;      my $r = shift;
       
       Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changelanguages',
                   text => 'Change Language'});
       $r->print(Apache::loncommon::start_page('Content Display Settings'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Language')); 
     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      my %userenv = &Apache::lonnet::get
Line 156  sub languagechanger { Line 165  sub languagechanger {
                = &Apache::loncommon::plainlanguagedescription($_);                 = &Apache::loncommon::plainlanguagedescription($_);
  }   }
     }      }
     my $selectionbox=      my $selectionbox=&Apache::loncommon::select_form($language,'language',
            &Apache::loncommon::select_form(       %langchoices);
                $language,  
                'language',  
                &Apache::lonlocal::texthash(%langchoices));  
     $r->print(<<ENDLSCREEN);      $r->print(<<ENDLSCREEN);
 <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_languages" />  <input type="hidden" name="action" value="verify_and_change_languages" />
Line 189  sub verify_and_change_languages { Line 195  sub verify_and_change_languages {
     }      }
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     &Apache::loncommon::flush_langs_cache($user,$domain);      &Apache::loncommon::flush_langs_cache($user,$domain);
     $r->print(<<ENDVCSCREEN);      &print_main_menu($r, $message);
 $message  
 ENDVCSCREEN  
 }  }
   
 ################################################################  ################################################################
Line 199  ENDVCSCREEN Line 203  ENDVCSCREEN
 ################################################################  ################################################################
 sub texenginechanger {  sub texenginechanger {
     my $r = shift;      my $r = shift;
       Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changetexenginepref',
                   text => 'Change How Math Equations Are Displayed'});
       $r->print(Apache::loncommon::start_page('Content Display Settings'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change How Math Equations Are Displayed'));
     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',['texengine']);      my %userenv = &Apache::lonnet::get('environment',['texengine']);
Line 208  sub texenginechanger { Line 217  sub texenginechanger {
      'tth' => 'tth (TeX to HTML)',       'tth' => 'tth (TeX to HTML)',
      #'ttm' => 'TeX to MathML',       #'ttm' => 'TeX to MathML',
      'jsMath' => 'jsMath',       'jsMath' => 'jsMath',
      'mimetex' => 'mimetex (Convert to Images)',       'mimetex' => 'mimetex (Convert to Images)'
                      'raw' => 'Raw (Screen Reader)'  
                      );                       );
     my $selectionbox=      my $selectionbox=&Apache::loncommon::select_form($texengine,'texengine',
            &Apache::loncommon::select_form(       %mathchoices);
                $texengine,  
                'texengine',  
                &Apache::lonlocal::texthash(%mathchoices));  
     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 Math Preferences',
       'preftxt'  => 'Preferred method to display math',        'preftxt'  => 'Preferred method to display Math',
       'change'   => 'Save',        'change'   => 'Save',
       'exmpl'    => 'Examples',        'exmpl'    => 'Examples',
       'jsmath'   => 'jsMath:',        'jsmath'   => 'jsMath:',
Line 227  sub texenginechanger { Line 232  sub texenginechanger {
       'mimetex'  => 'mimetex (Convert to Images):',        'mimetex'  => 'mimetex (Convert to Images):',
     );      );
   
     my $jsMathWarning='<p>'  
                      .'<div class="LC_warning">'  
                      .&mt("It looks like you don't have the TeX math fonts installed.")  
                      .'</div>'  
                      .'<div>'  
                      .&mt('The jsMath example on this page may not look right without them. '  
                          .'The [_1]jsMath Home Page[_2] has information on how to download the '  
                          .'needed fonts. In the meantime, jsMath will do the best it can '  
                          .'with the fonts you have, but it may not be pretty and some equations '  
                          .'may not be rendered correctly.'  
                          ,'<a href="http://www.math.union.edu/locate/jsMath/" target="_blank">'  
                          ,'</a>')  
                      .'</div>'  
                      .'</p>';  
   
     $r->print(<<ENDLSCREEN);      $r->print(<<ENDLSCREEN);
 <h2>$lt{'headline'}</h2>  <h2>$lt{'headline'}</h2>
 <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_texengine" />  <input type="hidden" name="action" value="verify_and_change_texengine" />
 <p>  <p>
 $lt{'preftxt'}: $selectionbox  $lt{'preftxt'}: $selectionbox 
 <br />  <br />
 <input type="submit" value="$lt{'change'}" />  <input type="submit" value="$lt{'change'}" />
 </p>  </p>
Line 259  $lt{'exmpl'} Line 249  $lt{'exmpl'}
 <h3>$lt{'jsmath'}</h3>   <h3>$lt{'jsmath'}</h3> 
 <p>  <p>
 $jsMath_start  $jsMath_start
 <script type="text/javascript">  <script type="text/javascript" language="JavaScript">
 if (jsMath.nofonts == 1) {  if (jsMath.nofonts == 1) {
     document.writeln($jsMathWarning);      document.writeln
           ('<div style="padding: 10; border-style: solid; border-width:3;'
    +' border-color: #DD0000; background-color: #FFF8F8; width: 75%; text-align: left">'
    +'<small><font color="#AA0000"><b>Warning:</b> '
    +'It looks like you don\\\'t have the TeX math fonts installed. '
    +'The jsMath example on this page may not look right without them. '
    +'The <a href="http://www.math.union.edu/locate/jsMath/" target="_blank"> '
    +'jsMath Home Page</a> has information on how to download the '
    +'needed fonts.  In the meantime, jsMath will do the best it can '
    +'with the fonts you have, but it may not be pretty and some equations '
    +'may not be rendered correctly. '
    +'</font></small></div>');
 }  }
 </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>
Line 274  if (jsMath.nofonts == 1) { Line 275  if (jsMath.nofonts == 1) {
   
 <h3>$lt{'tth'}</h3>  <h3>$lt{'tth'}</h3>
 <p>  <p>
 <iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=tth" width="400" height="220"></iframe>  <iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=tth" width="400" height="200"></iframe>
 </p>  </p>
 ENDLSCREEN  ENDLSCREEN
     if ($env{'environment.texengine'} ne 'jsMath') {      if ($env{'environment.texengine'} ne 'jsMath') {
  $r->print('<script type="text/javascript">jsMath.Process()</script>');   $r->print('<script type="text/javascript" language="JavaScript">jsMath.Process()</script>');
     }      }
 }  }
   
Line 308  sub verify_and_change_texengine { Line 309  sub verify_and_change_texengine {
         $message=&Apache::lonhtmlcommon::confirm_success(&mt('Reset [_1]','<i>'.&mt('Preferred method to display Math').'</i>'));          $message=&Apache::lonhtmlcommon::confirm_success(&mt('Reset [_1]','<i>'.&mt('Preferred method to display Math').'</i>'));
     }      }
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     $r->print(<<ENDVCSCREEN);      &print_main_menu($r, $message);
 $message  
 ENDVCSCREEN  
 }  }
   
 ################################################################  ################################################################
Line 324  sub rolesprefchanger { Line 323  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']);
       Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changerolespref',
                   text => 'Change '.$role.' Page Pref'});
       $r->print(Apache::loncommon::start_page('Content Display Settings'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change '.$role.' Page Pref'));
     my $hotlist_flag=$userenv{'recentroles'};      my $hotlist_flag=$userenv{'recentroles'};
     my $hotlist_n=$userenv{'recentrolesn'};      my $hotlist_n=$userenv{'recentrolesn'};
     my $checked;      my $checked;
     if ($hotlist_flag) {      if ($hotlist_flag) {
  $checked = ' checked="checked"';   $checked = 'checked="checked"';
     }      }
           
     if (!$hotlist_n) { $hotlist_n=3; }      if (!$hotlist_n) { $hotlist_n=3; }
Line 381  sub rolesprefchanger { Line 385  sub rolesprefchanger {
     $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.').'  <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.').'
 </p>  </p>
 <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_rolespref" />  <input type="hidden" name="action" value="verify_and_change_rolespref" />
 <br />'.  <br /><label>'.&mt('Enable Recent '.$role.'s Hotlist:').'
 '<h2>'.&mt('Recent '.$role.'s Hotlist').'</h2>'.  <input type="checkbox"'.$checked.' name="recentroles" value="true" /></label>
 &Apache::lonhtmlcommon::start_pick_box().  <br />'.&mt('Number of '.$role.'s in Hotlist:').'
 &Apache::lonhtmlcommon::row_title('<label for="Hotlist">'.&mt('Enable Recent '.$role.'s Hotlist').'</label>').  <select name="recentrolesn" size="1">
 '<input id="Hotlist" type="checkbox"'.$checked.' name="recentroles" value="true" />'.  '.$options.'
 &Apache::lonhtmlcommon::row_closure().  </select>
 &Apache::lonhtmlcommon::row_title('<label for="NumberOfRoles">'.&mt('Number of '.$role.'s in Hotlist').'</label>').  <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.').'
 '<select name="recentrolesn" size="1" id ="NumberOfRoles">'.  
 $options.  
 '</select>'.  
 &Apache::lonhtmlcommon::row_closure(1).  
 &Apache::lonhtmlcommon::end_pick_box().  
 '<br/><h2>'.&mt('Freeze Roles').'</h2>'.  
 '<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.').'  
 </p>  </p>
 '.$roles_check_list.'  '.$roles_check_list.'
 <br />  <br />
Line 446  sub verify_and_change_rolespref { Line 443  sub verify_and_change_rolespref {
     if ($hotlist_flag) {      if ($hotlist_flag) {
         &Apache::lonnet::put('environment',{'recentroles' => $hotlist_flag});          &Apache::lonnet::put('environment',{'recentroles' => $hotlist_flag});
         &Apache::lonnet::appenv({'environment.recentroles' => $hotlist_flag});          &Apache::lonnet::appenv({'environment.recentroles' => $hotlist_flag});
         $message=&Apache::lonhtmlcommon::confirm_success(&mt('Recent '.$role.'s Hotlist is Enabled.')." ".&mt('Display [_1] Most Recent '.$role.'s.',$hotlist_n));          $message=&mt('Recent '.$role.'s Hotlist is Enabled');
     } else {      } else {
         &Apache::lonnet::del('environment',['recentroles']);          &Apache::lonnet::del('environment',['recentroles']);
         &Apache::lonnet::delenv('environment.recentroles');          &Apache::lonnet::delenv('environment.recentroles');
         $message=&Apache::lonhtmlcommon::confirm_success(&mt('Recent '.$role.'s Hotlist is Disabled'));          $message=&mt('Recent '.$role.'s Hotlist is Disabled');
     }      }
     if ($hotlist_n) {      if ($hotlist_n) {
         &Apache::lonnet::put('environment',{'recentrolesn' => $hotlist_n});          &Apache::lonnet::put('environment',{'recentrolesn' => $hotlist_n});
Line 479  sub verify_and_change_rolespref { Line 476  sub verify_and_change_rolespref {
 # Unset any roles that were previously frozen but aren't in list  # Unset any roles that were previously frozen but aren't in list
     foreach my $role_key (sort(keys(%recent_roles))) {      foreach my $role_key (sort(keys(%recent_roles))) {
         if (($frozen_roles{$role_key}) && (!exists($freeze{$role_key}))) {          if (($frozen_roles{$role_key}) && (!exists($freeze{$role_key}))) {
             $message .= "<br />".&Apache::lonhtmlcommon::confirm_success(&mt('Unfreezing '.$role.': [_1]','<i>'.$role_text{$role_key}.'</i>'));      $message .= "<br />".&Apache::lonhtmlcommon::confirm_success(&mt('Unfreezing '.$role.': [_1]','<i>'.$role_text{$role_key}.'</i>'));
     &Apache::lonhtmlcommon::store_recent('roles',$role_key,' ',0);      &Apache::lonhtmlcommon::store_recent('roles',$role_key,' ',0);
         }          }
     }      }
Line 494  sub verify_and_change_rolespref { Line 491  sub verify_and_change_rolespref {
         }          }
     }      }
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     $r->print(<<ENDRPSCREEN);      &print_main_menu($r, $message);
 $message  
 ENDRPSCREEN  
 }  }
   
   
Line 512  sub screennamechanger { Line 507  sub screennamechanger {
         ('environment',['screenname','nickname']);          ('environment',['screenname','nickname']);
     my $screenname=$userenv{'screenname'};      my $screenname=$userenv{'screenname'};
     my $nickname=$userenv{'nickname'};      my $nickname=$userenv{'nickname'};
       Apache::lonhtmlcommon::add_breadcrumb(
    { href => '/adm/preferences?action=changescreenname',
                     text => 'Change Screen Name'});
       $r->print(Apache::loncommon::start_page('Personal Data'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Screen Name'));
     $r->print('<p>'      $r->print('<p>'
              .&mt('Change the name that is displayed in your posts.')               .&mt('Change the name that is displayed in your posts.')
              .'</p>'               .'</p>'
Line 519  sub screennamechanger { Line 519  sub screennamechanger {
     $r->print('<form name="prefs" action="/adm/preferences" method="post">'      $r->print('<form name="prefs" action="/adm/preferences" method="post">'
              .'<input type="hidden" name="action" value="verify_and_change_screenname" />'               .'<input type="hidden" name="action" value="verify_and_change_screenname" />'
              .&Apache::lonhtmlcommon::start_pick_box()               .&Apache::lonhtmlcommon::start_pick_box()
              .&Apache::lonhtmlcommon::row_title(&mt('New screenname (shown if you post anonymously)'))               .&Apache::lonhtmlcommon::row_title(&mt('Screenname').' '.&mt('(shown if you post anonymously)'))
              .'<input type="text" size="20" value="'.$screenname.'" name="screenname" />'               .'<input type="text" size="20" value="'.$screenname.'" name="screenname" />'
              .&Apache::lonhtmlcommon::row_closure()               .&Apache::lonhtmlcommon::row_closure()
              .&Apache::lonhtmlcommon::row_title(&mt('New nickname (shown if you post non-anonymously)'))               .&Apache::lonhtmlcommon::row_title(&mt('Nickname').' '.&mt('(shown if you post non-anonymously)'))
              .'<input type="text" size="20" value="'.$nickname.'" name="nickname" />'               .'<input type="text" size="20" value="'.$nickname.'" name="nickname" />'
              .&Apache::lonhtmlcommon::row_closure()               .&Apache::lonhtmlcommon::row_closure()
              .&Apache::lonhtmlcommon::row_title()               .&Apache::lonhtmlcommon::row_title()
Line 544  sub verify_and_change_screenname { Line 544  sub verify_and_change_screenname {
     if ($newscreen) {      if ($newscreen) {
         &Apache::lonnet::put('environment',{'screenname' => $newscreen});          &Apache::lonnet::put('environment',{'screenname' => $newscreen});
         &Apache::lonnet::appenv({'environment.screenname' => $newscreen});          &Apache::lonnet::appenv({'environment.screenname' => $newscreen});
         $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Screenname').'</i>','<tt>"'.$newscreen.'"</tt>'));          $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Screenname').'</i>','<tt>"'.$newscreen.'."</tt>'));
     } else {      } else {
         &Apache::lonnet::del('environment',['screenname']);          &Apache::lonnet::del('environment',['screenname']);
         &Apache::lonnet::delenv('environment.screenname');          &Apache::lonnet::delenv('environment.screenname');
Line 557  sub verify_and_change_screenname { Line 557  sub verify_and_change_screenname {
     if ($newscreen) {      if ($newscreen) {
         &Apache::lonnet::put('environment',{'nickname' => $newscreen});          &Apache::lonnet::put('environment',{'nickname' => $newscreen});
         &Apache::lonnet::appenv({'environment.nickname' => $newscreen});          &Apache::lonnet::appenv({'environment.nickname' => $newscreen});
         $message.=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Nickname').'</i>','<tt>"'.$newscreen.'"</tt>'));          $message.=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Nickname').'</i>','<tt>"'.$newscreen.'"</tt>.'));
     } else {      } else {
         &Apache::lonnet::del('environment',['nickname']);          &Apache::lonnet::del('environment',['nickname']);
         &Apache::lonnet::delenv('environment.nickname');          &Apache::lonnet::delenv('environment.nickname');
Line 565  sub verify_and_change_screenname { Line 565  sub verify_and_change_screenname {
     }      }
     &Apache::lonnet::devalidate_cache_new('namescache',$user.':'.$domain);      &Apache::lonnet::devalidate_cache_new('namescache',$user.':'.$domain);
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     $r->print(<<ENDVCSCREEN);      &print_main_menu($r, $message);
 $message  
 ENDVCSCREEN  
 }  }
   
 ################################################################  ################################################################
Line 575  ENDVCSCREEN Line 573  ENDVCSCREEN
 ################################################################  ################################################################
 sub iconchanger {  sub iconchanger {
     my $r = shift;      my $r = shift;
       &Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changeicons',
                   text => 'Change Main Menu'});
       $r->print(Apache::loncommon::start_page('Page Display Settings'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Main Menu'));
   
     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      my %userenv = &Apache::lonnet::get
Line 609  sub verify_and_change_icons { Line 613  sub verify_and_change_icons {
     my $r = shift;      my $r = shift;
     my $user       = $env{'user.name'};      my $user       = $env{'user.name'};
     my $domain     = $env{'user.domain'};      my $domain     = $env{'user.domain'};
     my $newicons  = $env{'form.menumode'};      my $newicons   = $env{'form.menumode'};
   
     &Apache::lonnet::put('environment',{'icons' => $newicons});      &Apache::lonnet::put('environment',{'icons' => $newicons});
     &Apache::lonnet::appenv({'environment.icons' => $newicons});      &Apache::lonnet::appenv({'environment.icons' => $newicons});
     my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Menu Display').'</i>','<tt>'.$newicons.'</tt>'));      my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Menu Display').'</i>','<tt>'.$newicons.'</tt>'));
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     $r->print(<<ENDVCSCREEN);      &print_main_menu($r, $message);
 $message  
 ENDVCSCREEN  
 }  }
   
 ################################################################  ################################################################
Line 626  ENDVCSCREEN Line 628  ENDVCSCREEN
   
 sub clickerchanger {  sub clickerchanger {
     my $r = shift;      my $r = shift;
       &Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changeclicker',
                   text => 'Register Clicker'});
       $r->print(Apache::loncommon::start_page('Other'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Register Clicker'));
     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      my %userenv = &Apache::lonnet::get
Line 633  sub clickerchanger { Line 640  sub clickerchanger {
     my $clickers=$userenv{'clickers'};      my $clickers=$userenv{'clickers'};
     $clickers=~s/\,/\n/gs;      $clickers=~s/\,/\n/gs;
     my $text=&mt('Enter response device ("clicker") numbers');      my $text=&mt('Enter response device ("clicker") numbers');
     my $change=&mt('Register');      my $change=&mt('Save');
     my $helplink=&Apache::loncommon::help_open_topic('Clicker_Registration',&mt('Locating your clicker ID'));      my $helplink=&Apache::loncommon::help_open_topic('Clicker_Registration',&mt('Locating your clicker ID'));
     $r->print(<<ENDSCREEN);      $r->print(<<ENDSCREEN);
 <form name="prefs" action="/adm/preferences" method="post">  <form name="prefs" action="/adm/preferences" method="post">
Line 662  sub verify_and_change_clicker { Line 669  sub verify_and_change_clicker {
     &Apache::lonnet::appenv({'environment.clickers' => $newclickers});      &Apache::lonnet::appenv({'environment.clickers' => $newclickers});
     my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Registering clickers: [_1]',$newclickers));      my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Registering clickers: [_1]',$newclickers));
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     $r->print(<<ENDVCSCREEN);      &print_main_menu($r, $message);
 $message  
 ENDVCSCREEN  
 }  }
   
 ################################################################  ################################################################
Line 673  ENDVCSCREEN Line 678  ENDVCSCREEN
   
 sub domcoordchanger {  sub domcoordchanger {
     my $r = shift;      my $r = shift;
       &Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changedomcoord',
                   text => 'Restrict Domain Coordinator Access'});
       $r->print(Apache::loncommon::start_page('Restrict Domain Coordinator Access'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Restrict Domain Coordinator Access'));
     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      my %userenv = &Apache::lonnet::get
Line 710  sub verify_and_change_domcoord { Line 720  sub verify_and_change_domcoord {
     }      }
     my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Block access to construction space').'</i>','<tt>'.$status.'</tt>'));      my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Block access to construction space').'</i>','<tt>'.$status.'</tt>'));
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     $r->print(<<ENDVCSCREEN);      &print_main_menu($r,$message);
 $message  
 ENDVCSCREEN  
 }  }
   
 #################################################################  #################################################################
Line 765  sub msgforwardchanger { Line 773  sub msgforwardchanger {
                                           all   => 'All',                                            all   => 'All',
                                           crit  => 'Critical only',                                            crit  => 'Critical only',
                                           reg   => 'Non-critical only',                                            reg   => 'Non-critical only',
                                           foad  => 'Forward to account(s)',                                            foad  => 'Forwarding Address(es)',
                                           fwdm  => 'Forward messages to other account(s) in LON-CAPA',                                            noti  => 'Notification E-mail Address(es)', 
                                           noti  => 'E-mail notification of LON-CAPA messages',  
                                           foad_exmpl => 'e.g. <tt>userA:domain1,userB:domain2,...</tt>',                                            foad_exmpl => 'e.g. <tt>userA:domain1,userB:domain2,...</tt>',
                                           mnot  => 'E-mail Address(es) which should be notified about new LON-CAPA messages',                                            mnot  => 'E-mail Address(es) which should be notified about new LON-CAPA messages',
    # old: 'Message Notification Email Address(es)',
                                           mnot_exmpl => 'e.g. <tt>joe@doe.com</tt>',                                            mnot_exmpl => 'e.g. <tt>joe@doe.com</tt>',
                                           chg   => 'Save',                                            chg   => 'Save',
                                           email => 'The e-mail address entered in row ',                                            email => 'The e-mail address entered in row ',
                                           notv => 'is not a valid e-mail address',                                            notv => 'is not a valid e-mail address',
                                           toen => "To enter multiple addresses, enter one address at a time, click 'Save' and then add the next one",                                             toen => "To enter multiple addresses, enter one address at a time, click 'Change' and then add the next one", 
                                           prme => 'Back',                                            prme => 'Back',
                                         );                                          );
       Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changemsgforward',
    text => 'Change Message Forwarding/Notification'});
       $r->print(Apache::loncommon::start_page('Message Management'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Message Forwarding/Notification'));
     my $forwardingHelp = &Apache::loncommon::help_open_topic("Prefs_Forwarding");      my $forwardingHelp = &Apache::loncommon::help_open_topic("Prefs_Forwarding");
     my $notificationHelp = &Apache::loncommon::help_open_topic("Prefs_Notification");      my $notificationHelp = &Apache::loncommon::help_open_topic("Prefs_Notification");
     my $criticalMessageHelp = &Apache::loncommon::help_open_topic("Course_Critical_Message");      my $criticalMessageHelp = &Apache::loncommon::help_open_topic("Course_Critical_Message");
Line 784  sub msgforwardchanger { Line 797  sub msgforwardchanger {
     my %allnot = &get_notifications(\%userenv);      my %allnot = &get_notifications(\%userenv);
     my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email();      my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email();
     my $jscript = qq|      my $jscript = qq|
 <script type="text/javascript">  <script type="text/javascript" language="JavaScript">
 function validate() {  function validate() {
     for (var i=0; i<document.prefs.numnotify.value; i++) {      for (var i=0; i<document.prefs.numnotify.value; i++) {
         var checkaddress = 0;          var checkaddress = 0;
Line 842  $validatescript Line 855  $validatescript
     $r->print(<<ENDMSG);      $r->print(<<ENDMSG);
 $jscript  $jscript
 $message  $message
 <h3>$lt{'fwdm'} $forwardingHelp</h3>  <h3>$lt{'foad'} $forwardingHelp</h3>
 <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" />
 $lt{'foad'} ($lt{'foad_exmpl'}):  $lt{'foad'} ($lt{'foad_exmpl'}):
 <input type="text" size="40" value="$msgforward" name="msgforward" />  <input type="text" size="40" value="$msgforward" name="msgforward" /><br />
 <br /><br />  
 <h3>$lt{'noti'} $notificationHelp</h3>  <h3>$lt{'noti'} $notificationHelp</h3>
 $lt{'mnot'} ($lt{'mnot_exmpl'}):<br />  $lt{'mnot'} ($lt{'mnot_exmpl'}):<br />
 ENDMSG  ENDMSG
Line 892  ENDMSG Line 904  ENDMSG
                        '<input type="radio" name="notify_type_'.$num.                          '<input type="radio" name="notify_type_'.$num. 
                        '" value="'.$type.'" '.$chk{$type}.                         '" value="'.$type.'" '.$chk{$type}.
                        ' onchange="javascript:address_changes('."'$num'".')" />'.                         ' onchange="javascript:address_changes('."'$num'".')" />'.
                        $lt{$type}.'</label></span>'.('&nbsp;' x4);                         $lt{$type}.'</label></span>&nbsp;';
         }          }
         my $htmlon = '';          my $htmlon = '';
         my $htmloff = '';          my $htmloff = '';
Line 904  ENDMSG Line 916  ENDMSG
         $output .= '</td><td><label><input type="radio" name="html_'.$num.          $output .= '</td><td><label><input type="radio" name="html_'.$num.
                    '" value="1" '.$htmlon.                     '" value="1" '.$htmlon.
                    ' onchange="javascript:address_changes('."'$num'".')" />'.                     ' onchange="javascript:address_changes('."'$num'".')" />'.
                    &mt('Yes').'</label>'.('&nbsp;' x3).                     &mt('Yes').'</label>&nbsp;'.
                    '<label><input type="radio" name="html_'.$num.'" value="0" '.                     '<label><input type="radio" name="html_'.$num.'" value="0" '.
                    $htmloff. ' onchange="javascript:address_changes('."'$num'".                     $htmloff. ' onchange="javascript:address_changes('."'$num'".
 ')" />'.  ')" />'.
Line 929  ENDMSG Line 941  ENDMSG
         $output .= '<span class="LC_nobreak"><label>'.          $output .= '<span class="LC_nobreak"><label>'.
                    '<input type="radio" name="notify_type_'.$num.                     '<input type="radio" name="notify_type_'.$num.
                    '" value="'.$type.'" '.$defchk{$type}.'/>'.                     '" value="'.$type.'" '.$defchk{$type}.'/>'.
                    $lt{$type}.'</label></span>'.('&nbsp;' x4);                     $lt{$type}.'</label></span>&nbsp;';
     }      }
     $output .= '</td><td><label><input type="radio" name="html_'.$num.      $output .= '</td><td><label><input type="radio" name="html_'.$num.
                '" value="1" />'.&mt('Yes').'</label>'.('&nbsp;' x3).                 '" value="1" />'.&mt('Yes').'</label>&nbsp;'.
                '<label><input type="radio" name="html_'.$num.'" value="0" '.                 '<label><input type="radio" name="html_'.$num.'" value="0" '.
                ' checked="checked" />'.                 ' checked="checked" />'.
                &mt('No').'</label></td>'.                 &mt('No').'</label></td>'.
Line 970  sub verify_and_change_msgforward { Line 982  sub verify_and_change_msgforward {
     my $domain     = $env{'user.domain'};      my $domain     = $env{'user.domain'};
     my $newscreen  = '';      my $newscreen  = '';
     my $message='';      my $message='';
     foreach my $recip (split(/\,/,$env{'form.msgforward'})) {      foreach (split(/\,/,$env{'form.msgforward'})) {
         my ($msuser,$msdomain);   my ($msuser,$msdomain)=split(/[\@\:]/,$_);
         if ($recip =~ /:/) {  
             ($msuser,$msdomain)=split(':',$recip);  
         } else {  
             ($msuser,$msdomain)=split(/\@/,$recip);  
         }  
         $msuser = &LONCAPA::clean_username($msuser);          $msuser = &LONCAPA::clean_username($msuser);
         $msdomain = &LONCAPA::clean_domain($msdomain);          $msdomain = &LONCAPA::clean_domain($msdomain);
         if (($msuser) && ($msdomain)) {          if (($msuser) && ($msdomain)) {
     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.= &mt('No such user: ').'<tt>'.$msuser.':'.$msdomain.'</tt><br />';                 $message.= &mt('No such user: ').'<tt>'.$msuser.':'.$msdomain.'</tt><br>';
             }             }
         }          }
     }      }
     $newscreen=~s/\,$//;      $newscreen=~s/\,$//;
     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 .= &Apache::lonhtmlcommon::confirm_success(&mt('Set message forwarding to ').'<tt>"'.$newscreen.'"</tt>.<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.= &Apache::lonhtmlcommon::confirm_success(&mt("Set message forwarding to 'off'.").'<br />');          $message.= &mt("Set message forwarding to 'off'.").'<br />';
     }      }
     my $critnotification;      my $critnotification;
     my $notification;      my $notification;
Line 1031  sub verify_and_change_msgforward { Line 1039  sub verify_and_change_msgforward {
     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.=&Apache::lonhtmlcommon::confirm_success(&mt('Set non-critical message notification address(es) to ').'<tt>"'.$notification.'"</tt>.<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.=&Apache::lonhtmlcommon::confirm_success(&mt("Set non-critical message notification to 'off'.").'<br />');          $message.=&mt("Set non-critical message notification to 'off'.").'<br />';
     }      }
     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.=&Apache::lonhtmlcommon::confirm_success(&mt('Set critical message notification address(es) to ').'<tt>"'.$critnotification.'"</tt>.<br />');          $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.=&Apache::lonhtmlcommon::confirm_success(&mt("Set critical message notification to 'off'.").'<br />');          $message.=&mt("Set critical message notification to 'off'.").'<br />';
     }      }
     if ($critnotification || $notification) {      if ($critnotification || $notification) {
         if ($notify_with_html) {          if ($notify_with_html) {
             &Apache::lonnet::put('environment',{'notifywithhtml' => $notify_with_html});              &Apache::lonnet::put('environment',{'notifywithhtml' => $notify_with_html});
             &Apache::lonnet::appenv({'environment.notifywithhtml' => $notify_with_html});              &Apache::lonnet::appenv({'environment.notifywithhtml' => $notify_with_html});
             $message.=&Apache::lonhtmlcommon::confirm_success(&mt('Set address(es) to receive excerpts with html retained ').'<tt>"'.$notify_with_html.'"</tt>.');              $message.=&mt('Set address(es) to receive excerpts with html retained ').'<tt>"'.$notify_with_html.'"</tt>.';
         } else {          } else {
             &Apache::lonnet::del('environment',['notifywithhtml']);              &Apache::lonnet::del('environment',['notifywithhtml']);
             &Apache::lonnet::delenv('environment.notifywithhtml');              &Apache::lonnet::delenv('environment.notifywithhtml');
             if ($totaladdresses == 1) {              if ($totaladdresses == 1) {
                 $message.=&Apache::lonhtmlcommon::confirm_success(&mt("Set notification address to receive excerpts with html stripped."));                  $message.=&mt("Set notification address to receive excerpts with html stripped.");
             } else {              } else {
                 $message.=&Apache::lonhtmlcommon::confirm_success(&mt("Set all notification addresses to receive excerpts with html stripped."));                  $message.=&mt("Set all notification addresses to receive excerpts with html stripped.");
             }              }
         }          }
     } else {      } else {
Line 1068  sub verify_and_change_msgforward { Line 1076  sub verify_and_change_msgforward {
         $message .= '<br /><hr />';          $message .= '<br /><hr />';
     }      }
     &Apache::loncommon::flush_email_cache($user,$domain);      &Apache::loncommon::flush_email_cache($user,$domain);
     $message=&Apache::loncommon::confirmwrapper($message);  
     &msgforwardchanger($r,$message);      &msgforwardchanger($r,$message);
 }  }
   
Line 1078  sub verify_and_change_msgforward { Line 1085  sub verify_and_change_msgforward {
   
 sub colorschanger {  sub colorschanger {
     my $r = shift;      my $r = shift;
       Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changecolors',
                   text => 'Change Colors'});
       $r->print(Apache::loncommon::start_page('Page Display Settings'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Colors'));
 # figure out colors  # figure out colors
     my $function=&Apache::loncommon::get_users_function();      my $function=&Apache::loncommon::get_users_function();
     my $domain=&Apache::loncommon::determinedomain();      my $domain=&Apache::loncommon::determinedomain();
     my %colortypes=('pgbg'  => 'Page Background Color',      my %colortypes=&Apache::lonlocal::texthash(
                     'tabbg' => 'Header Background Color',          'pgbg'     => 'Page Background Color',
                     'sidebg'=> 'Header Border Color',          'tabbg'    => 'Header Background Color',
                     'font'  => 'Font Color',          'sidebg'   => 'Header Border Color',
                     'link'  => 'Un-Visited Link Color',          'font'     => 'Font Color',
                     'vlink' => 'Visited Link Color',          'fontmenu' => 'Font Menu Color',
                     'alink' => 'Active Link Color');          'link'     => 'Un-Visited Link Color',
           'vlink'    => 'Visited Link Color',
           'alink'    => 'Active Link Color',
       );
     my $start_data_table = &Apache::loncommon::start_data_table();      my $start_data_table = &Apache::loncommon::start_data_table();
     my $chtable='';      my $chtable='';
     foreach my $item (sort(keys(%colortypes))) {      foreach my $item (sort(keys(%colortypes))) {
Line 1107  sub colorschanger { Line 1122  sub colorschanger {
     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');
     $r->print(<<ENDCOL);      $r->print(<<ENDCOL);
 <script type="text/javascript">  <script type="text/javascript" language="JavaScript">
   
     function pclose() {      function pclose() {
         parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",          parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",
Line 1144  $start_data_table Line 1159  $start_data_table
 $chtable  $chtable
 $end_data_table  $end_data_table
 </table>  </table>
   <p>
 <input type="submit" value="$savebutton" />  <input type="submit" value="$savebutton" />
 <input type="submit" name="resetall" value="$resetbutton" title="$resetbuttondesc" />  <input type="submit" name="resetall" value="$resetbutton" title="$resetbuttondesc" />
   </p>
 </form>  </form>
 ENDCOL  ENDCOL
 }  }
Line 1155  sub verify_and_change_colors { Line 1172  sub verify_and_change_colors {
 # figure out colors  # figure out colors
     my $function=&Apache::loncommon::get_users_function();      my $function=&Apache::loncommon::get_users_function();
     my $domain=&Apache::loncommon::determinedomain();      my $domain=&Apache::loncommon::determinedomain();
     my %colortypes=('pgbg'  => 'Page Background Color',      my %colortypes=&Apache::lonlocal::texthash(
                     'tabbg' => 'Header Background Color',          'pgbg'     => 'Page Background Color',
                     'sidebg'=> 'Header Border Color',          'tabbg'    => 'Header Background Color',
                     'font'  => 'Font Color',          'sidebg'   => 'Header Border Color',
                     'link'  => 'Un-Visited Link Color',          'font'     => 'Font Color',
                     'vlink' => 'Visited Link Color',   'fontmenu' => 'Font Menu Color',
                     'alink' => 'Active Link Color');          'link'     => 'Un-Visited Link Color',
           'vlink'    => 'Visited Link Color',
           'alink'    => 'Active Link Color',
       );
   
     my $message='';      my $message='';
     foreach my $item (keys %colortypes) {      foreach my $item (keys %colortypes) {
Line 1185  sub verify_and_change_colors { Line 1205  sub verify_and_change_colors {
     &Apache::lonnet::put('environment',{'color.timestamp' => $now});      &Apache::lonnet::put('environment',{'color.timestamp' => $now});
     &Apache::lonnet::appenv({'environment.color.timestamp' => $now});      &Apache::lonnet::appenv({'environment.color.timestamp' => $now});
   
     $r->print(<<ENDVCCOL);      &print_main_menu($r, $message);
 $message  
 <form name="client" action="/adm/preferences" method="post">  
 <input type="hidden" name="action" value="changecolors" />  
 </form>  
 ENDVCCOL  
 }  }
   
 ######################################################  ######################################################
Line 1202  sub passwordchanger { Line 1217  sub passwordchanger {
     # 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,$defdom);
       &Apache::lonhtmlcommon::add_breadcrumb(
    { href => '/adm/preferences?action=changepass',
                     text => 'Change Password'});
       unless ($caller eq 'reset_by_email') {
           $r->print(Apache::loncommon::start_page('Personal Data'));
           $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Password'));
       }
     if ((!defined($caller)) || ($caller eq 'preferences')) {      if ((!defined($caller)) || ($caller eq 'preferences')) {
         $user = $env{'user.name'};          $user = $env{'user.name'};
         $domain = $env{'user.domain'};          $domain = $env{'user.domain'};
Line 1212  sub passwordchanger { Line 1234  sub passwordchanger {
             $defdom = $r->dir_config('lonDefDomain');              $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(&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>')                               ,'<a href="/adm/resetpw">','</a>')
                 );                  );
                 return;                  return;
             }              }
Line 1283  ENDFORM Line 1305  ENDFORM
 sub jscript_send {  sub jscript_send {
     my ($caller) = @_;      my ($caller) = @_;
     my $output = qq|      my $output = qq|
 <script language="JavaScript">  <script type="text/javascript" language="JavaScript">
   
     function send() {      function send() {
         uextkey=this.document.client.elements.ukey_cpass.value;          uextkey=this.document.client.elements.ukey_cpass.value;
Line 1311  sub jscript_send { Line 1333  sub jscript_send {
                    this.document.client.elements.uname.value;                     this.document.client.elements.uname.value;
         this.document.pserver.elements.udom.value =          this.document.pserver.elements.udom.value =
                    this.document.client.elements.udom.options[this.document.client.elements.udom.selectedIndex].value;                     this.document.client.elements.udom.options[this.document.client.elements.udom.selectedIndex].value;
         this.document.pserver.elements.email.value =  
                    this.document.client.elements.email.value;  
 |;  |;
     }      }
     $ output .= qq|      $ output .= qq|
Line 1332  sub client_form { Line 1352  sub client_form {
                 'newpass' => 'New Password',                  'newpass' => 'New Password',
                 'confirmpass' => 'Confirm Password',                  'confirmpass' => 'Confirm Password',
                 'changepass' => 'Save');                  'changepass' => 'Save');
     my $output = '<form name="client">'  
                 .&Apache::lonhtmlcommon::start_pick_box();      my $output = qq|
   <form name="client" >
   <table>
   |;
     if ($caller eq 'reset_by_email') {      if ($caller eq 'reset_by_email') {
         $output .= &Apache::lonhtmlcommon::row_title(          $output .= qq|
                        '<label for="email">'.$lt{'email'}.'</label>')  <tr><td class="LC_preferences_labeltext"><label for="email">$lt{'email'}</label>:</td>
                   .'<input type="text" name="email" size="30" />'      <td><input type="text" name="email" size="30" /> </td></tr>
                   .&Apache::lonhtmlcommon::row_closure()  <tr><td class="LC_preferences_labeltext"><label for="uname">$lt{'username'}</label>:</td>
                   .&Apache::lonhtmlcommon::row_title(      <td>
                        '<label for="uname">'.$lt{'username'}.'</label>')       <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>
                   .&Apache::lonhtmlcommon::row_closure()  <tr><td class="LC_preferences_labeltext"><label for="udom">$lt{'domain'}</label>:</td>
                   .&Apache::lonhtmlcommon::row_title(      <td>
                        '<label for="udom">'.$lt{'domain'}.'</label>')  |;
                   .&Apache::loncommon::select_dom_form($defdom,'udom')          $output .= &Apache::loncommon::select_dom_form($defdom,'udom').'
                   .&Apache::lonhtmlcommon::row_closure();     </td>
   </tr>
   ';
     } else {      } else {
         $output .= &Apache::lonhtmlcommon::row_title(          $output .= qq|
                        '<label for="currentpass">'.$lt{'currentpass'}.'</label>')  <tr><td class="LC_preferences_labeltext"><label for="currentpass">$lt{'currentpass'}</label></td>
                   .'<input type="password" name="currentpass" size="10"/>'      <td><input type="password" name="currentpass" size="10"/> </td></tr>
                   .&Apache::lonhtmlcommon::row_closure();  |;
     }      }
     $output .= &Apache::lonhtmlcommon::row_title(      $output .= <<"ENDFORM";
                    '<label for="newpass_1">'.$lt{'newpass'}.'</label>')  <tr><td class="LC_preferences_labeltext"><label for="newpass_1">$lt{'newpass'}</label></td>
               .'<input type="password" name="newpass_1" size="10" />'      <td><input type="password" name="newpass_1" size="10"  /> </td></tr>
               .&Apache::lonhtmlcommon::row_closure()  <tr><td class="LC_preferences_labeltext"><label for="newpass_2">$lt{'confirmpass'}</label></td>
               .&Apache::lonhtmlcommon::row_title(      <td><input type="password" name="newpass_2" size="10"  /> </td></tr>
                    '<label for="newpass_2">'.$lt{'confirmpass'}.'</label>')  <tr><td colspan="2" align="center">
               .'<input type="password" name="newpass_2" size="10" />'      <input type="button" value="$lt{'changepass'}" onClick="send();" />
               .&Apache::lonhtmlcommon::row_closure(1)  </table>
               .&Apache::lonhtmlcommon::end_pick_box();  
     $output .= '<p><input type="button" value="'.$lt{'changepass'}.'" onClick="send();" /></p>'  
                .qq|  
 <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'}" />
 <input type="hidden" name="ukey_npass1" value="$hexkey->{'ukey_npass1'}" />  <input type="hidden" name="ukey_npass1" value="$hexkey->{'ukey_npass1'}" />
Line 1373  sub client_form { Line 1395  sub client_form {
 <input type="hidden" name="lkey_npass2" value="$hexkey->{'lkey_npass2'}" />  <input type="hidden" name="lkey_npass2" value="$hexkey->{'lkey_npass2'}" />
 </form>  </form>
 </p>  </p>
 |;  ENDFORM
     return $output;      return $output;
 }  }
   
Line 1395  sub server_form { Line 1417  sub server_form {
 <input type="hidden" name="token"   value="$mailtoken" />  <input type="hidden" name="token"   value="$mailtoken" />
 <input type="hidden" name="uname"   value="" />  <input type="hidden" name="uname"   value="" />
 <input type="hidden" name="udom"   value="" />  <input type="hidden" name="udom"   value="" />
 <input type="hidden" name="email"   value="" />  
   
 |;  |;
     }      }
Line 1540  ENDERROR Line 1561  ENDERROR
     # Inform the user the password has (not?) been changed      # Inform the user the password has (not?) been changed
     my $message;      my $message;
     if ($result =~ /^ok$/) {      if ($result =~ /^ok$/) {
         $message = &Apache::lonhtmlcommon::confirm_success(&mt('The password for user [_1] was successfully changed.','<i>'.$user.'</i>'));          $message = &Apache::lonhtmlcommon::confirm_success(&mt('The password for user [_1] was successfully changed.','<i>'.$user.'<i>'));
         $message = &Apache::loncommon::confirmwrapper($message);  
         if ($caller eq 'reset_by_email') {          if ($caller eq 'reset_by_email') {
             $r->print($message.'<br />');              $r->print($message.'<br />');
         } else {          } else {
             $r->print(&Apache::loncommon::confirmwrapper($message));              &print_main_menu($r, $message);
         }          }
     } else {      } else {
  # error error: run in circles, scream and shout   # error error: run in circles, scream and shout
         if ($caller eq 'reset_by_email') {          $message = &Apache::lonhtmlcommon::confirm_success(
             if (!$result) {            &mt("The password for user [_1] was not changed.",'<i>'.$user.'</i>').' '.&mt('Please make sure your old password was entered correctly.'),1);
                 return 1;          unless ($caller eq 'reset_by_email') {
             } else {              $message=&Apache::loncommon::confirmwrapper($message);
                 return $result;              &print_main_menu($r, $message);
             }  
         } else {  
             $message = &Apache::lonhtmlcommon::confirm_success(  
                 &mt("The password for user [_1] was not changed.",'<i>'.$user.'</i>').' '.&mt('Please make sure your old password was entered correctly.'),1);  
             $r->print(&Apache::loncommon::confirmwrapper($message));  
         }          }
           return 1;
     }      }
     return;      return;
 }  }
Line 1569  ENDERROR Line 1585  ENDERROR
 ################################################################  ################################################################
 sub discussionchanger {  sub discussionchanger {
     my $r = shift;      my $r = shift;
       Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changediscussions',
                   text => 'Change Discussion Preferences'});
       $r->print(Apache::loncommon::start_page('Message Management'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Discussion Preferences'));
     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      my %userenv = &Apache::lonnet::get
Line 1582  sub discussionchanger { Line 1603  sub discussionchanger {
         }          }
     }      }
     if (defined($userenv{'discmarkread'})) {      if (defined($userenv{'discmarkread'})) {
         unless ($userenv{'discmarkread'} eq '') {           unless ($userenv{'discdisplay'} eq '') { 
             $discmark = $userenv{'discmarkread'};              $discmark = $userenv{'discmarkread'};
         }          }
     }      }
Line 1608  sub discussionchanger { Line 1629  sub discussionchanger {
         '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 '
     );      );
     my $dispchange = $lt{'unread'};      my $dispchange = $lt{'unread'};
     my $markchange = $lt{'ondisp'};      my $markchange = $lt{'ondisp'};
Line 1633  sub discussionchanger { Line 1654  sub discussionchanger {
 <br />  <br />
 $lt{'sdpf'}<br /> $lt{'prca'}  <ol><li>$lt{'whpo'}</li><li>$lt{'unwh'}</li></ol>   $lt{'sdpf'}<br /> $lt{'prca'}  <ol><li>$lt{'whpo'}</li><li>$lt{'unwh'}</li></ol> 
 END  END
   
     $r->print('<p class="LC_info">'.$lt{'thde'}.'</p>');      $r->print('<p class="LC_info">'.$lt{'thde'}.'</p>');
   
     $r->print(&Apache::loncommon::start_data_table());      $r->print(&Apache::loncommon::start_data_table());
Line 1659  END Line 1681  END
 END  END
     $r->print(&Apache::loncommon::end_data_table_row().      $r->print(&Apache::loncommon::end_data_table_row().
       &Apache::loncommon::end_data_table());        &Apache::loncommon::end_data_table());
     $r->print('<br />'.  
               '<input type="submit" name="sub" value="'.&mt('Save').'" />'.      $r->print('<br />'
               '</form>');               .'<input type="submit" name="sub" value="'.&mt('Save').'" />'
                .'</form>'
       );
 }  }
                                                                                                                                                                                                                                   
 sub verify_and_change_discussion {  sub verify_and_change_discussion {
Line 1672  sub verify_and_change_discussion { Line 1696  sub verify_and_change_discussion {
     if (defined($env{'form.discdisp'}) ) {      if (defined($env{'form.discdisp'}) ) {
         my $newdisp  = $env{'form.newdisp'};          my $newdisp  = $env{'form.newdisp'};
         if ($newdisp eq 'unread') {          if ($newdisp eq 'unread') {
             $message .= &Apache::lonhtmlcommon::confirm_success(&mt('In discussions: only new posts will be displayed.')).'<br />';              $message .=&mt('In discussions: only new posts will be displayed.').'<br />';
             &Apache::lonnet::put('environment',{'discdisplay' => $newdisp});              &Apache::lonnet::put('environment',{'discdisplay' => $newdisp});
             &Apache::lonnet::appenv({'environment.discdisplay' => $newdisp});              &Apache::lonnet::appenv({'environment.discdisplay' => $newdisp});
         } else {          } else {
             $message .= &Apache::lonhtmlcommon::confirm_success(&mt('In discussions: all posts will be displayed.')).'<br />';              $message .= &mt('In discussions: all posts will be displayed.').'<br />';
             &Apache::lonnet::del('environment',['discdisplay']);              &Apache::lonnet::del('environment',['discdisplay']);
             &Apache::lonnet::delenv('environment.discdisplay');              &Apache::lonnet::delenv('environment.discdisplay');
         }          }
Line 1694  sub verify_and_change_discussion { Line 1718  sub verify_and_change_discussion {
         }          }
     }      }
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     $r->print(<<ENDVCSCREEN);      &print_main_menu($r, $message);
 $message  
 ENDVCSCREEN  
 }  }
   
 ################################################################  ################################################################
Line 1704  ENDVCSCREEN Line 1726  ENDVCSCREEN
 ################################################################  ################################################################
 sub coursedisplaychanger {  sub coursedisplaychanger {
     my $r = shift;      my $r = shift;
       &Apache::lonhtmlcommon::add_breadcrumb(
       { href => '/adm/preferences?action=changecourseinit',
                   text => 'Change Course Init. Pref.'});
       $r->print(Apache::loncommon::start_page('Change Course Initialization Preference'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Course Init. Pref.'));
     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',['course_init_display']);      my %userenv = &Apache::lonnet::get('environment',['course_init_display']);
Line 1717  sub coursedisplaychanger { Line 1744  sub coursedisplaychanger {
     $whatsnewselect = '';      $whatsnewselect = '';
         }          }
     }      }
     my %pagenames = (      my %pagenames = &Apache::lonlocal::texthash(
                        firstres => 'First resource',                         firstres => 'First resource',
                        whatsnew => "What's New Page",                         whatsnew => "What's New Page",
                     );                      );
     my $whatsnew_off=&mt('Display the [_1]first resource[_2] in the course.','<b>','</b>');      my $whatsnew_off=&mt('Display the [_1]first resource[_2] in the course.','<b>','</b>');
     my $whatsnew_on=&mt("Display the [_1]What's New Page[_2] - a summary of items in the course which require attention.",'<b>','</b>');      my $whatsnew_on=&mt("Display the [_1]What's New Page[_2] - a summary of items in the course which require attention.",'<b>','</b>');
   
     $r->print('<br /><b>'.      $r->print('<br /><b>'
               &mt('Set the default page to be displayed when you select a course role').               .&mt('Set the default page to be displayed when you select a course role')
               '</b>&nbsp;'.               .'</b>&nbsp;'
               &mt('(Currently: [_1])',$pagenames{$currvalue}).'<br />'.               .&mt('(Currently: [_1])',$pagenames{$currvalue})
               &mt("The global user preference you set for your courses can be overridden in an individual course by setting a course specific setting via the [_1]What's New Page[_2] page in the course.",'<i>','</i>').               .'<br />'
               '<br /><br />');               .&mt("The global user preference you set for your courses can be overridden in an individual course by setting a course specific setting via the [_1]What's New Page[_2] in the course.",'<i>','</i>')
                .'<br /><br />'
       );
     $r->print(<<ENDLSCREEN);      $r->print(<<ENDLSCREEN);
 <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_coursepage" />  <input type="hidden" name="action" value="verify_and_change_coursepage" />
Line 1770  sub verify_and_change_coursepage { Line 1799  sub verify_and_change_coursepage {
             my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};               my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; 
             my ($furl,$ferr)=              my ($furl,$ferr)=
                 &Apache::lonuserstate::readmap($cdom.'/'.$cnum);                  &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
             $message .= '<br /><a href="'.$furl.'">'.$lt{'gtts'}.' <i>'.&mt('now').'</i></a>';              $message .= '<br /><font size="+1"><a href="'.$furl.'">'.$lt{'gtts'}.' <i>'.&mt('now').'</i></a></font>';
         } else {          } else {
             $message .= '<br /><a href="/adm/whatsnew?refpage='.              $message .= '<br /><font size="+1"><a href="/adm/whatsnew?refpage='.
                         $refpage.'">'.$lt{'dasp'}.'</a>';                          $refpage.'">'.$lt{'dasp'}.'</a></font>';
         }          }
     }      }
     $message = &Apache::lonhtmlcommon::confirm_success($message);      &print_main_menu($r, &Apache::lonhtmlcommon::confirm_success($message));
     $message = &Apache::loncommon::confirmwrapper($message);  }
     $r->print(<<ENDVCSCREEN);  
 $message  sub print_main_menu {
 ENDVCSCREEN      my ($r, $message) = @_;
       # Determine current authentication method
       my $user = $env{'user.name'};
       my $domain = $env{'user.domain'};
       my $currentauth=&Apache::lonnet::queryauthenticate($user,$domain);
   
       # build the data structure for menu generation
   my $aboutmeurl='/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme';
   my $role = ($env{'user.adv'} ? 'Roles' : 'Course');
   my %permissions;
   if (&Apache::lonnet::usertools_access($user,$domain,'aboutme')) {
       $permissions{'aboutme'} = 'F';
   }
   my @menu=
       ({ categorytitle=>'Personal Data',
    items =>[
       { linktext => 'Personal Information Page',
    url => $aboutmeurl,
    permission => $permissions{'aboutme'},
    #help => 'Prefs_About_Me',
    icon => 'system-users.png',
    linktitle => 'Edit information about yourself that should be displayed on your public profile.'
       },
       { linktext => 'Screen Name',
    url => '/adm/preferences?action=changescreenname',
    permission => 'F',
    #help => 'Prefs_Screen_Name_Nickname',
    icon => 'preferences-desktop-font.png',
    linktitle => 'Change the name that is displayed in your posts.'
       },
    ]
       },
       { categorytitle=>'Page Display Settings',
    items =>[
       { linktext => 'Color Scheme',
    url => '/adm/preferences?action=changecolors',
    permission => 'F',
    #help => 'Change_Colors',
    icon => 'preferences-desktop-theme.png',
    linktitle => 'Change LON-CAPA default colors.'
       },
       { linktext => 'Menu Display',
    url => '/adm/preferences?action=changeicons',
    permission => 'F',
    #help => '',
    icon => 'preferences-system-windows.png',
    linktitle => 'Change whether the menus are displayed with buttons, icons or icons and text.'
       }
   
    ]
       },
       { categorytitle=>'Content Display Settings',
    items =>[
       { linktext => 'Language',
    url => '/adm/preferences?action=changelanguages',
    permission => 'F',
    #help => 'Prefs_Language',
    icon => 'preferences-desktop-locale.png',
    linktitle => 'Choose the default language for this user.'
       },
       { linktext => 'WYSIWYG Editor',
    url => '/adm/preferences?action=changewysiwyg',
    permission => 'F',
    #help => '',
    icon => 'edit-select-all.png',
    linktitle => 'Enable or disable the WYSIWYG-Editor.'
       },
       { linktext => $role.' Page',
    url => '/adm/preferences?action=changerolespref',
    permission => 'F',
    #help => '',
    icon => 'sctr.png',
    linktitle => 'Configure the roles hotlist.'
       },
       { linktext => 'Display of Scientific Equations',
    url => '/adm/preferences?action=changetexenginepref',
    permission => 'F',
    #help => '',
    icon => 'stat.png',
    linktitle => 'Change how Scientific Equations are displayed.'
       },
    ]
       },
       { categorytitle=>'Message Management',
    items =>[
       { linktext => 'Messages &amp; Notifications',
    url => '/adm/preferences?action=changemsgforward',
    permission => 'F',
    #help => 'Prefs_Messages',
    icon => 'mail-reply-all.png',
    linktitle => 'Change messageforwarding or notifications settings.'
       },
       { linktext => 'Discussion Display',
    url => '/adm/preferences?action=changediscussions',
    permission => 'F',
    #help => 'Change_Discussion_Display',
    icon => 'mail-message-new.png',
    linktitle => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.'
       },
    ]
       },
       { categorytitle=>'Other',
    items =>[
       { linktext => 'Register Response Devices (&quot;Clickers&quot;)',
    url => '/adm/preferences?action=changeclicker',
    permission => 'F',
    #help => '',
    icon => 'network-workgroup.png',
    linktitle => 'Register your clicker.'
       },
    ]
       },
       );
   
       if ($currentauth =~ /^(unix|internal):/) {
   push(@{ $menu[0]->{items} }, {
    linktext => 'Password',
    url => '/adm/preferences?action=changepass',
    permission => 'F',
    #help => 'Change_Password',
    icon => 'emblem-readonly.png',
    linktitle => 'Change your password.',
    });
       }
       if ($env{'environment.remote'} eq 'off') {
   push(@{ $menu[1]->{items} }, {
    linktext => 'Launch Remote Control',
    url => '/adm/remote?url=/adm/preferences?action=launch',
    permission => 'F',
    #help => '',
    icon => 'network-wireless.png',
    linktitle => 'Launch the remote control for LON-CAPA.',
    });
       }else{
   push(@{ $menu[1]->{items} }, {
    linktext => 'Collapse Remote Control',
    url => '/adm/remote?url=/adm/preferences?action=collapse',
    permission => 'F',
    #help => '',
    icon => 'network-wireless.png',
    linktitle => 'Collapse the remote control for LON-CAPA.',
    });
       }
       my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au']);
       if (keys(%author_roles) > 0) {
   push(@{ $menu[4]->{items} }, {
    linktext => 'Restrict Domain Coordinator Access',
    url => '/adm/preferences?action=changedomcoord',
    permission => 'F',
    #help => '',
    icon => 'system-lock-screen.png',
    linktitle => 'Restrict domain coordinator access.',
    });
       }
   
       if (&Apache::lonnet::allowed('whn',$env{'request.course.id'})
    || &Apache::lonnet::allowed('whn',$env{'request.course.id'}.'/'
       .$env{'request.course.sec'})) {
   push(@{ $menu[4]->{items} }, {
    linktext => 'Course Initialization',
    url => '/adm/preferences?action=changecourseinit',
    permission => 'F',
    #help => '',
    icon => 'edit-copy.png',
    linktitle => 'Set the default page to be displayed when you select a course role.',
    });
   
       }
       if ($env{'user.name'} =~ /^(albertel|fox|foxr|kortemey|korte|raeburn)$/) {
   push(@{ $menu[4]->{items} }, {
    linktext => 'Toggle Debug Messages (Current:'.$env{'user.debug'}.')',
    url => '/adm/preferences?action=debugtoggle',
    permission => 'F',
    #help => '',
    icon => 'blog.png',
    linktitle => 'Toggle Debug Messages.',
    });
       }   
   
       $r->print(&Apache::loncommon::start_page('My Space'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Preferences'));
       $r->print($message);
       $r->print(Apache::lonhtmlcommon::generate_menu(@menu));
       $r->print(Apache::loncommon::end_page());
 }  }
   
 ######################################################  ######################################################
Line 1790  ENDVCSCREEN Line 2002  ENDVCSCREEN
 ################################################################  ################################################################
 #                          Main handler                        #  #                          Main handler                        #
 ################################################################  ################################################################
 sub handler {  sub handler {    
       my $r = shift;
       Apache::loncommon::content_type($r,'text/html');
       # Some pages contain DES keys and should not be cached.
       Apache::loncommon::no_cache($r);
       $r->send_http_header;
       return OK if $r->header_only;
       #
       Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                      ['action','wysiwyg','returnurl','refpage']);
       #
       Apache::lonhtmlcommon::clear_breadcrumbs();
       Apache::lonhtmlcommon::add_breadcrumb
           ({href => '/adm/preferences',
             text => 'Set User Preferences',
             help =>
             'Prefs_About_Me,Prefs_Language,Prefs_Screen_Name_Nickname,Change_Colors,Change_Password,Prefs_Messages,Change_Discussion_Display'});
       if(!exists $env{'form.action'}) {
       &print_main_menu($r);
       }elsif($env{'form.action'} eq 'changepass'){
           &passwordchanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_pass'){
           &verify_and_change_password($r);
       }elsif($env{'form.action'} eq 'changescreenname'){
           &screennamechanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_screenname'){
           &verify_and_change_screenname($r);
       }elsif($env{'form.action'} eq 'changemsgforward'){
           &msgforwardchanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_msgforward'){
           &verify_and_change_msgforward($r);
       }elsif($env{'form.action'} eq 'changecolors'){
           &colorschanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_colors'){
           &verify_and_change_colors($r);
       }elsif($env{'form.action'} eq 'changelanguages'){
           &languagechanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_languages'){
           &verify_and_change_languages($r);
       }elsif($env{'form.action'} eq 'changewysiwyg'){
           &wysiwygchanger($r);
       }elsif($env{'form.action'} eq 'set_wysiwyg'){
           &verify_and_change_wysiwyg($r);
       }elsif($env{'form.action'} eq 'changediscussions'){
           &discussionchanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_discussion'){
           &verify_and_change_discussion($r);
       }elsif($env{'form.action'} eq 'changerolespref'){
           &rolesprefchanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_rolespref'){
           &verify_and_change_rolespref($r);
       }elsif($env{'form.action'} eq 'changetexenginepref'){
           &texenginechanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_texengine'){
           &verify_and_change_texengine($r);
       }elsif($env{'form.action'} eq 'changeicons'){
           &iconchanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_icons'){
           &verify_and_change_icons($r);
       }elsif($env{'form.action'} eq 'changeclicker'){
           &clickerchanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_clicker'){
           &verify_and_change_clicker($r);
       }elsif($env{'form.action'} eq 'changedomcoord'){
           &domcoordchanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_domcoord'){
           &verify_and_change_domcoord($r);
       }elsif($env{'form.action'} eq 'lockwarning'){
           &lockwarning($r);
       }elsif($env{'form.action'} eq 'verify_and_change_locks'){
           &verify_and_change_lockwarning($r);
       }elsif($env{'form.action'} eq 'changecourseinit'){
           &coursedisplaychanger($r);
       }elsif($env{'form.action'} eq 'verify_and_change_coursepage'){
           &verify_and_change_coursepage($r);
       }elsif($env{'form.action'} eq 'debugtoggle'){
           &toggle_debug();
    &print_main_menu($r);
       }
   
       return OK;
   
   
   }
   #remove when done
   #old handler routine
   sub handler2 {
     my $r = shift;      my $r = shift;
     my $user = $env{'user.name'};      my $user = $env{'user.name'};
     my $domain = $env{'user.domain'};      my $domain = $env{'user.domain'};
Line 1847  sub handler { Line 2145  sub handler {
                       }));                        }));
   
     push (@Options,({ action   => 'changemsgforward',      push (@Options,({ action   => 'changemsgforward',
                       linktext => 'Messages &amp; Notifications',                        linktext => 'Change Message Forwarding and Notification E-mail Addresses',
                       href     => '/adm/preferences',                        href     => '/adm/preferences',
                       help     => 'Prefs_Messages',                        help     => 'Prefs_Messages',
                       breadcrumb =>                         breadcrumb => 
                           { href => '/adm/preferences?action=changemsgforward',                            { href => '/adm/preferences?action=changemsgforward',
                               text => 'Change Message Forwarding/Notification'},
                             text => 'Messages & Notifications'},  
                       subroutine => \&msgforwardchanger,                        subroutine => \&msgforwardchanger,
                       },                        },
                     { action => 'verify_and_change_msgforward',                      { action => 'verify_and_change_msgforward',
                       help   => 'Prefs_Messages',                        help   => 'Prefs_Messages',
                       breadcrumb =>                         breadcrumb => 
                           { href => '/adm/preferences?action=changemsgforward',                            { href => '/adm/preferences?action=changemsgforward',
                             text => 'Messages & Notifications'},                              text => 'Change Message Forwarding/Notification'},
                       printmenu => 'no',                        printmenu => 'yes',
                       subroutine => \&verify_and_change_msgforward }));                        subroutine => \&verify_and_change_msgforward }));
     if (&Apache::lonnet::usertools_access($user,$domain,'aboutme')) {      my $aboutmeaction=
         my $aboutmeaction = '/adm/'.$domain.'/'.$user.'/aboutme';          '/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme';
         push (@Options,{ action   => 'none',       push (@Options,{ action => 'none', 
                          linktext =>"Edit the Personal Information Page",                       linktext =>
                          help     => 'Prefs_About_Me',                           q{Edit the Personal Information Page},
                          href => $aboutmeaction});       help => 'Prefs_About_Me',
     }                       href => $aboutmeaction});
     push (@Options,({ action => 'changecolors',      push (@Options,({ action => 'changecolors',
                       linktext => 'Change Color Scheme',                        linktext => 'Change Color Scheme',
                       href => '/adm/preferences',                        href => '/adm/preferences',
Line 1952  sub handler { Line 2249  sub handler {
                       }));                        }));
   
     push (@Options,({ action   => 'changetexenginepref',      push (@Options,({ action   => 'changetexenginepref',
                       linktext => 'Math display settings',                        linktext => 'Change How Math Equations Are Displayed',
                       href     => '/adm/preferences',                        href     => '/adm/preferences',
                       subroutine => \&texenginechanger,                        subroutine => \&texenginechanger,
                       breadcrumb =>                        breadcrumb =>
                           { href => '/adm/preferences?action=changetexenginepref',                            { href => '/adm/preferences?action=changetexenginepref',
                             text => 'Math display settings'},                              text => 'Change Math Pref'},
                       },                        },
                     { action   => 'verify_and_change_texengine',                      { action   => 'verify_and_change_texengine',
                       subroutine => \&verify_and_change_texengine,                        subroutine => \&verify_and_change_texengine,
Line 1996  sub handler { Line 2293  sub handler {
                       }));                        }));
   
     push (@Options,({ action   => 'changeclicker',      push (@Options,({ action   => 'changeclicker',
                       linktext => 'Register Response Devices (&quot;Clickers&quot;)',                        linktext => 'Register Response Devices ("Clickers")',
                       href     => '/adm/preferences',                        href     => '/adm/preferences',
                       subroutine => \&clickerchanger,                        subroutine => \&clickerchanger,
                       breadcrumb =>                        breadcrumb =>
Line 2063  sub handler { Line 2360  sub handler {
                        }));                         }));
     }      }
   
     if (&can_toggle_debug()) {      if (($env{'user.name'} =~ /^(albertel|fox|foxr|kortemey|korte|raeburn)$/)
        && ($env{'user.domain'} =~/^(msu|gerd)$/)){
         push (@Options,({ action => 'debugtoggle',          push (@Options,({ action => 'debugtoggle',
                           printmenu => 'yes',                            printmenu => 'yes',
                           subroutine => \&toggle_debug,                            subroutine => \&toggle_debug,
Line 2095  sub handler { Line 2393  sub handler {
    || ($printmenu eq 'not_on_error' && !$error) )     || ($printmenu eq 'not_on_error' && !$error) )
  && (!$env{'form.returnurl'})) {   && (!$env{'form.returnurl'})) {
         my $optionlist = '<table cellpadding="5">';          my $optionlist = '<table cellpadding="5">';
         if (&can_toggle_debug()) {          if ($env{'user.name'} =~ 
                            /^(albertel|kortemey|fox|foxr|korte|hallmat3|turtle|raeburn)$/
               ) {
             push (@Options,({ action => 'debugtoggle',              push (@Options,({ action => 'debugtoggle',
                               linktext => 'Toggle Debug Messages',                                linktext => 'Toggle Debug Messages',
                               text => 'Current Debug status is: '.                                text => 'Current Debug status is -'.
                                       ($env{'user.debug'} ? 'on' : 'off'),                                    $env{'user.debug'}.'-.',
                               href => '/adm/preferences',                                href => '/adm/preferences',
                               printmenu => 'yes',                                printmenu => 'yes',
                               subroutine => \&toggle_debug,                                subroutine => \&toggle_debug,
Line 2141  sub handler { Line 2441  sub handler {
 }  }
   
 sub toggle_debug {  sub toggle_debug {
     if (&can_toggle_debug()) {      if ($env{'user.debug'}) {
         if ($env{'user.debug'}) {          &Apache::lonnet::delenv('user.debug');
             &Apache::lonnet::delenv('user.debug');      } else {
         } else {          &Apache::lonnet::appenv({'user.debug' => 1});
             &Apache::lonnet::appenv({'user.debug' => 1});  
         }  
     }  
 }  
   
 sub can_toggle_debug {  
     my $can_toggle = 0;  
     my $page = 'toggledebug';  
     if (&LONCAPA::lonauthcgi::can_view($page)) {  
         $can_toggle = 1;  
     } elsif (&LONCAPA::lonauthcgi::check_ipbased_access($page)) {  
         $can_toggle = 1;  
     }      }
     return $can_toggle;  
 }  }
   
   
 1;  1;
 __END__  __END__

Removed from v.1.125.4.9  
changed lines
  Added in v.1.159


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