--- loncom/interface/domainprefs.pm 2009/11/23 21:45:18 1.120
+++ loncom/interface/domainprefs.pm 2010/04/14 04:27:20 1.134
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.120 2009/11/23 21:45:18 raeburn Exp $
+# $Id: domainprefs.pm,v 1.134 2010/04/14 04:27:20 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -199,14 +199,16 @@ sub handler {
}
my %domconfig =
&Apache::lonnet::get_dom('configuration',['login','rolecolors',
- 'quotas','autoenroll','autoupdate','directorysrch',
- 'usercreation','usermodification','contacts','defaults',
- 'scantron','coursecategories','serverstatuses',
- 'requestcourses','helpsettings'],$dom);
+ 'quotas','autoenroll','autoupdate','autocreate',
+ 'directorysrch','usercreation','usermodification',
+ 'contacts','defaults','scantron','coursecategories',
+ 'serverstatuses','requestcourses','helpsettings',
+ 'coursedefaults'],$dom);
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
- 'autoupdate','directorysrch','contacts',
+ 'autoupdate','autocreate','directorysrch','contacts',
'usercreation','usermodification','scantron',
- 'requestcourses','coursecategories','serverstatuses','helpsettings');
+ 'requestcourses','coursecategories','serverstatuses','helpsettings',
+ 'coursedefaults');
my %prefs = (
'rolecolors' =>
{ text => 'Default color schemes',
@@ -234,7 +236,7 @@ sub handler {
col2 => 'Value'}],
},
'quotas' =>
- { text => 'User blogs, personal information pages and portfolios',
+ { text => 'User blogs, personal information pages, portfolios',
help => 'Domain_Configuration_Quotas',
header => [{col1 => 'User affiliation',
col2 => 'Available tools',
@@ -251,8 +253,16 @@ sub handler {
help => 'Domain_Configuration_Auto_Updates',
header => [{col1 => 'Setting',
col2 => 'Value',},
+ {col1 => 'Setting',
+ col2 => 'Affiliation'},
{col1 => 'User population',
- col2 => 'Updataeable user data'}],
+ col2 => 'Updateable user data'}],
+ },
+ 'autocreate' =>
+ { text => 'Auto-course creation settings',
+ help => 'Domain_Configuration_Auto_Creation',
+ header => [{col1 => 'Configuration Setting',
+ col2 => 'Value',}],
},
'directorysrch' =>
{ text => 'Institutional directory searches',
@@ -322,6 +332,14 @@ sub handler {
'helpsettings' =>
{text => 'Help page settings',
help => 'Domain_Configuration_Help_Settings',
+ header => [{col1 => 'Authenticated Help Settings',
+ col2 => ''},
+ {col1 => 'Unauthenticated Help Settings',
+ col2 => ''}],
+ },
+ 'coursedefaults' =>
+ {text => 'Course/Community defaults',
+ help => 'Domain_Configuration_Course_Defaults',
header => [{col1 => 'Setting',
col2 => 'Value',}],
},
@@ -346,7 +364,7 @@ sub handler {
my @actions = &Apache::loncommon::get_env_multiple('form.actions');
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'pickactions')",
- text=>"Pick functionality"});
+ text=>"Settings to display/modify"});
my $confname = $dom.'-domainconfig';
if ($phase eq 'process') {
&Apache::lonconfigsettings::make_changes($r,$dom,$phase,$context,\@prefs_order,\%prefs,\%domconfig,$confname,\@roles);
@@ -409,6 +427,8 @@ sub process_changes {
$output = &modify_autoenroll($dom,%domconfig);
} elsif ($action eq 'autoupdate') {
$output = &modify_autoupdate($dom,%domconfig);
+ } elsif ($action eq 'autocreate') {
+ $output = &modify_autocreate($dom,%domconfig);
} elsif ($action eq 'directorysrch') {
$output = &modify_directorysrch($dom,%domconfig);
} elsif ($action eq 'usercreation') {
@@ -428,7 +448,9 @@ sub process_changes {
} elsif ($action eq 'requestcourses') {
$output = &modify_quotas($dom,$action,%domconfig);
} elsif ($action eq 'helpsettings') {
- $output = &modify_helpsettings($dom,%domconfig);
+ $output = &modify_helpsettings($r,$dom,$confname,%domconfig);
+ } elsif ($action eq 'coursedefaults') {
+ $output = &modify_coursedefaults($dom,%domconfig);
}
return $output;
}
@@ -454,7 +476,7 @@ sub print_config_box {
}
if ($numheaders > 1) {
my $colspan = '';
- if (($action eq 'rolecolors') || ($action eq 'coursecategories')) {
+ if (($action eq 'rolecolors') || ($action eq 'coursecategories') || ($action eq 'helpsettings')) {
$colspan = ' colspan="2"';
}
$output .= '
@@ -480,8 +502,8 @@ sub print_config_box {
} elsif ($action eq 'requestcourses') {
$output .= &print_quotas($dom,$settings,\$rowtotal,$action);
} elsif ($action eq 'helpsettings') {
- $output .= &print_helpsettings($dom,$settings,\$rowtotal);
- } else {
+ $output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'student',$dom,$confname,$settings,\$rowtotal);
}
$output .= '
@@ -498,7 +520,18 @@ sub print_config_box {
';
$rowtotal ++;
if ($action eq 'autoupdate') {
- $output .= &print_autoupdate('bottom',$dom,$settings,\$rowtotal);
+ $output .= &print_autoupdate('middle',$dom,$settings,\$rowtotal).'
+
+
+
+
+
+
+
+ '.&mt($item->{'header'}->[2]->{'col1'}).' |
+ '.&mt($item->{'header'}->[2]->{'col2'}).' | '.
+ &print_autoupdate('bottom',$dom,$settings,\$rowtotal);
+ $rowtotal ++;
} elsif ($action eq 'usercreation') {
$output .= &print_usercreation('middle',$dom,$settings,\$rowtotal).'
@@ -523,7 +556,6 @@ sub print_config_box {
|
'.&mt($item->{'header'}->[2]->{'col1'}).' |
'.&mt($item->{'header'}->[2]->{'col2'}).' |
'.
-
&print_usermodification('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
} elsif ($action eq 'coursecategories') {
@@ -532,7 +564,9 @@ sub print_config_box {
$output .= &print_login('bottom',$dom,$confname,$phase,$settings,\$rowtotal);
} elsif ($action eq 'requestcourses') {
$output .= &print_courserequestmail($dom,$settings,\$rowtotal);
- } else {
+ } elsif ($action eq 'helpsettings') {
+ $output .= &print_helpsettings('bottom',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'
@@ -606,6 +640,8 @@ sub print_config_box {
$output .= &print_quotas($dom,$settings,\$rowtotal,$action);
} elsif ($action eq 'autoenroll') {
$output .= &print_autoenroll($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'autocreate') {
+ $output .= &print_autocreate($dom,$settings,\$rowtotal);
} elsif ($action eq 'directorysrch') {
$output .= &print_directorysrch($dom,$settings,\$rowtotal);
} elsif ($action eq 'contacts') {
@@ -617,8 +653,10 @@ sub print_config_box {
} elsif ($action eq 'serverstatuses') {
$output .= &print_serverstatuses($dom,$settings,\$rowtotal);
} elsif ($action eq 'helpsettings') {
- $output .= &print_helpsettings($dom,$settings,\$rowtotal);
- }
+ $output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'coursedefaults') {
+ $output .= &print_coursedefaults($dom,$settings,\$rowtotal);
+ }
}
$output .= '
@@ -632,15 +670,17 @@ sub print_login {
my ($position,$dom,$confname,$phase,$settings,$rowtotal) = @_;
my ($css_class,$datatable);
my %choices = &login_choices();
- my $itemcount = 1;
if ($position eq 'top') {
my %servers = &dom_servers($dom);
my $choice = $choices{'disallowlogin'};
$css_class = ' class="LC_odd_row"';
- $datatable .= ''.$choices{'disallowlogin'}.' | '.
+ $datatable .= '
'.$choice.' | '.
' |
';
return $datatable;
@@ -809,7 +878,10 @@ sub login_choices {
adminmail => "Display Administrator's E-mail Address?",
disallowlogin => "Login page requests redirected",
hostid => "Server",
- serverurl => "Redirect to log-in via:",
+ server => "Redirect to:",
+ serverpath => "Path",
+ custompath => "Custom",
+ exempt => "Exempt IP(s)",
directlogin => "No redirect",
newuser => "Link to create a user account",
img => "Header",
@@ -916,7 +988,7 @@ sub display_color_options {
my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs,
$images,$bgs,$links,$alt_text,$rowtotal,$logintext,$loginheader) = @_;
my $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $datatable = ''.
+ my $datatable = '
'.
''.$choices->{'font'}.' | ';
if (!$is_custom->{'font'}) {
$datatable .= ''.&mt('Default in use:').' '.$defaults->{'font'}.' | ';
@@ -1301,15 +1373,15 @@ sub print_quotas {
$cell{$item} .= ' ';
+ $titles{$option}.'';
if ($option eq 'autolimit') {
- $cell{$item} .= '';
}
- $cell{$item} .= ' ';
+ $cell{$item} .= ' ';
if ($option eq 'autolimit') {
- $cell{$item} .= $titles{'unlimited'}
+ $cell{$item} .= $titles{'unlimited'};
}
}
} else {
@@ -1409,13 +1481,13 @@ sub print_quotas {
'_default" value="'.$val.'"'.$checked.' />'.
$titles{$option}.'';
if ($option eq 'autolimit') {
- $defcell{$item} .= '';
}
- $defcell{$item} .= ' ';
+ $defcell{$item} .= ' ';
if ($option eq 'autolimit') {
- $defcell{$item} .= $titles{'unlimited'}
+ $defcell{$item} .= $titles{'unlimited'};
}
}
} else {
@@ -1512,13 +1584,13 @@ sub print_quotas {
'__LC_adv" value="'.$val.'"'.$checked.' />'.
$titles{$option}.'';
if ($option eq 'autolimit') {
- $advcell{$item} .= '';
}
- $advcell{$item} .= ' ';
+ $advcell{$item} .= ' ';
if ($option eq 'autolimit') {
- $advcell{$item} .= $titles{'unlimited'}
+ $advcell{$item} .= $titles{'unlimited'};
}
}
} else {
@@ -1631,7 +1703,7 @@ sub print_courserequestmail {
sub print_autoenroll {
my ($dom,$settings,$rowtotal) = @_;
my $autorun = &Apache::lonnet::auto_run(undef,$dom),
- my ($defdom,$runon,$runoff);
+ my ($defdom,$runon,$runoff,$coownerson,$coownersoff);
if (ref($settings) eq 'HASH') {
if (exists($settings->{'run'})) {
if ($settings->{'run'} eq '0') {
@@ -1650,6 +1722,18 @@ sub print_autoenroll {
$runon = ' ';
}
}
+ if (exists($settings->{'co-owners'})) {
+ if ($settings->{'co-owners'} eq '0') {
+ $coownersoff = ' checked="checked" ';
+ $coownerson = ' ';
+ } else {
+ $coownerson = ' checked="checked" ';
+ $coownersoff = ' ';
+ }
+ } else {
+ $coownersoff = ' checked="checked" ';
+ $coownerson = ' ';
+ }
if (exists($settings->{'sender_domain'})) {
$defdom = $settings->{'sender_domain'};
}
@@ -1680,8 +1764,16 @@ sub print_autoenroll {
&mt('username').': '.
' '.&mt('domain').
- ': '.$domform.'
';
- $$rowtotal += 2;
+ ': '.$domform.''.
+ ''.
+ ''.&mt('Automatically assign co-ownership').' | '.
+ ' '.
+ ' | '.
+ '
';
+ $$rowtotal += 3;
return $datatable;
}
@@ -1723,9 +1815,17 @@ sub print_autoupdate {
$classlistsoff.'value="0" />'.&mt('No').''.
'';
$$rowtotal += 2;
+ } elsif ($position eq 'middle') {
+ my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
+ my $numinrow = 3;
+ my $locknamesettings;
+ $datatable .= &insttypes_row($settings,$types,$usertypes,
+ $dom,$numinrow,$othertitle,
+ 'lockablenames');
+ $$rowtotal ++;
} else {
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- my @fields = ('lastname','firstname','middlename','gen',
+ my @fields = ('lastname','firstname','middlename','generation',
'permanentemail','id');
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles();
my $numrows = 0;
@@ -1746,6 +1846,57 @@ sub print_autoupdate {
return $datatable;
}
+sub print_autocreate {
+ my ($dom,$settings,$rowtotal) = @_;
+ my (%createon,%createoff);
+ my $curr_dc;
+ my @types = ('xml','req');
+ if (ref($settings) eq 'HASH') {
+ foreach my $item (@types) {
+ $createoff{$item} = ' checked="checked" ';
+ $createon{$item} = ' ';
+ if (exists($settings->{$item})) {
+ if ($settings->{$item}) {
+ $createon{$item} = ' checked="checked" ';
+ $createoff{$item} = ' ';
+ }
+ }
+ }
+ $curr_dc = $settings->{'xmldc'};
+ } else {
+ foreach my $item (@types) {
+ $createoff{$item} = ' checked="checked" ';
+ $createon{$item} = ' ';
+ }
+ }
+ $$rowtotal += 2;
+ my $datatable=''.
+ ''.&mt('Create pending official courses from XML files').' | '.
+ ' '.
+ '';
+ my ($numdc,$dctable) = &active_dc_picker($dom,$curr_dc);
+ if ($numdc > 1) {
+ $datatable .= ' |
'.
+ &mt('XML files processed as: (choose Dom. Coord.)').
+ ' | '.$dctable.' |
'.
+ '';
+ $$rowtotal ++ ;
+ } else {
+ $datatable .= '
';
+ }
+ $datatable .= ''.&mt('Create pending requests for official courses (if validated)').' | '.
+ ' '.
+ ' | '.
+ '
';
+ return $datatable;
+}
+
sub print_directorysrch {
my ($dom,$settings,$rowtotal) = @_;
my $srchon = ' ';
@@ -1863,12 +2014,13 @@ sub print_contacts {
my ($dom,$settings,$rowtotal) = @_;
my $datatable;
my @contacts = ('adminemail','supportemail');
- my (%checked,%to,%otheremails);
+ my (%checked,%to,%otheremails,%bccemails);
my @mailings = ('errormail','packagesmail','lonstatusmail','helpdeskmail',
'requestsmail');
foreach my $type (@mailings) {
$otheremails{$type} = '';
}
+ $bccemails{'helpdeskmail'} = '';
if (ref($settings) eq 'HASH') {
foreach my $item (@contacts) {
if (exists($settings->{$item})) {
@@ -1884,6 +2036,9 @@ sub print_contacts {
}
}
$otheremails{$type} = $settings->{$type}{'others'};
+ if ($type eq 'helpdeskmail') {
+ $bccemails{$type} = $settings->{$type}{'bcc'};
+ }
}
} elsif ($type eq 'lonstatusmail') {
$checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
@@ -1927,8 +2082,13 @@ sub print_contacts {
}
$datatable .= '
'.&mt('Others').': '.
''.
- ''."\n";
+ 'value="'.$otheremails{$type}.'" />';
+ if ($type eq 'helpdeskmail') {
+ $datatable .= '
'.&mt('Bcc').':'.(' 'x6).
+ '';
+ }
+ $datatable .= ''."\n";
}
$$rowtotal += $rownum;
return $datatable;
@@ -1936,32 +2096,116 @@ sub print_contacts {
sub print_helpsettings {
- my ($dom,$settings,$rowtotal) = @_;
+ my ($position,$dom,$confname,$settings,$rowtotal) = @_;
my ($css_class,$datatable);
- my $itemcount = 1;
- my (%checkedon,%checkedoff,%choices,%defaultchecked,@toggles);
- %choices =
- &Apache::lonlocal::texthash (
- submitbugs => 'Display "Submit a bug" link?',
- );
+ my $switchserver = &check_switchserver($dom,$confname);
- %defaultchecked = ('submitbugs' => 'on');
+ my $itemcount = 1;
- @toggles = ('submitbugs',);
-
- foreach my $item (@toggles) {
- if ($defaultchecked{$item} eq 'on') {
+ if ($position eq 'top') {
+
+ my (%checkedon,%checkedoff,%choices,%defaultchecked,@toggles);
+
+ %choices =
+ &Apache::lonlocal::texthash (
+ submitbugs => 'Display "Submit a bug" link?',
+ );
+
+ %defaultchecked = ('submitbugs' => 'on');
+
+ @toggles = ('submitbugs',);
+
+ foreach my $item (@toggles) {
+ if ($defaultchecked{$item} eq 'on') {
+ $checkedon{$item} = ' checked="checked" ';
+ $checkedoff{$item} = ' ';
+ } elsif ($defaultchecked{$item} eq 'off') {
+ $checkedoff{$item} = ' checked="checked" ';
+ $checkedon{$item} = ' ';
+ }
+ }
+
+ if (ref($settings) eq 'HASH') {
+ foreach my $item (@toggles) {
+ if ($settings->{$item} eq '1') {
+ $checkedon{$item} = ' checked="checked" ';
+ $checkedoff{$item} = ' ';
+ } elsif ($settings->{$item} eq '0') {
+ $checkedoff{$item} = ' checked="checked" ';
+ $checkedon{$item} = ' ';
+ }
+ }
+ }
+
+ foreach my $item (@toggles) {
+ $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
+ $datatable .=
+ '
+ '.$choices{$item}.' |
+ |
+
+
+ '.
+ ' | '.
+ '
';
+ $itemcount ++;
+ }
+
+ } else {
+
+ $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
+
+ $datatable .= '';
+
+ if (ref($settings) eq 'HASH') {
+ if ($settings->{'loginhelpurl'} ne '') {
+ my($directory, $filename) = $settings->{'loginhelpurl'} =~ m/(.*\/)(.*)$/;
+ $datatable .= ' | ';
+ $datatable .= ' | '
+ } else {
+ $datatable .= ' | ';
+ $datatable .= ' | ';
+ }
+ } else {
+ $datatable .= ' | ';
+ $datatable .= ' | ';
+ }
+
+ $datatable .= '';
+ if ($switchserver) {
+ $datatable .= &mt('Upload to library server: [_1]',$switchserver);
+ } else {
+ $datatable .= &mt('Upload Custom Login Page Help File:');
+ $datatable .='';
+ }
+ $datatable .= ' |
';
+
+ }
+
+ return $datatable;
+
+}
+
+
+sub radiobutton_prefs {
+ my ($settings,$toggles,$defaultchecked,$choices,$itemcount) = @_;
+ return unless ((ref($toggles) eq 'ARRAY') && (ref($defaultchecked) eq 'HASH') &&
+ (ref($choices) eq 'HASH'));
+
+ my (%checkedon,%checkedoff,$datatable,$css_class);
+
+ foreach my $item (@{$toggles}) {
+ if ($defaultchecked->{$item} eq 'on') {
$checkedon{$item} = ' checked="checked" ';
$checkedoff{$item} = ' ';
- } elsif ($defaultchecked{$item} eq 'off') {
+ } elsif ($defaultchecked->{$item} eq 'off') {
$checkedoff{$item} = ' checked="checked" ';
$checkedon{$item} = ' ';
}
}
-
if (ref($settings) eq 'HASH') {
- foreach my $item (@toggles) {
+ foreach my $item (@{$toggles}) {
if ($settings->{$item} eq '1') {
$checkedon{$item} = ' checked="checked" ';
$checkedoff{$item} = ' ';
@@ -1970,12 +2214,11 @@ sub print_helpsettings {
$checkedon{$item} = ' ';
}
}
- }
-
- foreach my $item (@toggles) {
+ }
+ foreach my $item (@{$toggles}) {
$css_class = $itemcount%2?' class="LC_odd_row"':'';
- $datatable .=
- ''.$choices{$item}.
+ $datatable .=
+ ''.$choices->{$item}.
' | '.
''.
' | |