--- loncom/interface/coursecatalog.pm 2009/11/23 22:02:50 1.58
+++ loncom/interface/coursecatalog.pm 2011/01/25 09:46:43 1.58.4.7
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler for displaying the course catalog interface
#
-# $Id: coursecatalog.pm,v 1.58 2009/11/23 22:02:50 raeburn Exp $
+# $Id: coursecatalog.pm,v 1.58.4.7 2011/01/25 09:46:43 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -87,8 +87,9 @@ sub handler {
}
&Apache::loncommon::extract_categories($cathash,\@cats,\@trails,\%allitems,
\%idx,\@jsarray,$subcats);
+ my ($numtitles,@codetitles);
if ($env{'form.coursenum'} ne '' && &user_is_known()) {
- &course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems);
+ &course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems,\@codetitles);
} else {
my ($catlinks,$has_subcats,$selitem) = &category_breadcrumbs($codedom,@cats);
my $catjs = <<"ENDSCRIPT";
@@ -114,12 +115,12 @@ function setCourseId(caller) {
ENDSCRIPT
$catjs .= &courselink_javascript();
- my $numtitles;
if ($env{'form.currcat_0'} eq 'instcode::0') {
$numtitles = &instcode_course_selector($r,$codedom,$formname,$domdesc,
- $catlinks,$catjs);
+ $catlinks,$catjs,\@codetitles);
if ($env{'form.state'} eq 'listing') {
- $r->print(&print_course_listing($codedom,$numtitles));
+ $r->print(&print_course_listing($codedom,$numtitles,undef,undef,undef,
+ \@codetitles));
}
} else {
my (%add_entries);
@@ -164,7 +165,7 @@ ENDJS
$display_button.'" />
');
}
if ($env{'form.state'} eq 'listing') {
- $r->print(&print_course_listing($codedom,undef,\@trails,\%allitems,$subcats));
+ $r->print(&print_course_listing($codedom,undef,\@trails,\%allitems,$subcats,\@codetitles));
}
}
}
@@ -173,7 +174,7 @@ ENDJS
}
sub course_details {
- my ($r,$codedom,$formname,$domdesc,$trails,$allitems) = @_;
+ my ($r,$codedom,$formname,$domdesc,$trails,$allitems,$codetitles) = @_;
my $output;
my %add_entries = (topmargin => "0",
marginheight => "0",);
@@ -190,17 +191,33 @@ sub course_details {
({href=>"/adm/coursecatalog",
text=>"Course/Community Catalog"});
}
+ my $brtextone = 'Course listing';
+ my $brtexttwo = 'Course details';
+ if ($env{'form.currcat_0'} eq 'communities::0') {
+ $brtextone = 'Community listing';
+ $brtexttwo = 'Community details';
+ }
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:document.$formname.submit()",
- text=>"Course listing"},
- {text=>"Course details"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog'));
- $r->print('
'.&mt('Detailed course information:').'
'.
- &print_course_listing($codedom,undef,$trails,$allitems).
+ text=>$brtextone},
+ {text=>$brtexttwo});
+ $r->print('
');
+ if ($env{'form.currcat_0'} eq 'communities::0') {
+ $r->print(&mt('Detailed community information:'));
+ } else {
+ $r->print(&mt('Detailed course information:'));
+ }
+ $r->print('
'.
+ &print_course_listing($codedom,undef,$trails,$allitems,undef,$codetitles).
'
');
$r->print('
');
return;
@@ -233,10 +250,9 @@ END
}
sub instcode_course_selector {
- my ($r,$codedom,$formname,$domdesc,$catlinks,$catjs) = @_;
+ my ($r,$codedom,$formname,$domdesc,$catlinks,$catjs,$codetitles) = @_;
my %coursecodes = ();
my %codes = ();
- my @codetitles = ();
my %cat_titles = ();
my %cat_order = ();
my %cat_items;
@@ -246,7 +262,7 @@ sub instcode_course_selector {
marginheight => "0",);
my ($jscript,$totcodes,$numtitles,$lasttitle) =
&Apache::courseclassifier::instcode_selectors_data($codedom,$formname,
- \%cat_items,\@codetitles,\%cat_titles,\%cat_order);
+ \%cat_items,$codetitles,\%cat_titles,\%cat_order);
my $js = '';
if ($totcodes) {
@@ -263,7 +279,7 @@ sub instcode_course_selector {
if ($numtitles > 0) {
$r->print(''.&mt('Choose which course(s) to list.').'
'.
&Apache::courseclassifier::build_instcode_selectors($numtitles,
- $lasttitle,\%cat_items,\@codetitles,\%cat_titles,\%cat_order));
+ $lasttitle,\%cat_items,$codetitles,\%cat_titles,\%cat_order));
}
$r->print(''."\n".
''."\n".
@@ -294,15 +310,19 @@ sub cat_header {
'add_entries' => $add_entries,
'no_inline_link' => 1,});
$r->print($start_page);
+ my $brtext = 'Course listing';
+ if ($env{'form.currcat_0'} eq 'communities::0') {
+ $brtext = 'Community listing';
+ }
if ($env{'form.state'} eq 'listing') {
if ($numtitles > 0) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/coursecatalog",
text=>"Course/Community Catalog"},
- {text=>"Course listing"});
+ {text=>$brtext});
} else {
&Apache::lonhtmlcommon::add_breadcrumb
- ({text=>"Course listing"});
+ ({text=>$brtext});
}
} else {
&Apache::lonhtmlcommon::add_breadcrumb
@@ -381,7 +401,7 @@ sub category_breadcrumbs {
$catlinks .= '';
for (my $j=0; $j<@{$cats[$shallower]{$container}}; $j++) {
my $name = $cats[$shallower]{$container}[$j];
- my $item = &escape($name).':'.$container.':'.$shallower;
+ my $item = &escape($name).':'.&escape($container).':'.$shallower;
my $selected = '';
if ($item eq $env{'form.currcat_'.$shallower}) {
$selected = ' selected="selected"';
@@ -561,8 +581,8 @@ sub user_is_dc {
}
sub search_official_courselist {
- my ($domain,$numtitles) = @_;
- my $instcode = &Apache::courseclassifier::instcode_search_str($domain,$numtitles);
+ my ($domain,$numtitles,$codetitles) = @_;
+ my $instcode = &Apache::courseclassifier::instcode_search_str($domain,$numtitles,$codetitles);
my $showhidden;
if (&user_is_dc($domain)) {
$showhidden = $env{'form.showhidden'};
@@ -619,7 +639,7 @@ sub search_courselist {
}
sub print_course_listing {
- my ($domain,$numtitles,$trails,$allitems,$subcats) = @_;
+ my ($domain,$numtitles,$trails,$allitems,$subcats,$codetitles) = @_;
my $output;
my %courses;
my $knownuser = &user_is_known();
@@ -634,12 +654,16 @@ sub print_course_listing {
$env{'form.coursenum'},
undef,undef,'.',1);
if (keys(%courses) == 0) {
- $output .= &mt('The courseID provided does not match a course in this domain.');
+ if ($env{'form.currcat_0'} eq 'communities::0') {
+ $output .= &mt('The courseID provided does not match a community in this domain.');
+ } else {
+ $output .= &mt('The courseID provided does not match a course in this domain.');
+ }
return $output;
}
} else {
if ($env{'form.currcat_0'} eq 'instcode::0') {
- %courses = &search_official_courselist($domain,$numtitles);
+ %courses = &search_official_courselist($domain,$numtitles,$codetitles);
} else {
%courses = &search_courselist($domain,$subcats);
}
@@ -703,10 +727,14 @@ sub construct_data_table {
}
if ($knownuser) {
if ($details) {
- $output .=
- ''.&mt('Default Access Dates for Students').' | '.
- ''.&mt('Student Counts').' | '.
- ''.&mt('Auto-enrollment of[_1]registered students',' ').' | ';
+ if ($env{'form.currcat_0'} eq 'communities::0') {
+ $output .= ''.&mt('Default Access Dates for Members').' | ';
+ } else {
+ $output .=
+ ''.&mt('Default Access Dates for Students').' | '.
+ ''.&mt('Student Counts').' | '.
+ ''.&mt('Auto-enrollment of[_1]registered students',' ').' | ';
+ }
} else {
$output .= ''.&mt('Details').' | ';
}
@@ -777,8 +805,8 @@ sub build_courseinfo_hash {
$selfenroll_end = $courses->{$course}{'selfenroll_end_date'};
$categories = $courses->{$course}{'categories'};
push(@owners,$singleowner);
- if (ref($courses->{$course}{'co-owners'}) eq 'ARRAY') {
- foreach my $item (@{$courses->{$course}{'co-owners'}}) {
+ if ($courses->{$course}{'co-owners'} ne '') {
+ foreach my $item (split(/,/,$courses->{$course}{'co-owners'})) {
push(@owners,$item);
}
}
@@ -975,10 +1003,14 @@ sub courseinfo_row {
''.$ownerlast.' | ';
if ($knownuser) {
if ($details) {
- $output .=
- ''.$accessdates.' | '.
- ''.$counts.' | '.
- ''.$autoenrollment.' | ';
+ if ($env{'form.currcat_0'} eq 'communities::0') {
+ $output .= ''.$accessdates.' | ';
+ } else {
+ $output .=
+ ''.$accessdates.' | '.
+ ''.$counts.' | '.
+ ''.$autoenrollment.' | ';
+ }
} else {
$output .= "".&mt('Show more details').' | ';
}
@@ -991,7 +1023,13 @@ sub courseinfo_row {
if (($info->{'selfenroll_start'} > 0) && ($info->{'selfenroll_start'} > $now)) {
$output .= ''.&mt('Starts: [_1]',''.$showstart.'').' '.&mt('Ends: [_1]',''.$showend.'').' | ';
} else {
- $output .= ''.&mt('Enroll in course').' | ';
+ $output .= ''.&mt('Enroll in course').' ';
+ if ($info->{'selfenroll_end'} == 0) {
+ $output .= &mt('Available permanently');
+ } elsif ($info->{'selfenroll_end'} > $now) {
+ $output .= &mt('Self-enrollment ends: [_1]',''.$showend.'');
+ }
+ $output .= ' | ';
}
$selfenroll = 1;
}