Diff for /loncom/interface/lonrss.pm between versions 1.1 and 1.2

version 1.1, 2005/11/17 21:40:52 version 1.2, 2005/11/18 13:35:30
Line 33  use Apache::Constants qw(:common); Line 33  use Apache::Constants qw(:common);
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lontexconvert;  use Apache::lontexconvert;
 use Apache::lonfeedback;  
 use Apache::lonannounce;  
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
 use Apache::lonspeller();  
   
 my $feedcounter=0;  my $feedcounter=0;
   
Line 53  sub feedname { Line 50  sub feedname {
 }  }
   
 sub displayfeedname {  sub displayfeedname {
     my $filename=&filterfeedname(shift);      my ($rawname,$uname,$udom)=@_;
     $filename=~s/\_/ /g;      my $filterfilename=&filterfeedname($rawname);
     return $filename;  # 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.='<li><a href="'.$url.'">'.
    $feednames{$_}.'</a><br /><tt>'.$url.'</tt></li>';
    }
       }
       if ($feeds) {
    return '<h4>'.&mt('Available RSS Feeds and Blogs').'</h4><ul>'.$feeds.'</ul>';
       } else {
           return '';
       }
 }  }
   
 sub addentry {  sub addentry {
     my ($uname,$udom,$filename,$title,$description,$url,$status,$encurl,$enclength,$enctype)=@_;  
     my $feedname=&feedname($filename);  
     $feedcounter++;      $feedcounter++;
     my $id=time.'00000'.$$.'00000'.$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,{      return &Apache::lonnet::put($feedname,{
  $id.'_title' => $title,   $id.'_title' => $title,
  $id.'_description' => $description,   $id.'_description' => $description,
Line 73  sub addentry { Line 115  sub addentry {
  $id.'_status' => $status},$udom,$uname);   $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 {  sub handler {
     my $r = shift;      my $r = shift;
     &Apache::loncommon::content_type($r,'text/xml');      &Apache::loncommon::content_type($r,'text/xml');
Line 82  sub handler { Line 140  sub handler {
     my (undef,undef,$udom,$uname,$filename)=split(/\//,$r->uri);      my (undef,undef,$udom,$uname,$filename)=split(/\//,$r->uri);
     my $filterfeedname=&filterfeedname($filename);      my $filterfeedname=&filterfeedname($filename);
     my $feedname=&feedname($filename);      my $feedname=&feedname($filename);
     my $displayfeedname=&displayfeedname($filename);      my $displayfeedname=&displayfeedname($filename,$uname,$udom);
     $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'}.'/</link>'.        "\n<link>http://".$ENV{'HTTP_HOST'}.'/</link>'.
       "\n<description>".&mt('An RSS Feed provided by the LON-CAPA Learning Content Management System').'</description>');        "\n<description>".&mt('An RSS Feed provided by the LON-CAPA Learning Content Management System').'</description>');
Line 111  sub handler { Line 169  sub handler {
     if ($_=~/^(\d+)\_status$/) {      if ($_=~/^(\d+)\_status$/) {
  my $id=$1;   my $id=$1;
  if (($newsfeed{$id.'_status'} ne 'public') && ($viewpubliconly)) { next; }   if (($newsfeed{$id.'_status'} ne 'public') && ($viewpubliconly)) { next; }
    if ($newsfeed{$id.'_status'} eq 'hidden') { next; }
  $r->print("\n<item>\n<title>".$newsfeed{$id.'_title'}."</title>\n<description>".   $r->print("\n<item>\n<title>".$newsfeed{$id.'_title'}."</title>\n<description>".
   $newsfeed{$id.'_description'}."</description>\n<link>".    $newsfeed{$id.'_description'}."</description>\n<link>".
   $newsfeed{$id.'_link'}."</link>\n");    $newsfeed{$id.'_link'}."</link>\n");

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>