[LON-CAPA-cvs] cvs: loncom /interface coursecatalog.pm
raeburn
raeburn@source.lon-capa.org
Sat, 07 Feb 2009 18:15:44 -0000
raeburn Sat Feb 7 18:15:44 2009 EDT
Modified files:
/loncom/interface coursecatalog.pm
Log:
Streamline the interface for category selection.
- If there is only one category at the top level, automatically pick it (both instcode and custom category cases).
- Text "Main Categories" eliminated in all but one case.
- Button text: "Change" replaced with "Pick main category", Pick subcategory, or "Show subcategories" as appropriate.
- "Select" option in select box eliminated when there is only one available option.
- "Javascript function: "check_selected" displays alert if "Pick subcategory" button was pushed but not subcategory had been selected.
Index: loncom/interface/coursecatalog.pm
diff -u loncom/interface/coursecatalog.pm:1.45 loncom/interface/coursecatalog.pm:1.46
--- loncom/interface/coursecatalog.pm:1.45 Sat Feb 7 18:06:19 2009
+++ loncom/interface/coursecatalog.pm Sat Feb 7 18:15:44 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler for displaying the course catalog interface
#
-# $Id: coursecatalog.pm,v 1.45 2009/02/07 18:06:19 raeburn Exp $
+# $Id: coursecatalog.pm,v 1.46 2009/02/07 18:15:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -90,7 +90,7 @@
if ($env{'form.coursenum'} ne '' && &user_is_known()) {
&course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems);
} else {
- my ($catlinks,$has_subcats) = &category_breadcrumbs($codedom,@cats);
+ my ($catlinks,$has_subcats,$selitem) = &category_breadcrumbs($codedom,@cats);
my $catjs = <<"ENDSCRIPT";
function setCatDepth(depth) {
@@ -123,6 +123,16 @@
}
} else {
my (%add_entries);
+ if ($selitem) {
+ $catjs .= <<ENDJS;
+function check_selected() {
+ if (document.coursecats.$selitem.options[document.coursecats.$selitem.selectedIndex].value == "") {
+ alert('Choose a subcategory to display');
+ return false;
+ }
+}
+ENDJS
+ }
$catjs = '<script type="text/javascript">'."\n".$catjs."\n".'</script>';
&cat_header($r,$codedom,$catjs,\%add_entries,$catlinks);
if ($env{'form.currcat_0'} ne '') {
@@ -392,7 +402,8 @@
'<table border="0"><tr><td><b>'.&mt('Domain:').'</b></td><td>'.
&Apache::loncommon::select_dom_form($codedom,'showdom','',1).
' <input type="submit" name="godom" value="'.&mt('Change').'" /></td></tr></table></form>'.
- '<form name="coursecats" method="post" action="/adm/coursecatalog">'.
+ '<form name="coursecats" method="post" action="/adm/coursecatalog"'.
+ ' onsubmit="check_selected()">'.
'<table border="0"><tr>'.$catlinks.'</tr></table></form>');
return;
}
@@ -404,34 +415,48 @@
my $currcat_str = '<input type="hidden" name="catalog_maxdepth" value="'.$deeper.'" /><input type="hidden" name="showdom" value="'.$dom.'" />';
my $catlinks = '<td valign="top"><b>'.&mt('Catalog:').'</b></td><td><table><tr>';
my $has_subcats;
+ my $selitem;
for (my $i=0; $i<$deeper; $i++) {
$currcat_str .= '<input type="hidden" name="currcat_'.$i.'" value="'.$env{'form.currcat_'.$i}.'" />';
my ($cattitle,$shallower);
if ($i == 0) {
- $cattitle = &mt('Main Categories');
+ if (ref($cats[0]) eq 'ARRAY') {
+ if (@{$cats[0]} > 1) {
+ $cattitle = &mt('Main Categories');
+ }
+ }
} else {
$shallower = $i-1;
my ($cat,$container,$depth) = map { &unescape($_); } split(/:/,$env{'form.currcat_'.$shallower});
$cattitle = $cat;
}
- $catlinks .= '<td valign="top"><a href="javascript:setCatDepth('."'$shallower'".')">'.$cattitle.'</a>'.$crumbsymbol.'</td>';
+ if ($cattitle ne '') {
+ $catlinks .= '<td valign="top"><a href="javascript:setCatDepth('."'$shallower'".')">'.$cattitle.'</a>'.$crumbsymbol.'</td>';
+ }
}
if ($deeper == 0) {
- $catlinks .= '<td>'.&mt('Main Categories').': ';
+ $catlinks .= '<td>';
if (ref($cats[0]) eq 'ARRAY') {
- if ((@{$cats[0]} == 1) && ($cats[0][0] eq 'instcode')) {
- $catlinks .= &mt('Official courses (with institutional codes)').
- '<input type="hidden" name="currcat_0" value="instcode::0" />';
- $env{'form.currcat_0'} = 'instcode::0';
+ if ((@{$cats[0]} == 1) && (@cats == 1)) {
+ if ($cats[0][0] eq 'instcode') {
+ $catlinks .= &mt('Official courses (with institutional codes)').
+ '<input type="hidden" name="currcat_0" value="instcode::0" />';
+ $env{'form.currcat_0'} = 'instcode::0';
+ } else {
+ my $name = $cats[0][0];
+ my $item = &escape($name).'::0';
+ $catlinks .= $name.
+ '<input type="hidden" name="currcat_0" value="'.$item.'" />';
+ $env{'form.currcat_0'} = $item;
+ }
} else {
$has_subcats = 1;
- $catlinks .= '<select name="currcat_0">'."\n";
+ my $buttontext = &mt('Show subcategories');
+ $selitem = 'currcat_0';
+ $catlinks .= '<select name="'.$selitem.'">'."\n";
if (@{$cats[0]} > 1) {
- my $selstr;
- if ($env{'form.currcat_0'} eq '') {
- $selstr = ' selected="selected" ';
- }
- $catlinks .= '<option value="" selected="selected">'.&mt('Select').'</option>'."\n";
+ $catlinks .= '<option value="" selected="selected">'.&mt('Select').'</option>'."\n";
+ $buttontext = &mt('Pick main category');
}
for (my $i=0; $i<@{$cats[0]}; $i++) {
my $name = $cats[0][$i];
@@ -445,7 +470,8 @@
$catlinks .= '</option>'."\n";
}
$catlinks .= '</select>'."\n".
- ' <input type="submit" name="gocats" value="'.&mt('Change').'" />';
+ ' <input type="submit" name="gocats" value="'.
+ $buttontext.'" />';
}
} else {
$catlinks .= &mt('Official courses (with institutional codes)').
@@ -465,24 +491,31 @@
if ($cat eq 'instcode') {
$currcat = &mt('Official courses (with institutional codes)');
}
- $catlinks .= '<td>'.$currcat;
+ $catlinks .= '<td><b>'.$currcat.'</b>';
if (ref($cats[$deeper]{$cat}) eq 'ARRAY') {
$has_subcats = 1;
- my $selstr;
- $catlinks .= ': <select name="currcat_'.$deeper.'">'.
- '<option value="" selected="selected">'.
- &mt('Select').'</option>';
+ my $buttontext = &mt('Show subcategories');
+ $selitem = 'currcat_'.$deeper;
+ $catlinks .= ': <select name="'.$selitem.'">';
+ if (@{$cats[$deeper]{$cat}} > 1) {
+ $catlinks .= '<option value="" selected="selected">'.
+ &mt('Select').'</option>';
+ $buttontext = &mt('Pick subcategory');
+ }
for (my $k=0; $k<@{$cats[$deeper]{$cat}}; $k++) {
my $name = $cats[$deeper]{$cat}[$k];
my $item = &escape($name).':'.&escape($cat).':'.$deeper;
$catlinks .= '<option value="'.$item.'">'.$name.'</option>'."\n";
}
$catlinks .= '</select>'."\n".
- ' <input type="submit" name="gocats" value="'.&mt('Change').'" />';
+ ' <input type="submit" name="gocats" value="'.
+ $buttontext.'" />';
+ } elsif ($cat ne 'instcode') {
+ $catlinks .= ' '.&mt('(No subcategories)');
}
}
$catlinks .= $currcat_str.'</td></tr></table></td>';
- return ($catlinks,$has_subcats);
+ return ($catlinks,$has_subcats,$selitem);
}
sub get_depth_values {