--- loncom/interface/lonsyllabus.pm 2006/03/06 23:02:22 1.46 +++ loncom/interface/lonsyllabus.pm 2013/05/05 02:21:20 1.119 @@ -1,7 +1,7 @@ # The LearningOnline Network # Syllabus # -# $Id: lonsyllabus.pm,v 1.46 2006/03/06 23:02:22 www Exp $ +# $Id: lonsyllabus.pm,v 1.119 2013/05/05 02:21:20 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -29,6 +29,7 @@ package Apache::lonsyllabus; use strict; +use Apache::lontemplate; use Apache::Constants qw(:common); use Apache::loncommon; use Apache::lonnet; @@ -38,6 +39,7 @@ use Apache::lonannounce; use Apache::lonlocal; use Apache::lonhtmlcommon; use Apache::lonspeller(); +use HTML::Entities(); sub handler { my $r = shift; @@ -50,41 +52,95 @@ sub handler { my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri); # ------------------------------------------------------------ Get query string &Apache::loncommon::get_unprocessed_cgi - ($ENV{'QUERY_STRING'},['forcestudent','register','forceedit','headermode']); + ($ENV{'QUERY_STRING'},['register','forceedit','todocs', + 'folderpath','title']); # ----------------------------------------------------- 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('
'.&mt('No syllabus available').''); + &Apache::loncommon::simple_error_page($r,'No syllabus available', + 'No syllabus available'); + return OK; + } elsif (!&Apache::lonnet::is_course($cdom,$cnum)) { + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + &Apache::loncommon::simple_error_page($r,'No syllabus available', + 'The course/community for which the syllabus was requested does not exist.'); 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(<'.$element.' | '); - } else { - $r->print(' '.&Apache::lonxml::xmlparse($r,'tex',$element).' & '); - } + 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).' & '); + } + my @coursepersonlist; foreach (split(/\,/,$coursepersonnel{$element})) { - my ($puname,$pudom)=split(/\:/,$_); - if ($target ne 'tex') { - $r->print(' '.&Apache::loncommon::aboutmewrapper( - &Apache::loncommon::plainname($puname, - $pudom),$puname,$pudom)); - } else { - $r->print(' '.&Apache::loncommon::plainname($puname, + 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')) { + push(@coursepersonlist,$courseperson); + } else { + push(@coursepersonlist,&Apache::loncommon::aboutmewrapper($courseperson, + $puname,$pudom)); + } + } else { + push(@coursepersonlist,&Apache::loncommon::plainname($puname, $pudom).' '); - } - } - if ($target ne 'tex') { - $r->print(' |
'. -&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::loncommon::help_open_topic('Syllabus_ExtLink').'
'. - ''. -&mt('Show Public View').''. - &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView'). - '
'); - } elsif ($privileged) { - if ($target ne 'tex') { - $r->print(''.
- &mt('Edit').'');
- }
- }
- if (($allowed) && ($env{'form.storesyl'})) {
- foreach (keys %syllabusfields) {
- my $field=$env{'form.'.$_};
- chomp($field);
- $field=~s/\s+$//s;
- $field=~s/^\s+//s;
- $field=~s/\
$//s;
- $field=&Apache::lonfeedback::clear_out_html($field,1);
- $syllabus{$_}=$field;
- if ($_ eq 'lll_includeurl') { # clean up included URLs
- my $field='';
- foreach (split(/\n/,$syllabus{$_})) {
- my $url=$_;
-# get rid of leading and trailing spaces
- $url=~s/^\s+//;
- $url=~s/\s+$//;
- if ($url=~/^http\:\/\/([^\/]+)\/(.+)$/) {
- my $remainder=$2;
-# remove the hostname from internal URLs
- foreach (keys %Apache::lonnet::hostname) {
- if ($1=~/$Apache::lonnet::hostname{$_}/i) {
- $url=$remainder;
- }
- }
- }
-# norm internal URLs
- unless ($url=~/^http\:/) {
- $url=&Apache::lonnet::clutter($url);
- }
-# re-assemble field
- if ($url) {
- $field.=$url."\n";
- }
- }
- $syllabus{$_}=$field;
- }
- }
- $syllabus{'uploaded.domain'}=$env{'user.domain'};
- $syllabus{'uploaded.name'}=$env{'user.name'};
- $syllabus{'uploaded.lastmodified'}=time;
- &Apache::lonnet::put('syllabus',\%syllabus,$cdom,$cnum);
- }
+# -------------------------------------------------------------- Announcements?
+ my $day = &Apache::lonannounce::showday(time,2,
+ &Apache::lonannounce::readcalendar($cdom.'_'.$cnum));
+ if ($target ne 'tex') {
+ if ($allowed) {
+ my $display = ' style="display:block;"';
+ if ($syllabus{'000_showrssfeeds'} eq 'no') {
+ $display = ' style="display:none;"';
+ }
+ &Apache::lontemplate::print_start_template($r,&mt('RSS Feeds and Blogs'),'LC_Box',
+ 'box_000_showrssfeeds',$display);
+ $r->print(&Apache::lonrss::advertisefeeds($cnum,$cdom,$forceedit));
+ my $editurl= &Apache::lonnet::absolute_url().'/adm/'.$cdom.'/'.$cnum.'/_rss.html';
+ $r->print( ''.&mt('New RSS Feed or Blog').'');
+ &Apache::lontemplate::print_end_template($r);
+ } else {
+ unless ($syllabus{'000_showrssfeeds'} eq 'no') {
+ if (&Apache::lonrss::advertisefeeds($cnum,$cdom) ne '') {
+ &Apache::lontemplate::print_start_template($r,&mt('RSS Feeds and Blogs'),'LC_Box');
+ $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)) {
- 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') {
- $r->print('
'.&mt('Last updated').': | '. - $lastmod.' | '.&mt('by').' '.$who. - ' |
'); - } else { - $r->print('\\\\ '.&mt('Last updated').': '.$lastmod.' '.&mt('by').'\\\\ '. - &Apache::loncommon::plainname($syllabus{'uploaded.name'}, - $syllabus{'uploaded.domain'}).'\\\\'); - } - if ($allowed) { - $r->print('
'. - &Apache::lonhtmlcommon::htmlareaselectactive(@htmlids)); - } - if ($target ne 'tex') {$r->print('');} else {$r->print('\\\\');} + if ($allowed) { + $r->print(''. + &Apache::lonhtmlcommon::htmlareaselectactive()); + } } else { - if ($target ne 'tex') {$r->print('');} else {$r->print('\par ');} - $r->print('No syllabus information provided.'); - if ($target ne 'tex') {$r->print('
');} + if ($target ne 'tex') {$r->print('');} else {$r->print('\par ');} + $r->print(&mt('No syllabus information provided.')); + if ($target ne 'tex') {$r->print('
');} + } + if ($target ne 'tex') { + $r->print('