--- loncom/interface/lonpreferences.pm 2016/09/19 03:21:20 1.196.4.23 +++ loncom/interface/lonpreferences.pm 2018/09/03 14:03:03 1.196.4.24 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.196.4.23 2016/09/19 03:21:20 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.196.4.24 2018/09/03 14:03:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -722,8 +722,10 @@ sub domcoordchanger { my $text=&mt('By default, the Domain Coordinator can enter your Authoring Space.'); my $construction=&mt('Block access to Authoring Space'); my $change=&mt('Save'); + my $returnurl = &HTML::Entities::encode($env{'form.returnurl'},'"<>&\''); $r->print(< + $text

@@ -748,7 +750,11 @@ sub verify_and_change_domcoord { } my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Block access to Authoring Space').'',''.$status.'')); $message=&Apache::loncommon::confirmwrapper($message); - &print_main_menu($r,$message); + if ($env{'form.returnurl'}) { + &do_redirect($r,$env{'form.returnurl'},$message); + } else { + &print_main_menu($r,$message); + } } ################################################################# @@ -1154,7 +1160,6 @@ sub colorschanger { ' . $colorchooser . ' '); - $r->print(< @@ -1472,7 +1477,7 @@ sub server_form { } sub verify_and_change_password { - my ($r,$caller,$mailtoken) = @_; + my ($r,$caller,$mailtoken,$ended) = @_; my ($user,$domain,$homeserver); my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('passwd'); @@ -1617,6 +1622,9 @@ ENDERROR $r->print($message.'
'); } else { &print_main_menu($r, $message); + if (ref($ended)) { + $$ended = 1; + } } } else { # error error: run in circles, scream and shout @@ -1631,6 +1639,9 @@ ENDERROR &mt("The password for user [_1] was not changed.",''.$user.'').' '.&mt('Please make sure your old password was entered correctly.'),1); $message=&Apache::loncommon::confirmwrapper($message); &print_main_menu($r, $message); + if (ref($ended)) { + $$ended = 1; + } } } return; @@ -1885,8 +1896,10 @@ sub author_space_settings { my $text=&mt('By default, CodeMirror an editor with advanced functionality for editing code is activated for authors.'); my $cmoff=&mt('Deactivate CodeMirror. This can improve performance on slow computers and accessibility.'); my $change=&mt('Save'); + my $returnurl = &HTML::Entities::encode($env{'form.returnurl'},'"<>&\''); $r->print(< + $text

@@ -1914,7 +1927,11 @@ sub change_authoring_settings { } my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Deactivate CodeMirror in Authoring Space').'',''.$status.'')); $message=&Apache::loncommon::confirmwrapper($message); - &print_main_menu($r,$message); + if ($env{'form.returnurl'}) { + &do_redirect($r,$env{'form.returnurl'},$message); + } else { + &print_main_menu($r,$message); + } } } @@ -2227,10 +2244,22 @@ sub handler { ['action','wysiwyg','returnurl','refpage']); # Apache::lonhtmlcommon::clear_breadcrumbs(); - my ($brlink,$brtxt,$brhelp); + my ($brlink,$brtxt,$brhelp,$ended); if (($env{'form.action'} eq 'changerolespref') && ($env{'form.returnurl'} eq '/adm/roles')) { $brlink ='/adm/roles'; $brtxt = 'User Roles'; + } elsif ((($env{'form.action'} eq 'changedomcoord') || + ($env{'form.action'} eq 'authorsettings')) && + (($env{'form.returnurl'} =~ m{^/(priv/|res($|/))}) || + ($env{'form.returnurl'} eq '/adm/createuser'))) { + $brlink = $env{'form.returnurl'}; + if ($env{'form.returnurl'} eq '/adm/createuser') { + $brtxt = 'User Management'; + } elsif ($env{'form.returnurl'} =~ m{^/res($\/)}) { + $brtxt = 'Browse published resources'; + } else { + $brtxt = 'Authoring Space'; + } } else { $brlink ='/adm/preferences'; $brtxt = 'Set User Preferences'; @@ -2242,14 +2271,16 @@ sub handler { help => $brhelp,}); if(!exists $env{'form.action'}) { &print_main_menu($r); + $ended = 1; }elsif($env{'form.action'} eq 'changepass'){ &passwordchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_pass'){ - &verify_and_change_password($r,'preferences'); + &verify_and_change_password($r,'preferences','',\$ended); }elsif($env{'form.action'} eq 'changescreenname'){ &screennamechanger($r); }elsif($env{'form.action'} eq 'verify_and_change_screenname'){ &verify_and_change_screenname($r); + $ended = 1; }elsif($env{'form.action'} eq 'changemsgforward'){ &msgforwardchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_msgforward'){ @@ -2258,38 +2289,47 @@ sub handler { &colorschanger($r); }elsif($env{'form.action'} eq 'verify_and_change_colors'){ &verify_and_change_colors($r); + $ended = 1; }elsif($env{'form.action'} eq 'changelanguages'){ &languagechanger($r); }elsif($env{'form.action'} eq 'verify_and_change_languages'){ &verify_and_change_languages($r); + $ended = 1; }elsif($env{'form.action'} eq 'changewysiwyg'){ &wysiwygchanger($r); }elsif($env{'form.action'} eq 'set_wysiwyg'){ &verify_and_change_wysiwyg($r); + $ended = 1; }elsif($env{'form.action'} eq 'changediscussions'){ &discussionchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_discussion'){ &verify_and_change_discussion($r); + $ended = 1; }elsif($env{'form.action'} eq 'changerolespref'){ &rolesprefchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_rolespref'){ &verify_and_change_rolespref($r); + $ended = 1; }elsif($env{'form.action'} eq 'changetexenginepref'){ &texenginechanger($r); }elsif($env{'form.action'} eq 'verify_and_change_texengine'){ &verify_and_change_texengine($r); + $ended = 1; }elsif($env{'form.action'} eq 'changeicons'){ &iconchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_icons'){ &verify_and_change_icons($r); + $ended = 1; }elsif($env{'form.action'} eq 'changeclicker'){ &clickerchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_clicker'){ &verify_and_change_clicker($r); + $ended = 1; }elsif($env{'form.action'} eq 'changedomcoord'){ &domcoordchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_domcoord'){ &verify_and_change_domcoord($r); + $ended = 1; }elsif($env{'form.action'} eq 'lockwarning'){ &lockwarning($r); }elsif($env{'form.action'} eq 'verify_and_change_locks'){ @@ -2298,26 +2338,29 @@ sub handler { &coursedisplaychanger($r); }elsif($env{'form.action'} eq 'verify_and_change_coursepage'){ &verify_and_change_coursepage($r); + $ended = 1; }elsif($env{'form.action'} eq 'authorsettings'){ &author_space_settings($r); }elsif($env{'form.action'} eq 'change_authoring_settings'){ &change_authoring_settings($r); + $ended = 1; }elsif($env{'form.action'} eq 'debugtoggle'){ if (&can_toggle_debug()) { &toggle_debug(); } &print_main_menu($r); + $ended = 1; } elsif ($env{'form.action'} eq 'changelockednames') { &lockednameschanger($r); } elsif ($env{'form.action'} eq 'verify_and_change_lockednames') { &verify_and_change_lockednames($r); + $ended = 1; } # Properly end the HTML page of all preference pages # started in each sub routine # Exception: print_main_menu has its own end_page call - unless (!exists $env{'form.action'} || - $env{'form.action'} eq 'debugtoggle') { + unless ($ended) { $r->print(&Apache::loncommon::end_page()); } @@ -2390,5 +2433,16 @@ sub updateable_userinfo { return %updateable; } +sub do_redirect { + my ($r,$url,$msg) = @_; + $r->print( + &Apache::loncommon::start_page('Switching Server ...',undef, + {'redirect' => [0.5,$url]}). + '
'."\n". + "$msg\n". + &Apache::loncommon::end_page()); + return; +} + 1; __END__