From 75bec0fe3dc14840ed79404492633df6e8d5a1e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E5=8D=9A=E4=BA=9E?= Date: Thu, 8 Dec 2022 23:42:02 +0800 Subject: [PATCH] Fix bug(data split in index). Add paper criteria filter for index page. --- app/controllers/e_papers_controller.rb | 128 +++++++++++++----- .../e_papers/custom_widget_data.html.erb | 10 ++ config/locales/en.yml | 3 +- config/locales/zh_tw.yml | 1 + lib/e_paper/engine.rb | 2 +- modules/e_paper/_latest_slider_aside.html.erb | 4 - .../_latest_slider_full_screen.html.erb | 4 - modules/e_paper/epaper_index1.html.erb | 2 + modules/e_paper/epaper_index2.html.erb | 1 + modules/e_paper/epaper_index2_latest.html.erb | 20 +++ modules/e_paper/info.json | 10 +- 11 files changed, 142 insertions(+), 43 deletions(-) create mode 100644 app/views/e_papers/custom_widget_data.html.erb create mode 100644 modules/e_paper/epaper_index2_latest.html.erb diff --git a/app/controllers/e_papers_controller.rb b/app/controllers/e_papers_controller.rb index 69471cd..e863aeb 100644 --- a/app/controllers/e_papers_controller.rb +++ b/app/controllers/e_papers_controller.rb @@ -1,27 +1,85 @@ class EPapersController < ApplicationController FrontendMethods = ["papers", "topics"] + EmptyImg = "data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=" + EmptyImgUrl = "#{EmptyImg}\" style=\"display: none;" + def self.custom_widget_data + ac = ActionController::Base.new + ac.render_to_string("e_papers/custom_widget_data",:locals=>{:@custom_data_field=>@custom_data_field,:@field_name=>@field_name}) + end def index - topics = EPaperTopic.filter_by_categories.filter_by_tags.desc(:period) - data = topics.collect do |topic| + page_no = OrbitHelper.page_number + data_count = OrbitHelper.page_data_count + page = (OrbitHelper.page rescue Page.where(:url=>params[:url]).first) + page_layout = page.layout + custom_data_field = page.custom_data_field + if custom_data_field + criteria_id = (custom_data_field["criteria_id"] || "all" rescue "all") + epaper_topics = nil + if criteria_id == "all" + epaper_topics = EPaperTopic.all + else + criteria = PaperCriteria.where(:id => criteria_id).first + epaper_topics = criteria.epaper_topics + end + else + epaper_topics = EPaperTopic.all + criteria = nil + end + topics = epaper_topics.filter_by_categories.filter_by_tags.desc(:period).page(page_no).per(data_count) + total_pages = topics.total_pages + page_url = page.get_url rescue page.url + if page_layout.include?("_latest") + topics_group = topics.group_by(&:category) + data = topics_group.collect do |category, topics| + category_title = (category ? category.title : "") + topics_data = topics.collect do |topic| + { + "title" => topic.title, + "criteria_title" => topic.criteria_title, + "link_to_show" => OrbitHelper.url_to_show(topic.to_param), + "description" => topic.description, + "img_url" => topic.image.url || EmptyImgUrl, + "img_url_thumb" => topic.image.thumb.url || EmptyImgUrl, + "category" => category_title, + "category_title" => category_title, + "publish_date" => topic.period + } + end + { + "category_title" => category_title, + "category_link" => "#{page_url}?method=topics&category=#{category.id.to_s}", + "topics" => topics_data + } + end { - "title" => topic.title, - "criteria_title" => topic.criteria_title, - "link_to_show" => OrbitHelper.url_to_show(topic.to_param), - "description" => topic.description, - "img_url" => topic.image.url, - "img_url_thumb" => topic.image.thumb.url, - "category" => (topic.category.title rescue ""), - "category_title" => (topic.category.title rescue ""), - "publish_date" => topic.period + "categories" => data, + "extras" => { + + }, + "total_pages" => total_pages + } + else + data = topics.to_a.collect do |topic| + { + "title" => topic.title, + "criteria_title" => topic.criteria_title, + "link_to_show" => OrbitHelper.url_to_show(topic.to_param), + "description" => topic.description, + "img_url" => topic.image.url || EmptyImgUrl, + "img_url_thumb" => topic.image.thumb.url || EmptyImgUrl, + "category" => (topic.category.title rescue ""), + "category_title" => (topic.category.title rescue ""), + "publish_date" => topic.period + } + end + { + "topics" => data, + "extras" => { + + }, + "total_pages" => total_pages } end - { - "topics" => data, - "extras" => { - - }, - "total_pages" => (topics.count * 1.0 / OrbitHelper.page_data_count).ceil - } end def papers @@ -58,8 +116,8 @@ class EPapersController < ApplicationController "content" => epaper.content, "publish_date" => epaper.period, "description" => epaper.description, - "image_url" => epaper.image.url, - "image_thumb_url" => epaper.image.thumb.url, + "image_url" => epaper.image.url || EmptyImgUrl, + "image_thumb_url" => epaper.image.thumb.url || EmptyImgUrl, "title" => epaper.title, "category_title" => epaper.category.title, "criteria_title" => epaper.criteria_title, @@ -71,11 +129,17 @@ class EPapersController < ApplicationController def topics params = OrbitHelper.params - criteria = PaperCriteria.where(:uid => params[:uid]).first - if params["category"].present? - papers = criteria.epaper_topics.where(:category_id => params["category"]).group_by(&:category) + if params[:uid].present? + criteria = PaperCriteria.where(:uid => params[:uid]).first + return if criteria.nil? + epaper_topics = criteria.epaper_topics else - papers = criteria.epaper_topics.group_by(&:category) + epaper_topics = EPaperTopic.all + end + if params["category"].present? + papers = epaper_topics.where(:category_id => params["category"]).group_by(&:category) + else + papers = epaper_topics.group_by(&:category) end data = [] papers_sorted = get_all_categories.map do |v| @@ -92,8 +156,8 @@ class EPapersController < ApplicationController "title" => topic.title, "link_to_show" => OrbitHelper.url_to_show(topic.to_param), "description" => topic.description, - "img_url" => topic.image.url, - "img_url_thumb" => topic.image.thumb.url, + "img_url" => topic.image.url || EmptyImgUrl, + "img_url_thumb" => topic.image.thumb.url || EmptyImgUrl, "category" => category.title } end @@ -151,8 +215,8 @@ class EPapersController < ApplicationController "title" => topic.title, "link_to_show" => OrbitHelper.widget_item_url(topic.to_param), "description" => topic.description, - "img_url" => topic.image.url, - "img_url_thumb" => topic.image.thumb.url, + "img_url" => topic.image.url || EmptyImgUrl, + "img_url_thumb" => topic.image.thumb.url || EmptyImgUrl, "category" => (topic.category.title rescue nil), "link_to_show_wise" => OrbitHelper.widget_more_url + "/" + topic.to_param } @@ -183,8 +247,8 @@ class EPapersController < ApplicationController "title" => topic.title, "link_to_show" => OrbitHelper.widget_item_url(topic.to_param), "description" => topic.description, - "img_url" => topic.image.url, - "img_url_thumb" => topic.image.thumb.url, + "img_url" => topic.image.url || EmptyImgUrl, + "img_url_thumb" => topic.image.thumb.url || EmptyImgUrl, "category" => (category.title rescue nil) } end @@ -220,8 +284,8 @@ class EPapersController < ApplicationController "title" => topic.title, "link_to_show" => OrbitHelper.widget_item_url(topic.to_param), "description" => topic.description, - "img_url" => topic.image.url, - "img_url_thumb" => topic.image.thumb.url, + "img_url" => topic.image.url || EmptyImgUrl, + "img_url_thumb" => topic.image.thumb.url || EmptyImgUrl, "category" => (category.title rescue nil) } end diff --git a/app/views/e_papers/custom_widget_data.html.erb b/app/views/e_papers/custom_widget_data.html.erb new file mode 100644 index 0000000..8a03219 --- /dev/null +++ b/app/views/e_papers/custom_widget_data.html.erb @@ -0,0 +1,10 @@ +<% if @field_name == "page" %> +
+
+ +
+ <%= select_tag("#{@field_name}[custom_data_field][criteria_id]", options_for_select(([[t("e_paper.all_criteria"), "all"]] + PaperCriteria.all.desc(:start_date).map{|criteria| [criteria.title, criteria.id.to_s]}), (@custom_data_field["criteria_id"] rescue nil)), :id=>"criteria_id" )%> +
+
+
+<% end %> \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 72ee688..bbfa445 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -4,6 +4,7 @@ en: restful_actions: batch_delete_subscribers: "Batch Delete Subscribers" e_paper: + all_criteria: All Issue show_progress: "Show Progress" delete_subscribers_hint2: "Delete Subscribers below forever." delete_subscribers_hint1: "Do you realy want to delete Subscribers you added forever?" @@ -32,7 +33,7 @@ en: published: "Published" subscribers: Subscribers test_mail: Send Test Email - paper_criteria: ePaper Issue + paper_criteria: EPaper Issue criteria_title: Issue Title date_span: Article Date Range new_criteria: New Issue diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml index 835ef0b..7340f9d 100644 --- a/config/locales/zh_tw.yml +++ b/config/locales/zh_tw.yml @@ -4,6 +4,7 @@ zh_tw: restful_actions: batch_delete_subscribers: "批次刪除訂閱者" e_paper: + all_criteria: 所有電子報 show_progress: "顯示進度" delete_subscribers_hint2: "永久刪除以下訂閱者" delete_subscribers_hint1: "您確定真的要永久刪除所選的訂閱者嗎?" diff --git a/lib/e_paper/engine.rb b/lib/e_paper/engine.rb index 352127f..540453e 100644 --- a/lib/e_paper/engine.rb +++ b/lib/e_paper/engine.rb @@ -18,7 +18,7 @@ module EPaper base_url File.expand_path File.dirname(__FILE__) #widget_methods ["criteria_list","category_wise_articles","latest_criteria", "latest_slider", "subscribe"] widget_methods ["widget"] - widget_settings [{"data_count"=>30}] + widget_settings [{"data_count"=>30, "enable_custom_widget_data"=>true}] taggable "EPaperCriteria" categorizable authorizable diff --git a/modules/e_paper/_latest_slider_aside.html.erb b/modules/e_paper/_latest_slider_aside.html.erb index d9650ac..967512e 100644 --- a/modules/e_paper/_latest_slider_aside.html.erb +++ b/modules/e_paper/_latest_slider_aside.html.erb @@ -1,7 +1,3 @@ -<%= javascript_include_tag "plugin/owl.carousel.min.js"%> - - -