--- loncom/interface/lonrss.pm 2006/05/11 15:27:49 1.20 +++ loncom/interface/lonrss.pm 2006/10/02 16:47:57 1.28 @@ -1,7 +1,7 @@ # The LearningOnline Network # RSS Feeder # -# $Id: lonrss.pm,v 1.20 2006/05/11 15:27:49 www Exp $ +# $Id: lonrss.pm,v 1.28 2006/10/02 16:47:57 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -29,6 +29,7 @@ package Apache::lonrss; use strict; +use LONCAPA; use Apache::Constants qw(:common); use Apache::loncommon; use Apache::lonnet; @@ -138,7 +139,8 @@ sub editentry { } my $feedname=&feedname($filename); &Apache::lonnet::put('nohist_all_rss_feeds', - { &filterfeedname($filename) => &displayfeedname($filename,$uname,$udom) }, + { &filterfeedname($filename) => + (&displayfeedname($filename,$uname,$udom))[0] }, $udom,$uname); return &Apache::lonnet::put($feedname,{ $id.'_title' => $title, @@ -180,6 +182,34 @@ sub determine_enclosure_types { 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 { my ($r) = @_; @@ -190,6 +220,10 @@ sub handler { $edit=1; $html=1; } + if (($mode eq 'adm') && (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) { + $edit=1; + $html=1; + } if ($filename=~/\.html$/) { $html=1; } @@ -207,7 +241,9 @@ sub handler { my $feedname=&feedname($filename); my ($displayfeedname,$displayoption)=&displayfeedname($filename,$uname,$udom); if ($html) { - $r->print(&Apache::loncommon::start_page(($displayfeedname?$displayfeedname:&mt("Available RSS Feeds and Blogs")),undef, + my $title = $displayfeedname?$displayfeedname + :"Available RSS Feeds and Blogs"; + $r->print(&Apache::loncommon::start_page($title,undef, {'domain' => $udom, 'force_register' => $env{'form.register'}}). @@ -220,7 +256,7 @@ sub handler { &mt('An RSS Feed provided by the LON-CAPA Learning Content Management System'). '</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(); # Is this user for real? my $homeserver=&Apache::lonnet::homeserver($uname,$udom); @@ -265,13 +301,36 @@ sub handler { # Add a new feed if (($html) && ($edit)) { $r->print('<form method="post">'); - $r->print(&mt('Name for New Blog').": <input type='text' size='40' name='namenewblog' />"); - $r->print('<input type="submit" value="'.&mt('Start a New Blog').'" />'); + $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 # Anything to store? 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); foreach my $entry (sort(keys(%newsfeed)),$env{'form.newid'}.'_status') { if ($entry=~/^(\d+)\_status$/) { @@ -280,8 +339,11 @@ sub handler { &editentry($id,$uname,$udom,$feedname, $env{'form.'.$id.'_title'}, $env{'form.'.$id.'_description'}, - $env{'form.'.$id.'_url'}, - $env{'form.'.$id.'_status'}); + $env{'form.'.$id.'_link'}, + $env{'form.'.$id.'_status'}, + $env{'form.'.$id.'_enclosureurl'}, + $env{'form.'.$id.'_enclosuretype'}, + ); } } } @@ -292,7 +354,7 @@ sub handler { &mt('LON-CAPA Feed "[_1]" for [_2]',$displayfeedname,$name). ($displayoption eq 'hidden'?' ('.&mt('Hidden').')':''). ($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="'. $displayfeedname.'" />':'').'<ul>':'</title>')); # Render private items? @@ -340,12 +402,16 @@ ENDEDIT } else { # not in edit mode, just displaying if (($newsfeed{$id.'_status'} ne 'public') && ($viewpubliconly)) { next; } if ($newsfeed{$id.'_status'} eq 'hidden') { next; } + my $link = $newsfeed{$id.'_link'}; + if ($link =~ m|^/| ) { + $link = "http://".$ENV{'HTTP_HOST'}.$link; + } $r->print("\n".($html?"\n<li><b>":"<item>\n<title>").$newsfeed{$id.'_title'}. ($html?"</b><br />\n":"</title>\n<description>"). $newsfeed{$id.'_description'}. ($html?"<br />\n<a href='":"</description>\n<link>"). - "http://".$ENV{'HTTP_HOST'}. - $newsfeed{$id.'_link'}. + + $link. ($html?("'>".&mt('Read more')."</a><br />\n"):"</link>\n")); # Enclosure? Get stats if ($newsfeed{$id.'_enclosureurl'}) {