--- loncom/interface/lonsyllabus.pm	2008/12/16 20:00:11	1.73
+++ loncom/interface/lonsyllabus.pm	2009/03/27 15:46:38	1.84
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Syllabus
 #
-# $Id: lonsyllabus.pm,v 1.73 2008/12/16 20:00:11 ehlerst Exp $
+# $Id: lonsyllabus.pm,v 1.84 2009/03/27 15:46:38 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -161,64 +161,8 @@ ENDSCRIPT
               ({href=>$r->uri,
                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').'}\\\\');
-    }
-# -------------------------------------------------------------- Announcements?
-    my $day = &Apache::lonannounce::showday(time,2,
-			 &Apache::lonannounce::readcalendar($cdom.'_'.$cnum));
-    if ($target ne 'tex') {
-	$r->print($day. &Apache::lonrss::advertisefeeds($cnum,$cdom,$forceedit));
-    } else {
-	$r->print(&Apache::lonxml::xmlparse($r,'tex',$day));
-    }
-
-# -------------------------------------------------------- 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}\\\\');
+        }	
+	
     }
 # ---------------------------------------------------------- Load syllabus info
     my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum);
@@ -238,23 +182,7 @@ ENDSCRIPT
 	      $forcestudent='student';
 	  }
           if ($forcestudent or $target eq 'tex') { $allowed=0; }
-       }
-       if ($allowed) {
-          $r->print('<p><a href="'.$r->uri.'?forcestudent=1"><font size="+1">'.
-&mt('Show Public View').'</font></a>'.
-          &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').
-          '</p><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>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>');
-      } elsif ($privileged) {
-	  if ($target ne 'tex') {
-	      $r->print('<p><a href="'.$r->uri.'?forceedit=1"><font size="+1">'.
-			&mt('Edit').'</font></a>'); 
-	  }
-      }
+       }    
        if (($allowed) && ($env{'form.storesyl'})) {
 	   foreach my $syl_field (keys(%syllabusfields)) {
                my $field=$env{'form.'.$syl_field};
@@ -271,7 +199,7 @@ ENDSCRIPT
 # get rid of leading and trailing spaces
                       $url=~s/^\s+//;
                       $url=~s/\s+$//;
-                      if ($url=~m|^http://([^/]+)/(.+)$|) {
+                      if ($url=~m|^https?\://([^/]+)/(.+)$|) {
 			  my $host = $1;
                           my $remainder=$2;
 # remove the hostname from internal URLs
@@ -284,7 +212,7 @@ ENDSCRIPT
 		          }
 		      }
 # norm internal URLs
-                      unless ($url=~/^http\:/) {
+                      unless ($url=~/^https?\:/) {
 		          $url=&Apache::lonnet::clutter($url);
                       }
 # re-assemble field
@@ -301,20 +229,91 @@ ENDSCRIPT
            &Apache::lonnet::put('syllabus',\%syllabus,$cdom,$cnum);
        }
     }
-# ---------------------------------------------------------------- Get syllabus
-    if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
-       my $lastmod=$syllabus{'uploaded.lastmodified'};
+#-Pritn 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') {
+                     $syllabus{'uploaded.domain'});      
+ 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').'\\\\ '.
@@ -322,36 +321,61 @@ ENDSCRIPT
 		          :'')
 		     .'\\\\');
        }
+#---------------------Print Extern URL Course Info
+if( ($allowed) && ($target ne 'tex') ) {
+	my $protocol = $Apache::lonnet::protocol{$homeserver};
+  	$protocol = 'http' if ($protocol ne 'https');
+	$r->print('<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>');
+}
+# -------------------------------------------------------------- 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=();
-	&Apache::lontemplate::start_columnSection($r);
-	&Apache::lontemplate::start_ContentBox($r, $allowed);
+	
 	foreach my $field (sort(keys(%syllabusfields))) {
 	   if (($syllabus{$field}=~/\w/) || ($allowed)) {
 	       my $message=$syllabus{$field};
 	       if ($field eq 'lll_includeurl') { # this is the "included" field
-		   my $urls=$message;
-		   $message='';
-		   foreach my $filelink (split(/\n/,$urls)) {
+		   my $urls=$message;		
+		   $message='';		  
+		   foreach my $filelink (split(/\n/,$urls)) {			
 		       my $output='';
-# 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
+			# 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
 			   $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}.
@@ -361,14 +385,16 @@ ENDSCRIPT
 		   } 
 	       } else {
 		   &Apache::lonfeedback::newline_to_br(\$message);
-		   $message =~s|(https*://[^\s]+)|<a href="$1"><tt>$1</tt></a>|g;
+		   $message =~s|(https?\://[^\s]+)|<a href="$1"><tt>$1</tt></a>|g;
 		   if ($allowed) {
 		       $message=&Apache::lonspeller::markeduptext($message);
 		   }
 		   $message=&Apache::lontexconvert::msgtexconverted($message);
 		   if ($target ne 'tex') {
-			&Apache::lontemplate::print_template($r, $syllabusfields{$field}, $message);
-
+			if($allowed){
+				$r->print('<p>');
+			}			
+			&Apache::lontemplate::print_template($r, $syllabusfields{$field}, $message,$allowed,'LC_ContentBoxSpecial');
 		   } else {
 		       $r->print('\\\\\textbf{'.$syllabusfields{$field}.'}\\\\'.
 				 &Apache::lonxml::xmlparse($r,'tex',$message).'\\\\');
@@ -376,27 +402,26 @@ ENDSCRIPT
 		   push(@htmlids,$field);
 	       }
 	       if ($allowed) {
-		&Apache::lontemplate::print_editbox_template($r, $syllabus{$field}, $field);
+			if($target ne 'tex'){
+				$r->print('</p>');
+				&Apache::lontemplate::print_editbox_template($r, $syllabus{$field}, $field);
+			}
+			
 	       }
 	   }
-       }
-        if ($allowed) {
-                $r->print('<p><a href="'.$r->uri.'?forcestudent=1"><font size="+1">'.&mt('Show Public View').'</font></a>'.
-                                 &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'</p>');
-        }
-	&Apache::lontemplate::end_ContentBox($r);
-	&Apache::lontemplate::end_columnSection($r);
+       }    
+	
        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 ');} 
 	$r->print(&mt('No syllabus information provided.'));
 	if ($target ne 'tex') {$r->print('</p>');}
     }
-    if ($target ne 'tex') {
+    if ($target ne 'tex') {	
         if ($env{'form.backto'} eq 'coursecatalog') {
             $r->print('<form name="backtocat" method="post" action="/adm/coursecatalog">'.
                       &Apache::lonhtmlcommon::echo_form_input(['backto','courseid']).