--- loncom/interface/lonpreferences.pm 2024/03/02 18:47:15 1.244 +++ loncom/interface/lonpreferences.pm 2025/03/07 02:13:40 1.248 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.244 2024/03/02 18:47:15 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.248 2025/03/07 02:13:40 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -103,16 +103,17 @@ sub languagechanger { { href => '/adm/preferences?action=changelanguages', text => 'Change Language'}); $r->print(Apache::loncommon::start_page('Content Display Settings')); - $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Language')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Language'). + '
'); my %userenv = &Apache::lonnet::get('environment',['languages']); my $language=$userenv{'languages'}; $r->print( '
'."\n". ''. - '
'.&mt('Preferred language').': '. - &Apache::loncommon::select_language('language',$language,1).''."\n". - '
' + '
'."\n". + '
' ); } @@ -192,8 +193,8 @@ sub texenginechanger {

-$lt{'preftxt'}: $selectionbox -
+

@@ -275,7 +276,8 @@ sub rolesprefchanger { { href => '/adm/preferences?action=changerolespref', text => $brtext}); $r->print(Apache::loncommon::start_page('Content Display Settings')); - $r->print(Apache::lonhtmlcommon::breadcrumbs($brtitle)); + $r->print(Apache::lonhtmlcommon::breadcrumbs($brtitle). + '
'); my $hotlist_flag=$userenv{'recentroles'}; my $hotlist_n=$userenv{'recentrolesn'}; my ($checkedon,$checkedoff); @@ -294,49 +296,49 @@ sub rolesprefchanger { } # Get list of recent roles and display with checkbox in front - my $roles_check_list = ''; - my $role_key=''; + my $roles_check_list; if ($env{'environment.recentroles'}) { my %recent_roles = &Apache::lonhtmlcommon::get_recent('roles',$env{'environment.recentrolesn'}); my %frozen_roles = &Apache::lonhtmlcommon::get_recent_frozen('roles',$env{'environment.recentrolesn'}); - + my %role_text = &rolespref_get_role_text([keys(%recent_roles)]); my @sorted_roles = sort {$role_text{$a} cmp $role_text{$b}} keys(%role_text); - $roles_check_list .= - &Apache::loncommon::start_data_table(). - &Apache::loncommon::start_data_table_header_row(). - "".&mt('Freeze '.$role)."". - "".&mt($role)."". - &Apache::loncommon::end_data_table_header_row(). - "\n"; - my $count; - foreach $role_key (@sorted_roles) { - my $checked = ""; - my $value = $recent_roles{$role_key}; - if ($frozen_roles{$role_key}) { - $checked = ' checked="checked"'; - } - $count++; - $roles_check_list .= - &Apache::loncommon::start_data_table_row(). - ''. - "". - "". - &Apache::loncommon::end_data_table_row(). "\n"; + if (@sorted_roles) { + $roles_check_list = + &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row(). + "".&mt('Freeze '.$role)."". + "".&mt($role)."". + &Apache::loncommon::end_data_table_header_row()."\n"; + my $count = 0; + foreach my $role_key (@sorted_roles) { + my $checked = ""; + my $value = $recent_roles{$role_key}; + if ($frozen_roles{$role_key}) { + $checked = ' checked="checked"'; + } + $count++; + $roles_check_list .= + &Apache::loncommon::start_data_table_row(). + ''. + "". + "". + &Apache::loncommon::end_data_table_row(). "\n"; + } + $roles_check_list .= &Apache::loncommon::end_data_table."\n"; } - $roles_check_list .= "\n"; } my $actionurl = '/adm/preferences'; if ($env{'form.returnurl'} eq '/adm/roles') { $actionurl = '/adm/roles'; } - $r->print('

'.&mt('Recent Roles Hotlist').'

'); + $r->print('

'.&mt('Recent Roles Hotlist').'

'); unless ($checkedon) { $r->print(&mt('LON-CAPA users with several '.$lc_role.'s may wish to enable the Hotlist.').'
'); } @@ -344,7 +346,7 @@ sub rolesprefchanger {
-

'.&mt('Hotlist options').'

+

'.&mt('Hotlist options').'

'. &mt('When enabled, the Hotlist keeps track of the last N '.$lc_role.'s visited.').'
'. &mt('Those N '.$lc_role.'s are then shown in a table at the top of the '.$lc_role.'s page.').'

'. @@ -365,7 +367,7 @@ $options.'
'); if ($roles_check_list) { $r->print('
-

'.&mt('Freeze Roles').'

+

'.&mt('Freeze Roles').'

'.&mt('The table below can be used to [_1]freeze[_2] '.$lc_role.'s in the Hotlist.','','').'
'. &mt('Those '.$lc_role.'s marked frozen will not be removed from the list, even if not recently used.').'

@@ -378,7 +380,7 @@ $options.' $r->print('
-'); +
'); } sub rolespref_get_role_text { @@ -491,24 +493,22 @@ sub screennamechanger { text => 'Change Screen Name'}); $r->print(Apache::loncommon::start_page('Personal Data')); $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Screen Name')); - $r->print('

' - .&mt('Change the name that is displayed in your posts.') - .'

' - ); + $r->print('
'); + my $caption = &mt('Name displayed in posts you make').':'; $r->print('
' - .'' - .&Apache::lonhtmlcommon::start_pick_box() - .&Apache::lonhtmlcommon::row_title(&mt('Screenname').' '.&mt('(shown if you post anonymously)')) - .'' + .'

' + .&Apache::lonhtmlcommon::start_pick_box(undef,undef,$caption,'LC_caption_prefs') + .&Apache::lonhtmlcommon::row_title(' '.&mt('(shown if you post anonymously)')) + .'' .&Apache::lonhtmlcommon::row_closure() - .&Apache::lonhtmlcommon::row_title(&mt('Nickname').' '.&mt('(shown if you post non-anonymously)')) - .'' + .&Apache::lonhtmlcommon::row_title(' '.&mt('(shown if you post non-anonymously)')) + .'' .&Apache::lonhtmlcommon::row_closure() - .&Apache::lonhtmlcommon::row_title() + .&Apache::lonhtmlcommon::row_title(''.&mt('Submit').':','','','',1) .'' .&Apache::lonhtmlcommon::row_closure(1) .&Apache::lonhtmlcommon::end_pick_box() - .'

' + .'

' ); } @@ -556,7 +556,8 @@ sub iconchanger { { href => '/adm/preferences?action=changeicons', text => 'Change Menu Display'}); $r->print(Apache::loncommon::start_page('Page Display Settings')); - $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Menu Display')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Menu Display'). + '
'); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; @@ -591,14 +592,19 @@ sub iconchanger { '
    '. $iconic_preview. '
'; + my $title = &mt('Use of icons and text'); $r->print(< +
$title $iconic_preview
$iconsonly_preview
+
+

- +

+
ENDSCREEN } @@ -657,7 +663,8 @@ sub clickerchanger { { href => '/adm/preferences?action=changeclicker', text => 'Register Clicker'}); $r->print(Apache::loncommon::start_page('Other')); - $r->print(Apache::lonhtmlcommon::breadcrumbs('Register Clicker')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Register Clicker'). + '
'); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -668,14 +675,17 @@ sub clickerchanger { my $change=&mt('Save'); my $helplink=&Apache::loncommon::help_open_topic('Clicker_Registration',&mt('Locating your clicker ID')); $r->print(<
-
+

+

+
ENDSCREEN } @@ -848,14 +858,24 @@ sub msgforwardchanger { notv => 'is not a valid e-mail address', toen => "To enter multiple addresses, enter one address at a time, click 'Change' and then add the next one", prme => 'Back', + acti => 'Action', + type => 'Types of message for which notification is sent', + nota => 'Notification address', + exce => 'Excerpt retains HTML tags in message', + modi => 'Modify', + dele => 'Delete', + addn => 'Add new address', + yes => 'Yes', + no => 'No', ); $lt{'foad_exmpl'} = &mt('e.g. [_1]userA:domain1,userB:domain2,...[_2]','',''); $lt{'mnot_exmpl'} = &mt('e.g. [_1]joe@doe.com[_2]','',''); Apache::lonhtmlcommon::add_breadcrumb( { href => '/adm/preferences?action=changemsgforward', - text => 'Messages & Notifications'}); + text => 'Messages & Notifications'}); $r->print(Apache::loncommon::start_page('Messages & Notifications')); - $r->print(Apache::lonhtmlcommon::breadcrumbs('Messages & Notifications')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Messages & Notifications'). + '
'); my $forwardingHelp = &Apache::loncommon::help_open_topic("Prefs_Forwarding"); my $notificationHelp = &Apache::loncommon::help_open_topic("Prefs_Notification"); my $criticalMessageHelp = &Apache::loncommon::help_open_topic("Course_Critical_Message"); @@ -864,6 +884,7 @@ sub msgforwardchanger { my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email(); my $jscript = qq| |; $r->print(<$lt{'fwdm'} $forwardingHelp +

$lt{'fwdm'} $forwardingHelp

-$lt{'foad'} ($lt{'foad_exmpl'}): - -

-

$lt{'noti'} $notificationHelp

-$lt{'mnot'} ($lt{'mnot_exmpl'}):
+ ($lt{'foad_exmpl'}): + +

+

$lt{'noti'} $notificationHelp

+$lt{'mnot'} ($lt{'mnot_exmpl'}):
ENDMSG - my @sortforwards = sort (keys(%allnot)); + my @sortnotify = sort (keys(%allnot)); my $output = &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(). - ' '. - ''.&mt('Action').''. - ''.&mt('Notification address').''. - &mt('Types of message for which notification is sent'). + '#'. + ''.$lt{'acti'}.''. + ''.$lt{'nota'}.''. + $lt{'type'}. $criticalMessageHelp.''. - &mt('Excerpt retains HTML tags in message').''. + $lt{'exce'}.''. &Apache::loncommon::end_data_table_header_row(); my $num = 0; my $counter = 1; - foreach my $item (@sortforwards) { - $output .= &Apache::loncommon::start_data_table_row(). + foreach my $item (@sortnotify) { + $output .= &Apache::loncommon::start_data_table_row('LC_prefs_row'). ''.$counter.''. '   '. + $lt{'modi'}.' '.(' ' x2). ''. - ''; + ')" aria-labelledby="LC_email_notify" />'; my %chk; if (defined($allnot{$item}{'crit'})) { if (defined($allnot{$item}{'reg'})) { @@ -966,13 +989,15 @@ ENDMSG } else { $chk{'reg'} = 'checked="checked" '; } + $output .= '
'.$lt{'type'}.''; foreach my $type ('all','crit','reg') { $output .= ''.(' ' x4); + $lt{$type}.' '.(' ' x2); } + $output .= '
'; my $htmlon = ''; my $htmloff = ''; if (grep/^\Q$item\E/,@allow_html) { @@ -980,14 +1005,16 @@ ENDMSG } else { $htmloff = 'checked="checked" '; } - $output .= ' '.(' ' x2). ''. + $lt{'no'}.''. &Apache::loncommon::end_data_table_row(); $num ++; $counter ++; @@ -997,24 +1024,27 @@ ENDMSG crit => '', reg => '', ); - $output .= &Apache::loncommon::start_data_table_row(). + $output .= &Apache::loncommon::start_data_table_row('LC_prefs_row'). ''.$counter.''. ''. - ''; + '" value="1" />'.$lt{'addn'}.''. + ''; + $output .= '
'.$lt{'type'}.''; foreach my $type ('all','crit','reg') { $output .= ''.(' ' x4); + $lt{$type}.' '.(' ' x2); } - $output .= ''.(' ' x3). + $output .= '
'. + '
'.$lt{'exce'}.''. + ' '.(' ' x2). ''. + $lt{'no'}.'
'. &Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table(); $num ++; @@ -1024,7 +1054,7 @@ ENDMSG -
+
|); } @@ -1158,7 +1188,8 @@ sub colorschanger { { href => '/adm/preferences?action=changecolors', text => 'Change Colors'}); $r->print(Apache::loncommon::start_page('Page Display Settings')); - $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Colors')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Colors'). + '
'); # figure out colors my $function=&Apache::loncommon::get_users_function(); my $domain=&Apache::loncommon::determinedomain(); @@ -1172,13 +1203,18 @@ sub colorschanger { '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(). + &Apache::loncommon::data_table_caption(&mt('Colors for LON-CAPA pages')). + &Apache::loncommon::start_data_table_header_row(). + ''.&mt('Page Element').''.&mt('Color').''. + &Apache::loncommon::end_data_table_header_row(); my $chtable=''; foreach my $item (sort(keys(%colortypes))) { my $curcol=&Apache::loncommon::designparm($function.'.'.$item,$domain); $chtable.=&Apache::loncommon::start_data_table_row(). - ''.$colortypes{$item}.''.$colortypes{$item}.''. + ''. &Apache::loncommon::end_data_table_row()."\n"; } @@ -1189,7 +1225,8 @@ sub colorschanger { my $resetbuttondesc = &mt('Reset All Colors to Default'); my $colorchooser=&Apache::lonhtmlcommon::color_picker(); $r->print(' '); $r->print(< +
$start_data_table @@ -1209,7 +1247,7 @@ $end_data_table

-
+
ENDCOL } @@ -1272,7 +1310,8 @@ sub passwordchanger { text => 'Change Password'}); unless ($caller eq 'reset_by_email') { $r->print(Apache::loncommon::start_page('Personal Data')); - $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Password')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Password'). + '
'); } if ((!defined($caller)) || ($caller eq 'preferences')) { $user = $env{'user.name'}; @@ -1283,7 +1322,7 @@ sub passwordchanger { my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('passwd',$clientip); if ($blocked) { - $r->print('

'.$blocktext.'

'); + $r->print('

'.$blocktext.'

'); return; } } elsif ($caller eq 'reset_by_email') { @@ -1333,13 +1372,18 @@ sub passwordchanger { $r->print( '

' .&mt('Page requested in unexpected context') - .'

' + .'

' ); return; } my $currentauth=&Apache::lonnet::queryauthenticate($user,$domain); # Check for authentication types that allow changing of the password. - return if ($currentauth !~ /^(unix|internal):/); + if ($currentauth !~ /^(unix|internal):/) { + unless ($caller eq 'reset_by_email') { + $r->print('
'); + } + return; + } # # Generate keys my ($lkey_cpass ,$ukey_cpass ) = &Apache::loncommon::des_keys(); @@ -1371,14 +1415,16 @@ sub passwordchanger { $r->print(< +

ENDFORM $r->print(&server_form($logtoken,$caller,$mailtoken,$extrafields)); $r->print(&client_form($caller,\%hexkey,$currentpass,$domain,$extrafields)); - + unless ($caller eq 'reset_by_email') { + $r->print(''); + } # return; } @@ -1480,7 +1526,7 @@ sub jscript_send { ENDJS my $output = qq| |; } @@ -1557,16 +1604,16 @@ sub client_form { } else { $output .= &Apache::lonhtmlcommon::row_title( '') - .'' + .'' .&Apache::lonhtmlcommon::row_closure(); } $output .= &Apache::lonhtmlcommon::row_title( '') - .'' + .'' .&Apache::lonhtmlcommon::row_closure() .&Apache::lonhtmlcommon::row_title( '') - .'' + .'' .&Apache::lonhtmlcommon::row_closure(1) .&Apache::lonhtmlcommon::end_pick_box(); if ($caller eq 'reset_by_email') { @@ -1581,7 +1628,6 @@ sub client_form { -

|; return $output; } @@ -1848,7 +1894,8 @@ sub discussionchanger { { href => '/adm/preferences?action=changediscussions', text => 'Change Discussion Preferences'}); $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 $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -1916,15 +1963,15 @@ END $r->print('

'.$lt{'thde'}.'

'); - $r->print(&Apache::loncommon::start_data_table()); + $r->print(&Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row()); $r->print(<<"END"); - $lt{'pref'} $lt{'curr'} $lt{'actn'}? - END - $r->print(&Apache::loncommon::start_data_table_row()); + $r->print(&Apache::loncommon::end_data_table_header_row(). + &Apache::loncommon::start_data_table_row()); $r->print(<<"END"); $lt{'disa'} $lt{$discdisp} @@ -1936,14 +1983,13 @@ END $lt{'npmr'} $lt{$discmark} - END $r->print(&Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table()); $r->print('
' .'' - .'' + .'
' ); } @@ -2081,7 +2127,11 @@ sub author_space_settings { my ($showdomdefs,$js,$args,@items); my $returnurl = &HTML::Entities::encode($env{'form.returnurl'},'"<>&\''); if (&expanded_authoring_settings()) { - @items = ('nocodemirror','copyright','sourceavail'); + @items = ('nocodemirror'); + if (&daxe_permitted(\%author_roles)) { + push(@items,'daxecollapse'); + } + push(@items,('copyright','sourceavail')); $showdomdefs = 1; $js = &toggle_options_js(); my $onload; @@ -2097,13 +2147,15 @@ sub author_space_settings { my %domdefs = &Apache::lonnet::get_domain_defaults($domain); my %staticdefaults = ( 'nocodemirror' => '0', + 'daxecollapse' => '0', 'copyright' => 'default', 'sourceavail' => 'closed', ); my %lt = &authoring_settings_text(); my %titles = &authoring_settings_titles(); - $r->print("

$lt{'auss'}



\n". + $r->print("

$lt{'auss'}

". '
'."\n". + '

'."\n". ''."\n". ''."\n"); foreach my $item (@items) { @@ -2125,22 +2177,41 @@ sub author_space_settings { $userelem = &selectbox('userchoice_'.$item,$userenv{$item},'', \&Apache::loncommon::source_copyrightdescription, (&Apache::loncommon::source_copyrightids)); - } elsif ($item eq 'nocodemirror') { + } elsif (($item eq 'nocodemirror') || ($item eq 'daxecollapse')) { if ($domdef) { - $domdefdisplay = $lt{'yes'}; + if ($item eq 'daxecollapse') { + $domdefdisplay = $lt{'coll'}; + } else { + $domdefdisplay = $lt{'yes'}; + } } else { - $domdefdisplay = $lt{'no'}; + if ($item eq 'daxecollapse') { + $domdefdisplay = $lt{'expa'}; + } else { + $domdefdisplay = $lt{'no'}; + } } - my %checked; + my (%checked,%text); $checked{'no'} = ' checked="checked"'; if ($userenv{$item} eq 'yes') { $checked{'yes'} = $checked{'no'}; $checked{'no'} = ''; } + if ($item eq 'daxecollapse') { + %text = ( + yes => $lt{'coll'}, + no => $lt{'expa'}, + ); + } else { + %text = ( + yes => $lt{'yes'}, + no => $lt{'no'}, + ); + } $userelem = ''; foreach my $choice ('yes','no') { $userelem .= '   '; + $checked{$choice}.' />'.$text{$choice}.'   '; } $userelem .= ''; } @@ -2150,7 +2221,7 @@ sub author_space_settings { $divsty = 'display:inline-block'; } $r->print(<<"END"); -

$titles{$item}

+

$titles{$item}

$lt{'curd'}: $domdefdisplay

    @@ -2161,8 +2232,7 @@ $userelem


END } - $r->print('
'. - ''. + $r->print(''. '
'."\n"); } else { my $constchecked=''; @@ -2206,7 +2276,11 @@ sub change_authoring_settings { $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Deactivate CodeMirror in Authoring Space').'',''.$status.'')); $message=&Apache::loncommon::confirmwrapper($message); } else { - my @items = ('nocodemirror','copyright','sourceavail'); + my @items = ('nocodemirror'); + if (&daxe_permitted(\%author_roles)) { + push(@items,'daxecollapse'); + } + push(@items,('copyright','sourceavail')); my %oldsettings = &Apache::lonnet::get('environment',\@items); my %domdefs = &Apache::lonnet::get_domain_defaults($domain); my %lt = &authoring_settings_text(); @@ -2222,7 +2296,7 @@ sub change_authoring_settings { } elsif ($env{'form.'.$item} eq 'user') { my $newval = $env{'form.userchoice_'.$item}; my @possibles; - if ($item eq 'nocodemirror') { + if (($item eq 'nocodemirror') || ($item eq 'daxecollapse')) { if ($newval =~ /^yes|no$/) { $newsettings{$item} = $newval; } @@ -2277,6 +2351,12 @@ sub change_authoring_settings { my $value = $changes{$item}; if ($item eq 'nocodemirror') { $value = $lt{$changes{$item}}; + } elsif ($item eq 'daxecollapse') { + if ($value eq 'yes') { + $value = $lt{'coll'}; + } else { + $value = $lt{'expa'}; + } } elsif ($item eq 'copyright') { $value = &Apache::loncommon::copyrightdescription($changes{$item}); } elsif ($item eq 'sourceavail') { @@ -2324,12 +2404,15 @@ sub authoring_settings_text { 'save' => 'Save', 'yes' => 'Deactivated', 'no' => 'Activated', + 'expa' => 'Start Expanded', + 'coll' => 'Start Collapsed', ); } sub authoring_settings_titles { return &Apache::lonlocal::texthash( 'nocodemirror' => 'CodeMirror for EditXML editor', + 'daxecollapse' => 'Daxe editor: collapsible standard LON-CAPA menus', 'copyright' => 'Default Copyright/Distribution in new metadata file', 'sourceavail' => 'Default Source Available in new metadata file', ); @@ -2347,6 +2430,33 @@ sub expanded_authoring_settings { return; } +sub daxe_permitted { + my ($aurolesref) = @_; + my $hasdaxe; + if (ref($aurolesref) eq 'HASH') { + my %editors; + foreach my $key (keys(%{$aurolesref})) { + if ($key =~ /^:$LONCAPA::match_domain:au$/) { + if (exists($env{'environment.editors'})) { + if (grep(/^daxe$/,split(/,/,$env{'environment.editors'}))) { + $hasdaxe = 1; + last; + } + } + } else { + my ($auname,$audom) = ($key =~ /^($LONCAPA::match_username):($LONCAPA::match_domain):(ca|aa)$/); + if (exists($env{"environment.internal.editors./$audom/$auname"})) { + if (grep(/^daxe$/,split(/,/,$env{"environment.internal.editors./$audom/$auname"}))) { + $hasdaxe = 1; + last; + } + } + } + } + } + return $hasdaxe; +} + sub lockednameschanger { my $r = shift; my %userenv = &Apache::lonnet::get('environment',['lockedname']); @@ -2452,10 +2562,12 @@ sub timezonechanger { { href => '/adm/preferences?action=', text => 'Set Your Time Zone'}); $r->print(Apache::loncommon::start_page('Set Your Time Zone',$js,$args)); - $r->print(Apache::lonhtmlcommon::breadcrumbs('Set Your Time Zone')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Set Your Time Zone'). + '
'); my %userenv = &Apache::lonnet::get('environment',['timezone']); my $timezone = $userenv{'timezone'}; my %lt = &Apache::lonlocal::texthash( + tztu => 'Time Zone in use', lctz => 'Use Time Zone set by LON-CAPA', owntz => 'Use Time Zone set by you', save => 'Save', @@ -2473,15 +2585,17 @@ sub timezonechanger { $r->print(<<"END");
+
$lt{'tztu'}      +$lt{'lctz'}
+
  +$lt{'owntz'}
  $selector -


+

-

+

END } return; @@ -2549,6 +2663,7 @@ my @menu= permission => $permissions{'aboutme'}, #help => 'Prefs_About_Me', icon => 'system-users.png', + alttext => 'About Me Icon', linktitle => 'Edit information about yourself that should be displayed on your public profile.' }, { linktext => 'Screen Name', @@ -2556,6 +2671,7 @@ my @menu= permission => 'F', #help => 'Prefs_Screen_Name_Nickname', icon => 'preferences-desktop-font.png', + alttext => 'Nickname Icon', linktitle => 'Change the name that is displayed in your posts.' }, ] @@ -2567,6 +2683,7 @@ my @menu= permission => 'F', #help => 'Prefs_Language', icon => 'preferences-desktop-locale.png', + alttext => 'Language Icon', linktitle => 'Choose the default language for this user.' }, { linktext => $role.' Page', @@ -2574,6 +2691,7 @@ my @menu= permission => 'F', #help => '', icon => 'role_hotlist.png', + alttext => 'Switch Role Icon', linktitle => 'Configure the roles hotlist.' }, { linktext => 'Math display settings', @@ -2581,6 +2699,7 @@ my @menu= permission => 'F', #help => '', icon => 'dismath.png', + alttext => 'Math Icon', linktitle => 'Change how math is displayed.' }, { @@ -2589,6 +2708,7 @@ my @menu= permission => $permissions{'timezone'}, #help => '', icon => 'timezone.png', + alttext => 'Clock Icon', linktitle => 'Set your time zone.', } ] @@ -2600,6 +2720,7 @@ my @menu= permission => 'F', #help => 'Change_Colors', icon => 'preferences-desktop-theme.png', + alttext => 'Colors Icon', linktitle => 'Change LON-CAPA default colors.' }, { linktext => 'Menu Display', @@ -2607,6 +2728,7 @@ my @menu= permission => 'F', #help => '', icon => 'preferences-system-windows.png', + alttext => 'Menus Icon', linktitle => 'Change whether the menus are displayed with icons or icons and text.' } ] @@ -2618,6 +2740,7 @@ my @menu= permission => 'F', #help => 'Prefs_Messages', icon => 'mail-reply-all.png', + alttext => 'Notifications Icon', linktitle => 'Change messageforwarding or notifications settings.' }, { linktext => 'Discussion Display', @@ -2625,6 +2748,7 @@ my @menu= permission => 'F', #help => 'Change_Discussion_Display', icon => 'chat.png', + alttext => 'Discussions Icon', linktitle => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.' }, ] @@ -2639,6 +2763,7 @@ if (keys(%author_coauthor_roles) > 0) { url => '/adm/preferences?action=authorsettings', permission => 'F', icon => 'codemirror.png', + alttext => 'Coding Icon', linktitle => 'Settings for your authoring space.', }, ] @@ -2651,6 +2776,7 @@ if (keys(%author_coauthor_roles) > 0) { permission => 'F', #help => '', icon => 'system-lock-screen.png', + alttext => 'Lock Icon', linktitle => 'Restrict domain coordinator access.', }); } @@ -2663,6 +2789,7 @@ push(@menu, permission => 'F', #help => '', icon => 'network-workgroup.png', + alttext => 'Clicker Icon', linktitle => 'Register your clicker.' }, ] @@ -2676,6 +2803,7 @@ push(@menu, permission => 'F', #help => 'Change_Password', icon => 'emblem-readonly.png', + alttext => 'Secure Icon', linktitle => 'Change your password.', }); } @@ -2687,6 +2815,7 @@ push(@menu, permission => 'F', #help => '', icon => 'system-lock-screen.png', + alttext => 'Screen Lock Icon', linktitle => 'Allow/disallow propagation of name changes from institutional directory service', }); } @@ -2700,6 +2829,7 @@ push(@{ $menu[-1]->{items} }, { permission => 'F', #help => '', icon => 'course_ini.png', + alttext => 'Course Launch Icon', linktitle => 'Set the default page to be displayed when you select a course role.', }); @@ -2712,14 +2842,15 @@ push(@{ $menu[-1]->{items} }, { permission => 'F', #help => '', icon => 'blog.png', + alttext => 'Debugging Icon', 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('
'."\n".$message); + $r->print(Apache::lonhtmlcommon::generate_menu(@menu)."\n".'
'); $r->print(Apache::loncommon::end_page()); }