--- loncom/interface/coursecatalog.pm 2006/08/29 21:03:11 1.1
+++ loncom/interface/coursecatalog.pm 2008/06/27 04:59:45 1.32
@@ -1,3 +1,7 @@
+# The LearningOnline Network with CAPA
+# Handler for displaying the course catalog interface
+#
+# $Id: coursecatalog.pm,v 1.32 2008/06/27 04:59:45 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -28,11 +32,11 @@ use strict;
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::lonsupportreq;
+use Apache::courseclassifier;
use Apache::lonacc;
-use lib '/home/httpd/lib/perl/';
use LONCAPA;
sub handler {
@@ -42,11 +46,97 @@ sub handler {
if ($r->header_only) {
return OK;
}
+ my $handle = &Apache::lonnet::check_for_valid_session($r);
+ my $lonidsdir=$r->dir_config('lonIDsDir');
+ if ($handle ne '') {
+ &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
+ }
&Apache::lonacc::get_posted_cgi($r);
&Apache::lonlocal::get_language_handle($r);
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['sortby']);
- my $codedom = $Apache::lonnet::perlvar{'lonDefDomain'};
- my $ccode = '';
+
+ my $codedom = &Apache::lonnet::default_login_domain();
+
+ if (($env{'user.domain'} ne '') && ($env{'user.domain'} ne 'public')) {
+ $codedom = $env{'user.domain'};
+ if ($env{'request.role.domain'} ne '') {
+ $codedom = $env{'request.role.domain'};
+ }
+ }
+ my $formname = 'coursecatalog';
+ if ($env{'form.showdom'} ne '') {
+ if (&Apache::lonnet::domain($env{'form.showdom'}) ne '') {
+ $codedom = $env{'form.showdom'};
+ }
+ }
+ my $domdesc = &Apache::lonnet::domain($codedom,'description');
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ if ($env{'form.coursenum'} ne '' && &user_is_known()) {
+ &course_details($r,$codedom,$formname,$domdesc);
+ } else {
+ my $catlinks = &category_breadcrumbs($codedom);
+ my $catjs = <<"ENDSCRIPT";
+
+function setCatDepth(depth) {
+ document.coursecats.catalog_maxdepth.value = depth;
+ document.coursecats.submit();
+ return;
+}
+
+ENDSCRIPT
+ my $numtitles;
+ if ($env{'form.currcat_0'} eq 'instcode::0') {
+ $numtitles = &instcode_course_selector($r,$codedom,$formname,$domdesc,
+ $catlinks,$catjs);
+ if ($env{'form.state'} eq 'listing') {
+ $r->print(&print_course_listing($codedom,$numtitles));
+ }
+ } else {
+ my (%add_entries);
+ $catjs = '';
+ &cat_header($r,$codedom,$catjs,\%add_entries,$catlinks);
+ if ($env{'form.currcat_0'} ne '') {
+ $r->print(&print_course_listing($codedom));
+ }
+ }
+ }
+ $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);
+ if ($env{'form.numtitles'} > 0) {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/coursecatalog",
+ text=>"Select courses"});
+ }
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"javascript:document.$formname.submit()",
+ text=>"Course listing"},
+ {text=>"Course details"});
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Details'));
+ $r->print('
'.&mt('Detailed course information:').'
'.
+ '