[LON-CAPA-cvs] cvs: loncom /interface coursecatalog.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Mon, 16 Oct 2006 19:39:52 -0000
This is a MIME encoded message
--raeburn1161027592
Content-Type: text/plain
raeburn Mon Oct 16 15:39:52 2006 EDT
Modified files:
/loncom/interface coursecatalog.pm
Log:
Refactored so access dates, student counts and auto-enrollment status are additional details which are shown on a second page, and only for a single courseID. Search based on select box choices uses lonnet::auto_instcode_defaults() to construct appropriate regular expressions to pass to courseiddump() from selections made. Breadcrumbs added, now there are multiple pages.
--raeburn1161027592
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20061016153952.txt"
Index: loncom/interface/coursecatalog.pm
diff -u loncom/interface/coursecatalog.pm:1.6 loncom/interface/coursecatalog.pm:1.7
--- loncom/interface/coursecatalog.pm:1.6 Thu Oct 12 19:15:33 2006
+++ loncom/interface/coursecatalog.pm Mon Oct 16 15:39:51 2006
@@ -28,11 +28,11 @@
use lib qw(/home/httpd/lib/perl);
use Apache::Constants qw(:common);
use Apache::loncommon;
+use Apache::lonhtmlcommon;
use Apache::lonnet;
use Apache::lonlocal;
use Apache::courseclassifier;
use Apache::lonacc;
-use lib '/home/httpd/lib/perl/';
use LONCAPA;
sub handler {
@@ -46,6 +46,52 @@
&Apache::lonlocal::get_language_handle($r);
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['sortby']);
my $codedom = $Apache::lonnet::perlvar{'lonDefDomain'};
+ my $formname = 'coursecatalog';
+ my $domdesc = $Apache::lonnet::domaindescription{$codedom};
+
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ if ($env{'form.coursenum'} ne '') {
+ &course_details($r,$codedom,$formname,$domdesc);
+ } else {
+ &course_selector($r,$codedom,$formname,$domdesc);
+ if ($env{'form.state'} eq 'listing') {
+ $r->print('<br /><br />'.&print_course_listing($codedom).'<br />');
+ }
+ }
+ $r->print(&Apache::loncommon::end_page());
+ return OK;
+}
+
+sub course_details {
+ my ($r,$codedom,$formname,$domdesc) = @_;
+ my $output;
+ my %add_entries = (topmargin => "0",
+ marginheight => "0",);
+ my $start_page =
+ &Apache::loncommon::start_page('Course Catalog','',
+ {
+ 'add_entries' => \%add_entries,
+ 'no_inline_link' => 1,});
+ $r->print($start_page);
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/coursecatalog",
+ text=>"Select courses"},
+ {href=>"javascript:document.$formname.submit()",
+ text=>"Course listing"},
+ {text=>"Course details"});
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Details'));
+ $r->print('<br />'.&mt('Detailed course information:').'<br /><br />'.
+ '<form name="coursecatalog" method="post">'.
+ &print_course_listing($codedom).'<br /><br />');
+ $r->print('<a href = "javascript:document.coursecatalog.submit()">'.
+ &mt('Back to course listing').'</a>'.
+ '<input type="hidden" name="sortby" value="'.
+ $env{'form.sortby'}.'" />'.
+ '<input type="hidden" name="state" value="listing" /></form>');
+}
+
+sub course_selector {
+ my ($r,$codedom,$formname,$domdesc) = @_;
my %coursecodes = ();
my %codes = ();
my @codetitles = ();
@@ -63,8 +109,6 @@
my $totcodes = 0;
my $jscript = '';
my ($numtitles,$lasttitle);
- my $formname = 'coursecatalog';
- my $domdesc = $Apache::lonnet::domaindescription{$codedom};
$totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
if ($totcodes > 0) {
$format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);
@@ -83,7 +127,7 @@
for (my $k=0; $k<$lasttitle; $k++) {
my $cat = $codetitles[$k];
my $level = 1;
- $level = &recurse_options($codetitles[$k],$idlist{$codetitles[$k]},$level,$cat,\%cat_items,\@data,\%by_year,\%by_sem,\%by_dept); }
+ $level = &recurse_options($codetitles[$k],$idlist{$codetitles[$k]},$level,$cat,\%cat_items,\@data,\%by_year,\%by_sem,\%by_dept); }
$scripttext .= &build_javascript(\%by_year,\%by_sem,\%by_dept,\%cat_order,\@codetitles);
$jscript .= &javascript_select_filler($formname,$scripttext,\@codetitles,$longtitles_str,$allidlist);
}
@@ -115,25 +159,42 @@
$jscript .= '}';
$jscript .= qq|
function changeSort(caller) {
- document.coursecatalog.sortby.value = caller;
- document.coursecatalog.submit();
+ document.$formname.sortby.value = caller;
+ document.$formname.submit();
+}
+function setCourseId(caller) {
+ document.$formname.coursenum.value = caller;
+ document.$formname.submit();
}\n|;
}
my $js = '<script type"text/javascript">'."\n$jscript\n".
'</script>';
my %add_entries = (topmargin => "0",
- marginheight => "0",
- onLoad =>"setElements()",);
+ marginheight => "0",);
+ if ($env{'form.state'} eq 'listing') {
+ $add_entries{'onLoad'} = 'setElements()';
+ }
my $start_page =
&Apache::loncommon::start_page('Course Catalog',$js,
- {
+ {
'add_entries' => \%add_entries,
'no_inline_link' => 1,});
$r->print($start_page);
-
+ if ($env{'form.state'} eq 'listing') {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/coursecatalog",
+ text=>"Select courses"},
+ {text=>"Course listing"});
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Listing'));
+ } else {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/coursecatalog",
+ text=>"Select courses"});
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Select courses'));
+ }
$r->print('<h3>'.&mt('Display information about official [_1] classes for which LON-CAPA courses have been created:',$domdesc).'</h3>');
$r->print(&mt('<b>Choose which course(s) to list.</b><br />'));
- $r->print('<form name="coursecatalog" method="post">');
+ $r->print('<form name="coursecatalog" method="post">');
if ($numtitles > 0) {
$r->print('<table><tr>');
for (my $k=0; $k<$lasttitle-1; $k++) {
@@ -171,20 +232,17 @@
'<input type="text" name="'.$codetitles[$numtitles-1].'" /><br />'."\n");
}
}
- $r->print('<br /><input type="hidden" name="state" value="listing" /><input type="hidden" name="sortby" value="" /><input type="submit" name="catalogfilter" value="'.&mt('Display courses').'" /></form>');
+ $r->print('<br /><input type="hidden" name="coursenum" value="" /><input type="hidden" name="state" value="listing" /><input type="hidden" name="sortby" value="" /><input type="submit" name="catalogfilter" value="'.&mt('Display courses').'" /></form>');
} else {
$r->print(&Apache::loncommon::start_page('Course Catalog','',
{
'no_inline_link' => 1,}));
$r->print('<br />'.&mt('No official courses to display for [_1].',$domdesc));
}
- if ($env{'form.state'} eq 'listing') {
- $r->print('<br /><br />'.&print_course_listing($codedom).'<br />');
- }
- $r->print(&Apache::loncommon::end_page());
- return OK;
+ return;
}
+
sub recurse_options {
my ($currkey,$currlist,$level,$cat,$cat_options,$data,$by_year,$by_sem,$by_dept) = @_;
if (ref($currlist) eq 'HASH') {
@@ -268,52 +326,112 @@
return $output;
}
+sub search_courselist {
+ my ($domain) = @_;
+ my ($instcode,%codedefaults,@code_order);
+ my $defaults_result =
+ &Apache::lonnet::auto_instcode_defaults($domain,\%codedefaults,
+ \@code_order);
+ if ($defaults_result eq 'ok') {
+ $instcode ='^';
+ foreach my $item (@code_order) {
+ if ($env{'form.'.$item} eq '0' ) {
+ $instcode .= $codedefaults{$item};
+ } else {
+ $instcode .= $env{'form.'.$item};
+ }
+ }
+ $instcode .= '$';
+ } else {
+ $instcode = '.';
+ }
+ my %courses = &Apache::lonnet::courseiddump($domain,'.',1,$instcode,'.','.',
+ undef,undef,'Course',1);
+ return %courses;
+}
+
sub print_course_listing {
my ($domain) = @_;
my $output;
- my $year = $env{'form.Year'};
- my $sem = $env{'form.Semester'};
- my $dept = $env{'form.Department'};
- my $coursenum = $env{'form.Number'};
- my $instcode;
- if ($sem eq '0' ) {
- $instcode .= '^[sfu]s';
+ my %courses;
+ if ($env{'form.coursenum'} ne '') {
+ %courses = &Apache::lonnet::courseiddump($domain,'.',1,'.','.',
+ $env{'form.coursenum'},
+ undef,undef,'Course');
+ if (keys(%courses) == 0) {
+ $output .= &mt('The courseID provided does not match a course in this domain.');
+ return $output;
+ }
} else {
- $instcode .= '^'.$sem;
+ %courses = &search_courselist($domain);
+ if (keys(%courses) == 0) {
+ $output = &mt('No courses match the criteria you selected.');
+ return $output;
+ }
+ $output = &mt('<b>Note for students:</b> If you are officially enrolled in a course but the course is not listed in your LON-CAPA courses, click the "Show more details" link for the specific course and check the default access dates and/or automated enrollment settings.<br /><br />');
}
- if ($year eq '0') {
- $instcode .= '\d{2}';
- } else {
- $instcode .= $year;
+ $output .= &Apache::loncommon::start_data_table().
+ &Apache::loncommon::start_data_table_header_row();
+ my @coltitles = ('Code','Sections','Crosslisted','Title','Owner');
+ my %sortname;
+ if ($env{'form.coursenum'} eq '') {
+ $sortname{'Code'} = 'code';
+ $sortname{'Title'} = 'title';
+ $sortname{'Owner'} = 'owner';
+ }
+ foreach my $item (@coltitles) {
+ $output .= '<th>';
+ if (defined($sortname{$item})) {
+ $output .= '<a href="javascript:changeSort('."'$sortname{$item}'".')">'.&mt($item).'</a>';
+ } else {
+ $output .= &mt($item);
+ }
+ $output .= '</th>';
}
- if ($dept eq '0') {
- $instcode .= '\w{2,3}';
+ if ($env{'form.coursenum'} eq '') {
+ $output .= '<th> </th>';
} else {
- $instcode .= $dept;
+ $output .=
+ '<th>'.&mt('Default Access Dates for Students').'</th>'.
+ '<th>'.&mt('Student Counts').'</th>'.
+ '<th>'.&mt('Auto-enrollment of <br />registered students').'</th>';
}
- if ($coursenum ne '0' && $coursenum != -1) {
- $instcode .= $coursenum.'$';
+ &Apache::loncommon::end_data_table_header_row();
+ my %courseinfo = &build_courseinfo_hash(%courses);
+ my %Sortby;
+ foreach my $course (sort(keys(%courses))) {
+ if ($env{'form.sortby'} eq 'code') {
+ push(@{$Sortby{$courseinfo{$course}{'code'}}},$course);
+ } elsif ($env{'form.sortby'} eq 'owner') {
+ push(@{$Sortby{$courseinfo{$course}{'ownerlastname'}}},$course);
+ } else {
+ push(@{$Sortby{$courseinfo{$course}{'title'}}},$course);
+ }
}
- my %courses = &Apache::lonnet::courseiddump($domain,'.',1,$instcode,'.','.',
- undef,undef,'Course',1);
- if (keys(%courses) == 0) {
- $output = &mt('No courses match the criteria you selected.');
- return $output;
+ my @sorted_courses;
+ if (($env{'form.sortby'} eq 'code') || ($env{'form.sortby'} eq 'owner')) {
+ @sorted_courses = sort(keys(%Sortby));
+ } else {
+ @sorted_courses = sort { lc($a) cmp lc($b) } (keys(%Sortby));
}
- $output = &mt('<b>Note for students:</b> If you are officially enrolled in a course but there is no student role for the course in your LON-CAPA roles screen, check the default access dates and/or auto-enrollment settings for the course below. Your roles screen displays only currently accessible roles.<br /><br />');
- $output .= &Apache::loncommon::start_data_table().
- &Apache::loncommon::start_data_table_header_row().
- '<th><a href="javascript:changeSort('."'code'".')">'.&mt('Code').'</a></th>'.
- '<th>'.&mt('Sections').'</th>'.
- '<th>'.&mt('Crosslisted').'</th>'.
- '<th><a href="javascript:changeSort('."'title'".')">'.&mt('Title').'</a></th>'.
- '<th><a href="javascript:changeSort('."'owner'".')">'.&mt('Owner').'</a></th>'.
- '<th>'.&mt('Student Status').'</th>'.
- '<th>'.&mt('Default Access Dates').'</th>'.
- '<th>'.&mt('Auto-enrollment').'</th>'.
- &Apache::loncommon::end_data_table_header_row();
+ foreach my $item (@sorted_courses) {
+ foreach my $course (@{$Sortby{$item}}) {
+ $output.=&Apache::loncommon::start_data_table_row();
+ $output.=&courseinfo_row($courseinfo{$course});
+ $output.=&Apache::loncommon::end_data_table_row();
+ }
+ }
+ $output .= &Apache::loncommon::end_data_table();
+ my $echo = &Apache::lonhtmlcommon::echo_form_input(['coursenum','state','catalogfilter','sortby']);
+ $output .= $echo;
+ return $output;
+}
+
+sub build_courseinfo_hash {
+ my (%courses) = @_;
my %courseinfo;
+ my $now = time;
foreach my $course (keys(%courses)) {
my $descr;
if ($courses{$course} =~ m/^([^:]*):/i) {
@@ -324,7 +442,7 @@
my $cleandesc=&HTML::Entities::encode($descr,'<>&"');
$cleandesc=~s/'/\\'/g;
my ($cdom,$cnum)=split(/\_/,$course);
-
+
my ($desc,$instcode,$owner,$ttype) = split(/:/,$courses{$course});
$owner = &unescape($owner);
my ($ownername,$ownerdom);
@@ -345,146 +463,124 @@
$courseinfo{$course}{'code'} = $instcode;
$courseinfo{$course}{'ownerlastname'} = $ownernames{'lastname'};
$courseinfo{$course}{'title'} = $cleandesc;
- $courseinfo{$course}{'owner'} = $owner;
- }
- my %Sortby;
- foreach my $course (sort(keys(%courses))) {
- if ($env{'form.sortby'} eq 'code') {
- push(@{$Sortby{$courseinfo{$course}{'code'}}},$course);
- } elsif ($env{'form.sortby'} eq 'owner') {
- push(@{$Sortby{$courseinfo{$course}{'ownerlastname'}}},$course);
- } else {
- push(@{$Sortby{$courseinfo{$course}{'title'}}},$course);
+ $courseinfo{$course}{'owner'} = $owner;
+
+ my %coursehash = &Apache::lonnet::dump('environment',$cdom,$cnum);
+ my @classids;
+ my @crosslistings;
+ my $seclist = &identify_sections($coursehash{'internal.sectionnums'});
+ $courseinfo{$course}{'seclist'} = $seclist;
+ my $xlist_items = &identify_sections($coursehash{'internal.crosslistings'});
+ my $showsyllabus = 1; # default is to include a syllabus link
+ if (defined($coursehash{'showsyllabus'})) {
+ $showsyllabus = $coursehash{'showsyllabus'};
+ }
+ $courseinfo{$course}{'showsyllabus'} = $showsyllabus;
+ if (defined($env{'form.coursenum'})) {
+ if ($cnum eq $env{'form.coursenum'}) {
+ $courseinfo{$course}{'counts'} = &count_students($cdom,$cnum);
+ $courseinfo{$course}{'autoenrollment'} =
+ &autoenroll_info(\%coursehash,$now,$seclist,$xlist_items,
+ $instcode,$owner,$cdom,$cnum);
+
+ my $startaccess = '';
+ my $endaccess = '';
+ my $accessdates;
+ if ( defined($coursehash{'default_enrollment_start_date'}) ) {
+ $startaccess = &Apache::lonlocal::locallocaltime($coursehash{'default_enrollment_start_date'});
+ }
+ if ( defined($coursehash{'default_enrollment_end_date'}) ) {
+ $endaccess = &Apache::lonlocal::locallocaltime($coursehash{'default_enrollment_end_date'});
+ if ($coursehash{'default_enrollment_end_date'} == 0) {
+ $endaccess = "No ending date";
+ }
+ }
+ if ($startaccess) {
+ $accessdates .= &mt('<i>From:</i> ').$startaccess.'<br />';
+ }
+ if ($endaccess) {
+ $accessdates .= &mt('<i>To:</i> ').$endaccess.'<br />';
+ }
+ $courseinfo{$course}{'access'} = $accessdates;
+ }
}
- }
- my @sorted_courses;
- if (($env{'form.sortby'} eq 'code') || ($env{'form.sortby'} eq 'owner')) {
- @sorted_courses = sort(keys(%Sortby));
- } else {
- @sorted_courses = sort { lc($a) cmp lc($b) } (keys(%Sortby));
- }
- foreach my $item (@sorted_courses) {
- foreach my $course (@{$Sortby{$item}}) {
- $output.=&Apache::loncommon::start_data_table_row();
- $output.=&courseinfo_row($courseinfo{$course});
- $output.=&Apache::loncommon::end_data_table_row();
+ if ($xlist_items eq '') {
+ $xlist_items = &mt('No');
}
+ $courseinfo{$course}{'xlist'} = $xlist_items;
}
- $output .= &Apache::loncommon::end_data_table();
- return $output;
+ return %courseinfo;
}
-sub courseinfo_row {
- my ($info) = @_;
- my ($cdom,$cnum,$title,$ownerlast,$code,$owner,$output);
- if (ref($info) eq 'HASH') {
- $cdom = $info->{'cdom'};
- $cnum = $info->{'cnum'};
- $title = $info->{'title'};
- $ownerlast = $info->{'ownerlastname'};
- $code = $info->{'code'};
- $owner = $info->{'owner'};
- } else {
- $output = '<td colspan="8">'.&mt('No information available for [_1].',
- $code).'</td>';
- return $output;
- }
- my %coursehash = &Apache::lonnet::dump('environment',$cdom,$cnum);
+sub count_students {
+ my ($cdom,$cnum) = @_;
my $classlist = &Apache::loncoursedata::get_classlist($cdom,$cnum);
+ my %student_count = (
+ Active => 0,
+ Future => 0,
+ Expired => 0,
+ );
my %idx;
- my @classids;
- my @crosslistings;
$idx{'status'} = &Apache::loncoursedata::CL_STATUS();
my %status_title = &Apache::lonlocal::texthash(
Expired => 'Previous access',
Active => 'Current access',
Future => 'Future access',
);
- my %student_count = (
- Expired => 0,
- Active => 0,
- Future => 0,
- );
+
while (my ($student,$data) = each(%$classlist)) {
$student_count{$data->[$idx{'status'}]} ++;
}
- my $seclist = &identify_sections($coursehash{'internal.sectionnums'});
- my $xlist_items = &identify_sections($coursehash{'internal.crosslistings'});
+
my $countslist;
- my $startaccess = '';
- my $endaccess = '';
- my $now;
- my ($accessdates,$autoenrolldates,$showsyllabus);
- if ( defined($coursehash{'default_enrollment_start_date'}) ) {
- $startaccess = &Apache::lonlocal::locallocaltime($coursehash{'default_enrollment_start_date'});
- }
- if ( defined($coursehash{'default_enrollment_end_date'}) ) {
- $endaccess = &Apache::lonlocal::locallocaltime($coursehash{'default_enrollment_end_date'});
- if ($coursehash{'default_enrollment_end_date'} == 0) {
- $endaccess = "No ending date";
- }
- }
- if ($startaccess) {
- $accessdates .= &mt('From: ').$startaccess.'<br />';
- }
- if ($endaccess) {
- $accessdates .= &mt('To: ').$endaccess.'<br />';
- }
- $autoenrolldates = &mt('Not enabled');
- if (defined($coursehash{'internal.autoadds'}) && $coursehash{'internal.autoadds'} == 1) {
- my ($autostart,$autoend);
- if ( defined($coursehash{'internal.autostart'}) ) {
- $autostart = &Apache::lonlocal::locallocaltime($coursehash{'internal.autostart'});
- }
- if ( defined($coursehash{'internal.autoend'}) ) {
- $autoend = &Apache::lonlocal::locallocaltime($coursehash{'internal.autoend'});
- }
- if ($coursehash{'internal.autostart'} > $now) {
- if ($coursehash{'internal.autoend'} && $coursehash{'internal.autoend'} < $now) {
- $autoenrolldates = &mt('Not enabled');
- } else {
- my $valid_classes = &get_valid_classes($seclist,$xlist_items,
- $code,$owner,$cdom,$cnum);
- if ($valid_classes ne '') {
- $autoenrolldates = &mt('Not enabled<br />Starts: ').
- $autostart.'<br />'.$valid_classes;
- }
- }
- } else {
- if ($coursehash{'internal.autoend'} && $coursehash{'internal.autoend'} < $now) {
- $autoenrolldates = &mt('Not enabled<br />Ended: ').$autoend;
- } else {
- my $valid_classes = &get_valid_classes($seclist,$xlist_items,
- $code,$owner,$cdom,$cnum);
- if ($valid_classes ne '') {
- $autoenrolldates = &mt('Currently enabled<br />').
- $valid_classes;
- }
- }
- }
- }
- if (defined($coursehash{'showsyllabus'})) {
- $showsyllabus = $coursehash{'showsyllabus'};
- }
- foreach my $status ('Active','Future','Expired') {
+ foreach my $status ('Active','Future') {
$countslist .= '<nobr>'.$status_title{$status}.': '.
$student_count{$status}.'</nobr><br />';
}
- if ($xlist_items eq '') {
- $xlist_items = &mt('No');
+ return $countslist;
+}
+
+sub courseinfo_row {
+ my ($info) = @_;
+ my ($cdom,$cnum,$title,$ownerlast,$code,$owner,$seclist,$xlist_items,
+ $accessdates,$showsyllabus,$counts,$autoenrollment,$output);
+ if (ref($info) eq 'HASH') {
+ $cdom = $info->{'cdom'};
+ $cnum = $info->{'cnum'};
+ $title = $info->{'title'};
+ $ownerlast = $info->{'ownerlastname'};
+ $code = $info->{'code'};
+ $owner = $info->{'owner'};
+ $seclist = $info->{'seclist'};
+ $xlist_items = $info->{'xlist'};
+ $accessdates = $info->{'access'};
+ $counts = $info->{'counts'};
+ $autoenrollment = $info->{'autoenrollment'};
+ $showsyllabus = $info->{'showsyllabus'};
+ } else {
+ $output = '<td colspan="8">'.&mt('No information available for [_1].',
+ $code).'</td>';
+ return $output;
}
- $output = '<td>'.$coursehash{'internal.coursecode'}.'</td>'.
- '<td>'.$seclist.'</td>'.
- '<td>'.$xlist_items.'</td>'.
- '<td>'.$title.' <font size="-2">';
+ $output .= '<td>'.$code.'</td>'.
+ '<td>'.$seclist.'</td>'.
+ '<td>'.$xlist_items.'</td>'.
+ '<td>'.$title.' <font size="-2">';
if ($showsyllabus) {
$output .= &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$cnum,$cdom);
+ } else {
+ $output .= ' ';
}
$output .= '</font></td>'.
- '<td>'.$ownerlast.'</td>'.
- '<td>'.$countslist.'</td>'.
- '<td>'.$accessdates.'</td>'.
- '<td>'.$autoenrolldates.'</td>';
+ '<td>'.$ownerlast.'</td>';
+ if ($env{'form.coursenum'} eq '') {
+ $output .= "<td><a href=\"javascript:setCourseId('$cnum')\">".&mt('Show more details').'</a></td>';
+ } else {
+ $output .=
+ '<td>'.$accessdates.'</td>'.
+ '<td>'.$counts.'</td>'.
+ '<td>'.$autoenrollment.'</td>';
+ }
return $output;
}
@@ -687,4 +783,42 @@
return $output;
}
+sub autoenroll_info {
+ my ($coursehash,$now,$seclist,$xlist_items,$code,$owner,$cdom,$cnum) = @_;
+ my $autoenrolldates = &mt('Not enabled');
+ if (defined($coursehash->{'internal.autoadds'}) && $coursehash->{'internal.autoadds'} == 1) {
+ my ($autostart,$autoend);
+ if ( defined($coursehash->{'internal.autostart'}) ) {
+ $autostart = &Apache::lonlocal::locallocaltime($coursehash->{'internal.autostart'});
+ }
+ if ( defined($coursehash->{'internal.autoend'}) ) {
+ $autoend = &Apache::lonlocal::locallocaltime($coursehash->{'internal.autoend'});
+ }
+ if ($coursehash->{'internal.autostart'} > $now) {
+ if ($coursehash->{'internal.autoend'} && $coursehash->{'internal.autoend'} < $now) {
+ $autoenrolldates = &mt('Not enabled');
+ } else {
+ my $valid_classes =
+ &get_valid_classes($seclist,$xlist_items,$code,
+ $owner,$cdom,$cnum);
+ if ($valid_classes ne '') {
+ $autoenrolldates = &mt('Not enabled<br />Starts: ').
+ $autostart.'<br />'.$valid_classes; }
+ }
+ } else {
+ if ($coursehash->{'internal.autoend'} && $coursehash->{'internal.autoend'} < $now) {
+ $autoenrolldates = &mt('Not enabled<br />Ended: ').$autoend;
+ } else {
+ my $valid_classes = &get_valid_classes($seclist,$xlist_items,
+ $code,$owner,$cdom,$cnum);
+ if ($valid_classes ne '') {
+ $autoenrolldates = &mt('Currently enabled<br />').
+ $valid_classes;
+ }
+ }
+ }
+ }
+ return $autoenrolldates;
+}
+
1;
--raeburn1161027592--