--- loncom/interface/lonpreferences.pm 2008/03/06 22:27:45 1.115
+++ loncom/interface/lonpreferences.pm 2008/05/14 18:21:40 1.119
@@ -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.119 2008/05/14 18:21:40 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -123,7 +123,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 +167,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']);
@@ -252,16 +252,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 +400,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 +409,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 +495,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 +508,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 +563,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 +605,93 @@ 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','domcoord.cc']);
+ my $constchecked='';
+ my $courseschecked='';
+ if ($userenv{'domcoord.author'} eq 'blocked') {
+ $constchecked='checked="checked"';
+ }
+ if ($userenv{'domcoord.cc'} eq 'blocked') {
+ $courseschecked='checked="checked"';
+ }
+ my $text=&mt('By default, the Domain Coordinator can enter your courses and construction space.');
+ my $construction=&mt('Block access to construction space');
+ my $courses=&mt('Block access to courses');
+ 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' => '','domcoord.cc' => '');
+ if ($env{'form.construction'}) { $domcoord{'domcoord.author'}='blocked'; }
+ if ($env{'form.courses'}) { $domcoord{'domcoord.cc'}='blocked'; }
+ &Apache::lonnet::put('environment',\%domcoord);
+ &Apache::lonnet::appenv({'environment.domcoord.author' => $domcoord{'domcoord.author'},
+ 'environment.domcoord.cc' => $domcoord{'domcoord.cc'}});
+ $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
+
+$textbottom
+
+
+ENDSCREEN
+}
+
+sub verify_and_change_lockwarning {
+ my $r = shift;
+ &Apache::lonnet::remove_all_locks();
+ $r->print(&mt('Cleared locks.'));
+}
+
+
+################################################################
# Message Forward #
################################################################
@@ -841,7 +923,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 +964,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 +973,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 +983,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 +1099,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 +1109,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 +1588,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 +1600,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 +1665,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 +1907,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 +1917,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 +1969,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 +2052,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});
}
}