diff --git a/actions/all.php b/actions/all.php index bd5b9f01e5..729b8dd16a 100644 --- a/actions/all.php +++ b/actions/all.php @@ -69,6 +69,11 @@ class AllAction extends StreamAction { } $this->views_menu(); + + $this->show_feeds_list(array(0=>array('href'=>common_local_url('allrss', array('nickname' => $user->nickname)), + 'type' => 'rss', + 'version' => 'RSS 1.0', + 'item' => 'allrss'))); } function show_notices($user) { diff --git a/actions/replies.php b/actions/replies.php index f5bc2ce1a4..529ce7e980 100644 --- a/actions/replies.php +++ b/actions/replies.php @@ -73,6 +73,11 @@ class RepliesAction extends StreamAction { } $this->views_menu(); + + $this->show_feeds_list(array(0=>array('href'=>common_local_url('repliesrss', array('nickname' => $user->nickname)), + 'type' => 'rss', + 'version' => 'RSS 1.0', + 'item' => 'repliesrss'))); } function show_replies($user) { diff --git a/actions/showfavorites.php b/actions/showfavorites.php index f7061dc08e..c18c73a7a1 100644 --- a/actions/showfavorites.php +++ b/actions/showfavorites.php @@ -68,6 +68,10 @@ class ShowfavoritesAction extends StreamAction { common_notice_form('all'); } + $this->show_feeds_list(array(0=>array('href'=>common_local_url('favoritesrss', array('nickname' => $user->nickname)), + 'type' => 'rss', + 'version' => 'RSS 1.0', + 'item' => 'Favorites'))); $this->views_menu(); } diff --git a/actions/showstream.php b/actions/showstream.php index 16bffa4ea7..9db31c108e 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -72,8 +72,25 @@ class ShowstreamAction extends StreamAction { } $this->views_menu(); + + $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('nickname' => $user->nickname)), + 'type' => 'rss', + 'version' => 'RSS 1.0', + 'item' => 'notices'), + 1=>array('href'=>common_local_url('usertimeline', array('nickname' => $user->nickname)), + 'type' => 'atom', + 'version' => 'Atom 1.0', + 'item' => 'usertimeline'), + + 2=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)), + 'type' => 'rdf', + 'version' => 'FOAF', + 'item' => 'foaf'))); } + + + function show_header($user) { # Feeds common_element('link', array('rel' => 'alternate', diff --git a/lib/personal.php b/lib/personal.php index 248b4cc6bb..f1c6ea9b13 100644 --- a/lib/personal.php +++ b/lib/personal.php @@ -84,6 +84,74 @@ class PersonalAction extends Action { common_element_end('ul'); } + + function show_feeds_list($feeds) { + common_element_start('div', array('class' => 'feeds')); + common_element('p', null, 'Feeds:'); + common_element_start('ul', array('class' => 'xoxo')); + + foreach ($feeds as $key => $value) { + $this->common_feed_item($feeds[$key]); + } + common_element_end('ul'); + common_element_end('div'); + } + + function common_feed_item($feed) { + $nickname = $this->trimmed('nickname'); + + switch($feed['item']) { + case 'notices': default: + $feed_classname = $feed['type']; + $feed_mimetype = "application/".$feed['type']."+xml"; + $feed_title = "$nickname's ".$feed['version']." notice feed"; + $feed['textContent'] = "RSS"; + break; + + case 'allrss': + $feed_classname = $feed['type']; + $feed_mimetype = "application/".$feed['type']."+xml"; + $feed_title = $feed['version']." feed for $nickname and friends"; + $feed['textContent'] = "RSS"; + break; + + case 'repliesrss': + $feed_classname = $feed['type']; + $feed_mimetype = "application/".$feed['type']."+xml"; + $feed_title = $feed['version']." feed for replies to $nickname"; + $feed['textContent'] = "RSS"; + break; + + case 'foaf': + $feed_classname = "foaf"; + $feed_mimetype = "application/".$feed['type']."+xml"; + $feed_title = "$nickname's FOAF file"; + $feed['textContent'] = "FOAF"; + break; + + case 'favoritesrss': + $feed_classname = "favorites"; + $feed_mimetype = "application/".$feed['type']."+xml"; + $feed_title = "Feed for favorites of $nickname"; + $feed['textContent'] = "RSS"; + break; + + case 'usertimeline': + $feed_classname = "atom"; + $feed_mimetype = "application/".$feed['type']."+xml"; + $feed_title = "$nickname's ".$feed['version']." notice feed"; + $feed['textContent'] = "Atom"; + break; + } + common_element_start('li'); + common_element('a', array('href' => $feed['href'], + 'class' => $feed_classname, + 'type' => $feed_mimetype, + 'title' => $feed_title), + $feed['textContent']); + common_element_end('li'); + } + function source_link($source) { $source_name = _($source); @@ -107,4 +175,4 @@ class PersonalAction extends Action { } return; } -} \ No newline at end of file +} diff --git a/lib/util.php b/lib/util.php index 6f6d615e5c..2b4071ba6d 100644 --- a/lib/util.php +++ b/lib/util.php @@ -1029,6 +1029,9 @@ function common_fancy_url($action, $args=NULL) { } else { return common_path($args['nickname']); } + + case 'usertimeline': + return common_path("api/statuses/user_timeline/".$args['nickname']."atom"); case 'confirmaddress': return common_path('main/confirmaddress/'.$args['code']); case 'userbyid': diff --git a/theme/default/display.css b/theme/default/display.css index f4eb917ef9..b17e5f4482 100644 --- a/theme/default/display.css +++ b/theme/default/display.css @@ -138,6 +138,37 @@ p#branding a { border-right: 1px solid #dcaa3f; } + +.feeds { +clear:both; +float:right; +margin-top:1.25em; +position:absolute; +right:0; +bottom:-30px; +} +.feeds * { +line-height:1.4; +padding:0; +margin:0; +font-size:12px; +} + +.feeds p { +font-weight:bold; +display:inline; +display:none; +} +.feeds ul { +display:inline; +} +.feeds li { +list-style-type:none; +display:inline; +margin-left:0.5em; +} + + /* ----- Nav Footer ----- */ #nav_sub { clear: both; diff --git a/theme/identica/icon_foaf.gif b/theme/identica/icon_foaf.gif new file mode 100644 index 0000000000..f8f7844235 Binary files /dev/null and b/theme/identica/icon_foaf.gif differ diff --git a/theme/identica/icon_rss.png b/theme/identica/icon_rss.png new file mode 100644 index 0000000000..da7a39b4e4 Binary files /dev/null and b/theme/identica/icon_rss.png differ