Diff for /loncom/cgi/quotacheck.pl between versions 1.7 and 1.8

version 1.7, 2014/08/23 18:54:45 version 1.8, 2015/05/04 15:13:57
Line 36  use strict; Line 36  use strict;
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use Apache::lonnet();  use Apache::lonnet();
 use Apache::loncommon();  use Apache::loncommon();
   use Apache::courseclassifier();
 use Apache::lonlocal();  use Apache::lonlocal();
 use LONCAPA::Configuration();  use LONCAPA::Configuration();
 use LONCAPA::loncgi();  use LONCAPA::loncgi();
Line 85  sub main { Line 86  sub main {
             return;              return;
         }          }
     }      }
     my (%gets,%posted,$reqdom,$crstype,%params);      my ($reqdom,$crstype,$type,%params);
   
 #  #
 #  Get domain -- if this is for an authenticated user (i.e., not IP-based access)  #  Get domain -- if this is for an authenticated user (i.e., not IP-based access)
Line 99  sub main { Line 100  sub main {
         $crstype = 'Course';          $crstype = 'Course';
         if ($params{'type'} eq 'Community') {          if ($params{'type'} eq 'Community') {
             $crstype = $params{'type'};              $crstype = $params{'type'};
               $type = $crstype;
         }          }
         if ($params{'fixeddom'}) { $reqdom = $params{'fixeddom'} }          if ($params{'fixeddom'}) { $reqdom = $params{'fixeddom'} }
         unless ($params{'sortby'}) { $params{'sortby'} = 'cdesc'; }  
     }      }
     if (($reqdom eq '') && ($ENV{'QUERY_STRING'})) {      if (($reqdom eq '') && ($ENV{'QUERY_STRING'})) {
           my %gets;    
         &LONCAPA::loncgi::cgi_getitems($ENV{'QUERY_STRING'},\%gets);          &LONCAPA::loncgi::cgi_getitems($ENV{'QUERY_STRING'},\%gets);
         if (ref($gets{'domain'}) eq 'ARRAY') {          if (ref($gets{'domain'}) eq 'ARRAY') {
             $gets{'domain'}->[0] =~ s/^\s+|\s+$//g;              $gets{'domain'}->[0] =~ s/^\s+|\s+$//g;
Line 114  sub main { Line 116  sub main {
                 }                  }
             }              }
         }          }
           if (($crstype eq '') && (ref($gets{'type'}) eq 'ARRAY')) {
               $gets{'type'}->[0] =~ s/^\s+|\s+$//g;
               if (lc($gets{'type'}->[0]) eq 'community') {
                   $crstype = 'Community';
               } elsif ($gets{'type'}->[0] =~ /^(un|)official$/) {
                   $crstype = $gets{'type'}->[0];
               }
           }
           if (($params{'sortby'} eq '') && (ref($gets{'sortby'}) eq 'ARRAY')){
               $gets{'sortby'}->[0] =~ s/^\s+|\s+$//g;
               if ($gets{'sortby'}->[0] =~ /^(quota|current_disk_usage|percent|quotatype|instcode)$/) {
                   $params{'sortby'} = $1;
               }
           }
           if (($params{'sortorder'} eq '') && (ref($gets{'sortorder'}) eq 'ARRAY')){
               $gets{'sortorder'}->[0] =~ s/^\s+|\s+$//g;
               if ($gets{'sortorder'}->[0] eq 'rev') {
                   $params{'sortorder'} = $gets{'sortorder'}->[0];
               }
           }
     }      }
     if ($reqdom eq '') {      if ($reqdom eq '') {
         $reqdom = &Apache::lonnet::default_login_domain();          $reqdom = &Apache::lonnet::default_login_domain();
     }      }
       my $knownuser;
       if (($Apache::lonnet::env{'user.name'}) && ($Apache::lonnet::env{'user.domain'})) {
           $knownuser = 1;
       }
     &Apache::lonlocal::get_language_handle();      &Apache::lonlocal::get_language_handle();
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
     ({href=>$script."?domain=$reqdom",      ({href=>$script."?domain=$reqdom",
        text=>"Content disk usage"});         text=>"Content disk usage"});
     if ( ($params{'gosearch'}) || ($params{'sortby'}) ) {      if ((($params{'gosearch'}) || ($params{'sortby'})) && ($knownuser)) {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>$script."?domain=$reqdom",              ({href=>$script."?domain=$reqdom",
               text=>"Result"});                text=>"Result"});
     }      }
     my $domdesc = &Apache::lonnet::domain($reqdom,'description');      my $domdesc = &Apache::lonnet::domain($reqdom,'description');
     my $starthash = {      my $starthash;
         add_entries => {'onload' => "javascript:courseSet(document.filterpicker.official, 'load');"},      unless ($crstype eq 'Community') {
     };          $starthash = {
               add_entries => {'onload' => "javascript:courseSet(document.filterpicker.official, 'load');"},
           };
       }
     print(&Apache::loncommon::start_page('Course/Community disk usage and quotas', undef, $starthash).      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);  # 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'; }
   
 #  #
 #  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 156  ENDSCRIPT Line 179  ENDSCRIPT
 #  (e.g., recent activity, recently created, institutional code, course owner etc.)  #  (e.g., recent activity, recently created, institutional code, course owner etc.)
 #  #
   
     if (($Apache::lonnet::env{'user.name'}) && ($Apache::lonnet::env{'user.domain'})) {      if ($knownuser) {
           print <<"ENDSCRIPT";
   <script>
   function changeSort(sortby) {
       document.filterpicker.sortby.value = sortby;
       if (('$sortby' == sortby) && ('$params{'sortorder'}' != 'rev')) {
           document.filterpicker.sortorder.value = 'rev';
       }
       document.filterpicker.submit();
   }
   </script>
   ENDSCRIPT
         my ($numtitles,@codetitles);          my ($numtitles,@codetitles);
         print(&Apache::loncommon::js_changer());          print(&Apache::loncommon::js_changer());
         my ($filterlist,$filter) = &get_filters($reqdom,\%params);          my ($filterlist,$filter) = &get_filters($reqdom,\%params);
Line 167  ENDSCRIPT Line 201  ENDSCRIPT
             foreach my $item (@standardnames) {              foreach my $item (@standardnames) {
                 if ($params{'official'} eq 'on') {                  if ($params{'official'} eq 'on') {
                     $Apache::lonnet::env{'form.'.$item} = $params{$item};                      $Apache::lonnet::env{'form.'.$item} = $params{$item};
                       $type = 'official';
                 } else {                  } else {
                     $Apache::lonnet::env{'form.'.$item} = 0;                      $Apache::lonnet::env{'form.'.$item} = 0;
                       $type = 'unofficial';
                 }                  }
             }              }
             $Apache::lonnet::env{'form.state'} = $params{'state'};              $Apache::lonnet::env{'form.state'} = $params{'state'};
Line 181  ENDSCRIPT Line 217  ENDSCRIPT
             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,$sortby,$sortorder);              &print_usage($lonhost,$reqdom,\@showcourses,$sortby,$sortorder,$type,
                            $knownuser,$script);
         }          }
       } else {
         print(&Apache::loncommon::end_page());          my ($instcodefilter,$regexpok,@showcourses);
         return;          $instcodefilter = '.';
           if ($crstype eq '') {
               $crstype = '.';
           } elsif ($crstype =~ /^(un|)official$/) {
               $type = $crstype;
               my ($numtitles,@codetitles,%cat_items,%cat_titles,%cat_order);
               (undef,undef,$numtitles) =
                   &Apache::courseclassifier::instcode_selectors_data($reqdom,'filterpicker',
                                                                      \%cat_items,\@codetitles,
                                                                      \%cat_titles,\%cat_order);
               foreach my $item (@codetitles) {
                   $Apache::lonnet::env{'form.'.$item} = 0;
               }
               $instcodefilter =
                   &Apache::courseclassifier::instcode_search_str($reqdom,$numtitles,\@codetitles);
               if ($crstype eq 'official') {
                   $regexpok = 1;
               } elsif ($crstype eq 'unofficial') {
                   unless ($instcodefilter eq '') {
                       $regexpok = -1;
                   }
               }
               $crstype = 'Course';
           }
           my %courseshash = &Apache::lonnet::courseiddump($reqdom,'.',1,$instcodefilter,'.','.',
                                                           undef,undef,$crstype,$regexpok);
           if (keys(%courseshash)) {
               @showcourses = keys(%courseshash);
           }
           &print_usage($lonhost,$reqdom,\@showcourses,$sortby,$sortorder,$type,$knownuser,
                        $script);
     }      }
     &print_usage($lonhost,$reqdom);  
     print(&Apache::loncommon::end_page());      print(&Apache::loncommon::end_page());
     return;      return;
 }  }
   
 sub print_usage {  sub print_usage {
     my ($lonhost,$dom,$courses,$sortby,$sortorder) = @_;      my ($lonhost,$dom,$courses,$sortby,$sortorder,$type,$knownuser,$script) = @_;
     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 285  sub print_usage { Line 343  sub print_usage {
         # Print column headers          # Print column headers
         my $output = '';          my $output = '';
         foreach my $key (@order) {          foreach my $key (@order) {
               next if (($key eq 'instcode') && ($type ne 'official') && ($type ne ''));
             my $idx;              my $idx;
             # Append an up or down arrow to sorted column              # Append an up or down arrow to sorted column
             if ($sortby eq $key) {              if ($sortby eq $key) {
Line 292  sub print_usage { Line 351  sub print_usage {
                 if ($sortorder eq 'rev') { $idx ++; }                  if ($sortorder eq 'rev') { $idx ++; }
                 $idx = $idx%2;                  $idx = $idx%2;
             } else { $idx = 2; } # No arrow if column not sorted              } else { $idx = 2; } # No arrow if column not sorted
             $output .= '<th><a href="javascript:changeSort('              my $link =  'javascript:changeSort('."'$key'".');';
                         ."'$key'".');">'.$columns{$key}{text}              if (!$knownuser) {
                         .$arrows[$idx].'</a></th>';                  $link = $script.'?domain='.$dom.'&sortby='.$key;
                   if ($type =~ /^((un|)official)|(C|c)ommunity/) {
                       $link .='&type='.$type;
                   }
                   if ($sortby eq $key) {
                       unless ($sortorder) {
                           $link .= '&sortorder=rev';
                       }
                   }
               }
               $output .= '<th><a href="'.$link.'"">'.$columns{$key}{text}
                         .$arrows[$idx].'</a></th>';
         }          }
         print(&Apache::loncommon::start_data_table()          print(&Apache::loncommon::start_data_table()
             .&Apache::loncommon::start_data_table_header_row().$output              .&Apache::loncommon::start_data_table_header_row().$output
Line 411  sub print_usage { Line 481  sub print_usage {
         foreach my $course (@sorted_courses) {          foreach my $course (@sorted_courses) {
             print(&Apache::loncommon::start_data_table_row().              print(&Apache::loncommon::start_data_table_row().
                   '<td>'.$usagehash->{$course}->{"quotatype"}.'</td>'.                    '<td>'.$usagehash->{$course}->{"quotatype"}.'</td>'.
                   '<td>'.$usagehash->{$course}->{"cdesc"}.'</td>'.                    '<td>'.$usagehash->{$course}->{"cdesc"}.'</td>');
                   '<td>'.$usagehash->{$course}->{"instcode"}.'</td>'.              if (($type eq 'official') || (!$type)) {
                   '<td>'.$usagehash->{$course}->{"quota"}.'</td>'.                  print('<td>'.$usagehash->{$course}->{"instcode"}.'</td>');
               }
               print('<td>'.$usagehash->{$course}->{"quota"}.'</td>'.
                   '<td>'.$usagehash->{$course}->{"current_disk_usage"}.'</td>'.                    '<td>'.$usagehash->{$course}->{"current_disk_usage"}.'</td>'.
                   '<td>'.$usagehash->{$course}->{"percent"}.'</td>'.                    '<td>'.$usagehash->{$course}->{"percent"}.'</td>'.
                    &Apache::loncommon::end_data_table_row()                     &Apache::loncommon::end_data_table_row()

Removed from v.1.7  
changed lines
  Added in v.1.8


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>