--- loncom/interface/lonsyllabus.pm 2006/03/21 21:50:49 1.50 +++ loncom/interface/lonsyllabus.pm 2007/03/08 01:58:45 1.58 @@ -1,7 +1,7 @@ # The LearningOnline Network # Syllabus # -# $Id: lonsyllabus.pm,v 1.50 2006/03/21 21:50:49 albertel Exp $ +# $Id: lonsyllabus.pm,v 1.58 2007/03/08 01:58:45 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -38,6 +38,7 @@ use Apache::lonannounce; use Apache::lonlocal; use Apache::lonhtmlcommon; use Apache::lonspeller(); +use HTML::Entities(); sub handler { my $r = shift; @@ -71,12 +72,6 @@ sub handler { if ($target eq 'tex') { $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'})); } -# ----------------------------------------------------- Force menu registration - my $addentries=''; - if ($env{'form.register'}) { - $addentries=' onLoad="'.&Apache::lonmenu::loadevents(). - '" onUnload="'.&Apache::lonmenu::unloadevents().'"'; - } # -------------------------------------------------- Let's see who handles this my $externalsyllabus=$courseenv{'externalsyllabus'}; @@ -120,22 +115,21 @@ sub handler { my $start_page = &Apache::loncommon::start_page("Syllabus", $rss_link, {'function' => $forcestudent, - 'add_entries' => $addentries, 'domain' => $cdom, 'force_register' => $env{'form.register'},}); $r->print($start_page.'
'. &Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes','Help with filling in text boxes').'
'.&mt('This syllabus can be publicly viewed at') .' http://'. - $Apache::lonnet::hostname{$homeserver}.$r->uri.''. + &Apache::lonnet::hostname($homeserver).$r->uri.''. &Apache::loncommon::help_open_topic('Syllabus_ExtLink').'
'. ''.&mt('You can specify an external URL as Syllabus in the [_1].',''.&mt('Course Parameters').'').'
'. ''.
@@ -210,26 +206,29 @@ sub handler {
}
}
if (($allowed) && ($env{'form.storesyl'})) {
- foreach (keys %syllabusfields) {
- my $field=$env{'form.'.$_};
+ foreach my $syl_field (keys(%syllabusfields)) {
+ my $field=$env{'form.'.$syl_field};
chomp($field);
$field=~s/\s+$//s;
$field=~s/^\s+//s;
$field=~s/\ '.$output.' '.$output.' '.&mt('Show Public View').''.
- &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').' '.$output.' '.$output.' '.&mt('Show Public View').''.
+ &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'
$//s;
$field=&Apache::lonfeedback::clear_out_html($field,1);
- $syllabus{$_}=$field;
- if ($_ eq 'lll_includeurl') { # clean up included URLs
+ $syllabus{$syl_field}=$field;
+ if ($syl_field eq 'lll_includeurl') { # clean up included URLs
my $field='';
- foreach (split(/\n/,$syllabus{$_})) {
- my $url=$_;
+ foreach my $value (split(/\n/,$syllabus{$syl_field})) {
+ my $url=$value;
# get rid of leading and trailing spaces
$url=~s/^\s+//;
$url=~s/\s+$//;
- if ($url=~/^http\:\/\/([^\/]+)\/(.+)$/) {
+ if ($url=~m|^http://([^/]+)/(.+)$|) {
+ my $host = $1;
my $remainder=$2;
# remove the hostname from internal URLs
- foreach (keys %Apache::lonnet::hostname) {
- if ($1=~/$Apache::lonnet::hostname{$_}/i) {
+ my $hostname = &Apache::lonnet::hostname($host);
+ my %all_hostnames = &Apache::lonnet::all_hostnames();
+ foreach my $possible_host (keys(%all_hostnames)) {
+ if ($possible_host =~ /\Q$hostname\E/i) {
$url=$remainder;
}
}
@@ -243,7 +242,7 @@ sub handler {
$field.=$url."\n";
}
}
- $syllabus{$_}=$field;
+ $syllabus{$syl_field}=$field;
}
}
$syllabus{'uploaded.domain'}=$env{'user.domain'};
@@ -274,62 +273,60 @@ sub handler {
'');
}
my @htmlids=();
- foreach (sort keys %syllabusfields) {
- if (($syllabus{$_}=~/\w/) || ($allowed)) {
- my $message=$syllabus{$_};
- if ($_ eq 'lll_includeurl') { # this is the "included" field
- my $urls=$message;
- $message='';
- foreach my $filelink (split(/\n/,$urls)) {
- my $output='';
+ 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 $output='';
# embed style?
- my ($curfext)=($filelink=~/\.([^\.]+)$/);
- my $embstyle=&Apache::loncommon::fileembstyle($curfext);
- if (($embstyle eq 'ssi') || ($curfext=~/\/$/)) {
+ 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') {
+ $output=&Apache::lonnet::ssi_body($filelink);
+ } elsif ($embstyle eq 'img') {
# embed as an image
- $output='';
- }
- if ($target ne 'tex') {
- $message.='
'.$syllabusfields{$_}.
- &Apache::loncommon::help_open_topic('Syllabus_URLs').'
'.
- ''.$syllabusfields{$_}.'
'.
- $message.'
');
- } else {
- $r->print('\\\\\textbf{'.$syllabusfields{$_}.'}\\\\'.
- &Apache::lonxml::xmlparse($r,'tex',$message).'\\\\');
- }
- push @htmlids,$_;
- }
- if ($allowed) {
- $r->print(
- '
');
- }
- }
+ $output='';
+ }
+ if ($target ne 'tex') {
+ $message.='
'.$syllabusfields{$field}.
+ &Apache::loncommon::help_open_topic('Syllabus_URLs').'
'.
+ ''.$syllabusfields{$field}.'
'.
+ $message.'
');
+ } else {
+ $r->print('\\\\\textbf{'.$syllabusfields{$field}.'}\\\\'.
+ &Apache::lonxml::xmlparse($r,'tex',$message).'\\\\');
+ }
+ push(@htmlids,$field);
+ }
+ if ($allowed) {
+ $r->print('
');
+ }
+ }
}
if ($allowed) {
$r->print(''.