--- loncom/interface/lonrss.pm 2005/11/17 21:40:52 1.1
+++ loncom/interface/lonrss.pm 2005/11/18 13:35:30 1.2
@@ -1,7 +1,7 @@
# The LearningOnline Network
# RSS Feeder
#
-# $Id: lonrss.pm,v 1.1 2005/11/17 21:40:52 www Exp $
+# $Id: lonrss.pm,v 1.2 2005/11/18 13:35:30 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,11 +33,8 @@ use Apache::Constants qw(:common);
use Apache::loncommon;
use Apache::lonnet;
use Apache::lontexconvert;
-use Apache::lonfeedback;
-use Apache::lonannounce;
use Apache::lonlocal;
use Apache::lonhtmlcommon;
-use Apache::lonspeller();
my $feedcounter=0;
@@ -53,16 +50,61 @@ sub feedname {
}
sub displayfeedname {
- my $filename=&filterfeedname(shift);
- $filename=~s/\_/ /g;
- return $filename;
+ my ($rawname,$uname,$udom)=@_;
+ my $filterfilename=&filterfeedname($rawname);
+# do we have a stored name?
+ my %stored=&Apache::lonnet::get('nohist_all_rss_feeds',[$filterfilename],$udom,$uname);
+ if ($stored{$filterfilename}) { return $stored{$filterfilename}; }
+# no, construct a name
+ my $name=$filterfilename;
+ if ($name=~/^CourseBlog/) {
+ $name=&mt('Course Blog');
+ if ($env{'course.'.$env{'request.course.id'}.'.description'}) {
+ $name.=' '.$env{'course.'.$env{'request.course.id'}.'.description'};
+ }
+ } else {
+ $name=~s/\_/ /g;
+ }
+ return $name;
+}
+
+sub renamefeed {
+ my ($rawname,$uname,$udom,$newname)=@_;
+ return &Apache::lonnet::put('nohist_all_rss_feeds',
+ { &filterfeedname($rawname) => $newname },
+ $udom,$uname);
+}
+
+sub advertisefeeds {
+ my ($uname,$udom)=@_;
+ my $feeds='';
+ my %feednames=&Apache::lonnet::dump('nohist_all_rss_feeds',$udom,$uname);
+ foreach (sort keys %feednames) {
+ if ($_!~/^error\:/) {
+ my $url='feed://'.$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'.$_.'.rss';
+ $feeds.='
'.
+ $feednames{$_}.'
'.$url.'';
+ }
+ }
+ if ($feeds) {
+ return ''.&mt('Available RSS Feeds and Blogs').'
';
+ } else {
+ return '';
+ }
}
sub addentry {
- my ($uname,$udom,$filename,$title,$description,$url,$status,$encurl,$enclength,$enctype)=@_;
- my $feedname=&feedname($filename);
$feedcounter++;
my $id=time.'00000'.$$.'00000'.$feedcounter;
+ return &editentry($id,@_);
+}
+
+sub editentry {
+ my ($id,$uname,$udom,$filename,$title,$description,$url,$status,$encurl,$enclength,$enctype)=@_;
+ my $feedname=&feedname($filename);
+ &Apache::lonnet::put('nohist_all_rss_feeds',
+ { &filterfeedname($filename) => &displayfeedname($filename,$uname,$udom) },
+ $udom,$uname);
return &Apache::lonnet::put($feedname,{
$id.'_title' => $title,
$id.'_description' => $description,
@@ -73,6 +115,22 @@ sub addentry {
$id.'_status' => $status},$udom,$uname);
}
+sub changestatus {
+ my ($id,$uname,$udom,$filename,$status)=@_;
+ my $feedname=&feedname($filename);
+ if ($status eq 'deleted') {
+ return &Apache::lonnet::del($feedname,[$id.'_title',
+ $id.'_description',
+ $id.'_link',
+ $id.'_enclosureurl',
+ $id.'_enclosurelength',
+ $id.'_enclosuretype',
+ $id.'_status'],$udom,$uname);
+ } else {
+ return &Apache::lonnet::put($feedname,{$id.'_status' => $status},$udom,$uname);
+ }
+}
+
sub handler {
my $r = shift;
&Apache::loncommon::content_type($r,'text/xml');
@@ -82,7 +140,7 @@ sub handler {
my (undef,undef,$udom,$uname,$filename)=split(/\//,$r->uri);
my $filterfeedname=&filterfeedname($filename);
my $feedname=&feedname($filename);
- my $displayfeedname=&displayfeedname($filename);
+ my $displayfeedname=&displayfeedname($filename,$uname,$udom);
$r->print("\n".
"\nhttp://".$ENV{'HTTP_HOST'}.'/'.
"\n".&mt('An RSS Feed provided by the LON-CAPA Learning Content Management System').'');
@@ -111,6 +169,7 @@ sub handler {
if ($_=~/^(\d+)\_status$/) {
my $id=$1;
if (($newsfeed{$id.'_status'} ne 'public') && ($viewpubliconly)) { next; }
+ if ($newsfeed{$id.'_status'} eq 'hidden') { next; }
$r->print("\n- \n".$newsfeed{$id.'_title'}."\n".
$newsfeed{$id.'_description'}."\n".
$newsfeed{$id.'_link'}."\n");