--- loncom/interface/domainprefs.pm 2013/08/08 00:54:47 1.160.6.22
+++ loncom/interface/domainprefs.pm 2012/12/11 22:55:27 1.176
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.160.6.22 2013/08/08 00:54:47 raeburn Exp $
+# $Id: domainprefs.pm,v 1.176 2012/12/11 22:55:27 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -45,7 +45,7 @@ described at http://www.lon-capa.org.
=head1 OVERVIEW
Each institution using LON-CAPA will typically have a single domain designated
-for use by individuals affiliated with the institution. Accordingly, each domain
+for use by individuals affliated with the institution. Accordingly, each domain
may define a default set of logos and a color scheme which can be used to "brand"
the LON-CAPA instance. In addition, an institution will typically have a language
and timezone which are used for the majority of courses.
@@ -86,7 +86,7 @@ $dom,$settings,$rowtotal,$action.
$dom is the domain, $settings is a reference to a hash of current settings for
the current context, $rowtotal is a reference to the scalar used to record the
-number of rows displayed on the page, and $action is the context (quotas,
+number of rows displayed on the page, and $action is the context (quotas,
requestcourses or requestauthor).
The print_quotas routine was orginally created to display/store information
@@ -94,9 +94,7 @@ about default quota sizes for portfolio
institutional affiliation in the domain (e.g., Faculty, Staff, Student etc.),
but is now also used to manage availability of user tools:
i.e., blogs, aboutme page, and portfolios, and the course request tool,
-used by course owners to request creation of a course, and to display/store
-default quota sizes for authoring spaces.
-
+used by course owners to request creation of a course.
Outputs: 1
@@ -212,13 +210,15 @@ sub handler {
'quotas','autoenroll','autoupdate','autocreate',
'directorysrch','usercreation','usermodification',
'contacts','defaults','scantron','coursecategories',
- 'serverstatuses','requestcourses','coursedefaults',
- 'usersessions','loadbalancing','requestauthor'],$dom);
+ 'serverstatuses','requestcourses','helpsettings',
+ 'coursedefaults','usersessions','loadbalancing',
+ 'requestauthor'],$dom);
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
'autoupdate','autocreate','directorysrch','contacts',
'usercreation','usermodification','scantron',
'requestcourses','requestauthor','coursecategories',
- 'serverstatuses','coursedefaults','usersessions');
+ 'serverstatuses','helpsettings',
+ 'coursedefaults','usersessions');
my %existing;
if (ref($domconfig{'loadbalancing'}) eq 'HASH') {
%existing = %{$domconfig{'loadbalancing'}};
@@ -254,11 +254,11 @@ sub handler {
col2 => 'Value'}],
},
'quotas' =>
- { text => 'Blogs, personal web pages, webDAV/quotas, portfolios',
+ { text => 'Blogs, personal web pages, webDAV, portfolios',
help => 'Domain_Configuration_Quotas',
header => [{col1 => 'User affiliation',
col2 => 'Available tools',
- col3 => 'Quotas, Mb; (Authoring requires role)',}],
+ col3 => 'Portfolio quota',}],
},
'autoenroll' =>
{ text => 'Auto-enrollment settings',
@@ -355,12 +355,26 @@ sub handler {
col3 => 'Specific IPs',
}],
},
- 'coursedefaults' =>
+ 'helpsettings' =>
+ {text => 'Help page settings',
+ help => 'Domain_Configuration_Help_Settings',
+ header => [{col1 => 'Help Settings (logged-in users)',
+ col2 => 'Value'}],
+ },
+ 'coursedefaults' =>
{text => 'Course/Community defaults',
help => 'Domain_Configuration_Course_Defaults',
- header => [{col1 => 'Defaults which can be overridden for each course by a DC',
+ header => [{col1 => 'Defaults which can be overridden in each course by a CC',
+ col2 => 'Value',},
+ {col1 => 'Defaults which can be overridden for each course by a DC',
col2 => 'Value',},],
},
+ 'privacy' =>
+ {text => 'User Privacy',
+ help => 'Domain_Configuration_User_Privacy',
+ header => [{col1 => 'Setting',
+ col2 => 'Value',}],
+ },
'usersessions' =>
{text => 'User session hosting/offloading',
help => 'Domain_Configuration_User_Sessions',
@@ -372,11 +386,11 @@ sub handler {
col2 => 'Rules'}],
},
'loadbalancing' =>
- {text => 'Dedicated Load Balancer(s)',
+ {text => 'Dedicated Load Balancer',
help => 'Domain_Configuration_Load_Balancing',
header => [{col1 => 'Balancers',
col2 => 'Default destinations',
- col3 => 'User affiliation',
+ col3 => 'User affliation',
col4 => 'Overrides'},
],
},
@@ -393,6 +407,8 @@ sub handler {
};
}
+
+
my @roles = ('student','coordinator','author','admin');
my @actions = &Apache::loncommon::get_env_multiple('form.actions');
&Apache::lonhtmlcommon::add_breadcrumb
@@ -403,8 +419,7 @@ sub handler {
if ($phase eq 'process') {
&Apache::lonconfigsettings::make_changes($r,$dom,$phase,$context,\@prefs_order,\%prefs,\%domconfig,$confname,\@roles);
} elsif ($phase eq 'display') {
- my $js = &recaptcha_js().
- &credits_js();
+ my $js = &recaptcha_js();
if ((keys(%servers) > 1) || (keys(%existing) > 0)) {
my ($othertitle,$usertypes,$types) =
&Apache::loncommon::sorted_inst_types($dom);
@@ -416,34 +431,6 @@ sub handler {
}
&Apache::lonconfigsettings::display_settings($r,$dom,$phase,$context,\@prefs_order,\%prefs,\%domconfig,$confname,$js);
} else {
-# check if domconfig user exists for the domain.
- my $servadm = $r->dir_config('lonAdmEMail');
- my ($configuserok,$author_ok,$switchserver) =
- &config_check($dom,$confname,$servadm);
- unless ($configuserok eq 'ok') {
- &Apache::lonconfigsettings::print_header($r,$phase,$context);
- $r->print(&mt('The domain configuration user "[_1]" has yet to be created.',
- $confname).
- ' '
- );
- if ($switchserver) {
- $r->print(&mt('Ordinarily, that domain configuration user is created when the ./UPDATE script is run to install LON-CAPA for the first time.').
- ' '.
- &mt('However, that does not apply when new domains are added to a multi-domain server, and ./UPDATE has not been run recently.').
- ' '.
- &mt('The "[_1]" user can be created automatically when a Domain Coordinator visits the web-based "Set domain configuration" screen, in a session hosted on the primary library server.',$confname).
- ' '.
- &mt('To do that now, use the following link: [_1]',$switchserver)
- );
- } else {
- $r->print(&mt('To create that user from the command line run the ./UPDATE script found in the top level directory of the extracted LON-CAPA tarball.').
- ' '.
- &mt('Once that is done, you will be able to use the web-based "Set domain configuration" to configure the domain')
- );
- }
- $r->print(&Apache::loncommon::end_page());
- return OK;
- }
if (keys(%domconfig) == 0) {
my $primarylibserv = &Apache::lonnet::domain($dom,'primary');
my @ids=&Apache::lonnet::current_machine_ids();
@@ -477,6 +464,7 @@ sub handler {
}
}
}
+
&Apache::lonconfigsettings::display_choices($r,$phase,$context,\@prefs_order,\%prefs);
}
return OK;
@@ -522,6 +510,8 @@ sub process_changes {
$output = &modify_quotas($dom,$action,%domconfig);
} elsif ($action eq 'requestauthor') {
$output = &modify_quotas($dom,$action,%domconfig);
+ } elsif ($action eq 'helpsettings') {
+ $output = &modify_helpsettings($r,$dom,$confname,%domconfig);
} elsif ($action eq 'coursedefaults') {
$output = &modify_coursedefaults($dom,%domconfig);
} elsif ($action eq 'usersessions') {
@@ -536,6 +526,7 @@ sub print_config_box {
my ($r,$dom,$confname,$phase,$action,$item,$settings) = @_;
my $rowtotal = 0;
my $output;
+
if ($action eq 'coursecategories') {
$output = &coursecategories_javascript($settings);
}
@@ -554,7 +545,7 @@ sub print_config_box {
if ($numheaders > 1) {
my $colspan = '';
my $rightcolspan = '';
- if (($action eq 'rolecolors') || ($action eq 'coursecategories') ||
+ if (($action eq 'rolecolors') || ($action eq 'coursecategories') ||
(($action eq 'login') && ($numheaders < 3))) {
$colspan = ' colspan="2"';
}
@@ -593,6 +584,8 @@ sub print_config_box {
$output .= &print_usersessions('top',$dom,$settings,\$rowtotal);
} elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'student',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'coursedefaults') {
+ $output .= &print_coursedefaults('top',$dom,$settings,\$rowtotal);
}
$output .= '
@@ -682,6 +675,8 @@ sub print_config_box {
'.&mt($item->{'header'}->[2]->{'col2'}).' '.
&print_usersessions('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
+ } elsif ($action eq 'coursedefaults') {
+ $output .= &print_coursedefaults('bottom',$dom,$settings,\$rowtotal);
} elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'
@@ -778,8 +773,6 @@ sub print_config_box {
$output .= &print_helpsettings($dom,$confname,$settings,\$rowtotal);
} elsif ($action eq 'loadbalancing') {
$output .= &print_loadbalancing($dom,$settings,\$rowtotal);
- } elsif ($action eq 'coursedefaults') {
- $output .= &print_coursedefaults('bottom',$dom,$settings,\$rowtotal);
}
}
$output .= '
@@ -822,7 +815,7 @@ sub print_login {
''.
''.$choices{'directlogin'}.
' ';
- foreach my $hostid (sort(keys(%servers))) {
+ foreach my $hostid (keys(%servers)) {
next if ($servers{$hostid} eq $servers{$lonhost});
my $selected = '';
if (ref($disallowed{$lonhost}) eq 'HASH') {
@@ -865,11 +858,10 @@ sub print_login {
} elsif ($caller eq 'page') {
my %defaultchecked = (
'coursecatalog' => 'on',
- 'helpdesk' => 'on',
'adminmail' => 'off',
'newuser' => 'off',
);
- my @toggles = ('coursecatalog','adminmail','helpdesk','newuser');
+ my @toggles = ('coursecatalog','adminmail','newuser');
my (%checkedon,%checkedoff);
foreach my $item (@toggles) {
if ($defaultchecked{$item} eq 'on') {
@@ -1085,7 +1077,6 @@ sub login_choices {
&Apache::lonlocal::texthash (
coursecatalog => 'Display Course/Community Catalog link?',
adminmail => "Display Administrator's E-mail Address?",
- helpdesk => 'Display "Contact Helpdesk" link',
disallowlogin => "Login page requests redirected",
hostid => "Server",
server => "Redirect to:",
@@ -1123,7 +1114,17 @@ sub print_rolecolors {
my %designhash = &Apache::loncommon::get_domainconf($dom);
my %defaultdesign = %Apache::loncommon::defaultdesign;
my (%is_custom,%designs);
- my %defaults = &role_defaults($role,\@bgs,\@links,\@images);
+ my %defaults = (
+ img => $defaultdesign{$role.'.img'},
+ font => $defaultdesign{$role.'.font'},
+ fontmenu => $defaultdesign{$role.'.fontmenu'},
+ );
+ foreach my $item (@bgs) {
+ $defaults{'bgs'}{$item} = $defaultdesign{$role.'.'.$item};
+ }
+ foreach my $item (@links) {
+ $defaults{'links'}{$item} = $defaultdesign{$role.'.'.$item};
+ }
if (ref($settings) eq 'HASH') {
if (ref($settings->{$role}) eq 'HASH') {
if ($settings->{$role}->{'img'} ne '') {
@@ -1184,44 +1185,6 @@ sub print_rolecolors {
return $datatable;
}
-sub role_defaults {
- my ($role,$bgs,$links,$images,$logintext) = @_;
- my %defaults;
- unless ((ref($bgs) eq 'ARRAY') && (ref($links) eq 'ARRAY') && (ref($images) eq 'ARRAY')) {
- return %defaults;
- }
- my %defaultdesign = %Apache::loncommon::defaultdesign;
- if ($role eq 'login') {
- %defaults = (
- font => $defaultdesign{$role.'.font'},
- );
- if (ref($logintext) eq 'ARRAY') {
- foreach my $item (@{$logintext}) {
- $defaults{'logintext'}{$item} = $defaultdesign{$role.'.'.$item};
- }
- }
- foreach my $item (@{$images}) {
- $defaults{'showlogo'}{$item} = 1;
- }
- } else {
- %defaults = (
- img => $defaultdesign{$role.'.img'},
- font => $defaultdesign{$role.'.font'},
- fontmenu => $defaultdesign{$role.'.fontmenu'},
- );
- }
- foreach my $item (@{$bgs}) {
- $defaults{'bgs'}{$item} = $defaultdesign{$role.'.'.$item};
- }
- foreach my $item (@{$links}) {
- $defaults{'links'}{$item} = $defaultdesign{$role.'.'.$item};
- }
- foreach my $item (@{$images}) {
- $defaults{$item} = $defaultdesign{$role.'.'.$item};
- }
- return %defaults;
-}
-
sub display_color_options {
my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs,
$images,$bgs,$links,$alt_text,$rowtotal,$logintext) = @_;
@@ -1238,7 +1201,7 @@ sub display_color_options {
$datatable .= ''.
' '.
+ ' value="'.$current_color.'" /> '.
' ';
unless ($role eq 'login') {
$datatable .= ''.
@@ -1248,7 +1211,7 @@ sub display_color_options {
} else {
$datatable .= ' ';
}
- $current_color = $designs->{'fontmenu'} ?
+ $current_color = $designs->{'fontmenu'} ?
$designs->{'fontmenu'} : $defaults->{'fontmenu'};
$datatable .= ''.
' '.
- &mt('Upload:').' ';
+ $datatable .= ' '.
+ &mt('Upload:');
}
} else {
- $datatable .= ' '.
- &mt('Upload:').' ';
+ $datatable .= ' '.
+ &mt('Upload:');
}
if ($switchserver) {
$datatable .= &mt('Upload to library server: [_1]',$switchserver);
@@ -1382,8 +1345,10 @@ sub display_color_options {
$datatable .= ''.
'';
+
foreach my $item (@{$bgs}) {
- $datatable .= ''.$choices->{$item};
+# my $link = &color_pick($phase,$role,$item,$choices->{$item},$designs->{'bgs'}{$item});
+ $datatable .= ' ';
my $color = $designs->{'bgs'}{$item} ? $designs->{'bgs'}{$item} : $defaults->{'bgs'}{$item};
if ($designs->{'bgs'}{$item}) {
$datatable .= ' ';
@@ -1411,7 +1376,8 @@ sub display_color_options {
'';
foreach my $item (@{$links}) {
my $color = $designs->{'link'}{$item} ? $designs->{'link'}{$item} : $defaults->{'links'}{$item};
- $datatable .= ''.$choices->{$item}."\n";
+ $datatable .= ' '."\n";
+
if ($designs->{'links'}{$item}) {
$datatable.=' ';
}
@@ -1469,13 +1435,17 @@ sub login_header_options {
}
sub login_text_colors {
- my ($img,$role,$logintext,$phase,$choices,$designs,$defaults) = @_;
+ my ($img,$role,$logintext,$phase,$choices,$designs) = @_;
my $color_menu = ' ';
return $color_menu;
@@ -1507,12 +1477,20 @@ sub image_changes {
$role.'_del_'.$img.'" value="1" />'.&mt('Delete?').
' '.&mt('Replace:').' ';
} else {
- $output .= ' '.$logincolors.&mt('Upload:').' ';
+ $output .= ' '.$logincolors.&mt('Upload:').' ';
}
}
return $output;
}
+sub color_pick {
+ my ($phase,$role,$item,$desc,$curcol) = @_;
+ my $link = ''.$desc.' ';
+ return $link;
+}
+
sub print_quotas {
my ($dom,$settings,$rowtotal,$action) = @_;
my $context;
@@ -1521,7 +1499,7 @@ sub print_quotas {
} else {
$context = $action;
}
- my ($datatable,$defaultquota,$authorquota,@usertools,@options,%validations);
+ my ($datatable,$defaultquota,@usertools,@options,%validations);
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
my $typecount = 0;
my ($css_class,%titles);
@@ -1533,25 +1511,22 @@ sub print_quotas {
} elsif ($context eq 'requestauthor') {
@usertools = ('author');
@options = ('norequest','approval','automatic');
- %titles = &authorrequest_titles();
+ %titles = &authorrequest_titles();
} else {
@usertools = ('aboutme','blog','webdav','portfolio');
%titles = &tool_titles();
}
if (ref($types) eq 'ARRAY') {
foreach my $type (@{$types}) {
- my ($currdefquota,$currauthorquota);
+ my $currdefquota;
unless (($context eq 'requestcourses') ||
($context eq 'requestauthor')) {
if (ref($settings) eq 'HASH') {
if (ref($settings->{defaultquota}) eq 'HASH') {
- $currdefquota = $settings->{defaultquota}->{$type};
+ $currdefquota = $settings->{defaultquota}->{$type};
} else {
$currdefquota = $settings->{$type};
}
- if (ref($settings->{authorquota}) eq 'HASH') {
- $currauthorquota = $settings->{authorquota}->{$type};
- }
}
}
if (defined($usertypes->{$type})) {
@@ -1665,15 +1640,10 @@ sub print_quotas {
unless (($context eq 'requestcourses') ||
($context eq 'requestauthor')) {
$datatable .=
- ' '.
- ''.&mt('Portfolio').': '.
+ ' '.
' '.(' ' x 2).
- ''.&mt('Authoring').': '.
- ' ';
+ '" size="5" /> Mb';
}
$datatable .= ' ';
}
@@ -1681,16 +1651,12 @@ sub print_quotas {
}
unless (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
$defaultquota = '20';
- $authorquota = '500';
if (ref($settings) eq 'HASH') {
if (ref($settings->{'defaultquota'}) eq 'HASH') {
$defaultquota = $settings->{'defaultquota'}->{'default'};
} elsif (defined($settings->{'default'})) {
$defaultquota = $settings->{'default'};
}
- if (ref($settings->{'authorquota'}) eq 'HASH') {
- $authorquota = $settings->{'authorquota'}->{'default'};
- }
}
}
$typecount ++;
@@ -1801,19 +1767,15 @@ sub print_quotas {
}
$datatable .= '';
unless (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
- $datatable .= ''.
- ''.&mt('Portfolio').': '.
+ $datatable .= ' '.
' '.(' ' x2).
- ''.&mt('Authoring').': '.
- ' ';
+ $defaultquota.'" size="5" /> Mb';
}
$datatable .= '';
$typecount ++;
$css_class = $typecount%2?' class="LC_odd_row"':'';
$datatable .= ''.
- ''.&mt('LON-CAPA Advanced Users').' ';
+ ' '.&mt('LON-CAPA Advanced Users').' ';
if ($context eq 'requestcourses') {
$datatable .= &mt('(overrides affiliation, if set)').
' '.
@@ -1940,16 +1902,35 @@ sub print_quotas {
sub print_requestmail {
my ($dom,$action,$settings,$rowtotal) = @_;
- my ($now,$datatable,%currapp,$rows);
+ my ($now,$datatable,%dompersonnel,@domcoord,@currapproval,$rows);
$now = time;
+ $rows = 0;
+ %dompersonnel = &Apache::lonnet::get_domain_roles($dom,['dc'],$now,$now);
+ foreach my $server (keys(%dompersonnel)) {
+ foreach my $user (sort(keys(%{$dompersonnel{$server}}))) {
+ my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user);
+ if (!grep(/^$uname:$udom$/,@domcoord)) {
+ push(@domcoord,$uname.':'.$udom);
+ }
+ }
+ }
if (ref($settings) eq 'HASH') {
if (ref($settings->{'notify'}) eq 'HASH') {
if ($settings->{'notify'}{'approval'} ne '') {
- map {$currapp{$_}=1;} split(/,/,$settings->{'notify'}{'approval'});
+ @currapproval = split(',',$settings->{'notify'}{'approval'});
}
}
}
- my $numinrow = 2;
+ if (@currapproval) {
+ foreach my $dc (@currapproval) {
+ unless (grep(/^\Q$dc\E$/,@domcoord)) {
+ push(@domcoord,$dc);
+ }
+ }
+ }
+ @domcoord = sort(@domcoord);
+ my $numinrow = 4;
+ my $numdc = @domcoord;
my $css_class = 'class="LC_odd_row"';
my $text;
if ($action eq 'requestcourses') {
@@ -1960,12 +1941,42 @@ sub print_requestmail {
$datatable = ' '.
' '.$text.' '.
' ';
- my ($numdc,$table,$rows) = &active_dc_picker($dom,$numinrow,'checkbox',
- 'reqapprovalnotify',%currapp);
- if ($numdc > 0) {
- $datatable .= $table;
+ if (@domcoord > 0) {
+ $datatable .= '';
} else {
$datatable .= &mt('There are no active Domain Coordinators');
+ $rows ++;
}
$datatable .=' ';
$$rowtotal += $rows;
@@ -2120,7 +2131,8 @@ sub print_autoupdate {
sub print_autocreate {
my ($dom,$settings,$rowtotal) = @_;
- my (%createon,%createoff,%currhash);
+ my (%createon,%createoff);
+ my $curr_dc;
my @types = ('xml','req');
if (ref($settings) eq 'HASH') {
foreach my $item (@types) {
@@ -2133,9 +2145,7 @@ sub print_autocreate {
}
}
}
- if ($settings->{'xmldc'} ne '') {
- $currhash{$settings->{'xmldc'}} = 1;
- }
+ $curr_dc = $settings->{'xmldc'};
} else {
foreach my $item (@types) {
$createoff{$item} = ' checked="checked" ';
@@ -2143,7 +2153,6 @@ sub print_autocreate {
}
}
$$rowtotal += 2;
- my $numinrow = 2;
my $datatable=''.
''.&mt('Create pending official courses from XML files').' '.
''.
@@ -2158,16 +2167,15 @@ sub print_autocreate {
$createon{'req'}.' value="1" />'.&mt('Yes').' '.
' '.&mt('No').' ';
- my ($numdc,$dctable,$rows) = &active_dc_picker($dom,$numinrow,'radio',
- 'autocreate_xmldc',%currhash);
+ my ($numdc,$dctable) = &active_dc_picker($dom,$curr_dc);
if ($numdc > 1) {
$datatable .= ' '.
&mt('Course creation processed as: (choose Dom. Coord.)').
' '.$dctable.' ';
+ $$rowtotal ++ ;
} else {
$datatable .= $dctable.'';
}
- $$rowtotal += $rows;
return $datatable;
}
@@ -2290,7 +2298,7 @@ sub print_contacts {
my @contacts = ('adminemail','supportemail');
my (%checked,%to,%otheremails,%bccemails);
my @mailings = ('errormail','packagesmail','lonstatusmail','helpdeskmail',
- 'requestsmail','updatesmail');
+ 'requestsmail');
foreach my $type (@mailings) {
$otheremails{$type} = '';
}
@@ -2326,7 +2334,6 @@ sub print_contacts {
$checked{'helpdeskmail'}{'supportemail'} = ' checked="checked" ';
$checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
$checked{'requestsmail'}{'adminemail'} = ' checked="checked" ';
- $checked{'updatesmail'}{'adminemail'} = ' checked="checked" ';
}
my ($titles,$short_titles) = &contact_titles();
my $rownum = 0;
@@ -2386,8 +2393,7 @@ sub print_helpsettings {
}
sub radiobutton_prefs {
- my ($settings,$toggles,$defaultchecked,$choices,$itemcount,$onclick,
- $additional) = @_;
+ my ($settings,$toggles,$defaultchecked,$choices,$itemcount) = @_;
return unless ((ref($toggles) eq 'ARRAY') && (ref($defaultchecked) eq 'HASH') &&
(ref($choices) eq 'HASH'));
@@ -2413,22 +2419,17 @@ sub radiobutton_prefs {
}
}
}
- if ($onclick) {
- $onclick = ' onclick="'.$onclick.'"';
- }
foreach my $item (@{$toggles}) {
$css_class = $itemcount%2?' class="LC_odd_row"':'';
$datatable .=
- ''.
- ''.$choices->{$item}.
+ ''.$choices->{$item}.
' '.
''.
' '.&mt('Yes').
+ $item.'" '.$checkedon{$item}.' value="1" />'.&mt('Yes').
' '.&mt('No').' '.
- ' '.$additional.
- ' '.
+ $checkedoff{$item}.' value="0" />'.&mt('No').''.
+ ''.
' ';
$itemcount ++;
}
@@ -2437,100 +2438,42 @@ sub radiobutton_prefs {
sub print_coursedefaults {
my ($position,$dom,$settings,$rowtotal) = @_;
- my ($css_class,$datatable,%checkedon,%checkedoff,%defaultchecked,@toggles);
+ my ($css_class,$datatable);
my $itemcount = 1;
- my %choices = &Apache::lonlocal::texthash (
- canuse_pdfforms => 'Course/Community users can create/upload PDF forms',
- uploadquota => 'Default quota for files uploaded directly to course/community using Course Editor (MB)',
- anonsurvey_threshold => 'Responder count needed before showing submissions for anonymous surveys',
- coursecredits => 'Credits can be specified for courses',
- );
- my %staticdefaults = (
- anonsurvey_threshold => 10,
- uploadquota => 500,
- );
if ($position eq 'top') {
+ my (%checkedon,%checkedoff,%choices,%defaultchecked,@toggles);
+ %choices =
+ &Apache::lonlocal::texthash (
+ canuse_pdfforms => 'Course/Community users can create/upload PDF forms',
+ );
%defaultchecked = ('canuse_pdfforms' => 'off');
- @toggles = ('canuse_pdfforms');
+ @toggles = ('canuse_pdfforms',);
($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
\%choices,$itemcount);
+ $$rowtotal += $itemcount;
} else {
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
- my ($currdefresponder,$def_official_credits,$def_unofficial_credits,%curruploadquota);
- my $currusecredits = 0;
- my @types = ('official','unofficial','community');
+ my %choices =
+ &Apache::lonlocal::texthash (
+ anonsurvey_threshold => 'Responder count needed before showing submissions for anonymous surveys',
+ );
+ my $currdefresponder;
if (ref($settings) eq 'HASH') {
$currdefresponder = $settings->{'anonsurvey_threshold'};
- if (ref($settings->{'uploadquota'}) eq 'HASH') {
- foreach my $type (keys(%{$settings->{'uploadquota'}})) {
- $curruploadquota{$type} = $settings->{'uploadquota'}{$type};
- }
- }
- if (ref($settings->{'coursecredits'}) eq 'HASH') {
- $def_official_credits = $settings->{'coursecredits'}->{'official'};
- $def_unofficial_credits = $settings->{'coursecredits'}->{'unofficial'};
- if (($def_official_credits ne '') || ($def_unofficial_credits ne '')) {
- $currusecredits = 1;
- }
- }
}
if (!$currdefresponder) {
- $currdefresponder = $staticdefaults{'anonsurvey_threshold'};
+ $currdefresponder = 10;
} elsif ($currdefresponder < 1) {
$currdefresponder = 1;
}
- foreach my $type (@types) {
- if ($curruploadquota{$type} eq '') {
- $curruploadquota{$type} = $staticdefaults{'uploadquota'};
- }
- }
$datatable .=
- ''.
- $choices{'anonsurvey_threshold'}.
+ ''.$choices{'anonsurvey_threshold'}.
' '.
''.
' '.
- ' '."\n".
- ''.
- $choices{'uploadquota'}.
- ' '.
- ''.
- ' '."\n";
- $itemcount += 2;
- my $onclick = 'toggleCredits(this.form);';
- my $display = 'none';
- if ($currusecredits) {
- $display = 'block';
- }
- my $additional = ''.
- ''.
- &mt('Default credits for official courses [_1]',
- ' ').
- ' '.
- ''.
- &mt('Default credits for unofficial courses [_1]',
- ' ').
- '
'."\n";
- %defaultchecked = ('coursecredits' => 'off');
- @toggles = ('coursecredits');
- my $current = {
- 'coursecredits' => $currusecredits,
- };
- (my $table,$itemcount) =
- &radiobutton_prefs($current,\@toggles,\%defaultchecked,
- \%choices,$itemcount,$onclick,$additional);
- $datatable .= $table;
+ ' ';
}
- $$rowtotal += $itemcount;
return $datatable;
}
@@ -2821,10 +2764,7 @@ sub spares_row {
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
$datatable .= '
- '.
- &mt('[_1] when busy, offloads to:'
- ,''.$server.' ').
- "\n";
+ '.$server.' when busy, offloads to: '."\n";
my (%current,%canselect);
my @choices =
&possible_newspares($server,$spareid->{$server},$serverhomes,$altids);
@@ -2991,7 +2931,7 @@ sub print_loadbalancing {
''.
'';
if ($lonhost eq '') {
- $datatable .= '';
+ $datatable .= '';
if (keys(%currbalancer) > 0) {
$datatable .= &mt('Add balancer:');
} else {
@@ -3007,7 +2947,7 @@ sub print_loadbalancing {
next if ($currbalancer{$server});
$datatable .= ''.$server.' '."\n";
}
- $datatable .=
+ $datatable .=
''."\n".
' '."\n";
} else {
@@ -3046,7 +2986,7 @@ sub print_loadbalancing {
if (exists($currbalancer{$spares[$i]})) {
$disabled = ' disabled="disabled"';
}
- $targettable .=
+ $targettable .=
'
'.$chkboxval.
' ';
@@ -3073,6 +3013,7 @@ sub print_loadbalancing {
' ';
}
}
+ my $cssidx = $balnum%2;
$datatable .= ' '.
&loadbalancing_rules($dom,$intdom,$currrules{$lonhost},
$othertitle,$usertypes,$types,\%servers,
@@ -3130,7 +3071,7 @@ sub loadbalancing_rules {
$css_class,$balnum,$islast) = @_;
my $output;
my $num = 0;
- my ($alltypes,$othertypes,$titles) =
+ my ($alltypes,$othertypes,$titles) =
&loadbalancing_titles($dom,$intdom,$usertypes,$types);
if ((ref($alltypes) eq 'ARRAY') && (ref($titles) eq 'HASH')) {
foreach my $type (@{$alltypes}) {
@@ -3202,7 +3143,7 @@ sub loadbalance_rule_row {
if ($islast && $num == 1) {
$space = '
';
}
- my $output =
+ my $output =
''.$space.
''.$title.'
'."\n".
''.$space.
@@ -3222,7 +3163,7 @@ sub loadbalance_rule_row {
unless ($checked) {
$default = ' selected="selected"';
}
- $extra =
+ $extra =
': '."\n".
@@ -3281,7 +3222,6 @@ sub contact_titles {
'helpdeskmail' => 'Helpdesk requests to be e-mailed to',
'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)',
'requestsmail' => 'E-mail from course requests requiring approval',
- 'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates',
);
my %short_titles = &Apache::lonlocal::texthash (
adminemail => 'Admin E-mail address',
@@ -3324,12 +3264,12 @@ sub authorrequest_titles {
automatic => 'Automatic approval',
);
return %titles;
-}
+}
sub courserequest_conditions {
my %conditions = &Apache::lonlocal::texthash (
approval => '(Processing of request subject to approval by Domain Coordinator).',
- validate => '(Processing of request subject to institutional validation).',
+ validate => '(Processing of request subject to instittutional validation).',
);
return %conditions;
}
@@ -3563,9 +3503,9 @@ sub captcha_choice {
#
# Note: If reCAPTCHA is to be used for LON-CAPA servers in a domain, a domain coordinator should visit:
# https://www.google.com/recaptcha and generate a Public and Private key. For domains with multiple
-# servers a single key pair will be used for all servers, so the internet domain (e.g., yourcollege.edu)
+# servers a single key pair will be used for all servers, so the internet domain (e.g., yourcollege.edu)
# specified for use with the key should be broad enough to accommodate all servers in the LON-CAPA domain.
-#
+#
$output .= ' '."\n".
''."\n".
''.$pubtext.' '."\n".
@@ -3916,8 +3856,8 @@ sub print_scantronformat {
$datatable .= ' '.&mt('Default in use:').' '.
'';
if ($scantronurl) {
- $datatable .= &Apache::loncommon::modal_link($scantronurl,&mt('Default bubblesheet format file'),600,500,
- undef,undef,undef,undef,'background-color:#ffffff');
+ $datatable .= ''.
+ &mt('Default bubblesheet format file').' ';
} else {
$datatable = &mt('File unavailable for display');
}
@@ -3942,12 +3882,11 @@ sub print_scantronformat {
}
$datatable .= ' '.$errorstr.' ';
} elsif ($scantronurl) {
- my $link = &Apache::loncommon::modal_link($scantronurl,&mt('Custom bubblesheet format file'),600,500,
- undef,undef,undef,undef,'background-color:#ffffff');
$datatable .= ' '.
- $link.
- ' '.&mt('Delete?').' '.
+ ''.
+ &mt('Custom bubblesheet format file').' '.
+ ' '.&mt('Delete?').' '.
' '.
&mt('Replace:').' ';
}
@@ -4245,7 +4184,7 @@ sub print_serverstatuses {
sub serverstatus_pages {
return ('userstatus','lonstatus','loncron','server-status','codeversions',
- 'checksums','clusterstatus','metadata_keywords','metadata_harvest',
+ 'clusterstatus','metadata_keywords','metadata_harvest',
'takeoffline','takeonline','showenv','toggledebug','ping','domconf');
}
@@ -4700,7 +4639,6 @@ sub modify_login {
%curr_loginvia,%loginhash,@currlangs,@newlangs,$addedfile,%title,@offon);
%title = ( coursecatalog => 'Display course catalog',
adminmail => 'Display administrator E-mail address',
- helpdesk => 'Display "Contact Helpdesk" link',
newuser => 'Link for visitors to create a user account',
loginheader => 'Log-in box header');
@offon = ('off','on');
@@ -4713,7 +4651,7 @@ sub modify_login {
}
($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'],
\%domconfig,\%loginhash);
- my @toggles = ('coursecatalog','adminmail','helpdesk','newuser');
+ my @toggles = ('coursecatalog','adminmail','newuser');
foreach my $item (@toggles) {
$loginhash{login}{$item} = $env{'form.'.$item};
}
@@ -4875,7 +4813,7 @@ sub modify_login {
} else {
my $puberror = &mt("Upload of [_1] failed because an error occurred publishing the file in RES space. Error was: [_2].",$newfile{$lang},$result);
$errors .= ''.$puberror.' ';
- if ((grep(/^\Q$lang\E$/,@currlangs)) &&
+ if ((grep(/^\Q$lang\E$/,@currlangs)) &&
(!grep(/^\Q$lang\E$/,@delurls))) {
$loginhash{'login'}{'helpurl'}{$lang} = $domconfig{'login'}{'helpurl'}{$lang};
@@ -4901,10 +4839,9 @@ sub modify_login {
my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash,
$dom);
if ($putresult eq 'ok') {
- my @toggles = ('coursecatalog','adminmail','helpdesk','newuser');
+ my @toggles = ('coursecatalog','adminmail','newuser');
my %defaultchecked = (
'coursecatalog' => 'on',
- 'helpdesk' => 'on',
'adminmail' => 'off',
'newuser' => 'off',
);
@@ -4992,7 +4929,7 @@ sub modify_login {
}
} elsif ($item eq 'captcha') {
if (ref($loginhash{'login'}) eq 'HASH') {
- my $chgtxt;
+ my $chgtxt;
if ($loginhash{'login'}{$item} eq 'notused') {
$chgtxt .= &mt('No CAPTCHA validation in use for helpdesk form.');
} else {
@@ -5053,7 +4990,7 @@ sub color_font_choices {
links => "Link colors",
images => "Images",
font => "Font color",
- fontmenu => "Font menu",
+ fontmenu => "Font Menu",
pgbg => "Page",
tabbg => "Header",
sidebg => "Border",
@@ -5105,45 +5042,24 @@ sub modify_colors {
my @images;
my $servadm = $r->dir_config('lonAdmEMail');
my $errors;
- my %defaults;
foreach my $role (@{$roles}) {
if ($role eq 'login') {
%choices = &login_choices();
@logintext = ('textcol','bgcol');
} else {
%choices = &color_font_choices();
+ $confhash->{$role}{'fontmenu'} = $env{'form.'.$role.'_fontmenu'};
}
if ($role eq 'login') {
@images = ('img','logo','domlogo','login');
@bgs = ('pgbg','mainbg','sidebg');
} else {
@images = ('img');
- @bgs = ('pgbg','tabbg','sidebg');
- }
- my %defaults = &role_defaults($role,\@bgs,\@links,\@images,\@logintext);
- unless ($env{'form.'.$role.'_font'} eq $defaults{'font'}) {
- $confhash->{$role}{'font'} = $env{'form.'.$role.'_font'};
+ @bgs = ('pgbg','tabbg','sidebg');
}
- if ($role eq 'login') {
- foreach my $item (@logintext) {
- unless ($env{'form.'.$role.'_'.$item} eq $defaults{'logintext'}{$item}) {
- $confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item};
- }
- }
- } else {
- unless($env{'form.'.$role.'_fontmenu'} eq $defaults{'fontmenu'}) {
- $confhash->{$role}{'fontmenu'} = $env{'form.'.$role.'_fontmenu'};
- }
- }
- foreach my $item (@bgs) {
- unless ($env{'form.'.$role.'_'.$item} eq $defaults{'bgs'}{$item} ) {
- $confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item};
- }
- }
- foreach my $item (@links) {
- unless ($env{'form.'.$role.'_'.$item} eq $defaults{'links'}{$item}) {
- $confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item};
- }
+ $confhash->{$role}{'font'} = $env{'form.'.$role.'_font'};
+ foreach my $item (@bgs,@links,@logintext) {
+ $confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item};
}
my ($configuserok,$author_ok,$switchserver) =
&config_check($dom,$confname,$servadm);
@@ -5491,7 +5407,7 @@ sub publishlogo {
# See if there is anything left
unless ($fname) { return ('error: no uploaded file'); }
$fname="$subdir/$fname";
- my $docroot=$r->dir_config('lonDocRoot');
+ my $docroot=$r->dir_config('lonDocRoot');
my $filepath="$docroot/priv";
my $relpath = "$dom/$confname";
my ($fnamepath,$file,$fetchthumb);
@@ -5499,7 +5415,7 @@ sub publishlogo {
if ($fname=~m|/|) {
($fnamepath,$file) = ($fname =~ m|^(.*)/([^/]+)$|);
}
- my @parts=split(/\//,"$filepath/$relpath/$fnamepath");
+ my @parts=split(/\//,"$filepath/$relpath/$fnamepath");
my $count;
for ($count=5;$count<=$#parts;$count++) {
$filepath.="/$parts[$count]";
@@ -5516,14 +5432,14 @@ sub publishlogo {
!defined(&Apache::loncommon::fileembstyle($1))) {
$output = &mt('Unrecognized file extension ([_1]) - rename the file with a proper extension and re-upload.',$1);
} elsif ($file=~/\.(\d+)\.(\w+)$/) {
- $output = &mt('Filename not allowed - rename the file to remove the number immediately before the file extension([_1]) and re-upload.',$2);
+ $output = &mt('File name not allowed - rename the file to remove the number immediately before the file extension([_1]) and re-upload.',$2);
} elsif (-d "$filepath/$file") {
- $output = &mt('Filename is a directory name - rename the file and re-upload');
+ $output = &mt('File name is a directory name - rename the file and re-upload');
} else {
my $source = $filepath.'/'.$file;
my $logfile;
if (!open($logfile,">>$source".'.log')) {
- return (&mt('No write permission to Authoring Space'));
+ return (&mt('No write permission to Construction Space'));
}
print $logfile
"\n================= Publish ".localtime()." ================\n".
@@ -5670,7 +5586,7 @@ sub write_metadata {
print $logfile "\nWrite metadata file for ".$targetdir.'/'.$file;
my $mfh;
if (open($mfh,'>'.$targetdir.'/'.$file.'.meta')) {
- foreach (sort(keys(%metadatafields))) {
+ foreach (sort keys %metadatafields) {
unless ($_=~/\./) {
my $unikey=$_;
$unikey=~/^([A-Za-z]+)/;
@@ -5754,7 +5670,7 @@ sub check_switchserver {
my @ids=&Apache::lonnet::current_machine_ids();
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }
if (!$allowed) {
- $switchserver=''.&mt('Switch Server').' ';
+ $switchserver=''.&mt('Switch Server').' ';
}
return $switchserver;
}
@@ -5765,7 +5681,7 @@ sub modify_quotas {
%limithash,$toolregexp,%conditions,$resulttext,%changes);
if ($action eq 'quotas') {
$context = 'tools';
- } else {
+ } else {
$context = $action;
}
if ($context eq 'requestcourses') {
@@ -5802,9 +5718,8 @@ sub modify_quotas {
} else {
if ($key =~ /^form\.quota_(.+)$/) {
$confhash{'defaultquota'}{$1} = $env{$key};
- } elsif ($key =~ /^form\.authorquota_(.+)$/) {
- $confhash{'authorquota'}{$1} = $env{$key};
- } elsif ($key =~ /^form\.\Q$context\E_(.+)$/) {
+ }
+ if ($key =~ /^form\.\Q$context\E_(.+)$/) {
@{$toolshash{$1}} = &Apache::loncommon::get_env_multiple($key);
}
}
@@ -5830,7 +5745,6 @@ sub modify_quotas {
}
} else {
$confhash{'defaultquota'}{'default'} = $env{'form.defaultquota'};
- $confhash{'authorquota'}{'default'} = $env{'form.authorquota'};
}
foreach my $item (@usertools) {
foreach my $type (@{$types},'default','_LC_adv') {
@@ -5918,17 +5832,6 @@ sub modify_quotas {
}
}
}
- if (ref($domconfig{'quotas'}{'authorquota'}) eq 'HASH') {
- foreach my $key (keys(%{$domconfig{'quotas'}{'authorquota'}})) {
- if (exists($confhash{'authorquota'}{$key})) {
- if ($confhash{'authorquota'}{$key} ne $domconfig{'quotas'}{'authorquota'}{$key}) {
- $changes{'authorquota'}{$key} = 1;
- }
- } else {
- $confhash{'authorquota'}{$key} = $domconfig{'quotas'}{'authorquota'}{$key};
- }
- }
- }
}
if (ref($confhash{'defaultquota'}) eq 'HASH') {
foreach my $key (keys(%{$confhash{'defaultquota'}})) {
@@ -5947,21 +5850,6 @@ sub modify_quotas {
}
}
}
- if (ref($confhash{'authorquota'}) eq 'HASH') {
- foreach my $key (keys(%{$confhash{'authorquota'}})) {
- if (ref($domconfig{'quotas'}) eq 'HASH') {
- if (ref($domconfig{'quotas'}{'authorquota'}) eq 'HASH') {
- if (!exists($domconfig{'quotas'}{'authorquota'}{$key})) {
- $changes{'authorquota'}{$key} = 1;
- }
- } else {
- $changes{'authorquota'}{$key} = 1;
- }
- } else {
- $changes{'authorquota'}{$key} = 1;
- }
- }
- }
}
if ($context eq 'requestauthor') {
@@ -5983,7 +5871,7 @@ sub modify_quotas {
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime);
$resulttext = &mt('Changes made:').'';
- unless (($context eq 'requestcourses') ||
+ unless (($context eq 'requestcourses') ||
($context eq 'requestauthor')) {
if (ref($changes{'defaultquota'}) eq 'HASH') {
$resulttext .= ''.&mt('Portfolio default quotas').'';
@@ -5998,26 +5886,13 @@ sub modify_quotas {
}
$resulttext .= ' ';
}
- if (ref($changes{'authorquota'}) eq 'HASH') {
- $resulttext .= ''.&mt('Authoring space default quotas').'';
- foreach my $type (@{$types},'default') {
- if (defined($changes{'authorquota'}{$type})) {
- my $typetitle = $usertypes->{$type};
- if ($type eq 'default') {
- $typetitle = $othertitle;
- }
- $resulttext .= ''.&mt('[_1] set to [_2] Mb',$typetitle,$confhash{'authorquota'}{$type}).' ';
- }
- }
- $resulttext .= ' ';
- }
}
my %newenv;
foreach my $item (@usertools) {
my (%haschgs,%inconf);
if ($context eq 'requestauthor') {
%haschgs = %changes;
- %inconf = %confhash;
+ %inconf = %confhash;
} else {
if (ref($changes{$item}) eq 'HASH') {
%haschgs = %{$changes{$item}};
@@ -6031,7 +5906,7 @@ sub modify_quotas {
&Apache::lonnet::usertools_access($env{'user.name'},
$env{'user.domain'},
$item,'reload',$context);
- if (($context eq 'requestcourses') ||
+ if (($context eq 'requestcourses') ||
($context eq 'requestauthor')) {
if ($env{'environment.canrequest.'.$item} ne $newacc) {
$newenv{'environment.canrequest.'.$item} = $newacc;
@@ -6442,16 +6317,13 @@ sub modify_autocreate {
foreach my $item (@types) {
if ($changes{$item}) {
my $newtxt = $offon[$newvals{$item}];
- $resulttext .= ''.
- &mt("$title{$item} set to [_1]$newtxt [_2]",
- '',' ').
- ' ';
+ $resulttext .= ''.&mt("$title{$item} set to [_1]$newtxt [_2]",'',' ').' ';
}
}
if ($changes{'xmldc'}) {
my ($dcname,$dcdom) = split(':',$newvals{'xmldc'});
my $newtxt = &Apache::loncommon::plainname($dcname,$dcdom);
- $resulttext .= ''.&mt("$title{'xmldc'} set to [_1]",''.$newtxt.' ').' ';
+ $resulttext .= ''.&mt("$title{'xmldc'} set to [_1]$newtxt [_2]",'',' ').' ';
}
$resulttext .= ' ';
} else {
@@ -6597,11 +6469,7 @@ sub modify_directorysrch {
} else {
$chgtext =~ s/\; $//;
}
- $resulttext .=
- ''.
- &mt("Users from domain '[_1]' permitted to search the institutional directory set to: [_2]",
- ''.$dom.' ',$chgtext).
- ' ';
+ $resulttext .= ''.&mt("Users from domain '[_1] ' permitted to search the institutional directory set to: [_2]",$dom,$chgtext).' ';
}
}
}
@@ -6629,7 +6497,7 @@ sub modify_directorysrch {
}
}
$chgtext =~ s/\; $//;
- $resulttext .= ''.&mt($title{'searchtypes'}.' set to: "[_1]"',$chgtext).' ';
+ $resulttext .= ''.&mt("$title{'searchtypes'} set to: \"[_1]\"",$chgtext).' ';
}
$resulttext .= '';
} else {
@@ -6653,7 +6521,7 @@ sub modify_contacts {
my (%others,%to,%bcc);
my @contacts = ('supportemail','adminemail');
my @mailings = ('errormail','packagesmail','helpdeskmail','lonstatusmail',
- 'requestsmail','updatesmail');
+ 'requestsmail');
foreach my $type (@mailings) {
@{$newsetting{$type}} =
&Apache::loncommon::get_env_multiple('form.'.$type);
@@ -6709,7 +6577,6 @@ sub modify_contacts {
$default{'helpdeskmail'} = 'supportemail';
$default{'lonstatusmail'} = 'adminemail';
$default{'requestsmail'} = 'adminemail';
- $default{'updatesmail'} = 'adminemail';
foreach my $item (@contacts) {
if ($to{$item} ne $default{$item}) {
$changes{$item} = 1;
@@ -7064,7 +6931,7 @@ sub modify_usercreation {
if ($captchas{$cancreate{$type}}) {
$chgtext .= &mt("Validation for self-creation screen set to $captchas{$cancreate{$type}}.");
} else {
- $chgtext .= &mt('Validation for self-creation screen set to unknown type.');
+ $chgtext .= &mt('Validation for self-creation screen set to unknown type.');
}
}
} elsif ($type eq 'recaptchakeys') {
@@ -7192,7 +7059,7 @@ sub process_captcha {
$newsettings->{'captcha'} = 'original';
}
if ($current->{'captcha'} ne $newsettings->{'captcha'}) {
- if ($container eq 'cancreate') {
+ if ($container eq 'cancreate') {
if (ref($changes->{'cancreate'}) eq 'ARRAY') {
push(@{$changes->{'cancreate'}},'captcha');
} elsif (!defined($changes->{'cancreate'})) {
@@ -7216,12 +7083,10 @@ sub process_captcha {
if (ref($current->{'recaptchakeys'}) eq 'HASH') {
$currpub = $current->{'recaptchakeys'}{'public'};
$currpriv = $current->{'recaptchakeys'}{'private'};
- unless ($newsettings->{'captcha'} eq 'recaptcha') {
- $newsettings->{'recaptchakeys'} = {
- public => '',
- private => '',
- }
- }
+ $newsettings->{'recaptchakeys'} = {
+ public => '',
+ private => '',
+ }
}
if (($newpub ne $currpub) || ($newpriv ne $currpriv)) {
if ($container eq 'cancreate') {
@@ -7231,7 +7096,7 @@ sub process_captcha {
$changes->{'cancreate'} = ['recaptchakeys'];
}
} else {
- $changes->{'recaptchakeys'} = 1;
+ $changes->{'recaptchakeys'} = 1;
}
}
return;
@@ -7915,8 +7780,8 @@ sub modify_helpsettings {
} elsif ($domconfig{'helpsettings'}{$item} ne $env{'form.'.$item}) {
$changes{$item} = 1;
}
- }
- if (($env{'form.'.$item} eq '0') || ($env{'form.'.$item} eq '1')) {
+ }
+ if (($env{'form.'.$item} eq '0') || ($env{'form.'.$item} eq '1')) {
$helphash{'helpsettings'}{$item} = $env{'form.'.$item};
}
}
@@ -7952,14 +7817,8 @@ sub modify_coursedefaults {
my ($dom,%domconfig) = @_;
my ($resulttext,$errors,%changes,%defaultshash);
my %defaultchecked = ('canuse_pdfforms' => 'off');
+ my @offon = ('off','on');
my @toggles = ('canuse_pdfforms');
- my @numbers = ('anonsurvey_threshold','uploadquota_official','uploadquota_unofficial',
- 'uploadquota_community');
- my @types = ('official','unofficial','community');
- my %staticdefaults = (
- anonsurvey_threshold => 10,
- uploadquota => 500,
- );
$defaultshash{'coursedefaults'} = {};
@@ -7975,7 +7834,7 @@ sub modify_coursedefaults {
if (($domconfig{'coursedefaults'}{$item} eq '') &&
($env{'form.'.$item} eq '0')) {
$changes{$item} = 1;
- } elsif ($domconfig{'coursedefaults'}{$item} ne $env{'form.'.$item}) {
+ } elsif ($domconfig{'coursdefaults'}{$item} ne $env{'form.'.$item}) {
$changes{$item} = 1;
}
} elsif ($defaultchecked{$item} eq 'off') {
@@ -7988,80 +7847,26 @@ sub modify_coursedefaults {
}
$defaultshash{'coursedefaults'}{$item} = $env{'form.'.$item};
}
- foreach my $item (@numbers) {
- my ($currdef,$newdef);
- my $newdef = $env{'form.'.$item};
- if ($item eq 'anonsurvey_threshold') {
- $currdef = $domconfig{'coursedefaults'}{$item};
- $newdef =~ s/\D//g;
- if ($newdef eq '' || $newdef < 1) {
- $newdef = 1;
- }
- $defaultshash{'coursedefaults'}{$item} = $newdef;
- } else {
- my ($type) = ($item =~ /^\Quploadquota_\E(\w+)$/);
- if (ref($domconfig{'coursedefaults'}{'uploadquota'}) eq 'HASH') {
- $currdef = $domconfig{'coursedefaults'}{'uploadquota'}{$type};
- }
- $newdef =~ s/[^\w.\-]//g;
- $defaultshash{'coursedefaults'}{'uploadquota'}{$type} = $newdef;
- }
- if ($currdef ne $newdef) {
- my $staticdef;
- if ($item eq 'anonsurvey_threshold') {
- unless (($currdef eq '') && ($newdef == $staticdefaults{$item})) {
- $changes{$item} = 1;
- }
- } else {
- unless (($currdef eq '') && ($newdef == $staticdefaults{'uploadquota'})) {
- $changes{'uploadquota'} = 1;
- }
- }
+ my $currdefresponder = $domconfig{'coursedefaults'}{'anonsurvey_threshold'};
+ my $newdefresponder = $env{'form.anonsurvey_threshold'};
+ $newdefresponder =~ s/\D//g;
+ if ($newdefresponder eq '' || $newdefresponder < 1) {
+ $newdefresponder = 1;
+ }
+ $defaultshash{'coursedefaults'}{'anonsurvey_threshold'} = $newdefresponder;
+ if ($currdefresponder ne $newdefresponder) {
+ unless ($currdefresponder eq '' && $newdefresponder == 10) {
+ $changes{'anonsurvey_threshold'} = 1;
}
}
- my $officialcreds = $env{'form.official_credits'};
- $officialcreds =~ s/^[^\d\.]//g;
- my $unofficialcreds = $env{'form.unofficial_credits'};
- $unofficialcreds =~ s/^[^\d\.]//g;
- if (ref($domconfig{'coursedefaults'}{'coursecredits'} ne 'HASH') &&
- ($env{'form.coursecredits'} eq '1')) {
- $changes{'coursecredits'} = 1;
- } else {
- if (($domconfig{'coursedefaults'}{'coursecredits'}{'official'} ne $officialcreds) ||
- ($domconfig{'coursedefaults'}{'coursecredits'}{'unofficial'} ne $unofficialcreds)) {
- $changes{'coursecredits'} = 1;
- }
- }
- $defaultshash{'coursedefaults'}{'coursecredits'} = {
- official => $officialcreds,
- unofficial => $unofficialcreds,
- }
}
my $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash,
$dom);
if ($putresult eq 'ok') {
- my %domdefaults;
if (keys(%changes) > 0) {
- if (($changes{'canuse_pdfforms'}) || ($changes{'coursecredits'}) || ($changes{'uploadquota'})) {
- %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
- if ($changes{'canuse_pdfforms'}) {
- $domdefaults{'canuse_pdfforms'}=$defaultshash{'coursedefaults'}{'canuse_pdfforms'};
- }
- if ($changes{'coursecredits'}) {
- if (ref($defaultshash{'coursedefaults'}{'coursecredits'}) eq 'HASH') {
- $domdefaults{'officialcredits'} =
- $defaultshash{'coursedefaults'}{'coursecredits'}{'official'};
- $domdefaults{'unofficialcredits'} =
- $defaultshash{'coursedefaults'}{'coursecredits'}{'unofficial'};
- }
- }
- if ($changes{'uploadquota'}) {
- if (ref($defaultshash{'coursedefaults'}{'uploadquota'}) eq 'HASH') {
- foreach my $type (@types) {
- $domdefaults{$type.'quota'}=$defaultshash{'coursedefaults'}{'uploadquota'}{$type};
- }
- }
- }
+ if ($changes{'canuse_pdfforms'}) {
+ my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
+ $domdefaults{'canuse_pdfforms'}=$defaultshash{'coursedefaults'}{'canuse_pdfforms'};
my $cachetime = 24*60*60;
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime);
}
@@ -8075,32 +7880,6 @@ sub modify_coursedefaults {
}
} elsif ($item eq 'anonsurvey_threshold') {
$resulttext .= ''.&mt('Responder count required for display of anonymous survey submissions set to [_1].',$defaultshash{'coursedefaults'}{'anonsurvey_threshold'}).' ';
- } elsif ($item eq 'uploadquota') {
- if (ref($defaultshash{'coursedefaults'}{'uploadquota'}) eq 'HASH') {
- $resulttext .= ''.&mt('Default quota for content uploaded to a course/community via Course Editor set as follows:').''.
- ''.&mt('Official courses: [_1] MB',''.$defaultshash{'coursedefaults'}{'uploadquota'}{'official'}.' ').' '.
- ''.&mt('Unofficial courses: [_1] MB',''.$defaultshash{'coursedefaults'}{'uploadquota'}{'unofficial'}.' ').' '.
- ''.&mt('Communities: [_1] MB',''.$defaultshash{'coursedefaults'}{'uploadquota'}{'community'}.' ').' '.
- ' '.
- ' ';
- } else {
- $resulttext .= ''.&mt('Default quota for content uploaded via Course Editor remains default: [_1] MB',$staticdefaults{'uploadquota'}).' ';
- }
- } elsif ($item eq 'coursecredits') {
- if (ref($defaultshash{'coursedefaults'}{'coursecredits'}) eq 'HASH') {
- if (($domdefaults{'officialcredits'} eq '') &&
- ($domdefaults{'unofficialcredits'} eq '')) {
- $resulttext .= ''.&mt('Student credits not in use for courses in this domain').' ';
- } else {
- $resulttext .= ''.&mt('Student credits can be set per course by a Domain Coordinator, with the following defaults applying:').''.
- ''.&mt('Official courses: [_1]',$defaultshash{'coursedefaults'}{'coursecredits'}{'official'}).' '.
- ''.&mt('Unofficial courses: [_1]',$defaultshash{'coursedefaults'}{'coursecredits'}{'unofficial'}).' '.
- ' '.
- ' ';
- }
- } else {
- $resulttext .= ''.&mt('Student credits not in use for courses in this domain').' ';
- }
}
}
$resulttext .= '';
@@ -8409,7 +8188,7 @@ sub modify_loadbalancing {
if ($balancer eq '') {
next;
}
- if (!exists($servers{$balancer})) {
+ if (!exists($servers{$balancer})) {
if (exists($currbalancer{$balancer})) {
push(@{$changes{'delete'}},$balancer);
}
@@ -8460,14 +8239,14 @@ sub modify_loadbalancing {
}
} else {
if (ref($defaultshash{'loadbalancing'}{$balancer}) eq 'HASH') {
- foreach my $sparetype (@sparestypes) {
+ foreach my $sparetype (@sparestypes) {
if (ref($defaultshash{'loadbalancing'}{$balancer}{'targets'}{$sparetype}) eq 'ARRAY') {
if (@{$defaultshash{'loadbalancing'}{$balancer}{'targets'}{$sparetype}} > 0) {
$changes{'curr'}{$balancer}{'targets'} = 1;
}
}
}
- }
+ }
}
my $ishomedom;
if (&Apache::lonnet::host_domain($balancer) eq $dom) {
@@ -8476,7 +8255,7 @@ sub modify_loadbalancing {
if (ref($alltypes) eq 'ARRAY') {
foreach my $type (@{$alltypes}) {
my $rule;
- unless ((($type eq '_LC_external') || ($type eq '_LC_internetdom')) &&
+ unless ((($type eq '_LC_external') || ($type eq '_LC_internetdom')) &&
(!$ishomedom)) {
$rule = $env{'form.loadbalancing_rules_'.$i.'_'.$type};
}
@@ -8501,7 +8280,7 @@ sub modify_loadbalancing {
}
my $putresult = &Apache::lonnet::put_dom('configuration',
\%defaultshash,$dom);
-
+
if ($putresult eq 'ok') {
if (keys(%changes) > 0) {
if (ref($changes{'delete'}) eq 'ARRAY') {
@@ -8511,7 +8290,7 @@ sub modify_loadbalancing {
}
}
if (ref($changes{'add'}) eq 'ARRAY') {
- foreach my $balancer (sort(@{$changes{'add'}})) {
+ foreach my $balancer (sort(@{$changes{'add'}})) {
$resulttext .= ''.&mt('Load Balancing enabled for: [_1]',$balancer);
}
}
@@ -8557,7 +8336,7 @@ sub modify_loadbalancing {
} else {
$balancetext = &mt('offload to [_1]',$defaultshash{'loadbalancing'}{$balancer}{'rules'}{$type});
}
- $resulttext .= ' '.&mt('Load Balancer: [_1] -- balancing for [_2] set to - "[_3]"',$balancer,$titles->{$type},$balancetext).' ';
+ $resulttext .= ''.&mt('Load Balancer: [_1] -- balancing for [_2] set to - "[_3]"',$balancer,$titles->{$type},$balancetext).' ';
}
}
}
@@ -8617,7 +8396,7 @@ sub recurse_cat_deletes {
delete($coursecategories->{$subitem});
$deletions->{$subitem} = 1;
&recurse_cat_deletes($subitem,$coursecategories,$deletions);
- }
+ }
}
}
return;
@@ -8625,94 +8404,72 @@ sub recurse_cat_deletes {
sub get_active_dcs {
my ($dom) = @_;
- my $now = time;
- my %dompersonnel = &Apache::lonnet::get_domain_roles($dom,['dc'],$now,$now);
+ my %dompersonnel = &Apache::lonnet::get_domain_roles($dom,['dc']);
my %domcoords;
my $numdcs = 0;
+ my $now = time;
foreach my $server (keys(%dompersonnel)) {
foreach my $user (sort(keys(%{$dompersonnel{$server}}))) {
my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user);
- $domcoords{$uname.':'.$udom} = $dompersonnel{$server}{$user};
+ my ($end,$start) = split(':',$dompersonnel{$server}{$user});
+ if (($end eq '') || ($end == 0) || ($end > $now)) {
+ if ($start <= $now) {
+ $domcoords{$uname.':'.$udom} = $dompersonnel{$server}{$user};
+ }
+ }
}
}
return %domcoords;
}
sub active_dc_picker {
- my ($dom,$numinrow,$inputtype,$name,%currhash) = @_;
+ my ($dom,$curr_dc) = @_;
my %domcoords = &get_active_dcs($dom);
- my @domcoord = keys(%domcoords);
- if (keys(%currhash)) {
- foreach my $dc (keys(%currhash)) {
- unless (exists($domcoords{$dc})) {
- push(@domcoord,$dc);
- }
- }
- }
- @domcoord = sort(@domcoord);
- my $numdcs = scalar(@domcoord);
- my $rows = 0;
- my $table;
+ my @dcs = sort(keys(%domcoords));
+ my $numdcs = scalar(@dcs);
+ my $datatable;
+ my $numinrow = 2;
if ($numdcs > 1) {
- $table = '';
+ } elsif (@dcs) {
+ $datatable .= ' ';
}
- return ($numdcs,$table,$rows);
+ return ($numdcs,$datatable);
}
sub usersession_titles {
@@ -8784,7 +8541,7 @@ sub lonbalance_targets_js {
}
&get_loadbalancers_config($servers,\%existing,\%currbalancer,
\%currtargets,\%currrules);
- my $balancers = join("','",sort(keys(%currbalancer)));
+ my $balancers = join("','",sort(keys(%currbalancer)));
return <<"END";
-
-END
-
-}
-
-sub credits_js {
- return <<"END";
-
-