--- loncom/interface/lonsyllabus.pm	2005/06/06 02:29:46	1.41
+++ loncom/interface/lonsyllabus.pm	2006/03/07 21:36:20	1.47
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Syllabus
 #
-# $Id: lonsyllabus.pm,v 1.41 2005/06/06 02:29:46 albertel Exp $
+# $Id: lonsyllabus.pm,v 1.47 2006/03/07 21:36:20 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -45,25 +45,89 @@ sub handler {
     $r->send_http_header;
     return OK if $r->header_only;
 
-# ------------------------------------------------------------ Print the screen
     my $target=$env{'form.grade_target'};
+# --------------------------------------------------- Get course info from URL
+    my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);
+# ------------------------------------------------------------ Get query string
+    &Apache::loncommon::get_unprocessed_cgi
+                        ($ENV{'QUERY_STRING'},['forcestudent','register','forceedit','wrapperdisplay']);
+# ----------------------------------------------------- Is this even a course?
+    my $homeserver=&Apache::lonnet::homeserver($cnum,$cdom);
+    if ($homeserver eq 'no_host') {
+        &Apache::loncommon::content_type($r,'text/html');
+        $r->send_http_header;
+        $r->print('<html><body>'.&mt('No syllabus available').'</body></html>');
+        return OK;
+    }
+# ------------------------------------- There is such a course, get environment
+    my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);
+
+# ------------------------------------------------------------ Print the screen
+    my $feedurl='http://'.$ENV{'HTTP_HOST'}.'/public/'.$cdom.'/'.$cnum.'/Course_Announcements.rss';
     if ($target ne 'tex') {
 	my $html=&Apache::lonxml::xmlbegin();
 	$r->print(<<ENDDOCUMENT);
 $html
 <head>
 <title>The LearningOnline Network with CAPA</title>
+<link rel="alternate" type="application/rss+xml" title="Course Announcements" href="$feedurl" />
 ENDDOCUMENT
     } else {
 	$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
     } 
-    my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);
-# Is this even a course?
-    my $homeserver=&Apache::lonnet::homeserver($cnum,$cdom); 
-    if ($homeserver eq 'no_host') {
-	$r->print('</head><body>'.&mt('No syllabus available').'</body></html>');
-        return OK;
+# ----------------------------------------------------- Force menu registration
+    my $addentries='';
+    if ($env{'form.register'}) {
+       $addentries=' onLoad="'.&Apache::lonmenu::loadevents().
+           '" onUnload="'.&Apache::lonmenu::unloadevents().'"';
+       $r->print(&Apache::lonmenu::registerurl(1));
     }
+# -------------------------------------------------- Let's see who handles this
+    my $externalsyllabus=$courseenv{'externalsyllabus'};
+    if ($externalsyllabus=~/\w/) {
+       $r->print('</head>');
+       if ($env{'form.wrapperdisplay'} eq 'menu') {
+#
+# Producing the menu buttons
+#
+           $r->print('<body bgcolor="#FFFFFF">'.
+                &Apache::lonmenu::menubuttons(1,'web',1).'</body></html>');
+        } else {
+           if ($env{'browser.interface'} eq 'textual') {
+#
+# ssi-based rendering for text-based interface
+#
+               $r->print('<body bgcolor="#FFFFFF">'.
+                        &Apache::lonmenu::menubuttons(1).
+                        &Apache::lonnet::ssi_body($externalsyllabus).'</body></html>');
+           } elsif ($env{'environment.remote'} eq 'off') {
+#
+# This is inline remote
+# 
+               $r->print(<<ENDDOCUMENTINL);
+<frameset rows="180,*" border=0 $addentries>
+<frame src="/public/$cdom/$cnum/syllabus?wrapperdisplay=menu">
+<frame src="$externalsyllabus">
+</frameset>
+</html>
+ENDDOCUMENTINL
+          } else {
+#
+# frame-based rendering for graphical interface
+#
+               $r->print(<<ENDDOCUMENT);
+<frameset rows="1,*" border=0 $addentries>
+<frame src="/adm/rat/empty.html">
+<frame src="$externalsyllabus">
+</frameset>
+</html>
+ENDDOCUMENT
+           }
+        }
+        return OK;
+     } 
+
+# ------------------------------ The buck stops here: internal syllabus display
 # --------------------------------------------------------- The syllabus fields
     my %syllabusfields=&Apache::lonlocal::texthash(
        'aaa_instructorinfo' => 'Instructor Information',
@@ -81,25 +145,13 @@ ENDDOCUMENT
        'jjj_weblinks'       => 'Web Links',
        'kkk_textbook'       => 'Textbook',
        'lll_includeurl'     => 'URLs To Include in Syllabus');
-
-# ------------------------------------------------------------ Get query string
-    &Apache::loncommon::get_unprocessed_cgi
-                        ($ENV{'QUERY_STRING'},['forcestudent','register','forceedit']);
-# ----------------------------------------------------- Force menu registration
-    my $addentries='';
-    if ($env{'form.register'}) {
-       $addentries=' onLoad="'.&Apache::lonmenu::loadevents().
-	   '" onUnload="'.&Apache::lonmenu::unloadevents().'"';
-       $r->print(&Apache::lonmenu::registerurl(1));
-    }
 # --------------------------------------------------------------- Force Student
     my $forcestudent='';
     if ($env{'form.forcestudent'}) { $forcestudent='student'; };
     my $forceedit='';
     if ($env{'form.forceedit'}) { $forceedit='edit'; }
        
-# ------------------------------------- There is such a course, get environment
-    my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);
+# ----------------------------------------------------------------- Make header 
     if ($target ne 'tex') {
 	$r->print(&Apache::lonhtmlcommon::htmlareaheaders().
 		  '</head>'.&Apache::loncommon::bodytag
@@ -113,7 +165,8 @@ ENDDOCUMENT
 # -------------------------------------------------------------- Announcements?
     if ($target ne 'tex') {
 	$r->print(&Apache::lonannounce::showday(time,2,
-                         &Apache::lonannounce::readcalendar($cdom.'_'.$cnum)));
+		       &Apache::lonannounce::readcalendar($cdom.'_'.$cnum)).
+                       &Apache::lonrss::advertisefeeds($cnum,$cdom));
     } else {
 	$r->print(&Apache::lonxml::xmlparse($r,'tex',
 		       &Apache::lonannounce::showday(time,2,
@@ -177,6 +230,7 @@ ENDDOCUMENT
 		    .' <tt>http://'.
 		    $Apache::lonnet::hostname{$homeserver}.$r->uri.'</tt>'.
                &Apache::loncommon::help_open_topic('Syllabus_ExtLink').'</p>'.
+          '<p>'.&mt('You can specify an external URL as Syllabus in the [_1].','<a href="/adm/parmset?action=crsenv">'.&mt('Course Parameters').'</a>').'</p>'.
 	  '<p><a href="'.$r->uri.'?forcestudent=1"><font size="+1">'.
 &mt('Show Public View').'</font></a>'.
           &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').