From cb7842786692c7900e2bd668f3957c7317e322ae Mon Sep 17 00:00:00 2001 From: Bernie Chiu Date: Wed, 20 Nov 2013 17:01:51 +0800 Subject: [PATCH] Add category selection for subscription --- .../panel/feed/back_end/feeds_controller.rb | 4 ++- .../feed/app/models/announcement_feed.rb | 1 + .../panel/feed/back_end/feeds/_form.html.erb | 36 +++++++++++-------- .../feed/config/locales/en.yml | 4 ++- .../feed/config/locales/zh_tw.yml | 4 ++- .../built_in_modules/feed/lib/rss_dynamic.rb | 12 +++---- 6 files changed, 38 insertions(+), 23 deletions(-) diff --git a/vendor/built_in_modules/feed/app/controllers/panel/feed/back_end/feeds_controller.rb b/vendor/built_in_modules/feed/app/controllers/panel/feed/back_end/feeds_controller.rb index d748f12a2..77ff050ec 100644 --- a/vendor/built_in_modules/feed/app/controllers/panel/feed/back_end/feeds_controller.rb +++ b/vendor/built_in_modules/feed/app/controllers/panel/feed/back_end/feeds_controller.rb @@ -11,11 +11,13 @@ class Panel::Feed::BackEnd::FeedsController < OrbitBackendController end def new - @feed = AnnouncementFeed.new + @feed = AnnouncementFeed.new + @categories = BulletinCategory.all end def edit @feed = AnnouncementFeed.find(params[:id]) + @categories = BulletinCategory.all end def create diff --git a/vendor/built_in_modules/feed/app/models/announcement_feed.rb b/vendor/built_in_modules/feed/app/models/announcement_feed.rb index f10470bdc..4059babec 100644 --- a/vendor/built_in_modules/feed/app/models/announcement_feed.rb +++ b/vendor/built_in_modules/feed/app/models/announcement_feed.rb @@ -4,5 +4,6 @@ class AnnouncementFeed field :link, type: String field :name, type: String + field :category end \ No newline at end of file diff --git a/vendor/built_in_modules/feed/app/views/panel/feed/back_end/feeds/_form.html.erb b/vendor/built_in_modules/feed/app/views/panel/feed/back_end/feeds/_form.html.erb index 5f7a9be60..a50fa4070 100644 --- a/vendor/built_in_modules/feed/app/views/panel/feed/back_end/feeds/_form.html.erb +++ b/vendor/built_in_modules/feed/app/views/panel/feed/back_end/feeds/_form.html.erb @@ -1,22 +1,30 @@

<%= t('feed.channel') %>

-
- -
- <%= f.text_field :name, :class => 'span4', :placeholder => 'RSS ' + t('feed.name'), :id => "inputName" %> +
+ +
+ <%= f.text_field :name, :class => 'span4', :placeholder => 'RSS ' + t('feed.name'), :id => "inputName" %> +
-
-
- -
- <%= f.text_field :link, :class => 'span4', :placeholder => 'RSS URL', :id => "inputURL"%> +
+ +
+ <%= f.text_field :link, :class => 'span4', :placeholder => 'RSS URL', :id => "inputURL" %> +
-
-
-
- <%= f.submit t("submit"), :class => "btn btn-primary" %> +
+ +
+ <%= f.select(:category, options_for_select([["#{t('feed.all')}", "all"]] + + @categories.all.collect {|c| [ c.title, c.title ] })) %> +
+
+ +
+
+ <%= f.submit t("submit"), :class => "btn btn-primary" %> +
-
\ No newline at end of file diff --git a/vendor/built_in_modules/feed/config/locales/en.yml b/vendor/built_in_modules/feed/config/locales/en.yml index 0d840eb35..31caf914a 100644 --- a/vendor/built_in_modules/feed/config/locales/en.yml +++ b/vendor/built_in_modules/feed/config/locales/en.yml @@ -1,6 +1,8 @@ en: feed: - feed: Rss + all: All + choose: Choose a Category + feed: RSS channel: Announcement Rss new: New edit: Edit diff --git a/vendor/built_in_modules/feed/config/locales/zh_tw.yml b/vendor/built_in_modules/feed/config/locales/zh_tw.yml index 42492cd6e..2117306d3 100644 --- a/vendor/built_in_modules/feed/config/locales/zh_tw.yml +++ b/vendor/built_in_modules/feed/config/locales/zh_tw.yml @@ -1,6 +1,8 @@ zh_tw: feed: - feed: Rss + all: 全部 + choose: 選擇訂閱類別 + feed: RSS channel: 公告RSS訂閱 new: 新增 edit: 編輯 diff --git a/vendor/built_in_modules/feed/lib/rss_dynamic.rb b/vendor/built_in_modules/feed/lib/rss_dynamic.rb index c36cabca0..51eda6e33 100644 --- a/vendor/built_in_modules/feed/lib/rss_dynamic.rb +++ b/vendor/built_in_modules/feed/lib/rss_dynamic.rb @@ -2,20 +2,20 @@ require 'rss' require 'mongo' - # Change this according to local DB -DB_BASE_NAME = "production_0" +DB_NAME = "production_0" # Create a hash rss site list from mongodb -db = Mongo::Connection.new("localhost", 27017).db("#{DB_BASE_NAME}") +db = Mongo::Connection.new("localhost", 27017).db("#{DB_NAME}") SITES = Hash[ db["announcement_feeds"].find().entries.collect {|f| [ f["name"], f["link"] ]} ] +CATEGORIES = db["announcement_feeds"].find().entries.map {|f| f["category"] } yesterday = Time.now - 86400 two_weeks_ago = Time.new - 60 * 60 * 24 * 14 recent_feed = {} -SITES.each do |name, url| +SITES.each_with_index do |(name, url), i| open("http://#{url}/panel/announcement/front_end/bulletins.rss?inner=true") do |rss| # Giving 'false' parameter is for skipping irregular format of the RSS @@ -24,7 +24,7 @@ SITES.each do |name, url| feed.items.each do |item| category = item.category.to_s.gsub(/\<(\/)*category\>/, '') - if item.pubDate > two_weeks_ago + if item.pubDate > yesterday && (CATEGORIES[i] == category || CATEGORIES[i] == "all") recent_feed[item.title.strip] = { date: item.pubDate, description: item.description.gsub("\r\n", '
').strip, link: item.link, category: category, source: name } end @@ -51,7 +51,7 @@ def get_category_id(category, categories, coll_cat) end def get_mongo_and_categories - db = Mongo::Connection.new("localhost", 27017).db("#{DB_BASE_NAME}") + db = Mongo::Connection.new("localhost", 27017).db("#{DB_NAME}") coll_bulletin = db["bulletins"] coll_cat = db["bulletin_categories"]