Diff for /loncom/interface/coursecatalog.pm between versions 1.72 and 1.73

version 1.72, 2013/01/23 15:23:19 version 1.73, 2013/03/01 18:09:16
Line 405  sub category_breadcrumbs { Line 405  sub category_breadcrumbs {
             if (($env{'form.currcat_0'} ne '') &&               if (($env{'form.currcat_0'} ne '') && 
                 ($env{'form.currcat_0'} ne 'instcode::0')) {                  ($env{'form.currcat_0'} ne 'instcode::0')) {
                 $catlinks .= $crumbsymbol;                  $catlinks .= $crumbsymbol;
             } else {  
                 $catlinks .= '</td>';  
             }              }
         }          }
     } else {      } else {
Line 740  sub get_wasactive_text { Line 738  sub get_wasactive_text {
     } else {      } else {
         $wasacctext .= &mt('where students had access ...');          $wasacctext .= &mt('where students had access ...');
     }      }
     $wasacctext .= '<br />';  
     return $wasacctext;      return $wasacctext;
 }  }
   
Line 946  sub construct_data_table { Line 943  sub construct_data_table {
     }      }
     $output .= '<th>'.&mt('Self-enroll (if permitted)').'</th>';      $output .= '<th>'.&mt('Self-enroll (if permitted)').'</th>';
     &Apache::loncommon::end_data_table_header_row();      &Apache::loncommon::end_data_table_header_row();
     my %numbers;      my (%numbers,%creditsum);
       my ($showcredits,$defofficial,$defunofficial);
       my %domdefaults = &Apache::lonnet::get_domain_defaults($domain);
       unless ($env{'form.currcat_0'} eq 'communities::0') {
           if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) {
               $showcredits = 1;
               $defofficial = $domdefaults{'officialcredits'};
               $defunofficial = $domdefaults{'unofficialcredits'}; 
           }
       }
     my %courseinfo = &build_courseinfo_hash($courses,$knownuser,$domain,$details,      my %courseinfo = &build_courseinfo_hash($courses,$knownuser,$domain,$details,
                                             $usersections,\@fields,\%fieldtitles,                                              $usersections,\@fields,\%fieldtitles,
                                             $wasactiveon,\%numbers);                                              $wasactiveon,\%numbers,\%creditsum,
                                               $showcredits,$defofficial,$defunofficial);
     my %Sortby;      my %Sortby;
     foreach my $course (sort(keys(%{$courses}))) {      foreach my $course (sort(keys(%{$courses}))) {
         if ($env{'form.sortby'} eq 'code') {          if ($env{'form.sortby'} eq 'code') {
Line 992  sub construct_data_table { Line 999  sub construct_data_table {
                                                      'Previous' => 'Total previous students',                                                       'Previous' => 'Total previous students',
                                                      'courses'  => 'Total unique codes and courses without codes',                                                       'courses'  => 'Total unique codes and courses without codes',
                                                      'sections' => 'Total sections',                                                       'sections' => 'Total sections',
                                                      'xlists'   => 'Total cross-listings',                                                         'xlists'   => 'Total cross-listings',
                                                  );                                                   );
               if ($showcredits) {
                   $lt{'cr_Active'} = &mt('Total current student credit hours');
                   $lt{'cr_Future'} = &mt('Total future student credit hours');
                   $lt{'cr_Previous'} = &mt('Total previous student credit hours');
               }
             if ($env{'form.currcat_0'} eq 'communities::0') {              if ($env{'form.currcat_0'} eq 'communities::0') {
                 $lt{'courses'} = &mt('Total communities');                  $lt{'courses'} = &mt('Total communities');
                 $lt{'Active'} = &mt('Total current members');                   $lt{'Active'} = &mt('Total current members'); 
                 $lt{'Future'} = &mt('Total future members');                  $lt{'Future'} = &mt('Total future members');
                 $lt{'Previous'} = &mt('Total previous members');                  $lt{'Previous'} = &mt('Total previous members');
             }               }
               my $colspan = 8;
               if ($showcredits) {
                   $colspan = 4;
               }
             $output .= '<tr class="LC_footer_row">'.              $output .= '<tr class="LC_footer_row">'.
                        '<td colspan="2">&nbsp;</td>'.                         '<td colspan="2">&nbsp;</td>'.
                        '<td colspan="8">'.                         '<td colspan="'.$colspan.'">'.
                        '<table border="0">';                         '<table border="0">';
             foreach my $item ('courses','sections','xlists') {              foreach my $item ('courses','sections','xlists') {
                 $output .= '<tr>'.                  $output .= '<tr>'.
                            '<td>'.$lt{$item}.'</td>'.                             '<td>'.$lt{$item}.'</td><td>&nbsp;</td>'.
                            '<td align="right">'.$numbers{$item}.'</td>'.                             '<td align="right">'.$numbers{$item}.'</td>'.
                            '</tr>'."\n";                             '</tr>'."\n";
             }              }
             if (@fields > 0) {               if (@fields > 0) { 
                 foreach my $status (@fields) {                  foreach my $status (@fields) {
                     $output .= '<tr>'.                      $output .= '<tr>'.
                                '<td>'.$lt{$status}.'</td>'.                                 '<td>'.$lt{$status}.'</td><td>&nbsp;</td>'.
                                '<td align="right">'.$numbers{$status}.'</td>'.                                 '<td align="right">'.$numbers{$status}.'</td>'.
                                '</tr>'."\n";                                 '</tr>'."\n";
                 }                  }
             }              }
             $output .= '</table></td></tr>';              $output .= '</table></td>';
               if ($showcredits) {
                   $output .= '<td colspan="'.$colspan.'" valign="bottom"><table>';
                   foreach my $status (@fields) {
                       $output .= '<tr>'.
                                  '<td>'.$lt{'cr_'.$status}.'</td><td>&nbsp;</td>'.
                                  '<td align="right">'.$creditsum{$status}.'</td></tr>';
                   }
                   $output .= '</table></td></tr>';
               }
         }          }
     }      }
     $output .= &Apache::loncommon::end_data_table();      $output .= &Apache::loncommon::end_data_table();
Line 1027  sub construct_data_table { Line 1052  sub construct_data_table {
   
 sub build_courseinfo_hash {  sub build_courseinfo_hash {
     my ($courses,$knownuser,$domain,$details,$usersections,$fields,$fieldtitles,      my ($courses,$knownuser,$domain,$details,$usersections,$fields,$fieldtitles,
         $wasactiveon,$numbers) = @_;          $wasactiveon,$numbers,$creditsum,$showcredits,$defofficial,$defunofficial) = @_;
     my %courseinfo;      my %courseinfo;
     my $now = time;      my $now = time;
     my $gettotals;      my $gettotals;
     if ((keys(%{$courses}) > 0) && (&user_is_dc($domain)) && ($details)) {      if ((keys(%{$courses}) > 0) && (&user_is_dc($domain)) && ($details)) {
         $gettotals = 1;          $gettotals = 1;
     }      }
     my (%uniquecodes,$nocodes),;      my (%uniquecodes,$nocodes,$defcreds);
     foreach my $course (keys(%{$courses})) {      foreach my $course (keys(%{$courses})) {
         my $descr;          my $descr;
         if (ref($courses->{$course}) eq 'HASH') {          if (ref($courses->{$course}) eq 'HASH') {
Line 1116  sub build_courseinfo_hash { Line 1141  sub build_courseinfo_hash {
             $showsyllabus = $coursehash{'showsyllabus'};              $showsyllabus = $coursehash{'showsyllabus'};
         }          }
         $courseinfo{$course}{'showsyllabus'} = $showsyllabus;          $courseinfo{$course}{'showsyllabus'} = $showsyllabus;
           if ($showcredits) {
               if ($coursehash{'internal.defaultcredits'}) {
                   $courseinfo{$course}{'defaultcredits'} = $coursehash{'internal.defaultcredits'};
               } elsif ($instcode ne '') {
                   $courseinfo{$course}{'defaultcredits'} = $defofficial;
               } else {
                   $courseinfo{$course}{'defaultcredits'} = $defunofficial;
               }
               $defcreds = $courseinfo{$course}{'defaultcredits'};
           }
         if (((defined($env{'form.coursenum'}) && ($cnum eq $env{'form.coursenum'}))) ||          if (((defined($env{'form.coursenum'}) && ($cnum eq $env{'form.coursenum'}))) ||
             ($knownuser && ($details == 1))) {              ($knownuser && ($details == 1))) {
             my $milestone;              my $milestone;
Line 1136  sub build_courseinfo_hash { Line 1171  sub build_courseinfo_hash {
             }              }
             $courseinfo{$course}{'counts'} =                $courseinfo{$course}{'counts'} =  
                 &count_students($cdom,$cnum,$numsec,$fields,$fieldtitles,$gettotals,                  &count_students($cdom,$cnum,$numsec,$fields,$fieldtitles,$gettotals,
                                 $numbers,$milestone);                                  $numbers,$creditsum,$showcredits,$defcreds,$milestone);
             if ($instcode ne '') {              if ($instcode ne '') {
                 $courseinfo{$course}{'autoenrollment'} =                  $courseinfo{$course}{'autoenrollment'} =
                     &autoenroll_info(\%coursehash,$now,$seclist,$xlist_items,                      &autoenroll_info(\%coursehash,$now,$seclist,$xlist_items,
Line 1201  sub build_courseinfo_hash { Line 1236  sub build_courseinfo_hash {
 }  }
   
 sub count_students {  sub count_students {
     my ($cdom,$cnum,$numsec,$fieldsref,$titlesref,$getcounts,$numbers,$wasactiveon) = @_;      my ($cdom,$cnum,$numsec,$fieldsref,$titlesref,$getcounts,$numbers,$creditsum,
           $showcredits,$defcreds,$wasactiveon) = @_;
     my $countslist = '<span class="LC_nobreak">'.      my $countslist = '<span class="LC_nobreak">'.
                      &mt('[quant,_1,section,sections,No sections]',$numsec).'</span>';                       &mt('[quant,_1,section,sections,No sections]',$numsec).'</span>';
     my (@fields,%titles,$showexpired);      my (@fields,%titles,$showexpired);
Line 1216  sub count_students { Line 1252  sub count_students {
         return;          return;
     }      }
     my $classlist = &Apache::loncoursedata::get_classlist($cdom,$cnum);      my $classlist = &Apache::loncoursedata::get_classlist($cdom,$cnum);
     my %student_count = (      my (%student_count,%credit_count);
       %student_count = (
                            Active   => 0,                             Active   => 0,
                            Future   => 0,                             Future   => 0,
                            Previous => 0,                             Previous => 0,
                        );                       );
       if ($showcredits) {
           %credit_count = (
                             Active   => 0,
                             Future   => 0,
                             Previous => 0,
                           );
       }
     my %idx;      my %idx;
     $idx{'status'} = &Apache::loncoursedata::CL_STATUS();      $idx{'status'} = &Apache::loncoursedata::CL_STATUS();
     $idx{'end'}    = &Apache::loncoursedata::CL_END();      $idx{'end'}    = &Apache::loncoursedata::CL_END();
       $idx{'credits'} = &Apache::loncoursedata::CL_CREDITS();
     while (my ($student,$data) = each(%$classlist)) {      while (my ($student,$data) = each(%$classlist)) {
         my $status = $data->[$idx{'status'}];          my $status = $data->[$idx{'status'}];
           my $credits = $data->[$idx{'credits'}];
           if ($credits eq '') {
               $credits = $defcreds;  
           }
         if ($status eq 'Expired') {          if ($status eq 'Expired') {
             if (($showexpired) &&              if (($showexpired) &&
                 ($data->[$idx{'end'}] >= $wasactiveon)) {                  ($data->[$idx{'end'}] >= $wasactiveon)) {
                 $student_count{'Previous'} ++;                  $student_count{'Previous'} ++;
                   if ($showcredits) {
                       $credit_count{'Previous'} += $credits; 
                   }
             }              }
         } else {          } else {
             $student_count{$status} ++;              $student_count{$status} ++;
               if ($showcredits) {
                   $credit_count{$status} += $credits;
               }
         }          }
     }      }
     if (@fields) {      if (@fields) {
Line 1241  sub count_students { Line 1296  sub count_students {
             $countslist .= '<span class="LC_nobreak">'.$titles{$status}.': '.              $countslist .= '<span class="LC_nobreak">'.$titles{$status}.': '.
                            $student_count{$status}.'</span><br />';                             $student_count{$status}.'</span><br />';
             $numbers->{$status} += $student_count{$status};              $numbers->{$status} += $student_count{$status};
               if ($showcredits) {
                   $creditsum->{$status} += $credit_count{$status};
               }
         }          }
     }      }
     return $countslist;      return $countslist;

Removed from v.1.72  
changed lines
  Added in v.1.73


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