--- loncom/interface/domainprefs.pm 2013/12/24 21:59:36 1.217
+++ loncom/interface/domainprefs.pm 2014/01/05 21:24:12 1.222
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.217 2013/12/24 21:59:36 raeburn Exp $
+# $Id: domainprefs.pm,v 1.222 2014/01/05 21:24:12 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -420,7 +420,7 @@ sub handler {
if ($phase eq 'process') {
my $result = &Apache::lonconfigsettings::make_changes($r,$dom,$phase,$context,\@prefs_order,
\%prefs,\%domconfig,$confname,\@roles);
- if (ref($result) eq 'HASH') {
+ if ((ref($result) eq 'HASH') && (keys(%{$result}))) {
$r->rflush();
&devalidate_remote_domconfs($dom,$result);
}
@@ -2022,14 +2022,28 @@ sub print_requestmail {
sub print_studentcode {
my ($settings,$rowtotal) = @_;
my $rownum = 0;
- my %choices;
- $choices{'uniquecode'} = &mt('Generate unique six character code as course identifier?');
- my @toggles = ('uniquecode');
- my %defaultchecked = ('uniquecode' => 'off');
- (my $reports,$rownum) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
- \%choices,$rownum);
- $$rowtotal += $rownum;
- return $reports;
+ my ($output,%current);
+ my @crstypes = ('official','unofficial','community','textbook');
+ if (ref($settings->{'uniquecode'}) eq 'HASH') {
+ foreach my $type (@crstypes) {
+ $current{$type} = $settings->{'uniquecode'}{$type};
+ }
+ }
+ $output .= '
'.
+ ''.&mt('Generate unique six character code as course identifier?').' | '.
+ '';
+ foreach my $type (@crstypes) {
+ my $check = ' ';
+ if ($current{$type}) {
+ $check = ' checked="checked" ';
+ }
+ $output .= ''.(' 'x2).' ';
+ }
+ $output .= ' |
';
+ $$rowtotal ++;
+ return $output;
}
sub print_textbookcourses {
@@ -4532,7 +4546,8 @@ sub print_serverstatuses {
sub serverstatus_pages {
return ('userstatus','lonstatus','loncron','server-status','codeversions',
'checksums','clusterstatus','metadata_keywords','metadata_harvest',
- 'takeoffline','takeonline','showenv','toggledebug','ping','domconf');
+ 'takeoffline','takeonline','showenv','toggledebug','ping','domconf',
+ 'uniquecodes');
}
sub coursecategories_javascript {
@@ -6109,10 +6124,12 @@ sub modify_quotas {
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.reqapprovalnotify');
@approvalnotify = sort(@approvalnotify);
$confhash{'notify'}{'approval'} = join(',',@approvalnotify);
- if ($env{'form.uniquecode'}) {
- $confhash{'uniquecode'} = 1;
- } else {
- $confhash{'uniquecode'} = '';
+ my @crstypes = ('official','unofficial','community','textbook');
+ my @hasuniquecode = &Apache::loncommon::get_env_multiple('form.uniquecode');
+ foreach my $type (@hasuniquecode) {
+ if (grep(/^\Q$type\E$/,@crstypes)) {
+ $confhash{'uniquecode'}{$type} = 1;
+ }
}
my ($newbook,@allpos);
if ($context eq 'requestcourses') {
@@ -6147,14 +6164,25 @@ sub modify_quotas {
$changes{'notify'}{'approval'} = 1;
}
}
- if ($domconfig{$action}{'uniquecode'}) {
- unless ($confhash{'uniquecode'}) {
- $changes{'uniquecode'} = 1;
- }
- } else {
- if ($confhash{'uniquecode'}) {
- $changes{'uniquecode'} = 1;
- }
+ if (ref($domconfig{$action}{'uniquecode'}) eq 'HASH') {
+ if (ref($confhash{'uniquecode'}) eq 'HASH') {
+ foreach my $crstype (keys(%{$domconfig{$action}{'uniquecode'}})) {
+ unless ($confhash{'uniquecode'}{$crstype}) {
+ $changes{'uniquecode'} = 1;
+ }
+ }
+ unless ($changes{'uniquecode'}) {
+ foreach my $crstype (keys(%{$confhash{'uniquecode'}})) {
+ unless ($domconfig{$action}{'uniquecode'}{$crstype}) {
+ $changes{'uniquecode'} = 1;
+ }
+ }
+ }
+ } else {
+ $changes{'uniquecode'} = 1;
+ }
+ } elsif (ref($confhash{'uniquecode'}) eq 'HASH') {
+ $changes{'uniquecode'} = 1;
}
if ($context eq 'requestcourses') {
if (ref($domconfig{$action}{'textbooks'}) eq 'HASH') {
@@ -6216,7 +6244,7 @@ sub modify_quotas {
if ($confhash{'notify'}{'approval'}) {
$changes{'notify'}{'approval'} = 1;
}
- if ($confhash{'uniquecode'}) {
+ if (ref($confhash{'uniquecode'} eq 'HASH')) {
$changes{'uniquecode'} = 1;
}
}
@@ -6544,10 +6572,15 @@ sub modify_quotas {
if ($action eq 'requestcourses') {
my @offon = ('off','on');
if ($changes{'uniquecode'}) {
- $resulttext .= ''.
- &mt('Generation of six character code as course identifier for distribution to students set to '.
- $offon[$env{'form.uniquecode'}]).
- '';
+ if (ref($confhash{'uniquecode'}) eq 'HASH') {
+ my $codestr = join(' ',map{ &mt($_); } sort(keys(%{$confhash{'uniquecode'}})));
+ $resulttext .= ''.
+ &mt('Generation of six character code as course identifier for distribution to students set to on for: [_1].',''.$codestr.'').
+ '';
+ } else {
+ $resulttext .= ''.&mt('Generation of six character code as course identifier for distribution to students set to off.').
+ '';
+ }
}
if (ref($changes{'textbooks'}) eq 'HASH') {
$resulttext .= ''.&mt('Available textbooks updated').'