--- loncom/interface/lonrss.pm 2005/11/17 21:40:52 1.1 +++ loncom/interface/lonrss.pm 2025/03/16 21:04:09 1.64 @@ -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.64 2025/03/16 21:04:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -29,22 +29,21 @@ package Apache::lonrss; use strict; +use LONCAPA; 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; +use Apache::inputtags(); sub filterfeedname { my $filename=shift; - $filename=~s/\.rss$//; + $filename=~s/(\_rss\.html|\.rss)$//; $filename=~s/\W//g; + $filename=~s/\_rssfeed$//; + $filename=~s/^nohist\_//; return $filename; } @@ -53,78 +52,619 @@ 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,'feed_display_option_'.$filterfilename],$udom,$uname); + if ($stored{$filterfilename}) { return ($stored{$filterfilename},$stored{'feed_display_option_'.$filterfilename}); } +# no, construct a name + my $name=$filterfilename; + if ($name=~/^CourseBlog/) { + $name=&mt('Course Blog'); + if ($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Community') { + $name = &mt('Community Blog'); + } + if ($env{'course.'.$env{'request.course.id'}.'.description'}) { + $name.=' '.$env{'course.'.$env{'request.course.id'}.'.description'}; + } + } else { + $name=~s/\_/ /g; + } + return ($name,$stored{'feed_display_option_'.$filterfilename}); +} + +sub namefeed { + my ($rawname,$uname,$udom,$newname)=@_; + return &Apache::lonnet::put('nohist_all_rss_feeds', + { &filterfeedname($rawname) => $newname }, + $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 { + my ($uname,$udom,$edit,$count,$hidden,$skipheader)=@_; + my $feeds=''; + my %feednames=&Apache::lonnet::dump('nohist_all_rss_feeds',$udom,$uname); + my $mode='public'; + if ($edit) { + $mode='adm'; + } + my $server = &Apache::lonnet::absolute_url(); + foreach my $feed (sort(keys(%feednames))) { + next if ($feed =~/^\s*$/ || + $feed =~ /^error:/ || + $feed =~ /^feed_display_option_/); + if ($feednames{'feed_display_option_'.$feed} eq 'hidden') { + if (ref($hidden)) { + $$hidden ++; + } + if (ref($count)) { + unless ($edit) { + next; + } + } + } else { + if (ref($count)) { + $$count ++; + } + } + my $feedurl= $server.'/public/'.$udom.'/'.$uname.'/'.$feed.'.rss'; + my $htmlurl= $server.'/'.$mode.'/'.$udom.'/'.$uname.'/'.$feed.'_rss.html'; + if ($feednames{'feed_display_option_'.$feed} eq 'hidden') { + if ($edit) { + $feeds.='
'.$info.'
'; + } else { + return '