--- loncom/interface/lonpreferences.pm 2010/03/10 21:25:50 1.185 +++ loncom/interface/lonpreferences.pm 2011/03/31 18:39:52 1.186.2.5 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.185 2010/03/10 21:25:50 droeschl Exp $ +# $Id: lonpreferences.pm,v 1.186.2.5 2011/03/31 18:39:52 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -166,11 +166,12 @@ sub languagechanger { = &Apache::loncommon::plainlanguagedescription($_); } } + %langchoices = &Apache::lonlocal::texthash(%langchoices); my $selectionbox= &Apache::loncommon::select_form( $language, 'language', - &Apache::lonlocal::texthash(%langchoices)); + \%langchoices); $r->print(< @@ -229,11 +230,12 @@ sub texenginechanger { 'mimetex' => 'mimetex (Convert to Images)', 'raw' => 'Raw (Screen Reader)' ); + %mathchoices = &Apache::lonlocal::texthash(%mathchoices); my $selectionbox= &Apache::loncommon::select_form( $texengine, 'texengine', - &Apache::lonlocal::texthash(%mathchoices)); + \%mathchoices); my $jsMath_start=&Apache::lontexconvert::jsMath_header(); my %lt=&Apache::lonlocal::texthash( 'headline' => 'Change how math is displayed', @@ -589,60 +591,6 @@ sub verify_and_change_screenname { } ################################################################ -# Icon Subroutines # -################################################################ -sub iconchanger { - 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 $domain = $env{'user.domain'}; - my %userenv = &Apache::lonnet::get - ('environment',['icons']); - my $iconic='checked="checked"'; - my $classic=''; - my $onlyicon=''; - if ($userenv{'icons'} eq 'classic') { - $classic='checked="checked"'; - $iconic=''; - } - if ($userenv{'icons'} eq 'iconsonly') { - $onlyicon='checked="checked"'; - $iconic=''; - } - my $useicons=&mt('Use icons and text'); - my $usebuttons=&mt('Use buttons and text'); - my $useicononly=&mt('Use icons only'); - my $change=&mt('Save'); - $r->print(< - -
-
-
- - -ENDSCREEN -} - -sub verify_and_change_icons { - my $r = shift; - my $user = $env{'user.name'}; - my $domain = $env{'user.domain'}; - my $newicons = $env{'form.menumode'}; - - &Apache::lonnet::put('environment',{'icons' => $newicons}); - &Apache::lonnet::appenv({'environment.icons' => $newicons}); - my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Menu Display').'',''.$newicons.'')); - $message=&Apache::loncommon::confirmwrapper($message); - &print_main_menu($r, $message); -} - -################################################################ # Clicker Subroutines # ################################################################ @@ -1842,6 +1790,93 @@ sub verify_and_change_coursepage { &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.').'
'.&mt('The following may be updated, unless you disallow updates:'). + ''; + my $locking=&mt('Disallow automatic updates to name information for your LON-CAPA account'); + my $change=&mt('Save'); + $r->print(< + +$text
+
+ + +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 { + $status=&mt('allowed'); + } + $message=&Apache::lonhtmlcommon::confirm_success(&mt('[_1] set to [_2]',''.&mt('Automatic update of first, middle and last names if institutional directory information indicates changes').'',''.$status.'')); + $message=&Apache::loncommon::confirmwrapper($message); + } + &print_main_menu($r,$message); +} + sub print_main_menu { my ($r, $message) = @_; # Determine current authentication method @@ -1888,14 +1923,14 @@ my @menu= url => '/adm/preferences?action=changerolespref', permission => 'F', #help => '', - icon => 'sctr.png', + icon => 'role_hotlist.png', linktitle => 'Configure the roles hotlist.' }, { linktext => 'Math display settings', url => '/adm/preferences?action=changetexenginepref', permission => 'F', #help => '', - icon => 'stat.png', + icon => 'dismath.png', linktitle => 'Change how math is displayed.' }, ] @@ -1909,14 +1944,6 @@ my @menu= 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=>'Messages & Notifications', @@ -1932,7 +1959,7 @@ my @menu= url => '/adm/preferences?action=changediscussions', permission => 'F', #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.' }, ] @@ -1960,6 +1987,38 @@ push(@{ $menu[0]->{items} }, { 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 => 'remotecontrol.png', + linktitle => 'Launch the remote control for LON-CAPA.', + }); + }else{ +push(@{ $menu[1]->{items} }, { + linktext => 'Collapse Remote Control', + url => '/adm/remote?url=/adm/preferences&action=collapse', + permission => 'F', + #help => '', + icon => 'remotecontrol.png', + 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']); if (keys(%author_roles) > 0) { push(@{ $menu[4]->{items} }, { @@ -1980,7 +2039,7 @@ push(@{ $menu[4]->{items} }, { url => '/adm/preferences?action=changecourseinit', permission => 'F', #help => '', - icon => 'edit-copy.png', + icon => 'course_ini.png', linktitle => 'Set the default page to be displayed when you select a course role.', }); @@ -1994,7 +2053,7 @@ push(@{ $menu[4]->{items} }, { icon => 'blog.png', linktitle => 'Toggle Debug Messages.', }); - } + } $r->print(&Apache::loncommon::start_page('My Space')); $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Preferences')); @@ -2065,10 +2124,6 @@ sub handler { &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'){ @@ -2090,6 +2145,10 @@ sub handler { &toggle_debug(); } &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 @@ -2122,5 +2181,52 @@ sub can_toggle_debug { 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; __END__