Diff for /loncom/interface/lonpreferences.pm between versions 1.174 and 1.186.2.8.2.1

version 1.174, 2009/10/08 22:37:33 version 1.186.2.8.2.1, 2012/02/07 16:21:32
Line 117  sub wysiwygchanger { Line 117  sub wysiwygchanger {
     my $switchon=&mt('Enable WYSIWYG editor');      my $switchon=&mt('Enable WYSIWYG editor');
     my $warning='';      my $warning='';
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
        $warning.="<p>".&mt("The WYSIWYG editor only supports simple HTML and is in many cases unsuited for advanced authoring. In a number of cases, it may destroy advanced authoring involving LaTeX and script function calls.")."</p>";         $warning.='<p class="LC_warning">'.&mt("The WYSIWYG editor only supports simple HTML and is in many cases unsuited for advanced authoring. In a number of cases, it may destroy advanced authoring involving LaTeX and script function calls.")."</p>";
     }      }
     $r->print(<<ENDLSCREEN);      $r->print(<<ENDLSCREEN);
 <form name="prefs" action="/adm/preferences" method="post">  <form name="prefs" action="/adm/preferences" method="post">
Line 166  sub languagechanger { Line 166  sub languagechanger {
                = &Apache::loncommon::plainlanguagedescription($_);                 = &Apache::loncommon::plainlanguagedescription($_);
  }   }
     }      }
     my $selectionbox=&Apache::loncommon::select_form($language,'language',      %langchoices = &Apache::lonlocal::texthash(%langchoices);
      %langchoices);      my $selectionbox=
              &Apache::loncommon::select_form(
                  $language,
                  'language',
                  \%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 188  sub verify_and_change_languages { Line 192  sub verify_and_change_languages {
     if ($newlanguage) {      if ($newlanguage) {
         &Apache::lonnet::put('environment',{'languages' => $newlanguage});          &Apache::lonnet::put('environment',{'languages' => $newlanguage});
         &Apache::lonnet::appenv({'environment.languages' => $newlanguage});          &Apache::lonnet::appenv({'environment.languages' => $newlanguage});
         $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Preferred language').'</i>','<tt>"'.$newlanguage.'"</tt>.'));          $message=&Apache::lonhtmlcommon::confirm_success(
               &mt('Set [_1] to [_2]',
                   '<i>'.&mt('Preferred language').'</i>',
                   '<tt>"'.$newlanguage.'"</tt>.'))
              .'<br />'
              .&mt('The change will become active on the next page.');
     } else {      } else {
         &Apache::lonnet::del('environment',['languages']);          &Apache::lonnet::del('environment',['languages']);
         &Apache::lonnet::delenv('environment.languages');          &Apache::lonnet::delenv('environment.languages');
Line 206  sub texenginechanger { Line 215  sub texenginechanger {
     my $r = shift;      my $r = shift;
     Apache::lonhtmlcommon::add_breadcrumb(      Apache::lonhtmlcommon::add_breadcrumb(
     { href => '/adm/preferences?action=changetexenginepref',      { href => '/adm/preferences?action=changetexenginepref',
                 text => 'Change How Math Equations Are Displayed'});                  text => 'Math display settings'});
     $r->print(Apache::loncommon::start_page('Content Display Settings'));      $r->print(Apache::loncommon::start_page('Content Display Settings'));
     $r->print(Apache::lonhtmlcommon::breadcrumbs('Change How Math Equations Are Displayed'));      $r->print(Apache::lonhtmlcommon::breadcrumbs('Math display settings'));
     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 221  sub texenginechanger { Line 230  sub texenginechanger {
      'mimetex' => 'mimetex (Convert to Images)',       'mimetex' => 'mimetex (Convert to Images)',
                      'raw' => 'Raw (Screen Reader)'                       'raw' => 'Raw (Screen Reader)'
                      );                       );
     my $selectionbox=&Apache::loncommon::select_form($texengine,'texengine',      %mathchoices = &Apache::lonlocal::texthash(%mathchoices);
      %mathchoices);      my $selectionbox=
              &Apache::loncommon::select_form(
                  $texengine,
                  'texengine',
                  \%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 Math Preferences',        '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',
       'jsmath'   => 'jsMath:',        'jsmath'   => 'jsMath:',
Line 281  if (jsMath.nofonts == 1) { Line 294  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="200"></iframe>  <iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=tth" width="400" height="220"></iframe>
 </p>  </p>
 ENDLSCREEN  ENDLSCREEN
     if ($env{'environment.texengine'} ne 'jsMath') {      if ($env{'environment.texengine'} ne 'jsMath') {
Line 393  sub rolesprefchanger { Line 406  sub rolesprefchanger {
 </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 /><label>'.&mt('Enable Recent '.$role.'s Hotlist:').'  <br />'.
 <input type="checkbox"'.$checked.' name="recentroles" value="true" /></label>  '<h2>'.&mt('Recent '.$role.'s Hotlist').'</h2>'.
 <br />'.&mt('Number of '.$role.'s in Hotlist:').'  &Apache::lonhtmlcommon::start_pick_box().
 <select name="recentrolesn" size="1">  &Apache::lonhtmlcommon::row_title('<label for="Hotlist">'.&mt('Enable Recent '.$role.'s Hotlist').'</label>').
 '.$options.'  '<input id="Hotlist" type="checkbox"'.$checked.' name="recentroles" value="true" />'.
 </select>  &Apache::lonhtmlcommon::row_closure().
 <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.').'  &Apache::lonhtmlcommon::row_title('<label for="NumberOfRoles">'.&mt('Number of '.$role.'s in Hotlist').'</label>').
   '<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 449  sub verify_and_change_rolespref { Line 469  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=&mt('Recent '.$role.'s Hotlist is Enabled');          $message=&Apache::lonhtmlcommon::confirm_success(&mt('Recent '.$role.'s Hotlist is Enabled.')." ".&mt('Display [_1] Most Recent '.$role.'s.',$hotlist_n));
     } else {      } else {
         &Apache::lonnet::del('environment',['recentroles']);          &Apache::lonnet::del('environment',['recentroles']);
         &Apache::lonnet::delenv('environment.recentroles');          &Apache::lonnet::delenv('environment.recentroles');
         $message=&mt('Recent '.$role.'s Hotlist is Disabled');          $message=&Apache::lonhtmlcommon::confirm_success(&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});
         &Apache::lonnet::appenv({'environment.recentrolesn' => $hotlist_n});          &Apache::lonnet::appenv({'environment.recentrolesn' => $hotlist_n});
         if ($hotlist_flag) {  
             $message.="<br />".  
  &mt('Display [_1] Most Recent '.$role.'s',$hotlist_n)."\n";  
         }  
     }      }
   
 # Get list of froze roles and list of recent roles  # Get list of froze roles and list of recent roles
Line 580  sub verify_and_change_screenname { Line 596  sub verify_and_change_screenname {
 sub iconchanger {  sub iconchanger {
     my $r = shift;      my $r = shift;
     &Apache::lonhtmlcommon::add_breadcrumb(      &Apache::lonhtmlcommon::add_breadcrumb(
     { href => '/adm/preferences?action=changeicons',              {   href => '/adm/preferences?action=changeicons',
                 text => 'Change Main Menu'});                  text => 'Change Menu Display'});
     $r->print(Apache::loncommon::start_page('Page Display Settings'));      $r->print(Apache::loncommon::start_page('Page Display Settings'));
     $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Main Menu'));      $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Menu Display'));
   
     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('environment',['icons']);
         ('environment',['icons']);  
     my $iconic='checked="checked"';      my $iconic='checked="checked"';
     my $classic='';      my ($classic,$onlyicon,$iconic_preview,$iconsonly_preview);
     my $onlyicon='';  
     if ($userenv{'icons'} eq 'classic') {      if ($userenv{'icons'} eq 'classic') {
        $classic='checked="checked"';          $iconic='';
        $iconic='';          $classic='<div class="LC_info">'.
                    &mt('Your current selection: "Use buttons and text" is deprecated - it is recommended that you change this to "Use icons and text".').'</div>';
     }      }
     if ($userenv{'icons'} eq 'iconsonly') {      if ($userenv{'icons'} eq 'iconsonly') {
        $onlyicon='checked="checked"';         $onlyicon='checked="checked"';
        $iconic='';         $iconic='';
     }      }
     my $useicons=&mt('Use icons and text');  
     my $usebuttons=&mt('Use buttons and text');  
     my $useicononly=&mt('Use icons only');  
     my $change=&mt('Save');      my $change=&mt('Save');
       my %lt = &icon_options();
       my ($inlinetools,$toolsorder) = &icon_previews();
       if ((ref($inlinetools) eq 'HASH') && (ref($toolsorder) eq 'ARRAY')) {
           foreach my $tool (@{$toolsorder}) {
               my ($command,$row,$col,$img,$top,$bot,$act,$desc) =
                   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>';
               $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 = '<ul class="LC_breadcrumb_tools_outerlist"><li>'.
                            '<ul>'.
                            $iconsonly_preview.
                            '</ul></li></ul>';
       $iconic_preview = '<ul class="LC_breadcrumb_tools_outerlist"><li>'.
                         '<ul>'.
                         $iconic_preview.
                         '</ul></li></ul>';
     $r->print(<<ENDSCREEN);      $r->print(<<ENDSCREEN);
   $classic
 <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_icons" />  <input type="hidden" name="action" value="verify_and_change_icons" />
 <label><input type="radio" name="menumode" value="iconic" $iconic /> $useicons</label><br />  <label><input type="radio" name="menumode" value="iconic" $iconic /> $lt{'iconic'}</label>$iconic_preview<br />
 <label><input type="radio" name="menumode" value="classic" $classic /> $usebuttons</label><br />  <label><input type="radio" name="menumode" value="iconsonly" $onlyicon /> $lt{'iconsonly'}</label>$iconsonly_preview<br />
 <label><input type="radio" name="menumode" value="iconsonly" $onlyicon /> $useicononly</label><br />  
 <input type="submit" value="$change" />  <input type="submit" value="$change" />
 </form>  </form>
 ENDSCREEN  ENDSCREEN
Line 620  sub verify_and_change_icons { Line 650  sub verify_and_change_icons {
     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'};
       my %lt = &icon_options();
       my $newchoice = $newicons;
       if ($lt{$newicons}) {
           $newchoice = $lt{$newicons};
       }
     &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>'.$newchoice.'</tt>'));
     $message=&Apache::loncommon::confirmwrapper($message);      $message=&Apache::loncommon::confirmwrapper($message);
     &print_main_menu($r, $message);      &print_main_menu($r, $message);
 }  }
   
   sub icon_options {
       my %lt = &Apache::lonlocal::texthash(
                    iconic    => 'Use icons and text',
                    iconsonly => 'Use icons only',
                );
       return %lt;
   }
   
   sub icon_previews {
        my %icon_text = (
                         annotate => 'Notes',
                         bookmark => 'Bookmark',
                         catalog  => 'Info',
                         evaluate => 'Evaluate',
                         feedback => 'Communicate',
                         printout => 'Print',
                        );
       my %inlinetools = (
           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",
           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",
           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",
       );
       my @toolsorder = qw(annotate bookmark evaluate feedback printout catalog);
       return (\%inlinetools,\@toolsorder);
   }
   
 ################################################################  ################################################################
 #                     Clicker Subroutines                      #  #                     Clicker Subroutines                      #
 ################################################################  ################################################################
Line 779  sub msgforwardchanger { Line 842  sub msgforwardchanger {
                                           all   => 'All',                                            all   => 'All',
                                           crit  => 'Critical only',                                            crit  => 'Critical only',
                                           reg   => 'Non-critical only',                                            reg   => 'Non-critical only',
                                           foad  => 'Forwarding Address(es)',                                            foad  => 'Forward to account(s)',
                                           noti  => 'Notification E-mail Address(es)',                                             fwdm  => 'Forward messages to other account(s) in LON-CAPA',
                                             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 ',
Line 793  sub msgforwardchanger { Line 856  sub msgforwardchanger {
                                         );                                          );
     Apache::lonhtmlcommon::add_breadcrumb(      Apache::lonhtmlcommon::add_breadcrumb(
     { href => '/adm/preferences?action=changemsgforward',      { href => '/adm/preferences?action=changemsgforward',
  text => 'Change Message Forwarding/Notification'});   text => 'Messages & Notifications'});
     $r->print(Apache::loncommon::start_page('Message Management'));      $r->print(Apache::loncommon::start_page('Messages &amp; Notifications'));
     $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Message Forwarding/Notification'));      $r->print(Apache::lonhtmlcommon::breadcrumbs('Messages &amp; Notifications'));
     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 861  $validatescript Line 924  $validatescript
     $r->print(<<ENDMSG);      $r->print(<<ENDMSG);
 $jscript  $jscript
 $message  $message
 <h3>$lt{'foad'} $forwardingHelp</h3>  <h3>$lt{'fwdm'} $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" /><br />  <input type="text" size="40" value="$msgforward" name="msgforward" />
   <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 910  ENDMSG Line 974  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;';                         $lt{$type}.'</label></span>'.('&nbsp;' x4);
         }          }
         my $htmlon = '';          my $htmlon = '';
         my $htmloff = '';          my $htmloff = '';
Line 922  ENDMSG Line 986  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;'.                     &mt('Yes').'</label>'.('&nbsp;' x3).
                    '<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 947  ENDMSG Line 1011  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;';                     $lt{$type}.'</label></span>'.('&nbsp;' x4);
     }      }
     $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;'.                 '" value="1" />'.&mt('Yes').'</label>'.('&nbsp;' x3).
                '<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 988  sub verify_and_change_msgforward { Line 1052  sub verify_and_change_msgforward {
     my $domain     = $env{'user.domain'};      my $domain     = $env{'user.domain'};
     my $newscreen  = '';      my $newscreen  = '';
     my $message='';      my $message='';
     foreach (split(/\,/,$env{'form.msgforward'})) {      foreach my $recip (split(/\,/,$env{'form.msgforward'})) {
  my ($msuser,$msdomain)=split(/[\@\:]/,$_);          my ($msuser,$msdomain);
           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 .= &mt('Set message forwarding to ').'<tt>"'.$newscreen.'"</tt>.'          $message .= &Apache::lonhtmlcommon::confirm_success(&mt('Set message forwarding to ').'<tt>"'.$newscreen.'"</tt>.<br />');
                     .'<br />';  
     } else {      } else {
         &Apache::lonnet::del('environment',['msgforward']);          &Apache::lonnet::del('environment',['msgforward']);
         &Apache::lonnet::delenv('environment.msgforward');          &Apache::lonnet::delenv('environment.msgforward');
         $message.= &mt("Set message forwarding to 'off'.").'<br />';          $message.= &Apache::lonhtmlcommon::confirm_success(&mt("Set message forwarding to 'off'.").'<br />');
     }      }
     my $critnotification;      my $critnotification;
     my $notification;      my $notification;
Line 1045  sub verify_and_change_msgforward { Line 1113  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.=&mt('Set non-critical message notification address(es) to ').'<tt>"'.$notification.'"</tt>.<br />';          $message.=&Apache::lonhtmlcommon::confirm_success(&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.=&mt("Set non-critical message notification to 'off'.").'<br />';          $message.=&Apache::lonhtmlcommon::confirm_success(&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.=&mt('Set critical message notification address(es) to ').'<tt>"'.$critnotification.'"</tt>.<br />';          $message.=&Apache::lonhtmlcommon::confirm_success(&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.=&mt("Set critical message notification to 'off'.").'<br />';          $message.=&Apache::lonhtmlcommon::confirm_success(&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.=&mt('Set address(es) to receive excerpts with html retained ').'<tt>"'.$notify_with_html.'"</tt>.';              $message.=&Apache::lonhtmlcommon::confirm_success(&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.=&mt("Set notification address to receive excerpts with html stripped.");                  $message.=&Apache::lonhtmlcommon::confirm_success(&mt("Set notification address to receive excerpts with html stripped."));
             } else {              } else {
                 $message.=&mt("Set all notification addresses to receive excerpts with html stripped.");                  $message.=&Apache::lonhtmlcommon::confirm_success(&mt("Set all notification addresses to receive excerpts with html stripped."));
             }              }
         }          }
     } else {      } else {
         &Apache::lonnet::del('environment',['notifywithhtml']);          &Apache::lonnet::del('environment',['notifywithhtml']);
         &Apache::lonnet::delenv('environment.notifywithhtml');          &Apache::lonnet::delenv('environment.notifywithhtml');
     }      }
     if ($message) {  
         $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 1222  sub passwordchanger { Line 1288  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 1237  sub passwordchanger { Line 1303  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(&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.'
Line 1258  sub passwordchanger { Line 1323  sub passwordchanger {
                 $r->print(&mt('Sorry, the URL generated when you requested reset of your password contained incomplete information.').'<br />');                  $r->print(&mt('Sorry, the URL generated when you requested reset of your password contained incomplete information.').'<br />');
                 return;                  return;
             }              }
               if (&Apache::lonnet::domain($domain) eq '') {
                   $domain = $r->dir_config('lonDefDomain');
               }
    } else {     } else {
         $r->print(&mt('Page requested in unexpected context').'<br />');          $r->print(&mt('Page requested in unexpected context').'<br />');
         return;          return;
Line 1302  $errormessage Line 1370  $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 1371  sub client_form { Line 1439  sub client_form {
                   .&Apache::lonhtmlcommon::row_closure()                    .&Apache::lonhtmlcommon::row_closure()
                   .&Apache::lonhtmlcommon::row_title(                    .&Apache::lonhtmlcommon::row_title(
                        '<label for="uname">'.$lt{'username'}.'</label>')                         '<label for="uname">'.$lt{'username'}.'</label>')
                   .'<input type="text" name="uname" size="15" />'                    .'<input type="text" name="uname" size="30" />'
                   .'<input type="hidden" name="currentpass" value="'.$currentpass.'" />'                    .'<input type="hidden" name="currentpass" value="'.$currentpass.'" />'
                   .&Apache::lonhtmlcommon::row_closure()                    .&Apache::lonhtmlcommon::row_closure()
                   .&Apache::lonhtmlcommon::row_title(                    .&Apache::lonhtmlcommon::row_title(
Line 1571  ENDERROR Line 1639  ENDERROR
     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 {
Line 1602  sub discussionchanger { Line 1671  sub discussionchanger {
     Apache::lonhtmlcommon::add_breadcrumb(      Apache::lonhtmlcommon::add_breadcrumb(
     { href => '/adm/preferences?action=changediscussions',      { href => '/adm/preferences?action=changediscussions',
                 text => 'Change Discussion Preferences'});                  text => 'Change Discussion Preferences'});
     $r->print(Apache::loncommon::start_page('Message Management'));      $r->print(Apache::loncommon::start_page('Change Discussion Preferences'));
     $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Discussion Preferences'));      $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'};
Line 1635  sub discussionchanger { Line 1704  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 1726  sub verify_and_change_discussion { Line 1795  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 1813  sub verify_and_change_coursepage { Line 1882  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 /><font size="+1"><a href="'.$furl.'">'.$lt{'gtts'}.' <i>'.&mt('now').'</i></a></font>';              $message .= '<br /><a href="'.$furl.'">'.$lt{'gtts'}.' <i>'.&mt('now').'</i></a>';
           } else {
               $message .= '<br /><a href="/adm/whatsnew?refpage='.
                           $refpage.'">'.$lt{'dasp'}.'</a>';
           }
       }
       $message = &Apache::lonhtmlcommon::confirm_success($message);
       $message = &Apache::loncommon::confirmwrapper($message);
       &print_main_menu($r,$message);
   }
   
   sub lockednameschanger {
       my $r = shift;
       &Apache::lonhtmlcommon::add_breadcrumb(
               {   href => '/adm/preferences?action=changelockednames',
                   text => 'Automatic name changes'});
       $r->print(Apache::loncommon::start_page('Automatic name changes'));
       $r->print(Apache::lonhtmlcommon::breadcrumbs('Allow/disallow name updates'));
       my %userenv = &Apache::lonnet::get('environment',['lockedname']);
       my $lockedname='';
       if (&can_toggle_namelocking()) {
           if ($userenv{'lockedname'}) {
               $lockedname = ' checked="checked"';
           }
           my %updateable;
           my %domconfig =
               &Apache::lonnet::get_dom('configuration',['autoupdate'],$env{'user.domain'});
           if (ref($domconfig{'autoupdate'}) eq 'HASH') {
               if ($domconfig{'autoupdate'}{'run'}) {
                   my @inststatuses = split(':',$env{'environment.inststatus'});
                   unless (@inststatuses) {
                       @inststatuses = ('default');
                   }
                   %updateable = &updateable_userinfo($domconfig{'autoupdate'},\@inststatuses);
               }
           }
           if (keys(%updateable)) {
               my %longnames = &Apache::lonlocal::texthash (
                                   firstname  => 'First Name',
                                   middlename => 'Middle Name',
                                   lastname   => 'Last Name',
                               );
               my $text=&mt('By default, based on your institutional affiliation, your LON-CAPA account can be automatically updated nightly based on directory information from your institution.').'<br />'.&mt('The following may be updated, unless you disallow updates:').
                        '<ul>';
              foreach my $item ('firstname','middlename','lastname') {
                  if ($updateable{$item}) {
                      $text .= '<li>'.$longnames{$item}.'</li>';
                  }
              }
              $text .= '</ul>'; 
              my $locking=&mt('Disallow automatic updates to name information for your LON-CAPA account');
              my $change=&mt('Save');
              $r->print(<<ENDSCREEN);
   <form name="prefs" action="/adm/preferences" method="post">
   <input type="hidden" name="action" value="verify_and_change_lockednames" />
   $text<br />
   <label><input type="checkbox" value="1" name="lockednames"$lockedname />$locking</label><br />
   <input type="submit" value="$change" />
   </form>
   ENDSCREEN
           } else {
               my $message = &mt('Based on your institutional affiliation no name information is automatically updated for your LON-CAPA account.');
               &print_main_menu($r,$message);
           }
       } else {
           my $message = &mt('You are not permitted to set a user preference for automatic name updates for your LON-CAPA account.');
           &print_main_menu($r,$message);
       }
   }
   
   sub verify_and_change_lockednames {
       my $r = shift;
       my $message;
       if (&can_toggle_namelocking()) {
           my $newlockedname = $env{'form.lockednames'};
           $newlockedname =~ s/\D//g;
           my $currlockedname = $env{'environment.lockedname'};
           if ($newlockedname ne $currlockedname) {
               if ($newlockedname) {
                   if (&Apache::lonnet::put('environment',{lockedname => $newlockedname}) eq 'ok') {
                       &Apache::lonnet::appenv({'environment.lockedname' => $newlockedname});
                   }
               } elsif (&Apache::lonnet::del('environment',['lockedname']) eq 'ok') {
                   &Apache::lonnet::delenv('environment.lockedname');
               }
           }
           my $status='';
           if ($newlockedname) {
               $status=&mt('disallowed');
         } else {          } else {
             $message .= '<br /><font size="+1"><a href="/adm/whatsnew?refpage='.              $status=&mt('allowed');
                         $refpage.'">'.$lt{'dasp'}.'</a></font>';  
         }          }
           $message=&Apache::lonhtmlcommon::confirm_success(&mt('[_1] set to [_2]','<i>'.&mt('Automatic update of first, middle and last names if institutional directory information indicates changes').'</i>','<tt>'.$status.'</tt>'));
           $message=&Apache::loncommon::confirmwrapper($message);
     }      }
     &print_main_menu($r, &Apache::lonhtmlcommon::confirm_success($message));      &print_main_menu($r,$message);
 }  }
   
 sub print_main_menu {  sub print_main_menu {
Line 1855  my @menu= Line 2013  my @menu=
     },      },
  ]   ]
     },      },
     { 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',      { categorytitle=>'Content Display Settings',
  items =>[   items =>[
     { linktext => 'Language',      { linktext => 'Language',
Line 1883  my @menu= Line 2022  my @menu=
  icon => 'preferences-desktop-locale.png',   icon => 'preferences-desktop-locale.png',
  linktitle => 'Choose the default language for this user.'   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',      { linktext => $role.' Page',
  url => '/adm/preferences?action=changerolespref',   url => '/adm/preferences?action=changerolespref',
  permission => 'F',   permission => 'F',
  #help => '',   #help => '',
  icon => 'sctr.png',   icon => 'role_hotlist.png',
  linktitle => 'Configure the roles hotlist.'   linktitle => 'Configure the roles hotlist.'
     },      },
     { linktext => 'Display of Scientific Equations',      { linktext => 'Math display settings',
  url => '/adm/preferences?action=changetexenginepref',   url => '/adm/preferences?action=changetexenginepref',
  permission => 'F',   permission => 'F',
  #help => '',   #help => '',
  icon => 'stat.png',   icon => 'dismath.png',
  linktitle => 'Change how Scientific Equations are displayed.'   linktitle => 'Change how math is displayed.'
     },      },
  ]   ]
     },      },
     { categorytitle=>'Message Management',      { 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 icons or icons and text.'
               }
    ]
       },
       { categorytitle=>'Messages &amp; Notifications',
  items =>[   items =>[
     { linktext => 'Messages &amp; Notifications',      { linktext => 'Messages &amp; Notifications',
  url => '/adm/preferences?action=changemsgforward',   url => '/adm/preferences?action=changemsgforward',
Line 1919  my @menu= Line 2069  my @menu=
  url => '/adm/preferences?action=changediscussions',   url => '/adm/preferences?action=changediscussions',
  permission => 'F',   permission => 'F',
  #help => 'Change_Discussion_Display',   #help => 'Change_Discussion_Display',
  icon => 'mail-message-new.png',   icon => 'chat.png',
  linktitle => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.'   linktitle => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.'
     },      },
  ]   ]
Line 1949  push(@{ $menu[0]->{items} }, { Line 2099  push(@{ $menu[0]->{items} }, {
     }      }
     if ($env{'environment.remote'} eq 'off') {      if ($env{'environment.remote'} eq 'off') {
 push(@{ $menu[1]->{items} }, {  push(@{ $menu[1]->{items} }, {
  linktext => 'Launch Remote Control',          linktext => 'Launch Remote Control',
  url => '/adm/remote?url=/adm/preferences&amp;action=launch',          url => '/adm/remote?url=/adm/preferences&amp;action=launch',
  permission => 'F',          permission => 'F',
  #help => '',          #help => '',
  icon => 'remotecontrol.png',          icon => 'remotecontrol.png',
  linktitle => 'Launch the remote control for LON-CAPA.',          linktitle => 'Launch the remote control for LON-CAPA.',
  });          });
     }else{      }else{
 push(@{ $menu[1]->{items} }, {  push(@{ $menu[1]->{items} }, {
  linktext => 'Collapse Remote Control',          linktext => 'Collapse Remote Control',
  url => '/adm/remote?url=/adm/preferences&amp;action=collapse',          url => '/adm/remote?url=/adm/preferences&amp;action=collapse',
  permission => 'F',          permission => 'F',
  #help => '',          #help => '',
  icon => 'remotecontrol.png',          icon => 'remotecontrol.png',
  linktitle => 'Collapse the remote control for LON-CAPA.',          linktitle => 'Collapse the remote control for LON-CAPA.',
  });          });
     }      }
   
   
       if (&can_toggle_namelocking()) {
           push(@{ $menu[0]->{items} }, {
           linktext => 'Automatic name changes',
           url => '/adm/preferences?action=changelockednames',
           permission => 'F',
           #help => '',
           icon => 'system-lock-screen.png',
           linktitle => 'Allow/disallow propagation of name changes from institutional directory service',
           });
       }
   
     my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au']);      my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au']);
     if (keys(%author_roles) > 0) {      if (keys(%author_roles) > 0) {
 push(@{ $menu[4]->{items} }, {  push(@{ $menu[4]->{items} }, {
Line 1986  push(@{ $menu[4]->{items} }, { Line 2149  push(@{ $menu[4]->{items} }, {
  url => '/adm/preferences?action=changecourseinit',   url => '/adm/preferences?action=changecourseinit',
  permission => 'F',   permission => 'F',
  #help => '',   #help => '',
  icon => 'edit-copy.png',   icon => 'course_ini.png',
  linktitle => 'Set the default page to be displayed when you select a course role.',   linktitle => 'Set the default page to be displayed when you select a course role.',
  });   });
   
Line 2000  push(@{ $menu[4]->{items} }, { Line 2163  push(@{ $menu[4]->{items} }, {
  icon => 'blog.png',   icon => 'blog.png',
  linktitle => 'Toggle Debug Messages.',   linktitle => 'Toggle Debug Messages.',
  });   });
     }         }
   
     $r->print(&Apache::loncommon::start_page('My Space'));      $r->print(&Apache::loncommon::start_page('My Space'));
     $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Preferences'));      $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Preferences'));
Line 2096  sub handler { Line 2259  sub handler {
             &toggle_debug();              &toggle_debug();
         }          }
  &print_main_menu($r);   &print_main_menu($r);
       } elsif ($env{'form.action'} eq 'changelockednames') {
           &lockednameschanger($r);
       } elsif ($env{'form.action'} eq 'verify_and_change_lockednames') {
           &verify_and_change_lockednames($r);
     }      }
   
     # Properly end the HTML page of all preference pages      # Properly end the HTML page of all preference pages
Line 2128  sub can_toggle_debug { Line 2295  sub can_toggle_debug {
     return $can_toggle;      return $can_toggle;
 }  }
   
   sub can_toggle_namelocking {
       my $lockablenames;
       my %domconfig =
           &Apache::lonnet::get_dom('configuration',['autoupdate'],$env{'user.domain'});
       if (ref($domconfig{'autoupdate'}) eq 'HASH') {
           if ($domconfig{'autoupdate'}{'run'}) {
               my @inststatuses = split(':',$env{'environment.inststatus'});
               unless (@inststatuses) {
                   @inststatuses = ('default');
               }
               my %updateable = &updateable_userinfo($domconfig{'autoupdate'},\@inststatuses);
               if ($updateable{'lastname'} || $updateable{'firstname'} ||
                   $updateable{'middlename'}) { 
                   if (ref($domconfig{'autoupdate'}{'lockablenames'}) eq 'ARRAY') {
                       unless (@inststatuses) {
                           @inststatuses = ('default');
                       }
                       foreach my $status (@inststatuses) {
                           if (grep(/^\Q$status\E$/,@{$domconfig{'autoupdate'}{'lockablenames'}})) {
                               $lockablenames = 1;
                               last;
                           }
                       }
                   }
               }
           }
       }
       return $lockablenames;
   }
   
   sub updateable_userinfo {
       my ($autoupdate,$inststatuses) = @_;
       my %updateable;
       return %updateable unless ((ref($autoupdate) eq 'HASH') && 
                                  (ref($inststatuses) eq 'ARRAY'));
       if (ref($autoupdate->{'fields'}) eq 'HASH') {
           foreach my $status (@{$inststatuses}) {
               if (ref($autoupdate->{'fields'}{$status}) eq 'ARRAY') {
                   foreach my $field (@{$autoupdate->{'fields'}{$status}}) {
                       $updateable{$field} = 1;
                   }
               }
           }
       }
       return %updateable;
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.174  
changed lines
  Added in v.1.186.2.8.2.1


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