--- loncom/interface/lonpreferences.pm 2008/01/17 16:37:28 1.110 +++ loncom/interface/lonpreferences.pm 2009/04/04 21:47:41 1.149 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.110 2008/01/17 16:37:28 bisitz Exp $ +# $Id: lonpreferences.pm,v 1.149 2009/04/04 21:47:41 bisitz 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('Content Display Settings')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change WYSIWYG Preferences')); + my %userenv = &Apache::lonnet::get ('environment',['wysiwygeditor']); my $onselect='checked="checked"'; @@ -108,14 +114,19 @@ 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

ENDLSCREEN - $r->print('
'); + $r->print('
'); } @@ -123,8 +134,10 @@ 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); - $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('Content Display Settings')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Language')); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -153,7 +172,7 @@ sub languagechanger {
$pref: $selectionbox ENDLSCREEN - $r->print('
'); + $r->print('
'); } @@ -167,16 +186,18 @@ 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']); - &Apache::lonnet::delenv('environment\.languages'); + &Apache::lonnet::delenv('environment.languages'); $message=&mt('Reset preferred language.'); } - $r->print(<print(< '/adm/preferences?action=changetexenginepref', + text => 'Change How Math Equations Are Displayed'}); + $r->print(Apache::loncommon::start_page('Content Display Settings')); + $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']); 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' => 'Save', + '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') { - $r->print(''); + $r->print(''); } } @@ -252,27 +294,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); + &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'); + &Apache::lonnet::delenv('environment.texengine'); $message=&mt('Reset preferred math display.'); } - $r->print(<print(< '/adm/preferences?action=changerolespref', + text => 'Change '.$role.' Page Pref'}); + $r->print(Apache::loncommon::start_page('Content Display Settings')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change '.$role.' Page Pref')); my $hotlist_flag=$userenv{'recentroles'}; my $hotlist_n=$userenv{'recentrolesn'}; my $checked; @@ -355,7 +403,7 @@ sub rolesprefchanger {

'.$roles_check_list.'
- + '); } @@ -400,16 +448,16 @@ 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']); - &Apache::lonnet::delenv('environment\.recentroles'); + &Apache::lonnet::delenv('environment.recentroles'); $message=&mt('Recent '.$role.'s Hotlist is Disabled'); } 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"; @@ -449,9 +497,10 @@ sub verify_and_change_rolespref { } $message .= "

\n"; - $r->print(<print(< 'New screenname (shown if you post anonymously):', - text_nickname => 'New nickname (shown if you post non-anonymously):', - text_submit => 'Change', - ); - $r->print(< - -
$lt{'text_screenname'} - -
$lt{'text_nickname'} - -
- - -ENDSCREEN + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changescreenname', + text => 'Change Screen Name'}); + $r->print(Apache::loncommon::start_page('Personal Data')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Change Screen Name')); + $r->print('

' + .&mt('Change the name that is displayed in your posts.') + .'

' + ); + $r->print('
' + .'' + .&Apache::lonhtmlcommon::start_pick_box() + .&Apache::lonhtmlcommon::row_title(&mt('New screenname (shown if you post anonymously)')) + .'' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title(&mt('New nickname (shown if you post non-anonymously)')) + .'' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title() + .'' + .&Apache::lonhtmlcommon::row_closure(1) + .&Apache::lonhtmlcommon::end_pick_box() + .'
' + ); } sub verify_and_change_screenname { @@ -495,11 +552,11 @@ 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']); - &Apache::lonnet::delenv('environment\.screenname'); + &Apache::lonnet::delenv('environment.screenname'); $message=&mt('Reset screenname.'); } # Nickname @@ -508,17 +565,18 @@ 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']); - &Apache::lonnet::delenv('environment\.nickname'); + &Apache::lonnet::delenv('environment.nickname'); $message.=&mt('Reset nickname.'); } &Apache::lonnet::devalidate_cache_new('namescache',$user.':'.$domain); - $r->print(<print(< '/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 @@ -544,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(< @@ -563,8 +627,9 @@ sub verify_and_change_icons { my $newicons = $env{'form.menumode'}; &Apache::lonnet::put('environment',{'icons' => $newicons}); - &Apache::lonnet::appenv('environment.icons' => $newicons); - $r->print(&mt('Set menu mode to [_1].',$newicons)); + &Apache::lonnet::appenv({'environment.icons' => $newicons}); +# $r->print(&mt('Set menu mode to [_1].',$newicons)); + print_main_menu($r, &mt('Set menu mode to [_1].',$newicons)); } ################################################################ @@ -573,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('Other')); + $r->print(Apache::lonhtmlcommon::breadcrumbs('Register Clicker')); my $user = $env{'user.name'}; my $domain = $env{'user.domain'}; my %userenv = &Apache::lonnet::get @@ -581,7 +651,7 @@ sub clickerchanger { $clickers=~s/\,/\n/gs; my $text=&mt('Enter response device ("clicker") numbers'); my $change=&mt('Register'); - my $helplink=&Apache::loncommon::help_open_topic('Clicker_Registration', 'Locating your clicker ID'); + my $helplink=&Apache::loncommon::help_open_topic('Clicker_Registration',&mt('Locating your clicker ID')); $r->print(< @@ -605,11 +675,92 @@ sub verify_and_change_clicker { $newclickers=~s/^\,//; $newclickers=~s/\,$//; &Apache::lonnet::put('environment',{'clickers' => $newclickers}); - &Apache::lonnet::appenv('environment.clickers' => $newclickers); - $r->print(&mt('Registering clickers: [_1]',$newclickers)); + &Apache::lonnet::appenv({'environment.clickers' => $newclickers}); +# $r->print(&mt('Registering clickers: [_1]',$newclickers)); + print_main_menu($r, &mt('Registering clickers: [_1]',$newclickers)); } ################################################################ +# Domcoord Access Subroutines # +################################################################ + +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 + ('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('Save'); + $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.')); + print_main_menu($r, &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 # ################################################################ @@ -624,24 +775,30 @@ sub msgforwardchanger { crit => 'Critical only', reg => 'Non-critical only', foad => 'Forwarding Address(es)', + noti => 'Notification E-mail Address(es)', foad_exmpl => 'e.g. userA:domain1,userB:domain2,...', - 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. joe@doe.com', - 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', ); - my $forwardingHelp = Apache::loncommon::help_open_topic("Prefs_Forwarding", - &mt("What are forwarding and notification addresses?")); - my $criticalMessageHelp = Apache::loncommon::help_open_topic("Course_Critical_Message", - &mt("What are critical messages?")); + Apache::lonhtmlcommon::add_breadcrumb( + { href => '/adm/preferences?action=changemsgforward', + text => 'Change Message Forwarding/Notification'}); + $r->print(Apache::loncommon::start_page('Message Management')); + $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"); my @allow_html = split(/,/,$userenv{'notifywithhtml'}); my %allnot = &get_notifications(\%userenv); my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email(); my $jscript = qq| -