--- loncom/interface/lonpreferences.pm 2007/05/02 01:33:49 1.101 +++ loncom/interface/lonpreferences.pm 2008/12/02 20:10:27 1.127 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.101 2007/05/02 01:33:49 albertel Exp $ +# $Id: lonpreferences.pm,v 1.127 2008/12/02 20:10:27 droeschl Exp $ # # Copyright Michigan State University Board of Trustees # @@ -98,6 +98,12 @@ sub des_decrypt { sub wysiwygchanger { my $r = shift; + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changewysiwyg', + text => 'Change WYSIWYG Preferences'}); + $r->print(Apache::loncommon::start_page('Change WYSIWYG Preferences')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change WYSIWYG Preferences')); + my %userenv = &Apache::lonnet::get ('environment',['wysiwygeditor']); my $onselect='checked="checked"'; @@ -108,9 +114,14 @@ sub wysiwygchanger { } my $switchoff=&mt('Disable WYSIWYG editor'); my $switchon=&mt('Enable WYSIWYG editor'); + my $warning=''; + if ($env{'user.adv'}) { + $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.")."
"; + } $r->print(<'.&mt('Setting WYSIWYG editor to:').' '.&mt($newsetting).'
'); + &Apache::lonnet::appenv({'environment.wysiwygeditor' => $newsetting}); +# $r->print(''.&mt('Setting WYSIWYG editor to:').' '.&mt($newsetting).'
'); + print_main_menu($r,''.&mt('Setting WYSIWYG editor to:').' ' + .&mt($newsetting).'
'); } ################################################################ @@ -132,6 +145,12 @@ sub verify_and_change_wysiwyg { ################################################################ sub languagechanger { my $r = shift; + + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changelanguages', + text => 'Change Language'}); + $r->print(Apache::loncommon::start_page('Change Language')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Language')); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -167,16 +186,17 @@ sub verify_and_change_languages { my $message=''; if ($newlanguage) { &Apache::lonnet::put('environment',{'languages' => $newlanguage}); - &Apache::lonnet::appenv('environment.languages' => $newlanguage); - $message='Set new preferred languages to '.$newlanguage; + &Apache::lonnet::appenv({'environment.languages' => $newlanguage}); + $message=&mt('Set new preferred languages to ').'"'.$newlanguage.'".'; } else { &Apache::lonnet::del('environment',['languages']); &Apache::lonnet::delenv('environment\.languages'); - $message='Reset preferred language'; + $message=&mt('Reset preferred language.'); } - $r->print(< TeX to HTML
-
+
+$lt{'preftxt'}:
+$selectionbox
jsMath
+
+
+
$jsMath_start - + +
++
- Convert to Images
-
-
+
+
+
ENDLSCREEN if ($env{'environment.texengine'} ne 'jsMath') { @@ -252,27 +292,28 @@ sub verify_and_change_texengine { my $newtexengine = $env{'form.texengine'}; $newtexengine=~s/[^\-\w]//g; if ($newtexengine eq 'ttm') { - &Apache::lonnet::appenv('browser.mathml' => 1); + &Apache::lonnet::appenv({'browser.mathml' => 1}); } else { if ($env{'environment.texengine'} eq 'ttm') { - &Apache::lonnet::appenv('browser.mathml' => 0); + &Apache::lonnet::appenv({'browser.mathml' => 0}); } } my $message=''; if ($newtexengine) { &Apache::lonnet::put('environment',{'texengine' => $newtexengine}); - &Apache::lonnet::appenv('environment.texengine' => $newtexengine); - $message='Set new preferred math display to '.$newtexengine; + &Apache::lonnet::appenv({'environment.texengine' => $newtexengine}); + $message=&mt('Set new preferred math display to ').'"'.$newtexengine.'".'; } else { &Apache::lonnet::del('environment',['texengine']); &Apache::lonnet::delenv('environment\.texengine'); - $message='Reset preferred math display.'; + $message=&mt('Reset preferred math display.'); } - $r->print(<@@ -1099,12 +1541,18 @@ ENDERROR my $result = &Apache::lonnet::changepass ($user,$domain,$currentpass,$newpass1,$homeserver,$caller); # Inform the user the password has (not?) been changed + my $message; if ($result =~ /^ok$/) { - $r->print("".&mt('The password for [_1] was successfully changed',$user)."
"); + $message = &mt('The password for [_1] was successfully changed',$user); + print_main_menu($r, $message); +# $r->print("".&mt('The password for [_1] was successfully changed',$user)."
"); } else { # error error: run in circles, scream and shout - $r->print("".&mt("The password for [_1] was not changed",$user)."
". - &mt('Please make sure your old password was entered correctly').'.'); + $message = &mt("The password for [_1] was not changed",$user) + .&mt('Please make sure your old password was entered correctly.'); + print_main_menu($r, $message); +# $r->print("".&mt("The password for [_1] was not changed",$user)."
". +# &mt('Please make sure your old password was entered correctly.')); return 1; } return; @@ -1115,6 +1563,11 @@ ENDERROR ################################################################ sub discussionchanger { my $r = shift; + Apache::lonhtmlcommon::add_breadcrumb( + { 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')); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -1224,11 +1677,11 @@ sub verify_and_change_discussion { if (defined($env{'form.discdisp'}) ) { my $newdisp = $env{'form.newdisp'}; if ($newdisp eq 'unread') { - $message .='In discussions: only new posts will be displayed.
'; + $message .=&mt('In discussions: only new posts will be displayed.').'
'; &Apache::lonnet::put('environment',{'discdisplay' => $newdisp}); - &Apache::lonnet::appenv('environment.discdisplay' => $newdisp); + &Apache::lonnet::appenv({'environment.discdisplay' => $newdisp}); } else { - $message .= 'In discussions: all posts will be displayed.
'; + $message .= &mt('In discussions: all posts will be displayed.').'
'; &Apache::lonnet::del('environment',['discdisplay']); &Apache::lonnet::delenv('environment\.discdisplay'); } @@ -1236,18 +1689,19 @@ sub verify_and_change_discussion { if (defined($env{'form.discmark'}) ) { my $newmark = $env{'form.newmark'}; if ($newmark eq 'ondisp') { - $message.='In discussions: new posts will be cease to be identified as "new" after display.
'; + $message.=&mt('In discussions: new posts will be cease to be identified as "NEW" after display.').'
'; &Apache::lonnet::put('environment',{'discmarkread' => $newmark}); - &Apache::lonnet::appenv('environment.discmarkread' => $newmark); + &Apache::lonnet::appenv({'environment.discmarkread' => $newmark}); } else { - $message.='In discussions: posts will be identified as "new" until marked as read by the reader.
'; + $message.=&mt('In discussions: posts will be identified as "NEW" until marked as read by the reader.').'
'; &Apache::lonnet::del('environment',['discmarkread']); &Apache::lonnet::delenv('environment\.discmarkread'); } } - $r->print(<print(< '/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 $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get('environment',['course_init_display']); @@ -1303,7 +1762,7 @@ sub verify_and_change_coursepage { if ($newdisp eq 'firstres') { $message .= $lt{'ywbt'}.'
'; &Apache::lonnet::put('environment',{'course_init_display' => $newdisp}); - &Apache::lonnet::appenv('environment.course_init_display' => $newdisp); + &Apache::lonnet::appenv({'environment.course_init_display' => $newdisp}); } else { $message .= $lt{'apwb'}.'
'; &Apache::lonnet::del('environment',['course_init_display']); @@ -1322,12 +1781,195 @@ sub verify_and_change_coursepage { $refpage.'">'.$lt{'dasp'}.''; } } - $r->print(<
-ENDVCSCREEN +# $r->print(<
+#ENDVCSCREEN + print_main_menu($r, $message); } +sub print_main_menu { + 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 @menu= + ({ categorytitle=>'Personal Data', + items =>[ + { linktext => 'About Me', + url => $aboutmeurl, + permission => 'F', + #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=>'Message Management', + items =>[ + { linktext => 'Messages & 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 Preferences', + 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 bulletin boards and individual resources in all your courses.' + }, + ] + }, + { 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 Preferences', + url => '/adm/preferences?action=changewysiwyg', + permission => 'F', + #help => '', + icon => 'edit-select-all.png', + linktitle => 'Enable or disable the WYSIWYG-Editor.' + }, + { linktext => $role.' Page Preferences', + 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=>'Other', + items =>[ + { linktext => 'Register Response Devices ("Clickers")', + 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 Preference', + 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('Change Preferences')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Preferences')); + $r->print($message); + $r->print(Apache::lonhtmlcommon::generate_menu(@menu)); + $r->print(Apache::loncommon::end_page()); +} ###################################################### # other handler subroutines # @@ -1336,7 +1978,91 @@ ENDVCSCREEN ################################################################ # 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'}); + 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 $user = $env{'user.name'}; my $domain = $env{'user.domain'}; @@ -1395,16 +2121,17 @@ sub handler { push (@Options,({ action => 'changemsgforward', linktext => 'Change Message Forwarding and Notification Email Addresses', href => '/adm/preferences', - help => 'Prefs_Forwarding', + help => 'Prefs_Messages', breadcrumb => { href => '/adm/preferences?action=changemsgforward', - text => 'Change Message Forwarding'}, + text => 'Change Message Forwarding/Notification'}, subroutine => \&msgforwardchanger, }, { action => 'verify_and_change_msgforward', + help => 'Prefs_Messages', breadcrumb => { href => '/adm/preferences?action=changemsgforward', - text => 'Change Message Forwarding'}, + text => 'Change Message Forwarding/Notification'}, printmenu => 'yes', subroutine => \&verify_and_change_msgforward })); my $aboutmeaction= @@ -1539,6 +2266,55 @@ sub handler { printmenu => 'yes', })); + push (@Options,({ action => 'changeclicker', + linktext => 'Register Response Devices ("Clickers")', + href => '/adm/preferences', + subroutine => \&clickerchanger, + breadcrumb => + { href => '/adm/preferences?action=changeclicker', + text => 'Register Clicker'}, + }, + { action => 'verify_and_change_clicker', + subroutine => \&verify_and_change_clicker, + breadcrumb => + { href => '/adm/preferences?action=changeclicker', + text => 'Register Clicker'}, + printmenu => 'yes', + })); + my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au']); + if (keys(%author_roles) > 0) { + push (@Options,({ action => 'changedomcoord', + linktext => 'Restrict Domain Coordinator Access', + href => '/adm/preferences', + subroutine => \&domcoordchanger, + breadcrumb => + { href => '/adm/preferences?action=changedomcoord', + text => 'Restrict Domain Coordinator Access'}, + }, + { action => 'verify_and_change_domcoord', + subroutine => \&verify_and_change_domcoord, + breadcrumb => + { href => '/adm/preferences?action=changedomcoord', + text => 'Restrict Domain Coordinator Access'}, + printmenu => 'yes', + })); + } + + push (@Options,({ action => 'lockwarning', + subroutine => \&lockwarning, + breadcrumb => + { href => '/adm/preferences?action=lockwarning', + text => 'Lock Warnings'}, + }, + { action => 'verify_and_change_locks', + subroutine => \&verify_and_change_lockwarning, + breadcrumb => + { href => '/adm/preferences?action=lockwarning', + text => 'Lockwarnings'}, + printmenu => 'yes', + })); + + if (&Apache::lonnet::allowed('whn',$env{'request.course.id'}) || &Apache::lonnet::allowed('whn',$env{'request.course.id'}.'/' .$env{'request.course.sec'})) { @@ -1558,7 +2334,7 @@ sub handler { })); } - if ($env{'user.name'} =~ /^(albertel|fox|foxr|koretemey|korte|hallmat3|turtle|raeburn)$/) { + if ($env{'user.name'} =~ /^(albertel|fox|foxr|kortemey|korte|raeburn)$/) { push (@Options,({ action => 'debugtoggle', printmenu => 'yes', subroutine => \&toggle_debug, @@ -1641,7 +2417,7 @@ sub toggle_debug { if ($env{'user.debug'}) { &Apache::lonnet::delenv('user\.debug'); } else { - &Apache::lonnet::appenv('user.debug' => 1); + &Apache::lonnet::appenv({'user.debug' => 1}); } }