--- loncom/interface/coursecatalog.pm 2009/11/23 21:45:18 1.57
+++ loncom/interface/coursecatalog.pm 2009/11/23 22:02:50 1.58
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler for displaying the course catalog interface
#
-# $Id: coursecatalog.pm,v 1.57 2009/11/23 21:45:18 raeburn Exp $
+# $Id: coursecatalog.pm,v 1.58 2009/11/23 22:02:50 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -334,78 +334,68 @@ sub category_breadcrumbs {
my $currcat_str =
''.
'';
- my $catlinks = '
'.&mt('Catalog:').' | ';
+ my $catlinks = ''.&mt('Catalog:').' | ';
my $has_subcats;
my $selitem;
- for (my $i=0; $i<$deeper; $i++) {
- $currcat_str .= '';
- my ($cattitle,$shallower);
- if ($i == 0) {
- if (ref($cats[0]) eq 'ARRAY') {
- if (@{$cats[0]} > 1) {
- $cattitle = &mt('Main Categories');
- }
+ if (ref($cats[0]) eq 'ARRAY') {
+ if (@{$cats[0]} == 0) {
+ $catlinks .= &mt('No categories defined in this domain');
+ } elsif (@{$cats[0]} == 1) {
+ if ($cats[0][0] eq 'instcode') {
+ $catlinks .= &mt('Official courses (with institutional codes)');
+ $env{'form.currcat_0'} = 'instcode::0';
+ } elsif ($cats[0][0] eq 'communities') {
+ $catlinks .= &mt('Communities');
+ $env{'form.currcat_0'} = 'communities::0';
+ } else {
+ my $name = $cats[0][0];
+ my $item = &escape($name).'::0';
+ $catlinks .= $name;
+ $env{'form.currcat_0'} = $item;
}
+ $currcat_str .= '';
} else {
- $shallower = $i-1;
- my ($cat,$container,$depth) = map { &unescape($_); } split(/:/,$env{'form.currcat_'.$shallower});
- $cattitle = $cat;
- }
- if ($cattitle ne '') {
- $catlinks .= ' | '.$cattitle.''.$crumbsymbol.' | ';
- }
- }
- if ($deeper == 0) {
- $catlinks .= '';
- if (ref($cats[0]) eq 'ARRAY') {
- if ((@{$cats[0]} == 1) && (@cats == 1)) {
- if ($cats[0][0] eq 'instcode') {
- $catlinks .= &mt('Official courses (with institutional codes)').
- '';
- $env{'form.currcat_0'} = 'instcode::0';
- } elsif ($cats[0][0] eq 'communities') {
- $catlinks .= &mt('Communities').
- '';
- $env{'form.currcat_0'} = 'communities::0';
- } else {
- my $name = $cats[0][0];
- my $item = &escape($name).'::0';
- $catlinks .= $name.
- '';
- $env{'form.currcat_0'} = $item;
- }
+ $catlinks .= &main_category_selector(@cats);
+ if (($env{'form.currcat_0'} ne '') &&
+ ($env{'form.currcat_0'} ne 'instcode::0')) {
+ $catlinks .= $crumbsymbol;
} else {
- $has_subcats = 1;
- my $buttontext = &mt('Show subcategories');
- $selitem = 'currcat_0';
- $catlinks .= ' | ';
+ }
+ }
+ } else {
+ $catlinks .= &mt('Official courses (with institutional codes)');
+ $env{'form.currcat_0'} = 'instcode::0';
+ $currcat_str .= '';
+ }
+ if ($deeper) {
+ for (my $i=1; $i<=$deeper; $i++) {
+ my $shallower = $i-1;
+ next if ($shallower == 0);
+ my ($cat,$container,$depth) = map { &unescape($_); } split(/:/,$env{'form.currcat_'.$shallower});
+ if ($cat ne '') {
+ $catlinks .= ''.
+ ''."\n".
- ' ';
+ $catlinks .= '';
}
- } else {
- $catlinks .= &mt('Official courses (with institutional codes)').
- '';
- $env{'form.currcat_0'} = 'instcode::0';
+ unless ($i == $deeper) {
+ $catlinks .= $crumbsymbol;
+ }
}
- } else {
my ($cat,$container,$depth);
if ($env{'form.currcat_'.$currdepth} eq '') {
my $shallower = $currdepth - 1;
@@ -413,40 +403,66 @@ sub category_breadcrumbs {
} else {
($cat,$container,$depth) = map { &unescape($_); } split(/:/,$env{'form.currcat_'.$currdepth});
}
- my $deeper = $depth +1;
- my $currcat = $cat;
- if ($cat eq 'instcode') {
- $currcat = &mt('Official courses (with institutional codes)');
- } elsif ($cat eq 'communities') {
- $currcat = &mt('Communities');
- }
- $catlinks .= ' | '.$currcat.'';
- if (ref($cats[$deeper]{$cat}) eq 'ARRAY') {
+ my $deeperlevel = $depth +1;
+ if (ref($cats[$deeperlevel]{$cat}) eq 'ARRAY') {
$has_subcats = 1;
my $buttontext = &mt('Show subcategories');
- $selitem = 'currcat_'.$deeper;
- $catlinks .= ': '."\n";
} elsif ($cat ne 'instcode') {
$catlinks .= ' '.&mt('(No subcategories)');
}
+ } else {
+ $selitem = 'currcat_0';
}
$catlinks .= $currcat_str.' |
| ';
return ($catlinks,$has_subcats,$selitem);
}
+sub main_category_selector {
+ my (@cats) = @_;
+ my $maincatlinks = ''."\n";
+ if (ref($cats[0]) eq 'ARRAY') {
+ if (@{$cats[0]} > 1) {
+ my $selected = '';
+ if ($env{'form.currcat_0'} eq '') {
+ $selected = ' selected="selected"';
+ }
+ $maincatlinks .=
+ ''."\n";
+ }
+ for (my $i=0; $i<@{$cats[0]}; $i++) {
+ my $name = $cats[0][$i];
+ my $item = &escape($name).'::0';
+ my $selected;
+ if ($env{'form.currcat_0'} eq $item) {
+ $selected = ' selected="selected"';
+ }
+ $maincatlinks .= ''."\n";
+ }
+ $maincatlinks .= ''."\n";
+ }
+ return $maincatlinks;
+}
+
sub get_depth_values {
my $currdepth = 0;
my $deeper = 0;
|