version 1.18, 2006/05/10 15:52:11
|
version 1.25, 2006/06/03 21:05:04
|
Line 29
|
Line 29
|
package Apache::lonrss; |
package Apache::lonrss; |
|
|
use strict; |
use strict; |
|
use LONCAPA; |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::loncommon; |
use Apache::loncommon; |
use Apache::lonnet; |
use Apache::lonnet; |
Line 54 sub displayfeedname {
|
Line 55 sub displayfeedname {
|
my ($rawname,$uname,$udom)=@_; |
my ($rawname,$uname,$udom)=@_; |
my $filterfilename=&filterfeedname($rawname); |
my $filterfilename=&filterfeedname($rawname); |
# do we have a stored name? |
# do we have a stored name? |
my %stored=&Apache::lonnet::get('nohist_all_rss_feeds',[$filterfilename],$udom,$uname); |
my %stored=&Apache::lonnet::get('nohist_all_rss_feeds',[$filterfilename,'feed_display_option_'.$filterfilename],$udom,$uname); |
if ($stored{$filterfilename}) { return $stored{$filterfilename}; } |
if ($stored{$filterfilename}) { return ($stored{$filterfilename},$stored{'feed_display_option_'.$filterfilename}); } |
# no, construct a name |
# no, construct a name |
my $name=$filterfilename; |
my $name=$filterfilename; |
if ($name=~/^CourseBlog/) { |
if ($name=~/^CourseBlog/) { |
Line 66 sub displayfeedname {
|
Line 67 sub displayfeedname {
|
} else { |
} else { |
$name=~s/\_/ /g; |
$name=~s/\_/ /g; |
} |
} |
return $name; |
return ($name,$stored{'feed_display_option_'.$filterfilename}); |
} |
} |
|
|
sub renamefeed { |
sub namefeed { |
my ($rawname,$uname,$udom,$newname)=@_; |
my ($rawname,$uname,$udom,$newname)=@_; |
return &Apache::lonnet::put('nohist_all_rss_feeds', |
return &Apache::lonnet::put('nohist_all_rss_feeds', |
{ &filterfeedname($rawname) => $newname }, |
{ &filterfeedname($rawname) => $newname }, |
$udom,$uname); |
$udom,$uname); |
} |
} |
|
|
|
sub changefeeddisplay { |
|
my ($rawname,$uname,$udom,$newstatus)=@_; |
|
return &Apache::lonnet::put('nohist_all_rss_feeds', |
|
{ 'feed_display_option_'.&filterfeedname($rawname) => $newstatus }, |
|
$udom,$uname); |
|
} |
|
|
sub advertisefeeds { |
sub advertisefeeds { |
my ($uname,$udom,$edit)=@_; |
my ($uname,$udom,$edit)=@_; |
my $feeds=''; |
my $feeds=''; |
Line 85 sub advertisefeeds {
|
Line 93 sub advertisefeeds {
|
$mode='adm'; |
$mode='adm'; |
} |
} |
foreach my $feed (sort(keys(%feednames))) { |
foreach my $feed (sort(keys(%feednames))) { |
if ($feed!~/^error\:/) { |
if (($feed!~/^error\:/) && ($feed!~/^feed\_display\_option\_/)) { |
my $feedurl='http://'.$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'.$feed.'.rss'; |
my $feedurl='http://'.$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'.$feed.'.rss'; |
my $htmlurl='http://'.$ENV{'HTTP_HOST'}.'/'.$mode.'/'.$udom.'/'.$uname.'/'.$feed.'_rss.html'; |
my $htmlurl='http://'.$ENV{'HTTP_HOST'}.'/'.$mode.'/'.$udom.'/'.$uname.'/'.$feed.'_rss.html'; |
$feeds.='<li>'.$feednames{$feed}. |
if ($feednames{'feed_display_option_'.$feed} eq 'hidden') { |
'<br />'.($edit?&mt('Edit'):'HTML').': <a href="'.$htmlurl.'"><tt>'.$htmlurl.'</tt></a>'. |
if ($edit) { |
'<br />RSS: <a href="'.$feedurl.'"><tt>'.$feedurl.'</tt></a></li>'; |
$feeds.='<li><i>'.$feednames{$feed}.'</i><br />'.&mt('Hidden').': <a href="'.$htmlurl.'"><tt>'.$htmlurl.'</tt></a></li>'; |
|
} |
|
} else { |
|
$feeds.='<li><b>'.$feednames{$feed}. |
|
'</b><br />'.($edit?&mt('Edit'):'HTML').': <a href="'.$htmlurl.'"><tt>'.$htmlurl.'</tt></a>'. |
|
'<br />RSS: <a href="'.$feedurl.'"><tt>'.$feedurl.'</tt></a></li>'; |
|
} |
} |
} |
} |
} |
if ($feeds) { |
if ($feeds) { |
Line 125 sub editentry {
|
Line 139 sub editentry {
|
} |
} |
my $feedname=&feedname($filename); |
my $feedname=&feedname($filename); |
&Apache::lonnet::put('nohist_all_rss_feeds', |
&Apache::lonnet::put('nohist_all_rss_feeds', |
{ &filterfeedname($filename) => &displayfeedname($filename,$uname,$udom) }, |
{ &filterfeedname($filename) => |
|
(&displayfeedname($filename,$uname,$udom))[0] }, |
$udom,$uname); |
$udom,$uname); |
return &Apache::lonnet::put($feedname,{ |
return &Apache::lonnet::put($feedname,{ |
$id.'_title' => $title, |
$id.'_title' => $title, |
Line 167 sub determine_enclosure_types {
|
Line 182 sub determine_enclosure_types {
|
return &Apache::loncommon::filemimetype($ending); |
return &Apache::loncommon::filemimetype($ending); |
} |
} |
|
|
|
sub course_blog_link { |
|
my ($id,$title,$description,$url,$encurl,$enctype)=@_; |
|
if ($env{'request.course.id'}) { |
|
return &add_blog_entry_link($id, |
|
$env{'course.'.$env{'request.course.id'}.'.num'}, |
|
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
|
'Course_Announcements', |
|
$title,$description,$url,'public',$encurl,$enctype, |
|
&mt('Add to Course Announcements')); |
|
} else { |
|
return ''; |
|
} |
|
} |
|
|
|
sub add_blog_entry_link { |
|
my ($id,$uname,$udom,$filename,$title,$description,$url,$status,$encurl,$enctype,$linktext)=@_; |
|
return "<a href='/adm/$udom/$uname/".&filterfeedname($filename).'_rss.html?queryid='. |
|
&escape($id). |
|
'&title='.&escape($title). |
|
'&description='.&escape($description). |
|
'&url='.&escape($url). |
|
'&status='.&escape($status). |
|
'&encurl='.&escape($encurl). |
|
'&enctype='.&escape($enctype). |
|
"'>".$linktext.'</a>'; |
|
|
|
} |
|
|
sub handler { |
sub handler { |
my ($r) = @_; |
my ($r) = @_; |
|
|
Line 177 sub handler {
|
Line 220 sub handler {
|
$edit=1; |
$edit=1; |
$html=1; |
$html=1; |
} |
} |
|
if (($mode eq 'adm') && (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) { |
|
$edit=1; |
|
$html=1; |
|
} |
if ($filename=~/\.html$/) { |
if ($filename=~/\.html$/) { |
$html=1; |
$html=1; |
} |
} |
Line 192 sub handler {
|
Line 239 sub handler {
|
|
|
my $filterfeedname=&filterfeedname($filename); |
my $filterfeedname=&filterfeedname($filename); |
my $feedname=&feedname($filename); |
my $feedname=&feedname($filename); |
my $displayfeedname=&displayfeedname($filename,$uname,$udom); |
my ($displayfeedname,$displayoption)=&displayfeedname($filename,$uname,$udom); |
if ($html) { |
if ($html) { |
$r->print(&Apache::loncommon::start_page($displayfeedname,undef, |
my $title = $displayfeedname?$displayfeedname |
|
:"Available RSS Feeds and Blogs"; |
|
$r->print(&Apache::loncommon::start_page($title,undef |
{'domain' => $udom, |
{'domain' => $udom, |
'force_register' => |
'force_register' => |
$env{'form.register'}}). |
$env{'form.register'}}). |
Line 207 sub handler {
|
Line 256 sub handler {
|
&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'). |
'</description>'); |
'</description>'); |
} |
} |
# Do we have stuff to store? |
# This will be the entry id for new additions to the blog |
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) { |
|
# Any new feeds or renaming of feeds? |
|
if ($edit) { |
|
# Hide a feed? |
|
if ($env{'form.hidethisblog'}) { |
|
&changefeeddisplay($feedname,$uname,$udom,'hidden'); |
|
($displayfeedname,$displayoption)=&displayfeedname($filename,$uname,$udom); |
|
} |
|
# Advertise a feed? |
|
if ($env{'form.advertisethisblog'}) { |
|
&changefeeddisplay($feedname,$uname,$udom,'public'); |
|
($displayfeedname,$displayoption)=&displayfeedname($filename,$uname,$udom); |
|
} |
|
# New feed? |
|
if ($env{'form.namenewblog'}=~/\w/) { |
|
&namefeed($env{'form.namenewblog'},$uname,$udom,$env{'form.namenewblog'}); |
|
} |
|
# Old feed that is being renamed? |
|
if (($displayfeedname) && ($env{'form.newblogname'}=~/\w/)) { |
|
if ($env{'form.newblogname'} ne $displayfeedname) { |
|
&namefeed($feedname,$uname,$udom,$env{'form.newblogname'}); |
|
($displayfeedname,$displayoption)=&displayfeedname($filename,$uname,$udom); |
|
} |
|
} |
|
} |
$r->print(&advertisefeeds($uname,$udom,$edit)); |
$r->print(&advertisefeeds($uname,$udom,$edit)); |
} |
} |
if ($homeserver eq 'no_host') { |
if ($homeserver eq 'no_host') { |
Line 225 sub handler {
|
Line 298 sub handler {
|
} else { |
} else { |
$name=&Apache::loncommon::nickname($uname,$udom); |
$name=&Apache::loncommon::nickname($uname,$udom); |
} |
} |
|
# Add a new feed |
|
if (($html) && ($edit)) { |
|
$r->print('<form method="post">'); |
|
$r->print(&mt('Name for New Feed').": <input type='text' size='40' name='namenewblog' />"); |
|
$r->print('<input type="submit" value="'.&mt('Start a New Feed').'" />'); |
|
$r->print('</form>'); |
|
} |
if ($displayfeedname) { # this is an existing feed |
if ($displayfeedname) { # this is an existing feed |
# Anything to store? |
# Anything to store? |
if ($edit) { |
if ($edit) { |
|
# check if this was called with a query string |
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['queryid']); |
|
if ($env{'form.queryid'}) { |
|
# yes, collect the remainder |
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
|
['title', |
|
'description', |
|
'url', |
|
'status', |
|
'enclosureurl', |
|
'enclosuretype']); |
|
# my ($id,$uname,$udom,$filename,$title,$description,$url,$status,$encurl,$enctype)=@_; |
|
|
|
&editentry($env{'form.queryid'}, |
|
$uname,$udom,$filename, |
|
$env{'form.title'}, |
|
$env{'form.description'}, |
|
$env{'form.url'}, |
|
$env{'form.status'}, |
|
$env{'form.encurl'}, |
|
$env{'form.enctype'} |
|
); |
|
} |
my %newsfeed=&Apache::lonnet::dump($feedname,$udom,$uname); |
my %newsfeed=&Apache::lonnet::dump($feedname,$udom,$uname); |
foreach my $entry (sort(keys(%newsfeed)),$env{'form.newid'}.'_status') { |
foreach my $entry (sort(keys(%newsfeed)),$env{'form.newid'}.'_status') { |
if ($entry=~/^(\d+)\_status$/) { |
if ($entry=~/^(\d+)\_status$/) { |
Line 237 sub handler {
|
Line 340 sub handler {
|
$env{'form.'.$id.'_title'}, |
$env{'form.'.$id.'_title'}, |
$env{'form.'.$id.'_description'}, |
$env{'form.'.$id.'_description'}, |
$env{'form.'.$id.'_url'}, |
$env{'form.'.$id.'_url'}, |
$env{'form.'.$id.'_status'}); |
$env{'form.'.$id.'_status'}, |
|
$env{'form.'.$id.'_enclosureurl'}, |
|
$env{'form.'.$id.'_enclosuretype'}, |
|
); |
} |
} |
} |
} |
} |
} |
if ($env{'form.newblogname'} ne $displayfeedname) { |
|
&Apache::lonnet::put('nohist_all_rss_feeds',{ $filterfeedname => $env{'form.newblogname'} },$udom,$uname); |
|
$displayfeedname=&displayfeedname($filename,$uname,$udom); |
|
} |
|
} #done storing |
} #done storing |
|
|
$r->print("\n". |
$r->print("\n". |
($html?'<h3>':'<title>'). |
($html?'<hr /><h3>':'<title>'). |
&mt('LON-CAPA Feed "[_1]" for [_2]',$displayfeedname,$name). |
&mt('LON-CAPA Feed "[_1]" for [_2]',$displayfeedname,$name). |
|
($displayoption eq 'hidden'?' ('.&mt('Hidden').')':''). |
($html?'</h3>'.($edit?'<form method="post"><br />'. |
($html?'</h3>'.($edit?'<form method="post"><br />'. |
&mt('Name of blog/journal'). |
&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? |
# Render private items? |
Line 328 ENDEDIT
|
Line 431 ENDEDIT
|
if ($html) { |
if ($html) { |
$r->print('</ul>'); |
$r->print('</ul>'); |
if ($edit) { |
if ($edit) { |
$r->print('<input type="hidden" name="newid" value="'.$newid.'"/><input type="submit" value="'.&mt('Store Marked Changes').'" />'); |
$r->print('<input type="hidden" name="newid" value="'.$newid.'"/><input type="submit" value="'.&mt('Store Marked Changes').'" />'. |
|
($displayoption eq 'hidden'?'<input type="submit" name="advertisethisblog" value="'.&mt('Advertise this Feed').'" />': |
|
'<input type="submit" name="hidethisblog" value="'.&mt('Hide this Feed').'" />')); |
} |
} |
} |
} |
} # was a real display feedname |
} # was a real display feedname |