version 1.28, 2006/10/02 16:47:57
|
version 1.30, 2006/12/04 21:51:31
|
Line 29
|
Line 29
|
package Apache::lonrss; |
package Apache::lonrss; |
|
|
use strict; |
use strict; |
use LONCAPA; |
use LONCAPA (:DEFAULT :match); |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::loncommon; |
use Apache::loncommon; |
use Apache::lonnet; |
use Apache::lonnet; |
Line 92 sub advertisefeeds {
|
Line 92 sub advertisefeeds {
|
if ($edit) { |
if ($edit) { |
$mode='adm'; |
$mode='adm'; |
} |
} |
|
my $server = &Apache::lonnet::absolute_url(); |
foreach my $feed (sort(keys(%feednames))) { |
foreach my $feed (sort(keys(%feednames))) { |
if (($feed!~/^error\:/) && ($feed!~/^feed\_display\_option\_/)) { |
if (($feed!~/^error\:/) && ($feed!~/^feed\_display\_option\_/)) { |
my $feedurl='http://'.$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'.$feed.'.rss'; |
my $feedurl= $server.'/public/'.$udom.'/'.$uname.'/'.$feed.'.rss'; |
my $htmlurl='http://'.$ENV{'HTTP_HOST'}.'/'.$mode.'/'.$udom.'/'.$uname.'/'.$feed.'_rss.html'; |
my $htmlurl= $server.'/'.$mode.'/'.$udom.'/'.$uname.'/'.$feed.'_rss.html'; |
if ($feednames{'feed_display_option_'.$feed} eq 'hidden') { |
if ($feednames{'feed_display_option_'.$feed} eq 'hidden') { |
if ($edit) { |
if ($edit) { |
$feeds.='<li><i>'.$feednames{$feed}.'</i><br />'.&mt('Hidden').': <a href="'.$htmlurl.'"><tt>'.$htmlurl.'</tt></a></li>'; |
$feeds.='<li><i>'.$feednames{$feed}.'</i><br />'.&mt('Hidden').': <a href="'.$htmlurl.'"><tt>'.$htmlurl.'</tt></a></li>'; |
Line 210 sub add_blog_entry_link {
|
Line 211 sub add_blog_entry_link {
|
|
|
} |
} |
|
|
|
sub blocking_blogdisplay { |
|
my ($uname,$udom,$html,$filterfeedname) = @_; |
|
my $user = &Apache::loncommon::plainname($uname,$udom); |
|
if ($html) { |
|
$user = &Apache::loncommon::aboutmewrapper($user,$uname,$udom); |
|
} else { |
|
$user = $user.' ('.$uname.':'.$udom.')'; |
|
} |
|
my %setters; |
|
my ($blocked,$output,$blockcause); |
|
my ($startblock,$endblock) = |
|
&Apache::loncommon::blockcheck(\%setters,'blogs'); |
|
if ($startblock && $endblock) { |
|
$blockcause = 'user'; |
|
} else { |
|
if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { |
|
($startblock,$endblock) = |
|
&Apache::loncommon::blockcheck(\%setters,'blogs', |
|
$uname,$udom); |
|
$blockcause = 'blogowner'; |
|
} |
|
} |
|
if ($startblock && $endblock) { |
|
$blocked = 1; |
|
my $showstart = &Apache::lonlocal::locallocaltime($startblock); |
|
my $showend = &Apache::lonlocal::locallocaltime($endblock); |
|
$output = &mt('Blogs belonging to [_1] are unavailable from [_2] to [_3].',$user,$showstart,$showend); |
|
if ($html) {$output.='<br />';} |
|
if ($blockcause eq 'user') { |
|
$output .= &mt('This is because you are a student in one or more courses in which communication is being blocked.'); |
|
if ($html) { |
|
$output .= '<br />'. |
|
&Apache::loncommon::build_block_table($startblock, |
|
$endblock,\%setters); |
|
} |
|
} else { |
|
$output .= &mt('This is because the blog owner is a student in one or more courses in which communication is being blocked.'); |
|
} |
|
if (!$html) { |
|
my $id = &get_new_feed_id(); |
|
$output = '<title/><item><title/><description>'.$output."</description><link/><guid isPermaLink='false'>".$id.$filterfeedname.'_'.$udom.'_'.$uname.'</guid></item>'; |
|
} |
|
} |
|
return ($blocked,$output); |
|
} |
|
|
sub handler { |
sub handler { |
my ($r) = @_; |
my ($r) = @_; |
|
|
Line 240 sub handler {
|
Line 287 sub handler {
|
my $filterfeedname=&filterfeedname($filename); |
my $filterfeedname=&filterfeedname($filename); |
my $feedname=&feedname($filename); |
my $feedname=&feedname($filename); |
my ($displayfeedname,$displayoption)=&displayfeedname($filename,$uname,$udom); |
my ($displayfeedname,$displayoption)=&displayfeedname($filename,$uname,$udom); |
|
my ($blocked,$blocktext); |
|
if ($uname !~ /^$match_courseid$/) { |
|
($blocked,$blocktext) = &blocking_blogdisplay($uname,$udom,$html,$filterfeedname); |
|
} |
if ($html) { |
if ($html) { |
my $title = $displayfeedname?$displayfeedname |
my $title = $displayfeedname?$displayfeedname |
:"Available RSS Feeds and Blogs"; |
:"Available RSS Feeds and Blogs"; |
Line 249 sub handler {
|
Line 300 sub handler {
|
$env{'form.register'}}). |
$env{'form.register'}}). |
&changed_js()); |
&changed_js()); |
} else { # render RSS |
} else { # render RSS |
|
my $server = &Apache::lonnet::absolute_url(); |
$r->print("<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1'>\n<channel>". |
$r->print("<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1'>\n<channel>". |
"\n<link>http://".$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'. |
"\n".'<link>'.$server.'/public/'.$udom.'/'.$uname.'/'. |
$filterfeedname.'_rss.html</link>'. |
$filterfeedname.'_rss.html</link>'. |
"\n<description>". |
"\n<description>". |
&mt('An RSS Feed provided by the LON-CAPA Learning Content Management System'). |
&mt('An RSS Feed provided by the LON-CAPA Learning Content Management System'). |
Line 260 sub handler {
|
Line 312 sub handler {
|
my $newid = &get_new_feed_id(); |
my $newid = &get_new_feed_id(); |
# Is this user for real? |
# Is this user for real? |
my $homeserver=&Apache::lonnet::homeserver($uname,$udom); |
my $homeserver=&Apache::lonnet::homeserver($uname,$udom); |
if ($html) { |
if ($html && !$blocked) { |
# Any new feeds or renaming of feeds? |
# Any new feeds or renaming of feeds? |
if ($edit) { |
if ($edit) { |
# Hide a feed? |
# Hide a feed? |
Line 289 sub handler {
|
Line 341 sub handler {
|
} |
} |
if ($homeserver eq 'no_host') { |
if ($homeserver eq 'no_host') { |
$r->print(($html?'<h3>':'<title>').&mt('No feed available').($html?'</h3>':'</title>')); |
$r->print(($html?'<h3>':'<title>').&mt('No feed available').($html?'</h3>':'</title>')); |
|
} elsif ($blocked) { |
|
$r->print($blocktext); |
|
$r->print(($html?&Apache::loncommon::end_page():'</channel></rss>'."\n")); |
} else { # is indeed a user |
} else { # is indeed a user |
# Course or user? |
# Course or user? |
my $name=''; |
my $name=''; |
if ($uname=~/^\d/) { |
if ($uname =~ /^$match_courseid$/) { |
my %cenv=&Apache::lonnet::dump('environment',$udom,$uname); |
my %cenv=&Apache::lonnet::dump('environment',$udom,$uname); |
$name=$cenv{'description'}; |
$name=$cenv{'description'}; |
} else { |
} else { |
Line 349 sub handler {
|
Line 404 sub handler {
|
} |
} |
} #done storing |
} #done storing |
|
|
|
# Render private items? |
|
my $viewpubliconly=1; |
$r->print("\n". |
$r->print("\n". |
($html?'<hr /><h3>':'<title>'). |
($html?'<hr /><h3>':'<title>'). |
&mt('LON-CAPA Feed "[_1]" for [_2]',$displayfeedname,$name). |
&mt('LON-CAPA Feed "[_1]" for [_2]',$displayfeedname,$name). |
Line 357 sub handler {
|
Line 414 sub handler {
|
&mt('Name of this Feed'). |
&mt('Name of this Feed'). |
': <input type="text" size="50" name="newblogname" value="'. |
': <input type="text" size="50" name="newblogname" value="'. |
$displayfeedname.'" />':'').'<ul>':'</title>')); |
$displayfeedname.'" />':'').'<ul>':'</title>')); |
# Render private items? |
|
my $viewpubliconly=1; |
|
if (($env{'user.name'} eq $uname) && ($env{'user.domain'} eq $udom)) { |
if (($env{'user.name'} eq $uname) && ($env{'user.domain'} eq $udom)) { |
$viewpubliconly=0; |
$viewpubliconly=0; |
} |
} |
# Get feed items |
# Get feed items |
my %newsfeed=&Apache::lonnet::dump($feedname,$udom,$uname); |
my %newsfeed=&Apache::lonnet::dump($feedname,$udom,$uname); |
foreach my $entry (sort(keys(%newsfeed)),$newid.'_status') { |
foreach my $entry (sort(keys(%newsfeed)),$newid.'_status') { |