[LON-CAPA-cvs] cvs: loncom /interface coursecatalog.pm

raeburn lon-capa-cvs-allow@mail.lon-capa.org
Tue, 15 Jul 2008 19:43:18 -0000


raeburn		Tue Jul 15 15:43:18 2008 EDT

  Modified files:              
    /loncom/interface	coursecatalog.pm 
  Log:
  Provide syllabus page with means to construct breadcrumbs to facilitate return to Catalog after viewing syllabus.
  - new subroutine: &syllabus_javascript() includes javascrript to dynamically set form action to URL for syllabus page and to submit form (includes catalog search parameters as hidden input).
  - Replace call to &Apache::loncommon::syllabuswrapper() for syllabus link with link including call to javascript:ToSyllabus(cdom,cnum).
  
  
Index: loncom/interface/coursecatalog.pm
diff -u loncom/interface/coursecatalog.pm:1.39 loncom/interface/coursecatalog.pm:1.40
--- loncom/interface/coursecatalog.pm:1.39	Mon Jul 14 06:24:27 2008
+++ loncom/interface/coursecatalog.pm	Tue Jul 15 15:43:15 2008
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler for displaying the course catalog interface
 #
-# $Id: coursecatalog.pm,v 1.39 2008/07/14 10:24:27 raeburn Exp $
+# $Id: coursecatalog.pm,v 1.40 2008/07/15 19:43:15 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -106,12 +106,14 @@
     document.$formname.sortby.value = caller;
     document.$formname.submit();
 }
+
 function setCourseId(caller) {
     document.$formname.coursenum.value = caller;
     document.$formname.submit();
 }
 
 ENDSCRIPT
+        $catjs .= &syllabus_javascript(); 
         my $numtitles;
         if ($env{'form.currcat_0'} eq 'instcode::0') {
             $numtitles = &instcode_course_selector($r,$codedom,$formname,$domdesc,
@@ -155,8 +157,10 @@
     my $output;
     my %add_entries = (topmargin    => "0",
                        marginheight => "0",);
+    my $js = '<script type="text/javascript">'."\n".
+             &syllabus_javascript().'</script>'."\n";
     my $start_page =
-        &Apache::loncommon::start_page('Course Catalog','',
+        &Apache::loncommon::start_page('Course Catalog',$js,
                                            {
                                              'add_entries' => \%add_entries,
                                              'no_inline_link'   => 1,});
@@ -172,16 +176,33 @@
              {text=>"Course details"});
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Details'));
     $r->print('<br />'.&mt('Detailed course information:').'<br /><br />'.
-              '<form name="'.$formname.'" method="post" action="/adm/coursecatalog">'.
               &print_course_listing($codedom,undef,$trails,$allitems).
               '<br /><br />');
-    $r->print('<a href = "javascript:document.coursecatalog.submit()">'.
+    $r->print('<form name="'.$formname.'" method="post" action="/adm/coursecatalog">'.
+              '<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>');
+              &Apache::lonhtmlcommon::echo_form_input(['coursenum','catalogfilter','showdetails']).'</form>');
+    return;
+}
+
+sub syllabus_javascript {
+    return <<"END";
+
+function ToSyllabus(cdom,cnum) {
+    if (cdom == '' || cdom == null) {
+        return;
+    }
+    if (cnum == '' || cnum == null) {
+        return;
+    }
+    document.syllabuslaunch.action = "/public/"+cdom+"/"+cnum+"/syllabus";
+    document.syllabuslaunch.submit();
+}
+
+END
 }
 
+
 sub instcode_course_selector {
     my ($r,$codedom,$formname,$domdesc,$catlinks,$catjs) = @_;
     my %coursecodes = ();
@@ -734,9 +755,9 @@
     my %domconfig =
         &Apache::lonnet::get_dom('configuration',['usercreation'],$domain);
     $output .= &construct_data_table($knownuser,\%courses,$details,undef,$now,\%domconfig,$trails,$allitems);
-    if ($env{'form.coursenum'} ne '') {
-        $output .= &Apache::lonhtmlcommon::echo_form_input(['coursenum','state','catalogfilter','sortby','showdetails']);
-    }
+    $output .= "\n".'<form name="syllabuslaunch" method="post" action="">'.
+               '<input type="hidden" name="backto" value="coursecatalog" />'.
+               &Apache::lonhtmlcommon::echo_form_input(['catalogfilter']).'</form>';
     return $output;
 }
 
@@ -1039,7 +1060,7 @@
                '<td>'.$xlist_items.'</td>'.
                '<td>'.$title.'&nbsp;<font size="-2">';
     if ($showsyllabus) {
-        $output .= &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$cnum,$cdom);
+        $output .= '<a href="javascript:ToSyllabus('."'$cdom','$cnum'".')">'.&mt('Syllabus').'</a>';
     } else {
         $output .= '&nbsp;';
     }