--- loncom/interface/lonsyllabus.pm	2009/02/19 18:55:53	1.78
+++ loncom/interface/lonsyllabus.pm	2009/04/15 10:49:30	1.86
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Syllabus
 #
-# $Id: lonsyllabus.pm,v 1.78 2009/02/19 18:55:53 neumanie Exp $
+# $Id: lonsyllabus.pm,v 1.86 2009/04/15 10:49:30 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -69,20 +69,20 @@ sub handler {
 
     if ($target eq 'tex') {
 	$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
-    } 
+    }
 # -------------------------------------------------- Let's see who handles this
     my $externalsyllabus=$courseenv{'externalsyllabus'};
 
     if ($externalsyllabus=~/\w/) {
-	
+
        if ($env{'form.wrapperdisplay'} eq 'menu') {
 	   $r->print(&Apache::lonwrapper::simple_menu());
-       } else {	    
+       } else {
 	   $r->print(&Apache::lonwrapper::wrapper("/public/$cdom/$cnum/syllabus?wrapperdisplay=menu",
 						   $externalsyllabus));
        }
        return OK;
-     } 
+     }
 
 # ------------------------------ The buck stops here: internal syllabus display
 # --------------------------------------------------------- The syllabus fields
@@ -107,8 +107,8 @@ sub handler {
     if ($env{'form.forcestudent'}) { $forcestudent='student'; };
     my $forceedit='';
     if ($env{'form.forceedit'}) { $forceedit='edit'; }
-       
-# ----------------------------------------------------------------- Make header 
+
+# ----------------------------------------------------------------- Make header
     if ($target ne 'tex') {
 	my $rss_link = &Apache::lonrss::rss_link($cnum,$cdom);
         my $js;
@@ -139,7 +139,7 @@ function getIndexByName(item) {
 
 ENDSCRIPT
         }
-	my $start_page = 
+	my $start_page =
 	    &Apache::loncommon::start_page("Syllabus", $rss_link.$js,
 					   {'function'       => $forcestudent,
 					    'domain'         => $cdom,
@@ -162,62 +162,7 @@ ENDSCRIPT
                text=>"Course syllabus"});
             $r->print(&Apache::lonhtmlcommon::breadcrumbs());
         }
-        $r->print('<h1>'.$courseenv{'description'}.'</h1><h3>'.
-		  &Apache::lonnet::domain($cdom,'description').'</h3>');
-    } else {
-	$r->print('\noindent{\large\textbf{'.$courseenv{'description'}.'}}\\\\\\\\\textbf{'.
-		  &Apache::lonnet::domain($cdom,'description').'}\\\\');
-    }
-# -------------------------------------------------------- Get course personnel
-    my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);
-    if ($target ne 'tex') {
-	$r->print(&Apache::lonhtmlcommon::start_pick_box());
-    } else {
-	$r->print('\begin{tabular}{|p{0.45\textwidth}|p{0.45\textwidth}|}\hline');
-    }
-    my @personnel=sort(keys(%coursepersonnel));
-    my $lastpers=$personnel[$#personnel];
-    foreach my $element (@personnel) {
-	if ($target ne 'tex') {
-	    $r->print(&Apache::lonhtmlcommon::row_title($element));
-	} else {
-	    $r->print(' '.&Apache::lonxml::xmlparse($r,'tex',$element).' & '); 
-	}
-        foreach (split(/\,/,$coursepersonnel{$element})) {
-	    my ($puname,$pudom)=split(/\:/,$_);
-	    if ($target ne 'tex') {
-                my $courseperson = &Apache::loncommon::plainname($puname,$pudom);
-                if (($env{'user.name'} eq '') || ($env{'user.name'} eq 'public') ||
-                    ($env{'user.domain'} eq '') || ($env{'user.domain'} eq 'public')) {
-		    $r->print(' '.$courseperson);
-                } else {
-                    $r->print(' '.&Apache::loncommon::aboutmewrapper($courseperson,
-                              $puname,$pudom));
-                }
-	    } else {
-		$r->print(' '.&Apache::loncommon::plainname($puname,
-                              $pudom).' ');
-	    }
-	}
-	if ($target ne 'tex') {
-            my $lastclose=$element eq $lastpers?1:0;
-            $r->print(&Apache::lonhtmlcommon::row_closure($lastclose));
-	} else {
-	    $r->print('\\\\ \hline');
-	}
-    }
-    if ($target ne 'tex') {
-	$r->print(&Apache::lonhtmlcommon::end_pick_box());
-    } else {
-	$r->print('\end{tabular}\\\\');
-    }
-# -------------------------------------------------------------- Announcements?
-    my $day = &Apache::lonannounce::showday(time,2,
-			 &Apache::lonannounce::readcalendar($cdom.'_'.$cnum));
-    if ($target ne 'tex') {	
-	&Apache::lontemplate::print_template($r,'RSS Feeds and Blogs',&Apache::lonrss::advertisefeeds($cnum,$cdom,$forceedit),1,'LC_ContentBoxSpecial');
-    } else {
-	$r->print(&Apache::lonxml::xmlparse($r,'tex',$day));
+
     }
 # ---------------------------------------------------------- Load syllabus info
     my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum);
@@ -238,15 +183,6 @@ ENDSCRIPT
 	  }
           if ($forcestudent or $target eq 'tex') { $allowed=0; }
        }
-       if ($allowed) {
-          my $protocol = $Apache::lonnet::protocol{$homeserver};
-          $protocol = 'http' if ($protocol ne 'https');
-          $r->print('<p>'.&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')).'</p><p>'.&mt('This syllabus can be publicly viewed at')
-		    .' <tt>'.$protocol.'://'.
-		    &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>');
-      } 
        if (($allowed) && ($env{'form.storesyl'})) {
 	   foreach my $syl_field (keys(%syllabusfields)) {
                my $field=$env{'form.'.$syl_field};
@@ -293,20 +229,108 @@ ENDSCRIPT
            &Apache::lonnet::put('syllabus',\%syllabus,$cdom,$cnum);
        }
     }
-# ---------------------------------------------------------------- Get syllabus
-    if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
-       my $lastmod=$syllabus{'uploaded.lastmodified'};
+
+#---------------------Print External URL Syllabus Info
+if( ($allowed) && ($target ne 'tex') ) {
+	my $protocol = $Apache::lonnet::protocol{$homeserver};
+  	$protocol = 'http' if ($protocol ne 'https');
+        $r->print('<p class="LC_info">'
+                 .&mt('This syllabus can be publicly viewed at [_1]'
+                     ,'<tt>'.$protocol.'://'.&Apache::lonnet::hostname($homeserver).$r->uri.'</tt>')
+                 .'&nbsp;'.&Apache::loncommon::help_open_topic('Syllabus_ExtLink')
+                 .'</p>'
+                 .'<p class="LC_info">'
+                 .&mt('Instead of using this template you can specify an external URL as Syllabus in the [_1]Course Parameters[_2].'
+                     ,'<a href="/adm/parmset?action=crsenv">','</a>')
+                 .'</p>'
+        );
+}
+
+#-Print Help Text
+if ($target ne 'tex') {
+	if($allowed){
+		$r->print(&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')));
+	}
+}
+#--------Functions
+if ($target ne 'tex') {
+		if($allowed || $privileged){
+                $r->print(&Apache::lontemplate::start_functionslist());
+		if($allowed){
+                    $r->print(&Apache::lontemplate::item_functionslist(
+                        '<a href="'.$r->uri.'?forcestudent=1">'.&mt('Show Public View').'</a>'
+                       .&Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView')));
+		}elsif($privileged){
+                    $r->print(&Apache::lontemplate::item_functionslist(
+                        '<a href="'.$r->uri.'?forceedit=1">'.&mt('Edit').'</a>'));
+		}
+                $r->print(&Apache::lontemplate::end_functionslist());
+		}
+ }
+#----------------------------Print Headtitle
+if($target ne 'tex'){
+	$r->print('<h1>'.$courseenv{'description'}.'</h1>');
+	$r->print('<h3>'.  &Apache::lonnet::domain($cdom,'description').'</h3>');
+}else{
+	$r->print('\noindent{\large\textbf{'.$courseenv{'description'}.'}}\\\\\\\\\textbf{'.
+	&Apache::lonnet::domain($cdom,'description').'}\\\\');
+}
+# -------------------------------------------------------- Get course personnel
+    my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);
+    if ($target ne 'tex') {
+	$r->print(&Apache::lonhtmlcommon::start_pick_box());
+    } else {
+	$r->print('\begin{tabular}{|p{0.45\textwidth}|p{0.45\textwidth}|}\hline');
+    }
+    my @personnel=sort(keys(%coursepersonnel));
+    my $lastpers=$personnel[$#personnel];
+    foreach my $element (@personnel) {
+	if ($target ne 'tex') {
+	    $r->print(&Apache::lonhtmlcommon::row_title($element));
+	} else {
+	    $r->print(' '.&Apache::lonxml::xmlparse($r,'tex',$element).' & ');
+	}
+        foreach (split(/\,/,$coursepersonnel{$element})) {
+	    my ($puname,$pudom)=split(/\:/,$_);
+	    if ($target ne 'tex') {
+                my $courseperson = &Apache::loncommon::plainname($puname,$pudom);
+                if (($env{'user.name'} eq '') || ($env{'user.name'} eq 'public') ||
+                    ($env{'user.domain'} eq '') || ($env{'user.domain'} eq 'public')) {
+		    $r->print(' '.$courseperson);
+                } else {
+                    $r->print(' '.&Apache::loncommon::aboutmewrapper($courseperson,
+                              $puname,$pudom));
+                }
+	    } else {
+		$r->print(' '.&Apache::loncommon::plainname($puname,
+                              $pudom).' ');
+	    }
+	}
+	if ($target ne 'tex') {
+            my $lastclose=$element eq $lastpers?1:0;
+            $r->print(&Apache::lonhtmlcommon::row_closure($lastclose));
+	} else {
+	    $r->print('\\\\ \hline');
+	}
+    }
+    if ($target ne 'tex') {
+	$r->print(&Apache::lonhtmlcommon::end_pick_box());
+    } else {
+	$r->print('\end{tabular}\\\\');
+    }
+#----------Print last update
+ my $lastmod=$syllabus{'uploaded.lastmodified'};
        $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never'));
        my $who = &Apache::loncommon::aboutmewrapper(
                     &Apache::loncommon::plainname($syllabus{'uploaded.name'},
                      $syllabus{'uploaded.domain'}),$syllabus{'uploaded.name'},
                      $syllabus{'uploaded.domain'});
-       if ($target ne 'tex') {
+ if ($target ne 'tex') {
 	   $r->print('<table><tr><td>'.&mt('Last updated').':</td><td>'.
 		     $lastmod.'</td><td>'.
 		     ($who ? &mt('by').' '.$who
                            : '' ).
-		     '</td></tr></table><p>');
+		     '</td></tr></table>');
        } else {
 	   $r->print('\\\\ '.&mt('Last updated').': '.$lastmod.' '.
 		     ($who? &mt('by').'\\\\ '.
@@ -314,24 +338,32 @@ ENDSCRIPT
 		          :'')
 		     .'\\\\');
        }
-     
-	if ($target ne 'tex') {
-		&Apache::lontemplate::print_start_page_functions($r);
-		if($allowed){
-			&Apache::lontemplate::print_functions_content($r,'<a href="'.$r->uri.'?forcestudent=1">'.&mt('Show Public View').'</a>'.
-          											&Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView'));	      		
-		}elsif($privileged){
-			&Apache::lontemplate::print_functions_content($r,'<a href="'.$r->uri.'?forceedit=1">'.&mt('Edit').'</a>'); 
-		}
-		&Apache::lontemplate::print_end_page_functions($r);
-	  }	
-      
+# -------------------------------------------------------------- Announcements?
+    my $day = &Apache::lonannounce::showday(time,2,
+			 &Apache::lonannounce::readcalendar($cdom.'_'.$cnum));
+    if ($target ne 'tex') {
+	if($allowed){
+		&Apache::lontemplate::print_start_template($r,'RSS Feeds and Blogs','LC_ContentBoxSpecial');
+		$r->print(&Apache::lonrss::advertisefeeds($cnum,$cdom,$forceedit));
+		&Apache::lontemplate::print_end_template($r);
+	}
+	elsif(&Apache::lonrss::advertisefeeds($cnum,$cdom) ne ''){
+		&Apache::lontemplate::print_start_template($r,'RSS Feeds and Blogs','LC_ContentBoxSpecial');
+		$r->print(&Apache::lonrss::advertisefeeds($cnum,$cdom,$forceedit));
+		&Apache::lontemplate::print_end_template($r);
+	}
+
+    } else {
+	$r->print(&Apache::lonxml::xmlparse($r,'tex',$day));
+    }
+# ---------------------------------------------------------------- Get syllabus
+    if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
        if ($allowed) {
 	   $r->print('<form method="post">'.
 		     '<input type="hidden" name="forceedit" value="edit" />');
        }
        my @htmlids=();
-	
+
 	foreach my $field (sort(keys(%syllabusfields))) {
 	   if (($syllabus{$field}=~/\w/) || ($allowed)) {
 	       my $message=$syllabus{$field};
@@ -340,28 +372,28 @@ ENDSCRIPT
 		   $message='';
 		   foreach my $filelink (split(/\n/,$urls)) {
 		       my $output='';
-# embed style?
+			# embed style?
 		       my ($curfext)=($filelink=~/\.([^\.]+)$/);
 		       my $embstyle=&Apache::loncommon::fileembstyle($curfext);
-		       if (($embstyle eq 'ssi') || ($curfext=~/\/$/)) {
-# make ssi call and remove everything but the body contents
+		       if (($embstyle eq 'ssi') || ($curfext=~/\/$/)) {# make ssi call and remove everything but the body contents
 			   $output=&Apache::lonnet::ssi_body($filelink);
-		       } elsif ($embstyle eq 'img') {
-# embed as an image
+		       } elsif ($embstyle eq 'img') {# embed as an image
 			   $output='<img src="'.$filelink.'" />';
 		       }
-		       if ($target ne 'tex') {
-			   $message.='<p>'.$output.'</p>';
-		       } else {
-			   $message.=' '.&Apache::lonxml::xmlparse($r,'tex','<p>'.$output.'</p>').' ';
-		       }      
+		       if($output ne ''){
+		       		if ($target ne 'tex') {
+			  	 	$message.='<p>'.$output.'</p>';
+		       		} else {
+			   		$message.=' '.&Apache::lonxml::xmlparse($r,'tex','<p>'.$output.'</p>').' ';
+		       		}
+			}
 		   }
 		   if ($allowed) {
 		       $r->print('<h3>'.$syllabusfields{$field}.
 			 &Apache::loncommon::help_open_topic('Syllabus_URLs').'</h3>');
 		   } else {
 		       $r->print($message);
-		   } 
+		   }
 	       } else {
 		   &Apache::lonfeedback::newline_to_br(\$message);
 		   $message =~s|(https?\://[^\s]+)|<a href="$1"><tt>$1</tt></a>|g;
@@ -372,7 +404,7 @@ ENDSCRIPT
 		   if ($target ne 'tex') {
 			if($allowed){
 				$r->print('<p>');
-			}			
+			}
 			&Apache::lontemplate::print_template($r, $syllabusfields{$field}, $message,$allowed,'LC_ContentBoxSpecial');
 		   } else {
 		       $r->print('\\\\\textbf{'.$syllabusfields{$field}.'}\\\\'.
@@ -383,19 +415,20 @@ ENDSCRIPT
 	       if ($allowed) {
 			if($target ne 'tex'){
 				$r->print('</p>');
+				&Apache::lontemplate::print_editbox_template($r, $syllabus{$field}, $field);
 			}
-			&Apache::lontemplate::print_editbox_template($r, $syllabus{$field}, $field);
+
 	       }
 	   }
-       }    
-	
+       }
+
        if ($allowed) {
 	   $r->print('</form>'.
 		     &Apache::lonhtmlcommon::htmlareaselectactive(@htmlids));
        }
-       if ($target ne 'tex') {$r->print('</p>');} else {$r->print('\\\\');}
+      # if ($target ne 'tex') {$r->print('</p>');} else {$r->print('\\\\');}
     } else {
-	if ($target ne 'tex') {$r->print('<p>');} else {$r->print('\par ');} 
+	if ($target ne 'tex') {$r->print('<p>');} else {$r->print('\par ');}
 	$r->print(&mt('No syllabus information provided.'));
 	if ($target ne 'tex') {$r->print('</p>');}
     }
@@ -410,7 +443,7 @@ ENDSCRIPT
 	$r->print('\end{document}');
     }
     return OK;
-} 
+}
 
 1;
 __END__