version 1.137, 2010/07/17 20:02:07
|
version 1.138, 2010/07/20 02:42:40
|
Line 2270 sub print_usersessions {
|
Line 2270 sub print_usersessions {
|
} else { |
} else { |
$prefix = 'remote'; |
$prefix = 'remote'; |
@types = ('version','excludedomain','includedomain'); |
@types = ('version','excludedomain','includedomain'); |
} |
} |
my (%current,%checkedon,%checkedoff); |
my (%current,%checkedon,%checkedoff); |
my @lcversions = &Apache::lonnet::all_loncaparevs(); |
my @lcversions = &Apache::lonnet::all_loncaparevs(); |
my @alldoms = sort(&Apache::lonnet::all_domains()); |
my (%by_ip,%by_location,@intdoms); |
|
&build_location_hashes(\@intdoms,\%by_ip,\%by_location); |
|
my @locations = sort(keys(%by_location)); |
foreach my $type (@types) { |
foreach my $type (@types) { |
$checkedon{$type} = ''; |
$checkedon{$type} = ''; |
$checkedoff{$type} = ' checked="checked"'; |
$checkedoff{$type} = ' checked="checked"'; |
Line 2322 sub print_usersessions {
|
Line 2324 sub print_usersessions {
|
"\n". |
"\n". |
'</div><div><table>'; |
'</div><div><table>'; |
my $rem; |
my $rem; |
for (my $i=0; $i<@alldoms; $i++) { |
for (my $i=0; $i<@locations; $i++) { |
next if ($alldoms[$i] eq $dom); |
my ($showloc,$value,$checkedtype); |
my $checkedtype; |
if (ref($by_location{$locations[$i]}) eq 'ARRAY') { |
if (ref($current{$type}) eq 'ARRAY') { |
my $ip = $by_location{$locations[$i]}->[0]; |
if (grep(/^\Q$alldoms[$i]\E$/,@{$current{$type}})) { |
if (ref($by_ip{$ip}) eq 'ARRAY') { |
$checkedtype = ' checked="checked"'; |
$value = join(':',@{$by_ip{$ip}}); |
|
$showloc = join(', ',@{$by_ip{$ip}}); |
|
if (ref($current{$type}) eq 'ARRAY') { |
|
foreach my $loc (@{$by_ip{$ip}}) { |
|
if (grep(/^\Q$loc\E$/,@{$current{$type}})) { |
|
$checkedtype = ' checked="checked"'; |
|
last; |
|
} |
|
} |
|
} |
} |
} |
} |
} |
$rem = $i%($numinrow); |
$rem = $i%($numinrow); |
Line 2340 sub print_usersessions {
|
Line 2351 sub print_usersessions {
|
$datatable .= '<td class="LC_left_item">'. |
$datatable .= '<td class="LC_left_item">'. |
'<span class="LC_nobreak"><label>'. |
'<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="'.$prefix.'_'.$type. |
'<input type="checkbox" name="'.$prefix.'_'.$type. |
'" value="'.$alldoms[$i].'"'.$checkedtype.' />'.$alldoms[$i]. |
'" value="'.$value.'"'.$checkedtype.' />'.$showloc. |
'</label></span></td>'; |
'</label></span></td>'; |
} |
} |
$rem = @alldoms%($numinrow); |
$rem = @locations%($numinrow); |
my $colsleft = $numinrow - $rem; |
my $colsleft = $numinrow - $rem; |
if ($colsleft > 1 ) { |
if ($colsleft > 1 ) { |
$datatable .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
$datatable .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
Line 2360 sub print_usersessions {
|
Line 2371 sub print_usersessions {
|
return $datatable; |
return $datatable; |
} |
} |
|
|
|
sub build_location_hashes { |
|
my ($intdoms,$by_ip,$by_location) = @_; |
|
return unless((ref($intdoms) eq 'ARRAY') && (ref($by_ip) eq 'HASH') && |
|
(ref($by_location) eq 'HASH')); |
|
my %iphost = &Apache::lonnet::get_iphost(); |
|
my $primary_id = &Apache::lonnet::domain($env{'request.role.domain'},'primary'); |
|
my $primary_ip = &Apache::lonnet::get_host_ip($primary_id); |
|
if (ref($iphost{$primary_ip}) eq 'ARRAY') { |
|
foreach my $id (@{$iphost{$primary_ip}}) { |
|
my $intdom = &Apache::lonnet::internet_dom($id); |
|
unless(grep(/^\Q$intdom\E$/,@{$intdoms})) { |
|
push(@{$intdoms},$intdom); |
|
} |
|
} |
|
} |
|
foreach my $ip (keys(%iphost)) { |
|
if (ref($iphost{$ip}) eq 'ARRAY') { |
|
foreach my $id (@{$iphost{$ip}}) { |
|
my $location = &Apache::lonnet::internet_dom($id); |
|
if ($location) { |
|
next if (grep(/^\Q$location\E$/,@{$intdoms})); |
|
if (ref($by_ip->{$ip}) eq 'ARRAY') { |
|
unless(grep(/^\Q$location\E$/,@{$by_ip->{$ip}})) { |
|
push(@{$by_ip->{$ip}},$location); |
|
} |
|
} else { |
|
$by_ip->{$ip} = [$location]; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
foreach my $ip (sort(keys(%{$by_ip}))) { |
|
if (ref($by_ip->{$ip}) eq 'ARRAY') { |
|
@{$by_ip->{$ip}} = sort(@{$by_ip->{$ip}}); |
|
my $first = $by_ip->{$ip}->[0]; |
|
if (ref($by_location->{$first}) eq 'ARRAY') { |
|
unless (grep(/^\Q$ip\E$/,@{$by_location->{$first}})) { |
|
push(@{$by_location->{$first}},$ip); |
|
} |
|
} else { |
|
$by_location->{$first} = [$ip]; |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
sub contact_titles { |
sub contact_titles { |
my %titles = &Apache::lonlocal::texthash ( |
my %titles = &Apache::lonlocal::texthash ( |
'supportemail' => 'Support E-mail address', |
'supportemail' => 'Support E-mail address', |
Line 6642 sub modify_usersessions {
|
Line 6701 sub modify_usersessions {
|
my @types = ('version','excludedomain','includedomain'); |
my @types = ('version','excludedomain','includedomain'); |
my @prefixes = ('remote','hosted'); |
my @prefixes = ('remote','hosted'); |
my @lcversions = &Apache::lonnet::all_loncaparevs(); |
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)); |
my (%defaultshash,%changes); |
my (%defaultshash,%changes); |
foreach my $prefix (@prefixes) { |
foreach my $prefix (@prefixes) { |
$defaultshash{'usersessions'}{$prefix} = {}; |
$defaultshash{'usersessions'}{$prefix} = {}; |
} |
} |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
my $resulttext; |
my $resulttext; |
|
my %iphost = &Apache::lonnet::get_iphost(); |
foreach my $prefix (@prefixes) { |
foreach my $prefix (@prefixes) { |
foreach my $type (@types) { |
foreach my $type (@types) { |
my $inuse = $env{'form.'.$prefix.'_'.$type.'_inuse'}; |
my $inuse = $env{'form.'.$prefix.'_'.$type.'_inuse'}; |
Line 6694 sub modify_usersessions {
|
Line 6757 sub modify_usersessions {
|
my @vals = &Apache::loncommon::get_env_multiple('form.'.$prefix.'_'.$type); |
my @vals = &Apache::loncommon::get_env_multiple('form.'.$prefix.'_'.$type); |
my @okvals; |
my @okvals; |
foreach my $val (@vals) { |
foreach my $val (@vals) { |
if (&Apache::lonnet::domain($val) ne '') { |
if ($val =~ /:/) { |
push(@okvals,$val); |
my @items = split(/:/,$val); |
|
foreach my $item (@items) { |
|
if (ref($by_location{$item}) eq 'ARRAY') { |
|
push(@okvals,$item); |
|
} |
|
} |
|
} else { |
|
if (ref($by_location{$val}) eq 'ARRAY') { |
|
push(@okvals,$val); |
|
} |
} |
} |
} |
} |
@okvals = sort(@okvals); |
@okvals = sort(@okvals); |
Line 6942 sub usersession_titles {
|
Line 7014 sub usersession_titles {
|
|
|
remote => 'Hosting of sessions for users in this domain on servers in other domains', |
remote => 'Hosting of sessions for users in this domain on servers in other domains', |
version => 'LON-CAPA version requirement', |
version => 'LON-CAPA version requirement', |
excludedomain => 'Specific domains excluded', |
excludedomain => 'Allow all, but exclude specific domains', |
includedomain => 'Specific domains included', |
includedomain => 'Deny all, but include specific domains', |
); |
); |
} |
} |
|
|