--- loncom/interface/lonpreferences.pm 2009/03/21 04:41:50 1.125.2.3 +++ loncom/interface/lonpreferences.pm 2009/02/23 22:42:33 1.145 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.125.2.3 2009/03/21 04:41:50 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.145 2009/02/23 22:42:33 schualex 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"'; @@ -120,7 +126,7 @@ $warning <label><input type="radio" name="wysiwyg" value="off" $onselect /> $switchoff</label><br /> <label><input type="radio" name="wysiwyg" value="on" $offselect /> $switchon</label> ENDLSCREEN - $r->print('<br /><input type="submit" value="'.&mt('Change').'" />'); + $r->print('<br /><input type="submit" value="'.&mt('Save').'" />'); } @@ -129,7 +135,9 @@ sub verify_and_change_wysiwyg { my $newsetting=$env{'form.wysiwyg'}; &Apache::lonnet::put('environment',{'wysiwygeditor' => $newsetting}); &Apache::lonnet::appenv({'environment.wysiwygeditor' => $newsetting}); - $r->print('<p>'.&mt('Setting WYSIWYG editor to:').' '.&mt($newsetting).'</p>'); +# $r->print('<p>'.&mt('Setting WYSIWYG editor to:').' '.&mt($newsetting).'</p>'); + print_main_menu($r,'<p>'.&mt('Setting WYSIWYG editor to:').' ' + .&mt($newsetting).'</p>'); } ################################################################ @@ -137,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 @@ -158,7 +172,7 @@ sub languagechanger { <input type="hidden" name="action" value="verify_and_change_languages" /> <br />$pref: $selectionbox ENDLSCREEN - $r->print('<br /><input type="submit" value="'.&mt('Change').'" />'); + $r->print('<br /><input type="submit" value="'.&mt('Save').'" />'); } @@ -180,9 +194,10 @@ sub verify_and_change_languages { $message=&mt('Reset preferred language.'); } &Apache::loncommon::flush_langs_cache($user,$domain); - $r->print(<<ENDVCSCREEN); -$message -ENDVCSCREEN + print_main_menu($r, $message); +# $r->print(<<ENDVCSCREEN); +#$message +#ENDVCSCREEN } ################################################################ @@ -190,6 +205,11 @@ ENDVCSCREEN ################################################################ sub texenginechanger { my $r = shift; + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changetexenginepref', + text => 'Change How Math Equations Are Displayed'}); + $r->print(Apache::loncommon::start_page('Change How Math Equations Are Displayed')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change How Math Equations Are Displayed')); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get('environment',['texengine']); @@ -207,7 +227,7 @@ sub texenginechanger { my %lt=&Apache::lonlocal::texthash( 'headline' => 'Change Math Preferences', 'preftxt' => 'Preferred method to display Math', - 'change' => 'Change', + 'change' => 'Save', 'exmpl' => 'Examples', 'jsmath' => 'jsMath:', 'tth' => 'tth (TeX to HTML):', @@ -219,8 +239,9 @@ sub texenginechanger { <form name="prefs" action="/adm/preferences" method="post"> <input type="hidden" name="action" value="verify_and_change_texengine" /> <p> -$lt{'preftxt'}:<br /> -$selectionbox <input type="submit" value="$lt{'change'}" /> +$lt{'preftxt'}: $selectionbox +<br /> +<input type="submit" value="$lt{'change'}" /> </p> </form> <br /> @@ -230,7 +251,7 @@ $lt{'exmpl'} <h3>$lt{'jsmath'}</h3> <p> $jsMath_start -<script type="text/javascript" language="JavaScript"> +<script type="text/javascript"> if (jsMath.nofonts == 1) { document.writeln ('<div style="padding: 10; border-style: solid; border-width:3;' @@ -260,7 +281,7 @@ if (jsMath.nofonts == 1) { </p> ENDLSCREEN if ($env{'environment.texengine'} ne 'jsMath') { - $r->print('<script type="text/javascript" language="JavaScript">jsMath.Process()</script>'); + $r->print('<script type="text/javascript">jsMath.Process()</script>'); } } @@ -291,9 +312,10 @@ sub verify_and_change_texengine { } - $r->print(<<ENDVCSCREEN); -$message -ENDVCSCREEN +# $r->print(<<ENDVCSCREEN); +#$message +#ENDVCSCREEN + print_main_menu($r, $message); } ################################################################ @@ -307,6 +329,11 @@ sub rolesprefchanger { my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get ('environment',['recentroles','recentrolesn']); + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changerolespref', + text => 'Change '.$role.' Page Pref'}); + $r->print(Apache::loncommon::start_page('Change '.$role.' Page Pref')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change '.$role.' Page Pref')); my $hotlist_flag=$userenv{'recentroles'}; my $hotlist_n=$userenv{'recentrolesn'}; my $checked; @@ -376,7 +403,7 @@ sub rolesprefchanger { </p> '.$roles_check_list.' <br /> -<input type="submit" value="'.&mt('Change').'" /> +<input type="submit" value="'.&mt('Save').'" /> </form>'); } @@ -470,9 +497,10 @@ sub verify_and_change_rolespref { } $message .= "<hr /><br />\n"; - $r->print(<<ENDRPSCREEN); -$message -ENDRPSCREEN +# $r->print(<<ENDRPSCREEN); +#$message +#ENDRPSCREEN + print_main_menu($r, $message); } @@ -488,22 +516,30 @@ sub screennamechanger { ('environment',['screenname','nickname']); my $screenname=$userenv{'screenname'}; my $nickname=$userenv{'nickname'}; - my %lt = &Apache::lonlocal::texthash( - text_screenname => 'New screenname (shown if you post anonymously):', - text_nickname => 'New nickname (shown if you post non-anonymously):', - text_submit => 'Change', - ); - $r->print(<<ENDSCREEN); -<form name="prefs" action="/adm/preferences" method="post"> -<input type="hidden" name="action" value="verify_and_change_screenname" /> -<br />$lt{'text_screenname'} -<input type="text" size="20" value="$screenname" name="screenname" /> -<br />$lt{'text_nickname'} -<input type="text" size="20" value="$nickname" name="nickname" /> -<br /> -<input type="submit" value="$lt{'text_submit'}" /> -</form> -ENDSCREEN + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changescreenname', + text => 'Change Screen Name'}); + $r->print(Apache::loncommon::start_page('Change Screen Name')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Screen Name')); + $r->print('<p>' + .&mt('Change the name that is displayed in your posts.') + .'</p>' + ); + $r->print('<form name="prefs" action="/adm/preferences" method="post">' + .'<input type="hidden" name="action" value="verify_and_change_screenname" />' + .&Apache::lonhtmlcommon::start_pick_box() + .&Apache::lonhtmlcommon::row_title(&mt('New screenname (shown if you post anonymously)')) + .'<input type="text" size="20" value="'.$screenname.'" name="screenname" />' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title(&mt('New nickname (shown if you post non-anonymously)')) + .'<input type="text" size="20" value="'.$nickname.'" name="nickname" />' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title() + .'<input type="submit" value="'.&mt('Save').'" />' + .&Apache::lonhtmlcommon::row_closure(1) + .&Apache::lonhtmlcommon::end_pick_box() + .'</form>' + ); } sub verify_and_change_screenname { @@ -537,9 +573,10 @@ sub verify_and_change_screenname { $message.=&mt('Reset nickname.'); } &Apache::lonnet::devalidate_cache_new('namescache',$user.':'.$domain); - $r->print(<<ENDVCSCREEN); -$message -ENDVCSCREEN +# $r->print(<<ENDVCSCREEN); +#$message +#ENDVCSCREEN + print_main_menu($r, $message); } ################################################################ @@ -547,6 +584,12 @@ ENDVCSCREEN ################################################################ sub iconchanger { my $r = shift; + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changeicons', + text => 'Change Main Menu'}); + $r->print(Apache::loncommon::start_page('Change Main Menu')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Main Menu')); + my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -565,7 +608,7 @@ sub iconchanger { my $useicons=&mt('Use icons and text'); my $usebuttons=&mt('Use buttons and text'); my $useicononly=&mt('Use icons only'); - my $change=&mt('Change'); + my $change=&mt('Save'); $r->print(<<ENDSCREEN); <form name="prefs" action="/adm/preferences" method="post"> <input type="hidden" name="action" value="verify_and_change_icons" /> @@ -585,7 +628,8 @@ sub verify_and_change_icons { &Apache::lonnet::put('environment',{'icons' => $newicons}); &Apache::lonnet::appenv({'environment.icons' => $newicons}); - $r->print(&mt('Set menu mode to [_1].',$newicons)); +# $r->print(&mt('Set menu mode to [_1].',$newicons)); + print_main_menu($r, &mt('Set menu mode to [_1].',$newicons)); } ################################################################ @@ -594,6 +638,11 @@ sub verify_and_change_icons { sub clickerchanger { my $r = shift; + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changeclicker', + text => 'Register Clicker'}); + $r->print(Apache::loncommon::start_page('Register Clicker')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Register Clicker')); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -627,7 +676,8 @@ sub verify_and_change_clicker { $newclickers=~s/\,$//; &Apache::lonnet::put('environment',{'clickers' => $newclickers}); &Apache::lonnet::appenv({'environment.clickers' => $newclickers}); - $r->print(&mt('Registering clickers: [_1]',$newclickers)); +# $r->print(&mt('Registering clickers: [_1]',$newclickers)); + print_main_menu($r, &mt('Registering clickers: [_1]',$newclickers)); } ################################################################ @@ -636,6 +686,11 @@ sub verify_and_change_clicker { sub domcoordchanger { my $r = shift; + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changedomcoord', + text => 'Restrict Domain Coordinator Access'}); + $r->print(Apache::loncommon::start_page('Restrict Domain Coordinator Access')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Restrict Domain Coordinator Access')); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -646,7 +701,7 @@ sub domcoordchanger { } my $text=&mt('By default, the Domain Coordinator can enter your construction space.'); my $construction=&mt('Block access to construction space'); - my $change=&mt('Change'); + my $change=&mt('Save'); $r->print(<<ENDSCREEN); <form name="prefs" action="/adm/preferences" method="post"> <input type="hidden" name="action" value="verify_and_change_domcoord" /> @@ -665,7 +720,8 @@ sub verify_and_change_domcoord { if ($env{'form.construction'}) { $domcoord{'domcoord.author'}='blocked'; } &Apache::lonnet::put('environment',\%domcoord); &Apache::lonnet::appenv({'environment.domcoord.author' => $domcoord{'domcoord.author'}}); - $r->print(&mt('Registering Domain Coordinator access restrictions.')); +# $r->print(&mt('Registering Domain Coordinator access restrictions.')); + print_main_menu($r, &mt('Registering Domain Coordinator access restrictions.')); } ################################################################# @@ -721,14 +777,20 @@ sub msgforwardchanger { foad => 'Forwarding Address(es)', noti => 'Notification E-mail Address(es)', foad_exmpl => 'e.g. <tt>userA:domain1,userB:domain2,...</tt>', - mnot => 'Email Address(es) which should be notified about new LON-CAPA messages', # old: 'Message Notification Email Address(es)', + 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>', - chg => 'Change', + chg => 'Save', email => 'The e-mail address entered in row ', 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 to preferences menu', + prme => 'Back', ); + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changemsgforward', + text => 'Change Message Forwarding/Notification'}); + $r->print(Apache::loncommon::start_page('Change Message Forwarding/Notification')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Message Forwarding/Notification')); 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"); @@ -736,7 +798,7 @@ sub msgforwardchanger { my %allnot = &get_notifications(\%userenv); my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email(); my $jscript = qq| -<script type="text/javascript" language="JavaScript"> +<script type="text/javascript"> function validate() { for (var i=0; i<document.prefs.numnotify.value; i++) { var checkaddress = 0; @@ -894,8 +956,8 @@ ENDMSG $r->print(qq| <br /><hr /> <input type="hidden" name="numnotify" value="$num" /> -<input type="button" value="$lt{'chg'}" onclick="javascript:validate()" /> <input type="button" value="$lt{'prme'}" onclick="location.href='/adm/preferences'" /> +<input type="button" value="$lt{'chg'}" onclick="javascript:validate()" /> </form> |); @@ -1024,6 +1086,11 @@ sub verify_and_change_msgforward { sub colorschanger { my $r = shift; + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changecolors', + text => 'Change Colors'}); + $r->print(Apache::loncommon::start_page('Change Colors')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Colors')); # figure out colors my $function=&Apache::loncommon::get_users_function(); my $domain=&Apache::loncommon::determinedomain(); @@ -1049,6 +1116,9 @@ sub colorschanger { } my $end_data_table = &Apache::loncommon::end_data_table(); my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); + my $save = &mt('Save'); + my $rstall = &mt('Reset All'); + my $resetdefault = &mt('Reset All Colors to Default'); $r->print(<<ENDCOL); <script type="text/javascript"> @@ -1087,8 +1157,8 @@ $start_data_table $chtable $end_data_table </table> -<input type="submit" value="Change Custom Colors" /> -<input type="submit" name="resetall" value="Reset All Colors to Default" /> +<input type="submit" value="$save" /> +<input type="submit" name="resetall" value="$rstall" title="$resetdefault" /> </form> ENDCOL } @@ -1124,12 +1194,13 @@ sub verify_and_change_colors { &Apache::lonnet::put('environment',{'color.timestamp' => $now}); &Apache::lonnet::appenv({'environment.color.timestamp' => $now}); - $r->print(<<ENDVCCOL); -$message -<form name="client" action="/adm/preferences" method="post"> -<input type="hidden" name="action" value="changecolors" /> -</form> -ENDVCCOL + print_main_menu($r, $message); +# $r->print(<<ENDVCCOL); +#$message +#<form name="client" action="/adm/preferences" method="post"> +#<input type="hidden" name="action" value="changecolors" /> +#</form> +#ENDVCCOL } ###################################################### @@ -1141,6 +1212,13 @@ sub passwordchanger { # Passwords are encrypted using londes.js (DES encryption) $errormessage = ($errormessage || ''); my ($user,$domain,$currentpass,$defdom); + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changepass', + text => 'Change Password'}); + unless ($caller eq 'reset_by_email') { + $r->print(Apache::loncommon::start_page('Change Password')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Password')); + } if ((!defined($caller)) || ($caller eq 'preferences')) { $user = $env{'user.name'}; $domain = $env{'user.domain'}; @@ -1220,7 +1298,7 @@ ENDFORM sub jscript_send { my ($caller) = @_; my $output = qq| -<script type="text/javascript" language="JavaScript"> +<script language="JavaScript"> function send() { uextkey=this.document.client.elements.ukey_cpass.value; @@ -1266,7 +1344,7 @@ sub client_form { 'currentpass' => 'Current Password', 'newpass' => 'New Password', 'confirmpass' => 'Confirm Password', - 'changepass' => 'Change Password'); + 'changepass' => 'Save'); my $output = qq| <form name="client" > @@ -1474,12 +1552,23 @@ 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("<h3>".&mt('The password for [_1] was successfully changed',$user)."</h3>"); + $message = &mt('The password for [_1] was successfully changed.',$user); + if ($caller eq 'reset_by_email') { + $r->print($message.'<br />'); + } else { + &print_main_menu($r, $message); + } +# $r->print("<h3>".&mt('The password for [_1] was successfully changed',$user)."</h3>"); } else { # error error: run in circles, scream and shout - $r->print("<h3><span class='LC_error'>".&mt("The password for [_1] was not changed",$user)."</span></h3>". - &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.'); + unless ($caller eq 'reset_by_email') { + &print_main_menu($r, $message); + } +# $r->print("<h3><span class='LC_error'>".&mt("The password for [_1] was not changed",$user)."</span></h3>". +# &mt('Please make sure your old password was entered correctly.')); return 1; } return; @@ -1490,6 +1579,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 @@ -1518,9 +1612,9 @@ sub discussionchanger { 'pref' => 'Display Preference', 'curr' => 'Current setting ', 'actn' => 'Action', - 'sdpf' => 'Set display preferences for discussion posts for both bulletin 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', - 'whpo' => 'Which posts are displayed when you display a bulletin 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"', 'allposts' => 'All posts', 'unread' => 'New posts only', @@ -1580,6 +1674,7 @@ END END $r->print(&Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table()); + $r->print('<br /><br /><input type="submit" name="sub" value="'.&mt('Save').'" /><br /><br />'.&mt('Note').': '.$lt{'thde'}.'</form>'); } @@ -1612,9 +1707,10 @@ sub verify_and_change_discussion { &Apache::lonnet::delenv('environment.discmarkread'); } } - $r->print(<<ENDVCSCREEN); -$message -ENDVCSCREEN +# $r->print(<<ENDVCSCREEN); +#$message +#ENDVCSCREEN + print_main_menu($r, $message); } ################################################################ @@ -1622,6 +1718,11 @@ ENDVCSCREEN ################################################################ sub coursedisplaychanger { my $r = shift; + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changecourseinit', + text => 'Change Course Init. Pref.'}); + $r->print(Apache::loncommon::start_page('Change Course Initialization Preference')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Course Init. Pref.')); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get('environment',['course_init_display']); @@ -1657,7 +1758,7 @@ sub coursedisplaychanger { <label><input type="radio" name="newdisp" value="firstres" $firstselect /> $whatsnew_off</label><br /> <label><input type="radio" name="newdisp" value="whatsnew" $whatsnewselect /> $whatsnew_on</label><input type="hidden" name="refpage" value="$env{'form.refpage'}" /> ENDLSCREEN - $r->print('<br /><br /><input type="submit" value="'.&mt('Change').'" /> + $r->print('<br /><br /><input type="submit" value="'.&mt('Save').'" /> </form>'); } @@ -1670,7 +1771,7 @@ sub verify_and_change_coursepage { 'ywbt' => 'you will be taken to the start of the course.', 'apwb' => 'a page will be displayed that lists items in the course that may require action from you.', 'gtts' => 'Go to the start of the course', - 'dasp' => "Display the What's New page listing course action items", + 'dasp' => "Display the What's New Page listing course action items", ); my $newdisp = $env{'form.newdisp'}; $message = '<b>'.$lt{'defs'}.'</b>: '.$lt{'when'}.', '; @@ -1696,12 +1797,199 @@ sub verify_and_change_coursepage { $refpage.'">'.$lt{'dasp'}.'</a></font>'; } } - $r->print(<<ENDVCSCREEN); -$message -<br /><br /> -ENDVCSCREEN +# $r->print(<<ENDVCSCREEN); +#$message +#<br /><br /> +#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 %permissions; +if (&Apache::lonnet::usertools_access($user,$domain,'aboutme')) { + $permissions{'aboutme'} = 'F'; +} +my @menu= + ({ categorytitle=>'Personal Data', + items =>[ + { linktext => 'Personal Information Page', + url => $aboutmeurl, + permission => $permissions{'aboutme'}, + #help => 'Prefs_About_Me', + icon => 'system-users.png', + linktitle => 'Edit information about yourself that should be displayed on your public profile.' + }, + { linktext => 'Screen Name', + url => '/adm/preferences?action=changescreenname', + permission => 'F', + #help => 'Prefs_Screen_Name_Nickname', + icon => 'preferences-desktop-font.png', + linktitle => 'Change the name that is displayed in your posts.' + }, + ] + }, + { categorytitle=>'Page Display Settings', + items =>[ + { linktext => 'Color Scheme', + url => '/adm/preferences?action=changecolors', + permission => 'F', + #help => 'Change_Colors', + icon => 'preferences-desktop-theme.png', + linktitle => 'Change LON-CAPA default colors.' + }, + { linktext => 'Menu Display', + url => '/adm/preferences?action=changeicons', + permission => 'F', + #help => '', + icon => 'preferences-system-windows.png', + linktitle => 'Change whether the menus are displayed with buttons, icons or icons and text.' + } + + ] + }, + { categorytitle=>'Content Display Settings', + items =>[ + { linktext => 'Language', + url => '/adm/preferences?action=changelanguages', + permission => 'F', + #help => 'Prefs_Language', + icon => 'preferences-desktop-locale.png', + linktitle => 'Choose the default language for this user.' + }, + { linktext => 'WYSIWYG Editor', + url => '/adm/preferences?action=changewysiwyg', + permission => 'F', + #help => '', + icon => 'edit-select-all.png', + linktitle => 'Enable or disable the WYSIWYG-Editor.' + }, + { linktext => $role.' Page', + url => '/adm/preferences?action=changerolespref', + permission => 'F', + #help => '', + icon => 'sctr.png', + linktitle => 'Configure the roles hotlist.' + }, + { linktext => 'Display of Scientific Equations', + url => '/adm/preferences?action=changetexenginepref', + permission => 'F', + #help => '', + icon => 'stat.png', + linktitle => 'Change how Scientific Equations are displayed.' + }, + ] + }, + { categorytitle=>'Message Management', + items =>[ + { linktext => 'Messages & Notifications', + url => '/adm/preferences?action=changemsgforward', + permission => 'F', + #help => 'Prefs_Messages', + icon => 'mail-reply-all.png', + linktitle => 'Change messageforwarding or notifications settings.' + }, + { linktext => 'Discussion Display', + url => '/adm/preferences?action=changediscussions', + permission => 'F', + #help => 'Change_Discussion_Display', + icon => 'mail-message-new.png', + linktitle => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.' + }, + ] + }, + { categorytitle=>'Other', + items =>[ + { linktext => 'Register Response Devices ("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', + 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 # @@ -1710,7 +1998,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'}; @@ -1767,7 +2139,7 @@ sub handler { })); push (@Options,({ action => 'changemsgforward', - linktext => 'Change Message Forwarding and Notification Email Addresses', + linktext => 'Change Message Forwarding and Notification E-mail Addresses', href => '/adm/preferences', help => 'Prefs_Messages', breadcrumb => @@ -1780,16 +2152,15 @@ sub handler { breadcrumb => { href => '/adm/preferences?action=changemsgforward', text => 'Change Message Forwarding/Notification'}, - printmenu => 'no', + printmenu => 'yes', subroutine => \&verify_and_change_msgforward })); - if (&Apache::lonnet::usertools_access($user,$domain,'aboutme')) { - my $aboutmeaction = '/adm/'.$domain.'/'.$user.'/aboutme'; - push (@Options,{ action => 'none', - linktext => - q{Edit the 'About Me' Personal Information Screen}, - help => 'Prefs_About_Me', - href => $aboutmeaction}); - } + my $aboutmeaction= + '/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme'; + push (@Options,{ action => 'none', + linktext => + q{Edit the Personal Information Page}, + help => 'Prefs_About_Me', + href => $aboutmeaction}); push (@Options,({ action => 'changecolors', linktext => 'Change Color Scheme', href => '/adm/preferences',