From 4307659e7c797774b1ffe5e47a6a769e1e4f46ed Mon Sep 17 00:00:00 2001 From: Rei Date: Sun, 30 Oct 2011 13:36:43 +0800 Subject: [PATCH] newest topics rss. --- app/assets/images/rss.png | Bin 0 -> 1665 bytes app/controllers/topics_controller.rb | 14 +++++++++++--- app/views/topics/index.haml | 6 ++++++ app/views/topics/index.rss.builder | 25 +++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 app/assets/images/rss.png create mode 100644 app/views/topics/index.rss.builder diff --git a/app/assets/images/rss.png b/app/assets/images/rss.png new file mode 100644 index 0000000000000000000000000000000000000000..f301a94ca944c9ad312eb9bc1da339a2e7d7c7e4 GIT binary patch literal 1665 zcmV-{27dX8P)Yo&BMT&^{s0v1lB1QB^3sNb4{%J%7treBF z+S*5KY(ri(+0DZwyF0r(PtUzGnape+*#3wE2Zo(<@A>X`&Ufxv;q+t6LC+?#cCvab z%+o{GMs`eQ!E38ajxK3vfDnoyzExNBa}$%?v<$RXrVC4nw(cctHSYEt|k% z_9rg2i;Q+bR-pWG9JVb4EN@9jnF=@dUikf1jm2UyS!|h8Vi>R?1W=k4^%#paL9;|; zh6kVx_wnCLL<14gM44pp_ghYb;jHBVEK?5v5G(5te(fx3qOl-#f1X07=MqNFcA&fS zCxiqGF-b?ItU(g&n*zXMdH`%ghvfng7?g@QP!OCwp;ha-Eqd?;m?OOyIdu?2C--4A zJB}&>Q9<_K8E^nd&#W$cy}Gg#;>6%ocwn>_LQy$jpW7HLTRxex<{GM%+jSuBqtzHAFx}RmO>u9I44>LOQN)hbb6_AJ%rYcGZ@PCUc|Nb zt(=(}C66f8$$XEotOXaZ4mn^gL*pr!%S>|9Mh1{O{Uy{do=5(bMp!4_0Mv1B!$`aZ ztKa?}(N*ivr$sPM%9(FZ7LzkMm5=`_A&X2)r=cF(gZ!>W*x!8QOG`Oc?mmHv^-p3* z4?#8Ok*-?0bYcS6_n+CivLh7<`I7B z5HB=~3Q8a8Ly9y%e5M0gDzp&ky<9S>$gDt7Nz@Zc{x3jVoA` zR=5;hqmm=T#bH8YS&(UyX!G3=x4h$^qmAUsIQ_N`RU5Wp@tTK_8z08lz;#Y-SoAsv znE1?zBtnVH5Y|4<*DJAVnCc|{`Rg|nOSb3BO%O4blU>Q0rc+$h?~Oi^<4Dh}(h1ky zfrhpNSg~V2v`7p|o&4RxWR{~opi(;gg}H3YPC7_ACJo8+W5!~7DQGB8&(M9SxC9DG zD_pr8O6wzz_I(edx9iP~5VI3lEKfBbXKiJf40+ErFBOAF-b3=pyI3Lz)7G6Saf?up zrm1o1%w<%huKY^v_ArurpGJ096YSrQdy9(*T;uNJu&85Bm||e9npRQ*TdX0mhG)E7=w%jA7ka@quV|iii!__BnJwF znFJkT(^^=K_YlQ4#te&?04C{l>ertJHedGWPAW$5@BV_cyM73;rQ5dmoyDBKjz!ii zvJPE>0X83oUOWW2w;<~U*FM;aRPQCyGs(v+MiH?fxrNC#XO{1~jELY|>sgxsT%88M zQosdArx)CqGyZ?7wibRw%$iG=4ji zobz1@`9?Cy>DOE!MX@>WaMslXenRj&z<)wHTE-c&3TDf~$pV6VpSS>gDImml2sz55 z-G6@OC{07D+27?=ah4TX|Aj!2NrDtmP>!Xc&)LgTCuq7#5JU&SR0_NzWVGb7 z`F4b#-3OuePPYjAG4SDY5Ny`4TsD|aGAT%m1xnfExeh3xwD@Mzq+X8nfwv%^`4QRS z8_>z%GUODY+ls3jSJOz<891>bn21!>KrgDGZKSt#F_KEt;M)1ioIZ0-#lA+=W71U|zO9whyAZ}=v6w72 zW1vk<+&CItT8GHWH4F0J(9-junC!KU0XUYO7~4$tzx+M_SAYQk&9R|1Bl3}A00000 LNkvXXu0mjfqqi30 literal 0 HcmV?d00001 diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index dc601da..9804592 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -3,6 +3,7 @@ class TopicsController < ApplicationController before_filter :find_topic, :only => [:show, :mark, :unmark] before_filter :find_user_topic, :only => [:edit, :update] respond_to :html, :js, :only => [:mark] + respond_to :html, :rss, :only => [:newest] def index @topics = Topic.active.page(params[:page]) @@ -10,7 +11,14 @@ def index def newest @topics = Topic.order_by([[:created_at, :desc]]).page(params[:page]) - render :index + respond_with(@topics) do |format| + format.html { render :index } + format.rss do + @page_title = 'Newest Topics' + @channel_link = newest_topics_path + render :index, :layout => false + end + end end def my @@ -72,7 +80,7 @@ def mark @topic.mark_by current_user respond_with(@topic) do |format| format.html { redirect_referrer_or_default @topic } - format.js { render :mark, :layout => false } + format.js { render :layout => false } end end @@ -80,7 +88,7 @@ def unmark @topic.unmark_by current_user respond_with(@topic) do |format| format.html { redirect_referrer_or_default @topic } - format.js { render :mark, :layout => false } + format.js { render :layout => false } end end diff --git a/app/views/topics/index.haml b/app/views/topics/index.haml index c552b9d..943e0aa 100644 --- a/app/views/topics/index.haml +++ b/app/views/topics/index.haml @@ -54,3 +54,9 @@ - else = render :partial => 'shared/sidebar_login' + - if %w(newest).include?(action_name) + %section.box + %header Subscribe + - case action_name + - when + = link_to image_tag('rss.png'), newest_topics_path(:format => :rss) diff --git a/app/views/topics/index.rss.builder b/app/views/topics/index.rss.builder new file mode 100644 index 0000000..c86123a --- /dev/null +++ b/app/views/topics/index.rss.builder @@ -0,0 +1,25 @@ +xml.instruct! +xml.rss :version => "2.0" do + xml.channel do + xml.title @page_title + xml.link @channel_link + xml.description + xml.lastBuildDate @topics.first.created_at.to_s(:rfc822) if @topics.any? + + @topics.each do |topic| + xml.item do + xml.title topic.title + xml.description format_text(topic.content) + xml.pubDate topic.created_at.to_s(:rfc822) + xml.author topic.user.profile.name + xml.link topic_url(topic, :page => topic.last_page, :anchor => topic.last_anchor) + xml.guid topic_url(topic) + if topic.tags.present? + topic.tags.each do |tag| + xml.category tag + end + end + end + end + end +end