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

version 1.72, 2013/01/23 15:23:19 version 1.81, 2014/03/18 02:03:16
Line 66  sub handler { Line 66  sub handler {
     }      }
     my $formname = 'coursecatalog';      my $formname = 'coursecatalog';
     if ($env{'form.showdom'} ne '') {      if ($env{'form.showdom'} ne '') {
           $env{'form.showdom'} = &LONCAPA::clean_domain($env{'form.showdom'});
         if (&Apache::lonnet::domain($env{'form.showdom'}) ne '') {          if (&Apache::lonnet::domain($env{'form.showdom'}) ne '') {
             $codedom = $env{'form.showdom'};              $codedom = $env{'form.showdom'};
           } else {
               $env{'form.showdom'} = '';
         }          }
     }      }
     my $domdesc = &Apache::lonnet::domain($codedom,'description');      my $domdesc = &Apache::lonnet::domain($codedom,'description');
     &Apache::lonhtmlcommon::clear_breadcrumbs();      &Apache::lonhtmlcommon::clear_breadcrumbs();
   
       if ($env{'form.catalog_maxdepth'} ne '') {
           $env{'form.catalog_maxdepth'} =~ s{\D}{}g;
       }
   
     my %domconfig =      my %domconfig =
         &Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom);          &Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom);
     my (@cats,@trails,%allitems,%idx,@jsarray,%subcathash,$cathash);      my (@cats,@trails,%allitems,%idx,@jsarray,%subcathash,$cathash);
Line 229  sub course_details { Line 236  sub course_details {
              ({href=>"javascript:document.$formname.submit()",               ({href=>"javascript:document.$formname.submit()",
               text=>$brtextone},                text=>$brtextone},
              {text=>$brtexttwo});               {text=>$brtexttwo});
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog'));      $r->print(
     $r->print('<br />');          &Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog').
     if ($env{'form.currcat_0'} eq 'communities::0') {          '<h2>'.
         $r->print(&mt('Detailed community information:'));          (($env{'form.currcat_0'} eq 'communities::0') ?
     } else {              &mt('Detailed community information:') :
         $r->print(&mt('Detailed course information:'));              &mt('Detailed course information:')).
     }          '</h2>'.
     $r->print('<br /><br />'.          &print_course_listing($codedom,undef,$trails,$allitems,undef,$codetitles).
               &print_course_listing($codedom,undef,$trails,$allitems,undef,$codetitles).          '<br />'.
               '<br /><br />');          '<form name="'.$formname.'" method="post" action="/adm/coursecatalog">'.
     $r->print('<form name="'.$formname.'" method="post" action="/adm/coursecatalog">'.          &Apache::lonhtmlcommon::actionbox([
               '<a href = "javascript:document.coursecatalog.submit()">');              '<a href = "javascript:document.coursecatalog.submit()">'.
     if ($env{'form.currcat_0'} eq 'communities::0') {              (($env{'form.currcat_0'} eq 'communities::0') ?
         $r->print(&mt('Back to community listing'));                  &mt('Back to community listing') : &mt('Back to course listing')).
     } else {              '</a>'
         $r->print(&mt('Back to course listing'));          ]).
     }          &Apache::lonhtmlcommon::echo_form_input(['coursenum','catalogfilter',
     $r->print('</a>'.                                                   'showdetails','courseid']).
               &Apache::lonhtmlcommon::echo_form_input(['coursenum','catalogfilter',          '</form>');
                                                        'showdetails','courseid']).'</form>');  
     return;      return;
 }  }
   
Line 292  sub instcode_course_selector { Line 298  sub instcode_course_selector {
     my ($jscript,$totcodes,$numtitles,$lasttitle) =       my ($jscript,$totcodes,$numtitles,$lasttitle) = 
         &Apache::courseclassifier::instcode_selectors_data($codedom,$formname,          &Apache::courseclassifier::instcode_selectors_data($codedom,$formname,
                            \%cat_items,$codetitles,\%cat_titles,\%cat_order);                             \%cat_items,$codetitles,\%cat_titles,\%cat_order);
     my $js = '<script type"text/javascript">'."\n$jscript\n$catjs\n".      my $js = '<script type="text/javascript">'."\n".
               '</script>';               '// <![CDATA['."\n".
                "$jscript\n$catjs\n".
                '// ]]>'."\n".
                '</script>';
     if ($totcodes) {      if ($totcodes) {
         if (($env{'form.state'} eq 'listing') && ($numtitles > 0)) {          if (($env{'form.state'} eq 'listing') && ($numtitles > 0)) {
             $add_entries{'onLoad'} = 'setElements();';              $add_entries{'onLoad'} = 'setElements();';
Line 321  sub instcode_course_selector { Line 330  sub instcode_course_selector {
                   '<input type="hidden" name="numtitles" value="'.$numtitles.                    '<input type="hidden" name="numtitles" value="'.$numtitles.
                   '" /></form><br /><br />');                    '" /></form><br /><br />');
     } else {      } else {
         $js = '<script type"text/javascript">'."\n$catjs\n".'</script>';          $js = '<script type="text/javascript">'."\n".
                 '// <![CDATA['."\n".
                 "$catjs\n".
                 '// ]]>'."\n".
                 '</script>';
         &cat_header($r,$codedom,$js,\%add_entries,$catlinks,$numtitles);          &cat_header($r,$codedom,$js,\%add_entries,$catlinks,$numtitles);
         my $cat_maxdepth = $env{'form.catalog_maxdepth'};          my $cat_maxdepth = $env{'form.catalog_maxdepth'};
         $r->print('<form name="'.$formname.'" method="post" action="/adm/coursecatalog">'.          $r->print('<form name="'.$formname.'" method="post" action="/adm/coursecatalog">'.
Line 405  sub category_breadcrumbs { Line 418  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 633  sub additional_filters { Line 644  sub additional_filters {
                                ' />'.$title.'</label></span>';                                 ' />'.$title.'</label></span>';
                     if ($type eq 'Previous') {                      if ($type eq 'Previous') {
                         my %milestonetext = &Apache::lonlocal::texthash (                          my %milestonetext = &Apache::lonlocal::texthash (
                             accessend => 'prior to default end access date',                              accessend => 'immediately prior to default end access date',
                             enrollend => 'prior to end date for auto-enrollment',                              enrollend => 'immediately prior to end date for auto-enrollment',
                             date      => 'prior to specific date:',                              date      => 'immediately prior to specific date:',
                         );                          );
                         my @statuses = &Apache::loncommon::get_env_multiple('form.showcounts');                          my @statuses = &Apache::loncommon::get_env_multiple('form.showcounts');
                         $output .= '<span id="choosewasacctext">';                          $output .= '<span id="choosewasacctext" class="LC_nobreak">';
                         if ($checked) {                          if ($checked) {
                             $output .= &get_wasactive_text();                              $output .= &get_wasactive_text();
                         }                          }
Line 736  sub get_statustitles { Line 747  sub get_statustitles {
 sub get_wasactive_text {  sub get_wasactive_text {
     my $wasacctext = ' -- ';      my $wasacctext = ' -- ';
     if ($env{'form.currcat_0'} eq 'communities::0') {      if ($env{'form.currcat_0'} eq 'communities::0') {
         $wasacctext .= &mt('where members had access ...');          $wasacctext .= &mt('where member access status was current ...');
     } else {      } else {
         $wasacctext .= &mt('where students had access ...');          $wasacctext .= &mt('where student access status was current ...');
     }      }
     $wasacctext .= '<br />';  
     return $wasacctext;      return $wasacctext;
 }  }
   
Line 818  sub print_course_listing { Line 828  sub print_course_listing {
                                                  $env{'form.coursenum'},                                                   $env{'form.coursenum'},
                                                  undef,undef,'.',1);                                                   undef,undef,'.',1);
         if (keys(%courses) == 0) {          if (keys(%courses) == 0) {
               $output = '<p class="LC_error">';
             if ($env{'form.currcat_0'} eq 'communities::0') {              if ($env{'form.currcat_0'} eq 'communities::0') {
                 $output .= &mt('The courseID provided does not match a community in this domain.');                  $output .= &mt('The courseID provided does not match a community in this domain.');
             } else {               } else { 
                 $output .= &mt('The courseID provided does not match a course in this domain.');                  $output .= &mt('The courseID provided does not match a course in this domain.');
             }              }
               $output .= '</p>';
             return $output;              return $output;
         }          }
     } else {      } else {
Line 832  sub print_course_listing { Line 844  sub print_course_listing {
             %courses = &search_courselist($domain,$subcats);              %courses = &search_courselist($domain,$subcats);
         }          }
         if (keys(%courses) == 0) {          if (keys(%courses) == 0) {
               $output = '<p class="LC_info">';
             if ($env{'form.currcat_0'} eq 'communities::0') {              if ($env{'form.currcat_0'} eq 'communities::0') {
                 $output =                  $output .= &mt('No communities match the criteria you selected.');
                     '<p class="LC_info">'  
                    .&mt('No communities match the criteria you selected.')  
                    .'</p>';  
             } else {              } else {
                 $output =                  $output .= &mt('No courses match the criteria you selected.');
                     '<p class="LC_info">'  
                    .&mt('No courses match the criteria you selected.')  
                    .'</p>';  
             }              }
               $output .= '</p>';
             return $output;              return $output;
         }          }
         if (($knownuser) && (!$env{'form.showdetails'}) && (!&user_is_dc($domain))) {          if (($knownuser) && (!$env{'form.showdetails'}) && (!&user_is_dc($domain))) {
Line 946  sub construct_data_table { Line 954  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,$deftextbook);
       my %domdefaults = &Apache::lonnet::get_domain_defaults($domain);
       unless ($env{'form.currcat_0'} eq 'communities::0') {
           if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbookcredits'}) {
               $showcredits = 1;
               $defofficial = $domdefaults{'officialcredits'};
               $defunofficial = $domdefaults{'unofficialcredits'};
               $deftextbook = $domdefaults{'textbookcredits'};
           }
       }
     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,$deftextbook);
     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 1011  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 1064  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 1153  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 1183  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 1248  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 1264  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 1308  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.81


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