--- loncom/interface/lonpreferences.pm 2008/03/06 22:27:45 1.115 +++ loncom/interface/lonpreferences.pm 2008/06/10 14:49:07 1.124 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.115 2008/03/06 22:27:45 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.124 2008/06/10 14:49:07 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -108,9 +108,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(< +$warning

@@ -123,7 +128,7 @@ sub verify_and_change_wysiwyg { my $r = shift; my $newsetting=$env{'form.wysiwyg'}; &Apache::lonnet::put('environment',{'wysiwygeditor' => $newsetting}); - &Apache::lonnet::appenv('environment.wysiwygeditor' => $newsetting); + &Apache::lonnet::appenv({'environment.wysiwygeditor' => $newsetting}); $r->print('

'.&mt('Setting WYSIWYG editor to:').' '.&mt($newsetting).'

'); } @@ -167,7 +172,7 @@ sub verify_and_change_languages { my $message=''; if ($newlanguage) { &Apache::lonnet::put('environment',{'languages' => $newlanguage}); - &Apache::lonnet::appenv('environment.languages' => $newlanguage); + &Apache::lonnet::appenv({'environment.languages' => $newlanguage}); $message=&mt('Set new preferred languages to ').'"'.$newlanguage.'".'; } else { &Apache::lonnet::del('environment',['languages']); @@ -189,35 +194,45 @@ sub texenginechanger { my %userenv = &Apache::lonnet::get('environment',['texengine']); my $texengine=$userenv{'texengine'}; - my $pref=&mt('Preferred method to display Math'); my %mathchoices=('' => 'Default', - 'tth' => 'TeX to HTML', + 'tth' => 'tth (TeX to HTML)', #'ttm' => 'TeX to MathML', 'jsMath' => 'jsMath', - 'mimetex' => 'Convert to Images' + 'mimetex' => 'mimetex (Convert to Images)' ); my $selectionbox=&Apache::loncommon::select_form($texengine,'texengine', %mathchoices); my $jsMath_start=&Apache::lontexconvert::jsMath_header(); - my $change=&mt('Change'); - $r->print(< + my %lt=&Apache::lonlocal::texthash( + 'headline' => 'Change Math Preferences', + 'preftxt' => 'Preferred method to display Math', + 'change' => 'Change', + 'exmpl' => 'Examples', + 'jsmath' => 'jsMath:', + 'tth' => 'tth (TeX to HTML):', + 'mimetex' => 'mimetex (Convert to Images):', + ); + $r->print(<$lt{'headline'}
-

$pref: $selectionbox

-

-
-Examples: -

TeX to HTML
- +

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

-

jsMath
+ +
+


+$lt{'exmpl'} + +

$lt{'jsmath'}

+

$jsMath_start - + +

+

$lt{'mimetex'}

+

+

-

Convert to Images
-
- + +

$lt{'tth'}

+

+

ENDLSCREEN if ($env{'environment.texengine'} ne 'jsMath') { @@ -252,16 +272,16 @@ 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); + &Apache::lonnet::appenv({'environment.texengine' => $newtexengine}); $message=&mt('Set new preferred math display to ').'"'.$newtexengine.'".'; } else { &Apache::lonnet::del('environment',['texengine']); @@ -400,7 +420,7 @@ sub verify_and_change_rolespref { my $message='
'; if ($hotlist_flag) { &Apache::lonnet::put('environment',{'recentroles' => $hotlist_flag}); - &Apache::lonnet::appenv('environment.recentroles' => $hotlist_flag); + &Apache::lonnet::appenv({'environment.recentroles' => $hotlist_flag}); $message=&mt('Recent '.$role.'s Hotlist is Enabled'); } else { &Apache::lonnet::del('environment',['recentroles']); @@ -409,7 +429,7 @@ sub verify_and_change_rolespref { } if ($hotlist_n) { &Apache::lonnet::put('environment',{'recentrolesn' => $hotlist_n}); - &Apache::lonnet::appenv('environment.recentrolesn' => $hotlist_n); + &Apache::lonnet::appenv({'environment.recentrolesn' => $hotlist_n}); if ($hotlist_flag) { $message.="
". &mt('Display [_1] Most Recent '.$role.'s',$hotlist_n)."\n"; @@ -495,7 +515,7 @@ sub verify_and_change_screenname { my $message=''; if ($newscreen) { &Apache::lonnet::put('environment',{'screenname' => $newscreen}); - &Apache::lonnet::appenv('environment.screenname' => $newscreen); + &Apache::lonnet::appenv({'environment.screenname' => $newscreen}); $message=&mt('Set new screenname to ').'"'.$newscreen.'.".'; } else { &Apache::lonnet::del('environment',['screenname']); @@ -508,7 +528,7 @@ sub verify_and_change_screenname { $newscreen=~s/[^ \w]//g; if ($newscreen) { &Apache::lonnet::put('environment',{'nickname' => $newscreen}); - &Apache::lonnet::appenv('environment.nickname' => $newscreen); + &Apache::lonnet::appenv({'environment.nickname' => $newscreen}); $message.=&mt('Set new nickname to ').'"'.$newscreen.'".'; } else { &Apache::lonnet::del('environment',['nickname']); @@ -563,7 +583,7 @@ sub verify_and_change_icons { my $newicons = $env{'form.menumode'}; &Apache::lonnet::put('environment',{'icons' => $newicons}); - &Apache::lonnet::appenv('environment.icons' => $newicons); + &Apache::lonnet::appenv({'environment.icons' => $newicons}); $r->print(&mt('Set menu mode to [_1].',$newicons)); } @@ -605,11 +625,85 @@ sub verify_and_change_clicker { $newclickers=~s/^\,//; $newclickers=~s/\,$//; &Apache::lonnet::put('environment',{'clickers' => $newclickers}); - &Apache::lonnet::appenv('environment.clickers' => $newclickers); + &Apache::lonnet::appenv({'environment.clickers' => $newclickers}); $r->print(&mt('Registering clickers: [_1]',$newclickers)); } ################################################################ +# Domcoord Access Subroutines # +################################################################ + +sub domcoordchanger { + my $r = shift; + my $user = $env{'user.name'}; + my $domain = $env{'user.domain'}; + my %userenv = &Apache::lonnet::get + ('environment',['domcoord.author']); + my $constchecked=''; + if ($userenv{'domcoord.author'} eq 'blocked') { + $constchecked='checked="checked"'; + } + 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'); + $r->print(< + +$text
+
+ + +ENDSCREEN +} + +sub verify_and_change_domcoord { + my $r = shift; + my $user = $env{'user.name'}; + my $domain = $env{'user.domain'}; + my %domcoord=('domcoord.author' => ''); + 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.')); +} + +################################################################# +## Lock Subroutines # +################################################################# + +sub lockwarning { + my $r = shift; + my $title=&mt('Action locked'); + my $texttop=&mt('LON-CAPA is currently performing the following actions:'); + my $textbottom=&mt('Changing roles or logging out may result in data corruption.'); + my ($num,%which)=&Apache::lonnet::get_locks(); + my $which=''; + foreach my $id (keys %which) { + $which.='
  • '.$which{$id}.'
  • '; + } + my $change=&mt('Override'); + $r->print(< + +

    $title

    +$texttop +
      +$which +
    +$textbottom + + +ENDSCREEN +} + +sub verify_and_change_lockwarning { + my $r = shift; + &Apache::lonnet::remove_all_locks(); + $r->print(&mt('Cleared locks.')); +} + + +################################################################ # Message Forward # ################################################################ @@ -841,7 +935,7 @@ sub verify_and_change_msgforward { $newscreen=~s/\,$//; if ($newscreen) { &Apache::lonnet::put('environment',{'msgforward' => $newscreen}); - &Apache::lonnet::appenv('environment.msgforward' => $newscreen); + &Apache::lonnet::appenv({'environment.msgforward' => $newscreen}); $message .= &mt('Set message forwarding to ').'"'.$newscreen.'".' .'
    '; } else { @@ -882,7 +976,7 @@ sub verify_and_change_msgforward { $notify_with_html =~ s/\s//gs; if ($notification) { &Apache::lonnet::put('environment',{'notification' => $notification}); - &Apache::lonnet::appenv('environment.notification' => $notification); + &Apache::lonnet::appenv({'environment.notification' => $notification}); $message.=&mt('Set non-critical message notification address(es) to ').'"'.$notification.'".
    '; } else { &Apache::lonnet::del('environment',['notification']); @@ -891,7 +985,7 @@ sub verify_and_change_msgforward { } if ($critnotification) { &Apache::lonnet::put('environment',{'critnotification' => $critnotification}); - &Apache::lonnet::appenv('environment.critnotification' => $critnotification); + &Apache::lonnet::appenv({'environment.critnotification' => $critnotification}); $message.=&mt('Set critical message notification address(es) to ').'"'.$critnotification.'".
    '; } else { &Apache::lonnet::del('environment',['critnotification']); @@ -901,7 +995,7 @@ sub verify_and_change_msgforward { if ($critnotification || $notification) { if ($notify_with_html) { &Apache::lonnet::put('environment',{'notifywithhtml' => $notify_with_html}); - &Apache::lonnet::appenv('environment.notifywithhtml' => $notify_with_html); + &Apache::lonnet::appenv({'environment.notifywithhtml' => $notify_with_html}); $message.=&mt('Set address(es) to receive excerpts with html retained ').'"'.$notify_with_html.'".'; } else { &Apache::lonnet::del('environment',['notifywithhtml']); @@ -1017,7 +1111,7 @@ sub verify_and_change_colors { my $entry='color.'.$function.'.'.$item; if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$env{'form.resetall'})) { &Apache::lonnet::put('environment',{$entry => $color}); - &Apache::lonnet::appenv('environment.'.$entry => $color); + &Apache::lonnet::appenv({'environment.'.$entry => $color}); $message.=&mt('Set '.$colortypes{$item}.' to ').'"'.$color.'".
    '; } else { &Apache::lonnet::del('environment',[$entry]); @@ -1027,7 +1121,7 @@ sub verify_and_change_colors { } my $now = time; &Apache::lonnet::put('environment',{'color.timestamp' => $now}); - &Apache::lonnet::appenv('environment.color.timestamp' => $now); + &Apache::lonnet::appenv({'environment.color.timestamp' => $now}); $r->print(<'. + &mt('Could not verify current authentication.').' '. + &mt('Please try again.').'',$caller,$mailtoken); + return 1; + } if ($currentpass ne $data{'temppasswd'}) { &passwordchanger($r, ''. @@ -1499,7 +1600,7 @@ sub verify_and_change_discussion { if ($newdisp eq 'unread') { $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 .= &mt('In discussions: all posts will be displayed.').'
    '; &Apache::lonnet::del('environment',['discdisplay']); @@ -1511,7 +1612,7 @@ sub verify_and_change_discussion { if ($newmark eq 'ondisp') { $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.=&mt('In discussions: posts will be identified as "NEW" until marked as read by the reader.').'
    '; &Apache::lonnet::del('environment',['discmarkread']); @@ -1576,7 +1677,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']); @@ -1818,7 +1919,7 @@ sub handler { href => '/adm/preferences', subroutine => \&clickerchanger, breadcrumb => - { href => '/adm/preferences?action=changeicons', + { href => '/adm/preferences?action=changeclicker', text => 'Register Clicker'}, }, { action => 'verify_and_change_clicker', @@ -1828,6 +1929,37 @@ sub handler { text => 'Register Clicker'}, printmenu => 'yes', })); + if ($env{'user.adv'}) { + 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'}) @@ -1849,7 +1981,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, @@ -1932,7 +2064,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}); } }