--- loncom/interface/domainprefs.pm 2010/07/20 02:42:40 1.138
+++ loncom/interface/domainprefs.pm 2010/12/08 03:38:46 1.141
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.138 2010/07/20 02:42:40 raeburn Exp $
+# $Id: domainprefs.pm,v 1.141 2010/12/08 03:38:46 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -230,7 +230,7 @@ sub handler {
},
'defaults' =>
- { text => 'Default authentication/language/timezone',
+ { text => 'Default authentication/language/timezone/portal',
help => 'Domain_Configuration_LangTZAuth',
header => [{col1 => 'Setting',
col2 => 'Value'}],
@@ -340,8 +340,10 @@ sub handler {
'coursedefaults' =>
{text => 'Course/Community defaults',
help => 'Domain_Configuration_Course_Defaults',
- header => [{col1 => 'Setting',
- col2 => 'Value',}],
+ 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',
@@ -349,7 +351,7 @@ sub handler {
header => [{col1 => 'Setting',
col2 => 'Value',}],
},
- 'usersessions' =>
+ 'usersessions' =>
{text => 'User session hosting',
help => 'Domain_Configuration_User_Sessions',
header => [{col1 => 'Hosting of users from other domains',
@@ -517,6 +519,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 .= '
@@ -580,6 +584,8 @@ sub print_config_box {
$output .= &print_helpsettings('bottom',$dom,$confname,$settings,\$rowtotal);
} elsif ($action eq 'usersessions') {
$output .= &print_usersessions('bottom',$dom,$settings,\$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).'
@@ -668,8 +674,6 @@ sub print_config_box {
$output .= &print_serverstatuses($dom,$settings,\$rowtotal);
} elsif ($action eq 'helpsettings') {
$output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal);
- } elsif ($action eq 'coursedefaults') {
- $output .= &print_coursedefaults($dom,$settings,\$rowtotal);
}
}
$output .= '
@@ -2240,28 +2244,60 @@ sub radiobutton_prefs {
}
sub print_coursedefaults {
- my ($dom,$settings,$rowtotal) = @_;
+ my ($position,$dom,$settings,$rowtotal) = @_;
my ($css_class,$datatable);
my $itemcount = 1;
- 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',);
- ($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
+ 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',);
+ ($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
\%choices,$itemcount);
- $$rowtotal += $itemcount;
+ $$rowtotal += $itemcount;
+ } else {
+ $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
+ 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 (!$currdefresponder) {
+ $currdefresponder = 10;
+ } elsif ($currdefresponder < 1) {
+ $currdefresponder = 1;
+ }
+ $datatable .=
+ '
'.$choices{'anonsurvey_threshold'}.
+ '
'.
+ '
'.
+ ''.
+ '
';
+ }
return $datatable;
}
sub print_usersessions {
my ($position,$dom,$settings,$rowtotal) = @_;
my ($css_class,$datatable,%checked,%choices);
+ my (%by_ip,%by_location,@intdoms);
+ &build_location_hashes(\@intdoms,\%by_ip,\%by_location);
+ if (keys(%by_location) == 0) {
+ if ($position eq 'top') {
+ $datatable .= '
'.
+ &mt('Nothing to set here, as the cluster to which this domain belongs only contains this institution.');
+ }
+ }
my %lt = &usersession_titles();
my $itemcount = 1;
- my $numinrow = 6;
+ my $numinrow = 5;
my $prefix;
my @types;
if ($position eq 'top') {
@@ -2273,8 +2309,6 @@ sub print_usersessions {
}
my (%current,%checkedon,%checkedoff);
my @lcversions = &Apache::lonnet::all_loncaparevs();
- my (%by_ip,%by_location,@intdoms);
- &build_location_hashes(\@intdoms,\%by_ip,\%by_location);
my @locations = sort(keys(%by_location));
foreach my $type (@types) {
$checkedon{$type} = '';
@@ -2297,6 +2331,7 @@ sub print_usersessions {
}
}
foreach my $type (@types) {
+ next if ($type ne 'version' && !@locations);
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
$datatable .= '
'.$lt{$type}.'
@@ -2790,9 +2825,9 @@ sub print_usermodification {
sub print_defaults {
my ($dom,$rowtotal) = @_;
my @items = ('auth_def','auth_arg_def','lang_def','timezone_def',
- 'datelocale_def');
+ 'datelocale_def','portal_def');
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
- my $titles = &defaults_titles();
+ my $titles = &defaults_titles($dom);
my $rownum = 0;
my ($datatable,$css_class);
foreach my $item (@items) {
@@ -2829,8 +2864,12 @@ sub print_defaults {
my $includeempty = 1;
$datatable .= &Apache::loncommon::select_datelocale($item,$domdefaults{$item},undef,$includeempty);
} else {
+ my $size;
+ if ($item eq 'portal_def') {
+ $size = ' size="25"';
+ }
$datatable .= '';
+ $domdefaults{$item}.'"'.$size.' />';
}
$datatable .= '
';
$rownum ++;
@@ -2840,13 +2879,25 @@ sub print_defaults {
}
sub defaults_titles {
+ my ($dom) = @_;
my %titles = &Apache::lonlocal::texthash (
'auth_def' => 'Default authentication type',
'auth_arg_def' => 'Default authentication argument',
'lang_def' => 'Default language',
'timezone_def' => 'Default timezone',
'datelocale_def' => 'Default locale for dates',
+ 'portal_def' => 'Portal/Default URL',
);
+ if ($dom) {
+ my $uprimary_id = &Apache::lonnet::domain($dom,'primary');
+ my $uint_dom = &Apache::lonnet::internet_dom($uprimary_id);
+ my $protocol = $Apache::lonnet::protocol{$uprimary_id};
+ $protocol = 'http' if ($protocol ne 'https');
+ if ($uint_dom) {
+ $titles{'portal_def'} .= ' '.&mt('(for example: [_1])',$protocol.'://loncapa.'.
+ $uint_dom);
+ }
+ }
return (\%titles);
}
@@ -5982,7 +6033,7 @@ sub modify_defaults {
my ($dom,$r) = @_;
my ($resulttext,$mailmsgtxt,%newvalues,%changes,@errors);
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
- my @items = ('auth_def','auth_arg_def','lang_def','timezone_def','datelocale_def');
+ my @items = ('auth_def','auth_arg_def','lang_def','timezone_def','datelocale_def','portal_def');
my @authtypes = ('internal','krb4','krb5','localauth');
foreach my $item (@items) {
$newvalues{$item} = $env{'form.'.$item};
@@ -6018,6 +6069,12 @@ sub modify_defaults {
push(@errors,$item);
}
}
+ } elsif ($item eq 'portal_def') {
+ if ($newvalues{$item} ne '') {
+ unless ($newvalues{$item} =~ /^https?\:\/\/(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])\/?$/) {
+ push(@errors,$item);
+ }
+ }
}
if (grep(/^\Q$item\E$/,@errors)) {
$newvalues{$item} = $domdefaults{$item};
@@ -6664,6 +6721,18 @@ sub modify_coursedefaults {
}
$defaultshash{'coursedefaults'}{$item} = $env{'form.'.$item};
}
+ 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 $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash,
$dom);
@@ -6683,6 +6752,8 @@ sub modify_coursedefaults {
} else {
$resulttext .= '
'.&mt('Course/Community users can create/upload PDF forms set to "off"').'