version 1.107, 2009/08/22 20:28:29
|
version 1.117, 2009/10/25 15:53:25
|
Line 220 sub handler {
|
Line 220 sub handler {
|
{col1 => 'Administrator Settings', |
{col1 => 'Administrator Settings', |
col2 => '',}], |
col2 => '',}], |
}, |
}, |
'login' => |
'login' => |
{ text => 'Log-in page options', |
{ text => 'Log-in page options', |
help => 'Domain_Configuration_Login_Page', |
help => 'Domain_Configuration_Login_Page', |
header => [{col1 => 'Item', |
header => [{col1 => 'Item', |
col2 => '',}], |
col2 => '',}], |
}, |
}, |
|
|
'defaults' => |
'defaults' => |
{ text => 'Default authentication/language/timezone', |
{ text => 'Default authentication/language/timezone', |
help => 'Domain_Configuration_LangTZAuth', |
help => 'Domain_Configuration_LangTZAuth', |
Line 319 sub handler {
|
Line 320 sub handler {
|
}], |
}], |
}, |
}, |
); |
); |
|
my %servers = &dom_servers($dom); |
|
if (keys(%servers) > 1) { |
|
$prefs{'login'} = { text => 'Log-in page options', |
|
help => 'Domain_Configuration_Login_Page', |
|
header => [{col1 => 'Log-in Service', |
|
col2 => 'Server Setting',}, |
|
{col1 => 'Log-in Page Items', |
|
col2 => ''}], |
|
}; |
|
} |
my @roles = ('student','coordinator','author','admin'); |
my @roles = ('student','coordinator','author','admin'); |
my @actions = &Apache::loncommon::get_env_multiple('form.actions'); |
my @actions = &Apache::loncommon::get_env_multiple('form.actions'); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
Line 423 sub print_config_box {
|
Line 434 sub print_config_box {
|
&Apache::loncommon::help_open_topic($item->{'help'}).'</span></th>'."\n". |
&Apache::loncommon::help_open_topic($item->{'help'}).'</span></th>'."\n". |
'</tr>'; |
'</tr>'; |
$rowtotal ++; |
$rowtotal ++; |
if (($action eq 'autoupdate') || ($action eq 'rolecolors') || |
my $numheaders = 1; |
($action eq 'usercreation') || ($action eq 'usermodification') || |
if (ref($item->{'header'}) eq 'ARRAY') { |
($action eq 'coursecategories') || ($action eq 'requestcourses')) { |
$numheaders = scalar(@{$item->{'header'}}); |
|
} |
|
if ($numheaders > 1) { |
my $colspan = ''; |
my $colspan = ''; |
if (($action eq 'rolecolors') || ($action eq 'coursecategories')) { |
if (($action eq 'rolecolors') || ($action eq 'coursecategories')) { |
$colspan = ' colspan="2"'; |
$colspan = ' colspan="2"'; |
Line 447 sub print_config_box {
|
Line 460 sub print_config_box {
|
$output .= &print_usermodification('top',$dom,$settings,\$rowtotal); |
$output .= &print_usermodification('top',$dom,$settings,\$rowtotal); |
} elsif ($action eq 'coursecategories') { |
} elsif ($action eq 'coursecategories') { |
$output .= &print_coursecategories('top',$dom,$item,$settings,\$rowtotal); |
$output .= &print_coursecategories('top',$dom,$item,$settings,\$rowtotal); |
|
} elsif ($action eq 'login') { |
|
$output .= &print_login('top',$dom,$confname,$phase,$settings,\$rowtotal); |
|
$colspan = ' colspan="2"'; |
} elsif ($action eq 'requestcourses') { |
} elsif ($action eq 'requestcourses') { |
$output .= &print_quotas($dom,$settings,\$rowtotal,$action); |
$output .= &print_quotas($dom,$settings,\$rowtotal,$action); |
} else { |
} else { |
Line 496 sub print_config_box {
|
Line 512 sub print_config_box {
|
$rowtotal ++; |
$rowtotal ++; |
} elsif ($action eq 'coursecategories') { |
} elsif ($action eq 'coursecategories') { |
$output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal); |
$output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal); |
|
} elsif ($action eq 'login') { |
|
$output .= &print_login('bottom',$dom,$confname,$phase,$settings,\$rowtotal); |
} elsif ($action eq 'requestcourses') { |
} elsif ($action eq 'requestcourses') { |
$output .= &print_courserequestmail($dom,$settings,\$rowtotal); |
$output .= &print_courserequestmail($dom,$settings,\$rowtotal); |
} else { |
} else { |
Line 566 sub print_config_box {
|
Line 584 sub print_config_box {
|
$output .= '</tr>'; |
$output .= '</tr>'; |
$rowtotal ++; |
$rowtotal ++; |
if ($action eq 'login') { |
if ($action eq 'login') { |
$output .= &print_login($dom,$confname,$phase,$settings,\$rowtotal); |
$output .= &print_login('bottom',$dom,$confname,$phase,$settings, |
|
\$rowtotal); |
} elsif ($action eq 'quotas') { |
} elsif ($action eq 'quotas') { |
$output .= &print_quotas($dom,$settings,\$rowtotal,$action); |
$output .= &print_quotas($dom,$settings,\$rowtotal,$action); |
} elsif ($action eq 'autoenroll') { |
} elsif ($action eq 'autoenroll') { |
Line 592 sub print_config_box {
|
Line 611 sub print_config_box {
|
} |
} |
|
|
sub print_login { |
sub print_login { |
my ($dom,$confname,$phase,$settings,$rowtotal) = @_; |
my ($position,$dom,$confname,$phase,$settings,$rowtotal) = @_; |
|
my ($css_class,$datatable); |
my %choices = &login_choices(); |
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 .= '<tr'.$css_class.'><td>'.$choices{'disallowlogin'}.'</td>'. |
|
'<td align="right"><table><tr><th>'.$choices{'hostid'}.'</th>'. |
|
'<th>'.$choices{'serverurl'}.'</th></tr>'."\n"; |
|
my %disallowed; |
|
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{'loginvia'}) eq 'HASH') { |
|
%disallowed = %{$settings->{'loginvia'}}; |
|
} |
|
} |
|
foreach my $lonhost (sort(keys(%servers))) { |
|
my $direct = 'selected="selected"'; |
|
if ($disallowed{$lonhost} eq '') { |
|
$direct = ''; |
|
} |
|
$datatable .= '<tr><td>'.$servers{$lonhost}.'</td>'. |
|
'<td><select name="'.$lonhost.'_serverurl">'. |
|
'<option value=""'.$direct.'>'.$choices{'directlogin'}. |
|
'</option>'; |
|
foreach my $hostid (keys(%servers)) { |
|
next if ($servers{$hostid} eq $servers{$lonhost}); |
|
my $selected = ''; |
|
if ($hostid eq $disallowed{$lonhost}) { |
|
$selected = 'selected="selected"'; |
|
} |
|
$datatable .= '<option value="'.$hostid.'"'.$selected.'>'. |
|
$servers{$hostid}.'</option>'; |
|
} |
|
$datatable .= '</select></td></tr>'; |
|
} |
|
$datatable .= '</table></td></tr>'; |
|
return $datatable; |
|
} |
|
|
my %defaultchecked = ( |
my %defaultchecked = ( |
'coursecatalog' => 'on', |
'coursecatalog' => 'on', |
'adminmail' => 'off', |
'adminmail' => 'off', |
'newuser' => 'off', |
'newuser' => 'off', |
|
'submitbugs' => 'on', |
); |
); |
my @toggles = ('coursecatalog','adminmail','newuser'); |
my @toggles = ('coursecatalog','adminmail','newuser','submitbugs'); |
my (%checkedon,%checkedoff); |
my (%checkedon,%checkedoff); |
foreach my $item (@toggles) { |
foreach my $item (@toggles) { |
if ($defaultchecked{$item} eq 'on') { |
if ($defaultchecked{$item} eq 'on') { |
Line 728 sub print_login {
|
Line 788 sub print_login {
|
sub login_choices { |
sub login_choices { |
my %choices = |
my %choices = |
&Apache::lonlocal::texthash ( |
&Apache::lonlocal::texthash ( |
coursecatalog => 'Display Course Catalog link?', |
coursecatalog => 'Display Course/Community Catalog link?', |
adminmail => "Display Administrator's E-mail Address?", |
adminmail => "Display Administrator's E-mail Address?", |
newuser => "Link to create a user account", |
disallowlogin => "Login page requests redirected", |
img => "Header", |
submitbugs => "Display "Submit Bug" link?", |
logo => "Main Logo", |
hostid => "Server", |
domlogo => "Domain Logo", |
serverurl => "Redirect to log-in via:", |
login => "Log-in Header", |
directlogin => "No redirect", |
textcol => "Text color", |
newuser => "Link to create a user account", |
bgcol => "Box color", |
img => "Header", |
bgs => "Background colors", |
logo => "Main Logo", |
links => "Link colors", |
domlogo => "Domain Logo", |
font => "Font color", |
login => "Log-in Header", |
pgbg => "Header", |
textcol => "Text color", |
mainbg => "Page", |
bgcol => "Box color", |
sidebg => "Login box", |
bgs => "Background colors", |
link => "Link", |
links => "Link colors", |
alink => "Active link", |
font => "Font color", |
vlink => "Visited link", |
pgbg => "Header", |
|
mainbg => "Page", |
|
sidebg => "Login box", |
|
link => "Link", |
|
alink => "Active link", |
|
vlink => "Visited link", |
); |
); |
return %choices; |
return %choices; |
} |
} |
Line 1373 sub print_quotas {
|
Line 1438 sub print_quotas {
|
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td>'.&mt('LON-CAPA Advanced Users').' '; |
'<td>'.&mt('LON-CAPA Advanced Users').' '; |
if ($context eq 'requestcourses') { |
if ($context eq 'requestcourses') { |
$datatable .= &mt('(overrides affiliation, if set)'); |
$datatable .= &mt('(overrides affiliation, if set)'). |
} else { |
'</td>'. |
$datatable .= &mt('(overrides affiliation, if checked)'); |
'<td class="LC_left_item">'. |
} |
'<table><tr>'; |
$datatable .= '</td>'. |
|
'<td class="LC_left_item" colspan="2">'; |
|
if ($context eq 'requestcourses') { |
|
$datatable .= '<table><tr>'; |
|
} else { |
} else { |
$datatable .= '<br />'; |
$datatable .= &mt('(overrides affiliation, if checked)'). |
|
'</td>'. |
|
'<td class="LC_left_item" colspan="2">'. |
|
'<br />'; |
} |
} |
my %advcell; |
my %advcell; |
foreach my $item (@usertools) { |
foreach my $item (@usertools) { |
Line 2659 sub print_serverstatuses {
|
Line 2723 sub print_serverstatuses {
|
sub serverstatus_pages { |
sub serverstatus_pages { |
return ('userstatus','lonstatus','loncron','server-status','codeversions', |
return ('userstatus','lonstatus','loncron','server-status','codeversions', |
'clusterstatus','metadata_keywords','metadata_harvest', |
'clusterstatus','metadata_keywords','metadata_harvest', |
'takeoffline','takeonline','showenv'); |
'takeoffline','takeonline','showenv','toggledebug'); |
} |
} |
|
|
sub coursecategories_javascript { |
sub coursecategories_javascript { |
Line 2686 sub coursecategories_javascript {
|
Line 2750 sub coursecategories_javascript {
|
} |
} |
$output = <<"ENDSCRIPT"; |
$output = <<"ENDSCRIPT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
function reorderCats(form,parent,item,idx) { |
function reorderCats(form,parent,item,idx) { |
var changedVal; |
var changedVal; |
$jstext |
$jstext |
Line 2742 $jstext
|
Line 2807 $jstext
|
} |
} |
return; |
return; |
} |
} |
|
// ]]> |
</script> |
</script> |
|
|
ENDSCRIPT |
ENDSCRIPT |
Line 3073 sub modify_login {
|
Line 3139 sub modify_login {
|
my %title = ( coursecatalog => 'Display course catalog', |
my %title = ( coursecatalog => 'Display course catalog', |
adminmail => 'Display administrator E-mail address', |
adminmail => 'Display administrator E-mail address', |
newuser => 'Link for visitors to create a user account', |
newuser => 'Link for visitors to create a user account', |
|
submitbugs => 'Link for users to submit a bug', |
loginheader => 'Log-in box header'); |
loginheader => 'Log-in box header'); |
my @offon = ('off','on'); |
my @offon = ('off','on'); |
|
my %curr_loginvia; |
|
if (ref($domconfig{login}) eq 'HASH') { |
|
if (ref($domconfig{login}{loginvia}) eq 'HASH') { |
|
foreach my $lonhost (keys(%{$domconfig{login}{loginvia}})) { |
|
$curr_loginvia{$lonhost} = $domconfig{login}{loginvia}{$lonhost}; |
|
} |
|
} |
|
} |
my %loginhash; |
my %loginhash; |
($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'], |
($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'], |
\%domconfig,\%loginhash); |
\%domconfig,\%loginhash); |
my @toggles = ('coursecatalog','adminmail','newuser'); |
my @toggles = ('coursecatalog','adminmail','newuser','submitbugs'); |
foreach my $item (@toggles) { |
foreach my $item (@toggles) { |
$loginhash{login}{$item} = $env{'form.'.$item}; |
$loginhash{login}{$item} = $env{'form.'.$item}; |
} |
} |
Line 3087 sub modify_login {
|
Line 3162 sub modify_login {
|
$colchgtext = &display_colorchgs($dom,\%colchanges,['login'], |
$colchgtext = &display_colorchgs($dom,\%colchanges,['login'], |
\%loginhash); |
\%loginhash); |
} |
} |
|
|
|
my %servers = &dom_servers($dom); |
|
if (keys(%servers) > 1) { |
|
foreach my $lonhost (keys(%servers)) { |
|
next if ($env{'form.'.$lonhost.'_serverurl'} eq $curr_loginvia{$lonhost}); |
|
next if ($env{'form.'.$lonhost.'_serverurl'} eq $lonhost); |
|
if ($curr_loginvia{$lonhost} ne '') { |
|
$loginhash{login}{loginvia}{$lonhost} = $env{'form.'.$lonhost.'_serverurl'}; |
|
$changes{'loginvia'}{$lonhost} = 1; |
|
} else { |
|
if (defined($servers{$env{'form.'.$lonhost.'_serverurl'}})) { |
|
$loginhash{login}{loginvia}{$lonhost} = $env{'form.'.$lonhost.'_serverurl'}; |
|
$changes{'loginvia'}{$lonhost} = 1; |
|
} |
|
} |
|
} |
|
} |
|
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash, |
my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash, |
$dom); |
$dom); |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
my @toggles = ('coursecatalog','adminmail','newuser'); |
my @toggles = ('coursecatalog','adminmail','newuser','submitbugs'); |
my %defaultchecked = ( |
my %defaultchecked = ( |
'coursecatalog' => 'on', |
'coursecatalog' => 'on', |
'adminmail' => 'off', |
'adminmail' => 'off', |
'newuser' => 'off', |
'newuser' => 'off', |
|
'submitbugs' => 'on', |
); |
); |
if (ref($domconfig{'login'}) eq 'HASH') { |
if (ref($domconfig{'login'}) eq 'HASH') { |
foreach my $item (@toggles) { |
foreach my $item (@toggles) { |
Line 3133 sub modify_login {
|
Line 3227 sub modify_login {
|
foreach my $item (sort(keys(%changes))) { |
foreach my $item (sort(keys(%changes))) { |
if ($item eq 'loginheader') { |
if ($item eq 'loginheader') { |
$resulttext .= '<li>'.&mt("$title{$item} set to $env{'form.loginheader'}").'</li>'; |
$resulttext .= '<li>'.&mt("$title{$item} set to $env{'form.loginheader'}").'</li>'; |
|
} elsif ($item eq 'loginvia') { |
|
if (ref($changes{$item}) eq 'HASH') { |
|
$resulttext .= '<li>'.&mt('Log-in page availability:').'<ul>'; |
|
foreach my $lonhost (sort(keys(%{$changes{$item}}))) { |
|
if ($servers{$env{'form.'.$lonhost.'_serverurl'}} ne '') { |
|
$resulttext .= '<li>'.&mt('Server: [_1] log-in page now redirects to [_2]',$lonhost,$servers{$env{'form.'.$lonhost.'_serverurl'}}).'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt('Server: [_1] now has standard log-in page.',$lonhost).'</li>'; |
|
} |
|
} |
|
$resulttext .= '</ul></li>'; |
|
} |
} else { |
} else { |
$resulttext .= '<li>'.&mt("$title{$item} set to $offon[$env{'form.'.$item}]").'</li>'; |
$resulttext .= '<li>'.&mt("$title{$item} set to $offon[$env{'form.'.$item}]").'</li>'; |
} |
} |
Line 3976 sub modify_quotas {
|
Line 4082 sub modify_quotas {
|
$env{'user.domain'}, |
$env{'user.domain'}, |
$item,'reload',$context); |
$item,'reload',$context); |
if ($context eq 'requestcourses') { |
if ($context eq 'requestcourses') { |
if ($env{'environment.crsrequest.'.$item} ne $newacc) { |
if ($env{'environment.canrequest.'.$item} ne $newacc) { |
$newenv{'environment.crsrequest.'.$item} = $newacc; |
$newenv{'environment.canrequest.'.$item} = $newacc; |
} |
} |
} else { |
} else { |
if ($env{'environment.availabletools.'.$item} ne $newacc) { |
if ($env{'environment.availabletools.'.$item} ne $newacc) { |
Line 5560 sub recurse_cat_deletes {
|
Line 5666 sub recurse_cat_deletes {
|
return; |
return; |
} |
} |
|
|
|
sub dom_servers { |
|
my ($dom) = @_; |
|
my (%uniqservers,%servers); |
|
my $primaryserver = &Apache::lonnet::hostname(&Apache::lonnet::domain($dom,'primary')); |
|
my @machinedoms = &Apache::lonnet::machine_domains($primaryserver); |
|
foreach my $mdom (@machinedoms) { |
|
my %currservers = %servers; |
|
my %server = &Apache::lonnet::get_servers($mdom); |
|
%servers = (%currservers,%server); |
|
} |
|
my %by_hostname; |
|
foreach my $id (keys(%servers)) { |
|
push(@{$by_hostname{$servers{$id}}},$id); |
|
} |
|
foreach my $hostname (sort(keys(%by_hostname))) { |
|
if (@{$by_hostname{$hostname}} > 1) { |
|
my $match = 0; |
|
foreach my $id (@{$by_hostname{$hostname}}) { |
|
if (&Apache::lonnet::host_domain($id) eq $dom) { |
|
$uniqservers{$id} = $hostname; |
|
$match = 1; |
|
} |
|
} |
|
unless ($match) { |
|
$uniqservers{$by_hostname{$hostname}[0]} = $hostname; |
|
} |
|
} else { |
|
$uniqservers{$by_hostname{$hostname}[0]} = $hostname; |
|
} |
|
} |
|
return %uniqservers; |
|
} |
|
|
1; |
1; |