From f34be54da058189aef40251b6a1642c8f595a25a Mon Sep 17 00:00:00 2001 From: Bohung Date: Wed, 2 Jun 2021 18:06:27 +0800 Subject: [PATCH] Edit feed feature.(Add categories filter) --- .../admin/announcements_controller.rb | 2 +- .../announcement_feeds_controller.rb | 30 ++++++++++++++--- app/models/bulletin_feed.rb | 1 + .../announcements/_edit_feed_form.html.erb | 23 +++++++++++++ app/views/admin/announcements/_feed.html.erb | 32 +++++++++++++++++++ .../admin/announcements/_feed_form.html.erb | 23 +++++++++++++ 6 files changed, 105 insertions(+), 6 deletions(-) diff --git a/app/controllers/admin/announcements_controller.rb b/app/controllers/admin/announcements_controller.rb index cea782b..47d51d6 100644 --- a/app/controllers/admin/announcements_controller.rb +++ b/app/controllers/admin/announcements_controller.rb @@ -64,7 +64,7 @@ class Admin::AnnouncementsController < OrbitAdminController end def feed - @table_feed_fields = ["announcement.feed_name", :tags, "announcement.rssfeed", "announcement.jsonfeed"] + @table_feed_fields = ["announcement.feed_name",:tags , :category , "announcement.rssfeed", "announcement.jsonfeed"] @feeds = BulletinFeed.all.asc(:created_at) end diff --git a/app/controllers/announcement_feeds_controller.rb b/app/controllers/announcement_feeds_controller.rb index 6b7eee4..2908b6f 100644 --- a/app/controllers/announcement_feeds_controller.rb +++ b/app/controllers/announcement_feeds_controller.rb @@ -28,6 +28,10 @@ class AnnouncementFeedsController < ApplicationController if !tags.empty? @announcements = Bulletin.can_display_and_sorted.is_approved.filter_by_tags(tags) end + categories = @bf.category_ids + if !categories.empty? + @announcements = @announcements.filter_by_categories(categories) + end end respond_to do |format| format.html {redirect_to "/xhr/announcements/rssfeed/#{@bf.uid}.rss"} @@ -72,21 +76,28 @@ class AnnouncementFeedsController < ApplicationController dt = params[:date] if !bf.nil? tags = bf.tag_ids - if !tags.empty? + categories = bf.category_ids + if !(categories.empty? && tags.empty?) if !dt.nil? dt = DateTime.parse(dt) dtt = dt + 1.day - announcements = Bulletin.where(:postdate.gt => dt, :postdate.lt => dtt).can_display_and_sorted.is_approved.filter_by_tags(tags) + announcements = Bulletin.where(:postdate.gt => dt, :postdate.lt => dtt).can_display_and_sorted.is_approved elsif !startdt.nil? && enddt.nil? startdt = DateTime.parse(startdt) enddt = DateTime.now - announcements = Bulletin.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved.filter_by_tags(tags) + announcements = Bulletin.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved elsif !startdt.nil? && !enddt.nil? startdt = DateTime.parse(startdt) enddt = DateTime.parse(enddt) + 1.day - announcements = Bulletin.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved.filter_by_tags(tags) + announcements = Bulletin.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved else - announcements = Bulletin.all.can_display_and_sorted.is_approved.filter_by_tags(tags) + announcements = Bulletin.all.can_display_and_sorted.is_approved + end + if !tags.empty? + announcements = announcements.filter_by_tags(tags) + end + if !categories.empty? + announcements = announcements.filter_by_categories(categories) end else announcements = [] @@ -94,7 +105,9 @@ class AnnouncementFeedsController < ApplicationController end all_anns = [] tag_names = [] + category_titles = [] tag_ids = [] + category_ids = [] announcements.each do |anns| user = User.find(anns.create_user_id) rescue nil if !user.nil? @@ -117,6 +130,7 @@ class AnnouncementFeedsController < ApplicationController a["image"]["thumb"] = ("#{request.base_url}" + anns.image.thumb.url rescue "") a["image"]["mobile"] = ("#{request.base_url}" + anns.image.mobile.url rescue "") a["tags"] = [] + a["category"] = {} a["author"] = author a["params"] = anns.to_param a["subtitle_ann"] = anns.subtitle if anns.display_subtitle? @@ -130,6 +144,12 @@ class AnnouncementFeedsController < ApplicationController end a["tags"] << {"name_translations" => tag.name_translations} end + cat = anns.category + if (!category_ids.include?(cat.id.to_s) rescue false) + category_ids << cat.id.to_s + category_titles << {"title_translations" => cat.title_translations} + end + a["category"] = {"title_translations" => cat.title_translations} anns.bulletin_links.each do |bl| b = {} b["url"] = bl.url diff --git a/app/models/bulletin_feed.rb b/app/models/bulletin_feed.rb index 892fa88..50df796 100644 --- a/app/models/bulletin_feed.rb +++ b/app/models/bulletin_feed.rb @@ -5,6 +5,7 @@ class BulletinFeed field :title, as: :slug_title, type: String, localize: true field :tag_ids, type: Array, default: [] + field :category_ids, type: Array, default: [] before_save do BulletinFeedCache.where(uid: self.uid).destroy end diff --git a/app/views/admin/announcements/_edit_feed_form.html.erb b/app/views/admin/announcements/_edit_feed_form.html.erb index 571b946..ff43193 100644 --- a/app/views/admin/announcements/_edit_feed_form.html.erb +++ b/app/views/admin/announcements/_edit_feed_form.html.erb @@ -12,6 +12,7 @@ <% end %>
+

<%=t(:tags)%>

    <% @module_app.tags.each do |tag| %> @@ -32,6 +33,28 @@
+
+

<%=t(:category)%>

+
+ +
+
<% end %> diff --git a/app/views/admin/announcements/_feed.html.erb b/app/views/admin/announcements/_feed.html.erb index 5db5f4b..c46d6ac 100644 --- a/app/views/admin/announcements/_feed.html.erb +++ b/app/views/admin/announcements/_feed.html.erb @@ -42,6 +42,38 @@ + +
+
+ +
+
+ RSS Feed diff --git a/app/views/admin/announcements/_feed_form.html.erb b/app/views/admin/announcements/_feed_form.html.erb index e7652eb..a3bbe2b 100644 --- a/app/views/admin/announcements/_feed_form.html.erb +++ b/app/views/admin/announcements/_feed_form.html.erb @@ -12,6 +12,7 @@ <% end %>
+

<%=t(:tags)%>

    <% @module_app.tags.each do |tag| %> @@ -32,6 +33,28 @@
+
+

<%=t(:category)%>

+ +
<% end %>