version 1.2, 2014/06/13 18:50:07
|
version 1.7, 2014/08/23 18:54:45
|
Line 51 if (ref($perlvar) eq 'HASH') {
|
Line 51 if (ref($perlvar) eq 'HASH') {
|
} |
} |
undef($perlvar); |
undef($perlvar); |
|
|
|
my $script = "/cgi-bin/quotacheck.pl"; |
|
|
print &LONCAPA::loncgi::cgi_header('text/html',1); |
print &LONCAPA::loncgi::cgi_header('text/html',1); |
&main($lonhost); |
&main($lonhost); |
|
|
Line 59 sub main {
|
Line 61 sub main {
|
if ($lonhost eq '') { |
if ($lonhost eq '') { |
&Apache::lonlocal::get_language_handle(); |
&Apache::lonlocal::get_language_handle(); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/cgi-bin/quotacheck.pl", |
({href=>$script, |
text=>"Content disk usage"}); |
text=>"Content disk usage"}); |
print(&Apache::loncommon::start_page('Course/Community disk usage and quotas'). |
print(&Apache::loncommon::start_page('Course/Community disk usage and quotas'). |
&Apache::lonhtmlcommon::breadcrumbs('Course/Community status'). |
&Apache::lonhtmlcommon::breadcrumbs('Course/Community status'). |
Line 91 sub main {
|
Line 93 sub main {
|
# (b) value of domain item in query string |
# (b) value of domain item in query string |
# (c) default login domain for current server |
# (c) default login domain for current server |
# |
# |
|
|
if (($Apache::lonnet::env{'user.name'}) && ($Apache::lonnet::env{'user.domain'})) { |
if (($Apache::lonnet::env{'user.name'}) && ($Apache::lonnet::env{'user.domain'})) { |
my $q = CGI->new; |
my $q = CGI->new; |
%params = $q->Vars; |
%params = $q->Vars; |
Line 99 sub main {
|
Line 100 sub main {
|
if ($params{'type'} eq 'Community') { |
if ($params{'type'} eq 'Community') { |
$crstype = $params{'type'}; |
$crstype = $params{'type'}; |
} |
} |
if ($params{'fixeddom'}) { |
if ($params{'fixeddom'}) { $reqdom = $params{'fixeddom'} } |
$reqdom = $params{'fixeddom'}; |
unless ($params{'sortby'}) { $params{'sortby'} = 'cdesc'; } |
} |
|
} |
} |
if (($reqdom eq '') && ($ENV{'QUERY_STRING'})) { |
if (($reqdom eq '') && ($ENV{'QUERY_STRING'})) { |
&LONCAPA::loncgi::cgi_getitems($ENV{'QUERY_STRING'},\%gets); |
&LONCAPA::loncgi::cgi_getitems($ENV{'QUERY_STRING'},\%gets); |
Line 121 sub main {
|
Line 121 sub main {
|
|
|
&Apache::lonlocal::get_language_handle(); |
&Apache::lonlocal::get_language_handle(); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/cgi-bin/quotacheck.pl?domain=$reqdom", |
({href=>$script."?domain=$reqdom", |
text=>"Content disk usage"}); |
text=>"Content disk usage"}); |
if ($params{'gosearch'}) { |
if ( ($params{'gosearch'}) || ($params{'sortby'}) ) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/cgi-bin/quotacheck.pl?domain=$reqdom", |
({href=>$script."?domain=$reqdom", |
text=>"Result"}); |
text=>"Result"}); |
} |
} |
my $domdesc = &Apache::lonnet::domain($reqdom,'description'); |
my $domdesc = &Apache::lonnet::domain($reqdom,'description'); |
print(&Apache::loncommon::start_page('Course/Community disk usage and quotas'). |
my $starthash = { |
|
add_entries => {'onload' => "javascript:courseSet(document.filterpicker.official, 'load');"}, |
|
}; |
|
print(&Apache::loncommon::start_page('Course/Community disk usage and quotas', undef, $starthash). |
&Apache::lonhtmlcommon::breadcrumbs('Course/Community status'). |
&Apache::lonhtmlcommon::breadcrumbs('Course/Community status'). |
'<h2>'.&Apache::lonlocal::mt('Quotas for uploaded course content').'</h2>'. |
'<h2>'.&Apache::lonlocal::mt('Quotas for uploaded course content').'</h2>'. |
'<h3>'.$domdesc.'</h3>'); |
'<h3>'.$domdesc.'</h3>'); |
|
my $changejs = <<"ENDSCRIPT"; |
|
<script> |
|
function changeSort(sortby) { |
|
document.filterpicker.sortby.value = sortby; |
|
if (('$params{'sortby'}' == sortby) && ('$params{'sortorder'}' != 'rev')) { |
|
document.filterpicker.sortorder.value = 'rev'; |
|
} |
|
document.filterpicker.submit(); |
|
} |
|
</script> |
|
ENDSCRIPT |
|
|
|
print($changejs); |
|
|
# |
# |
# If this is for an authenticated user (i.e., not IP-based access) |
# If this is for an authenticated user (i.e., not IP-based access) |
Line 158 sub main {
|
Line 174 sub main {
|
$Apache::lonnet::env{'form.state'} = $params{'state'}; |
$Apache::lonnet::env{'form.state'} = $params{'state'}; |
} |
} |
print(&Apache::loncommon::build_filters($filterlist,$crstype,undef,undef,$filter, |
print(&Apache::loncommon::build_filters($filterlist,$crstype,undef,undef,$filter, |
'/cgi-bin/quotacheck.pl',\$numtitles, |
$script,\$numtitles, |
'quotacheck',undef,undef,undef, |
'quotacheck',undef,undef,undef, |
\@codetitles,$reqdom,'quotacheck',$reqdom)); |
\@codetitles,$reqdom,'quotacheck',$reqdom)); |
if ($params{'gosearch'}) { |
if ( ($params{'gosearch'}) || ($params{'sortby'}) ) { |
if ($params{'official'} eq 'on') { |
if ($params{'official'} eq 'on') { |
$Apache::lonnet::env{'form.state'} = $params{'state'}; |
$Apache::lonnet::env{'form.state'} = $params{'state'}; |
} |
} |
|
# Sort by course title (cdesc) as default, not reversed |
|
my $sortby = $params{'sortby'}; |
|
unless ($sortby =~ m{^(quota|current_disk_usage|percent|quotatype|instcode)$}) { |
|
$sortby = 'cdesc'; |
|
} |
|
my $sortorder; |
|
if ($params{'sortorder'} eq 'rev') { $sortorder = 'rev'; } |
|
|
my %courses = &Apache::loncommon::search_courses($reqdom,$crstype,$filter,$numtitles, |
my %courses = &Apache::loncommon::search_courses($reqdom,$crstype,$filter,$numtitles, |
undef,undef,undef,\@codetitles); |
undef,undef,undef,\@codetitles); |
my @showcourses = keys(%courses); |
my @showcourses = keys(%courses); |
&print_usage($lonhost,$reqdom,\@showcourses); |
&print_usage($lonhost,$reqdom,\@showcourses,$sortby,$sortorder); |
} |
} |
|
|
print(&Apache::loncommon::end_page()); |
print(&Apache::loncommon::end_page()); |
return; |
return; |
} |
} |
Line 179 sub main {
|
Line 204 sub main {
|
} |
} |
|
|
sub print_usage { |
sub print_usage { |
my ($lonhost,$dom,$courses) = @_; |
my ($lonhost,$dom,$courses,$sortby,$sortorder) = @_; |
my @domains = &Apache::lonnet::current_machine_domains(); |
my @domains = &Apache::lonnet::current_machine_domains(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
my $domain = &Apache::lonnet::host_domain($lonhost); |
my $domain = &Apache::lonnet::host_domain($lonhost); |
Line 197 sub print_usage {
|
Line 222 sub print_usage {
|
'</p>'."\n". |
'</p>'."\n". |
'<p class="LC_info">'. |
'<p class="LC_info">'. |
&Apache::lonlocal::mt('Show quotas for the domain being coordinated: [_1]', |
&Apache::lonlocal::mt('Show quotas for the domain being coordinated: [_1]', |
'<a href="/cgi-bin/quotacheck.pl?domain='.$domain.'">'. |
'<a href="'.$script.'?domain='.$domain.'">'. |
$otherdomdesc.'</a>'). |
$otherdomdesc.'</a>'). |
'</p>'); |
'</p>'); |
return; |
return; |
Line 220 sub print_usage {
|
Line 245 sub print_usage {
|
@showcourses = keys(%courseshash); |
@showcourses = keys(%courseshash); |
} |
} |
} |
} |
|
|
if (@showcourses) { |
if (@showcourses) { |
print(&Apache::loncommon::start_data_table(). |
# Order in which columns are displayed from left to right |
&Apache::loncommon::start_data_table_header_row(). |
my @order = ('quotatype','cdesc','instcode','quota', |
'<th>'.&Apache::lonlocal::mt('Course Type').'</th>'. |
'current_disk_usage','percent'); |
'<th>'.&Apache::lonlocal::mt('Course Title').'</th>'. |
|
'<th>'.&Apache::lonlocal::mt('Institutional Code').'</th>'. |
# Up and down arrows to indicate sort order |
'<th>'.&Apache::lonlocal::mt('Quota (MB)').'</th>'. |
my @arrows = (' ▲',' ▼',''); |
'<th>'.&Apache::lonlocal::mt('Usage (MB)').'</th>'. |
|
'<th>'.&Apache::lonlocal::mt('Percent usage').'</th>'. |
# Default sort order and column title |
&Apache::loncommon::end_data_table_header_row()); |
my %columns = ( |
|
quotatype => { |
|
order => 'ascending', |
|
text => &Apache::lonlocal::mt('Course Type'), |
|
}, |
|
cdesc => { |
|
order => 'ascending', |
|
text => &Apache::lonlocal::mt('Course Title'), |
|
}, |
|
instcode => { |
|
order => 'ascending', |
|
text => &Apache::lonlocal::mt('Institutional Code'), |
|
}, |
|
quota => { |
|
order => 'descending', |
|
text => &Apache::lonlocal::mt('Quota (MB)'), |
|
}, |
|
current_disk_usage => { |
|
order => 'descending', |
|
text => &Apache::lonlocal::mt('Usage (MB)'), |
|
}, |
|
percent => { |
|
order => 'descending', |
|
text => &Apache::lonlocal::mt('Percent usage'), |
|
}, |
|
); |
|
|
|
# Print column headers |
|
my $output = ''; |
|
foreach my $key (@order) { |
|
my $idx; |
|
# Append an up or down arrow to sorted column |
|
if ($sortby eq $key) { |
|
$idx = ($columns{$key}{order} eq 'ascending') ? 0:1; |
|
if ($sortorder eq 'rev') { $idx ++; } |
|
$idx = $idx%2; |
|
} else { $idx = 2; } # No arrow if column not sorted |
|
$output .= '<th><a href="javascript:changeSort(' |
|
."'$key'".');">'.$columns{$key}{text} |
|
.$arrows[$idx].'</a></th>'; |
|
} |
|
print(&Apache::loncommon::start_data_table() |
|
.&Apache::loncommon::start_data_table_header_row().$output |
|
.&Apache::loncommon::end_data_table_header_row()); |
|
|
|
my $usagehash = {}; # Sortable hash of courses |
foreach my $cid (@showcourses) { |
foreach my $cid (@showcourses) { |
my %courseinfo=&Apache::lonnet::coursedescription($cid,{'one_time' => '1'}); |
my %courseinfo=&Apache::lonnet::coursedescription($cid,{'one_time' => '1'}); |
my $cdesc = $courseinfo{'description'}; |
my $cdesc = $courseinfo{'description'}; |
Line 255 sub print_usage {
|
Line 326 sub print_usage {
|
$quotatype = 'textbook'; |
$quotatype = 'textbook'; |
} |
} |
if ($quota eq '') { |
if ($quota eq '') { |
$quota = $domdefs{$crstype.'quota'}; |
$quota = $domdefs{$quotatype.'quota'}; |
} |
} |
$quota =~ s/[^\d\.]+//g; |
$quota =~ s/[^\d\.]+//g; |
if ($quota eq '') { |
if ($quota eq '') { |
Line 280 sub print_usage {
|
Line 351 sub print_usage {
|
foreach my $subdir ('docs','supplemental') { |
foreach my $subdir ('docs','supplemental') { |
$current_disk_usage += &Apache::lonnet::diskusage($dom,$cnum,"userfiles/$subdir",1); |
$current_disk_usage += &Apache::lonnet::diskusage($dom,$cnum,"userfiles/$subdir",1); |
} |
} |
$current_disk_usage=int($current_disk_usage/1024); |
|
} |
} |
my $percent; |
my $percent; |
if (($quota == 0) || ($quota =~ /[^\d\.]/)) { |
if (($quota == 0) || ($quota =~ /[^\d\.]/)) { |
Line 291 sub print_usage {
|
Line 361 sub print_usage {
|
$current_disk_usage = sprintf("%.0f",$current_disk_usage); |
$current_disk_usage = sprintf("%.0f",$current_disk_usage); |
$quota = sprintf("%.0f",$quota); |
$quota = sprintf("%.0f",$quota); |
$percent = sprintf("%.0f",$percent); |
$percent = sprintf("%.0f",$percent); |
|
|
|
# Enter sortable data into hash |
|
$usagehash->{ $cid } = { |
|
"quotatype" => $quotatype, |
|
"cdesc" => $cdesc, |
|
"instcode" => $instcode, |
|
"quota" => $quota, |
|
"current_disk_usage" => $current_disk_usage, |
|
"percent" => $percent, |
|
}; |
|
} |
|
|
|
# Sort courses by $sortby. "cdesc" is the default. |
|
my @sorted_courses; |
|
if ($sortby =~ m{^(quota|current_disk_usage|percent)$}) { |
|
# Numerical fields |
|
if ($sortorder eq "rev") { |
|
@sorted_courses = sort { |
|
$usagehash->{$a}->{$sortby} <=> $usagehash->{$b}->{$sortby} |
|
or |
|
uc($usagehash->{$a}->{"cdesc"}) cmp uc($usagehash->{$b}->{"cdesc"}) |
|
} (keys(%{$usagehash})); |
|
} else { |
|
@sorted_courses = sort { |
|
$usagehash->{$b}->{$sortby} <=> $usagehash->{$a}->{$sortby} |
|
or |
|
uc($usagehash->{$a}->{"cdesc"}) cmp uc($usagehash->{$b}->{"cdesc"}) |
|
} (keys(%{$usagehash})); |
|
} |
|
} elsif ($sortby =~ m{^(cdesc|quotatype|instcode)$}) { |
|
# String fields |
|
if ($sortorder eq "rev") { |
|
@sorted_courses = sort { |
|
uc($usagehash->{$b}->{$sortby}) cmp uc($usagehash->{$a}->{$sortby}) |
|
or |
|
uc($usagehash->{$a}->{"cdesc"}) cmp uc($usagehash->{$b}->{"cdesc"}) |
|
} (keys(%{$usagehash})); |
|
} else { |
|
@sorted_courses = sort { |
|
uc($usagehash->{$a}->{$sortby}) cmp uc($usagehash->{$b}->{$sortby}) |
|
or |
|
uc($usagehash->{$a}->{"cdesc"}) cmp uc($usagehash->{$b}->{"cdesc"}) |
|
} (keys(%{$usagehash})); |
|
} |
|
} |
|
|
|
# Print data for each course. |
|
foreach my $course (@sorted_courses) { |
print(&Apache::loncommon::start_data_table_row(). |
print(&Apache::loncommon::start_data_table_row(). |
'<td>'.$quotatype.'</td>'. |
'<td>'.$usagehash->{$course}->{"quotatype"}.'</td>'. |
'<td>'.$cdesc.'</td>'. |
'<td>'.$usagehash->{$course}->{"cdesc"}.'</td>'. |
'<td>'.$instcode.'</td>'. |
'<td>'.$usagehash->{$course}->{"instcode"}.'</td>'. |
'<td>'.$quota.'</td>'. |
'<td>'.$usagehash->{$course}->{"quota"}.'</td>'. |
'<td>'.$current_disk_usage.'</td>'. |
'<td>'.$usagehash->{$course}->{"current_disk_usage"}.'</td>'. |
'<td>'.$percent.'</td>'. |
'<td>'.$usagehash->{$course}->{"percent"}.'</td>'. |
&Apache::loncommon::end_data_table_row() |
&Apache::loncommon::end_data_table_row() |
); |
); |
} |
} |