From 0d10389597998e67b059ea30a79368466e382e38 Mon Sep 17 00:00:00 2001 From: Bohung Date: Tue, 11 Jan 2022 23:37:03 +0800 Subject: [PATCH] Add fields display setting for member page. --- .../admin/writing_conferences_controller.rb | 6 ++++ app/models/writing_conference.rb | 24 ++++++++----- app/models/writing_conference_setting.rb | 7 ++++ .../_writing_conference.html.erb | 1 + .../writing_conferences/setting.html.erb | 34 +++++++++++++++++++ config/locales/en.yml | 3 ++ config/locales/zh_tw.yml | 3 ++ config/routes.rb | 3 ++ 8 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 app/models/writing_conference_setting.rb diff --git a/app/controllers/admin/writing_conferences_controller.rb b/app/controllers/admin/writing_conferences_controller.rb index ebb6e08..1733011 100644 --- a/app/controllers/admin/writing_conferences_controller.rb +++ b/app/controllers/admin/writing_conferences_controller.rb @@ -8,6 +8,12 @@ class Admin::WritingConferencesController < OrbitMemberController before_action :need_access_right before_action :allow_admin_only, :only => [:index, :setting] + def update_setting + setting_params = params.require(:writing_conference_setting).permit! + setting_params[:display_fields_in_member_page] = [] if setting_params[:display_fields_in_member_page].nil? + WritingConferenceSetting.update_all(setting_params) + redirect_to admin_writing_conference_setting_path + end def merge_process params['writing_conference_id'].each do |writing_conference_id| writing_conference_ids = writing_conference_id.split('/') diff --git a/app/models/writing_conference.rb b/app/models/writing_conference.rb index 802efb9..56e146c 100644 --- a/app/models/writing_conference.rb +++ b/app/models/writing_conference.rb @@ -76,6 +76,7 @@ class WritingConference def self.get_plugin_datas_to_member(datas) + get_setting page = Page.where(:module => "personal_conference").first rescue nil if !page.nil? && page.custom_string_field == "table" if !page.custom_array_field.blank? @@ -91,13 +92,10 @@ class WritingConference ] end else - fields_to_show = [ - "year", - "paper_title" - ] + fields_to_show = @setting.display_fields_in_member_page.clone + fields_to_show << "paper_title" end - - fields_to_remove = [] + fields_to_remove = [] pd_title = [] @@ -138,6 +136,8 @@ class WritingConference pd_data << {"data_title" => p.duration} when "url" pd_data << { "data_title" => "#{p.url}" } + when "publication_date" + pd_data << { "data_title" => (p.publication_date.strftime(@setting.publication_date_format) rescue "") } else pd_data << { "data_title" => p.send(t) } end @@ -146,6 +146,8 @@ class WritingConference link = OrbitHelper.url_to_plugin_show(p.to_param,'personal_conference') link = (link == "#" ? p.create_link : "#{p.create_link}") pd_data << { "data_title" => link } + elsif t == "publication_date" + pd_data << { "data_title" => (p.publication_date.strftime(@setting.publication_date_format) rescue "") } else pd_data << { "data_title" => p.send(t) } end @@ -187,7 +189,8 @@ class WritingConference end value = value.join(" / ") when "publication_date" - value = self.publication_date.strftime("%Y-%m-%d") rescue "" + get_setting + value = self.publication_date.strftime(@setting.publication_date_format) rescue "" when "abstract" value = nl2br(self.abstract) when "language" @@ -218,7 +221,12 @@ class WritingConference "value"=>value } end - + def get_setting + @setting ||= WritingConferenceSetting.first + end + def self.get_setting + @setting ||= WritingConferenceSetting.first + end protected def add_http diff --git a/app/models/writing_conference_setting.rb b/app/models/writing_conference_setting.rb new file mode 100644 index 0000000..7246490 --- /dev/null +++ b/app/models/writing_conference_setting.rb @@ -0,0 +1,7 @@ +class WritingConferenceSetting + include Mongoid::Document + include Mongoid::Timestamps + Fields_names = ["year","publication_date"] + field :display_fields_in_member_page, :type => Array, :default => ["year"] + field :publication_date_format, :type => String, :default => "%Y-%m-%d" +end \ No newline at end of file diff --git a/app/views/admin/writing_conferences/_writing_conference.html.erb b/app/views/admin/writing_conferences/_writing_conference.html.erb index 5c04059..b736de9 100644 --- a/app/views/admin/writing_conferences/_writing_conference.html.erb +++ b/app/views/admin/writing_conferences/_writing_conference.html.erb @@ -1,3 +1,4 @@ +<% OrbitHelper.set_site_locale(I18n.locale) %> <% @writing_conferences.each do |writing_conference| %> "> <%= writing_conference.year %> diff --git a/app/views/admin/writing_conferences/setting.html.erb b/app/views/admin/writing_conferences/setting.html.erb index b82115a..fad65ba 100644 --- a/app/views/admin/writing_conferences/setting.html.erb +++ b/app/views/admin/writing_conferences/setting.html.erb @@ -15,6 +15,10 @@ .totle span{ font-size: 18px; } + #conference_setting input[type="checkbox"]{ + margin-top: 0; + margin-right: 0.3em; + }
@@ -98,6 +102,36 @@
+ +
+
+

+ <%= t('add')%> + <%= t("personal_conference.page_settings") %> +

+
+ <% @setting = WritingConferenceSetting.first%> + <% @setting = WritingConferenceSetting.create if @setting.nil? %> + <%= form_for @setting, url: admin_writing_conference_update_setting_path, html: {id: 'conference_setting'} do |f| %> +
+
<%= t("personal_conference.display_fields_in_member_page") %>:
+
+ <% WritingConferenceSetting::Fields_names.each do |f| %> + + <% end %> +
+
+
+ +
+ +
+
+
<%= f.submit "Save", :class=>"btn btn-primary btn-small" %>
+ <% end %> +
+
+
diff --git a/config/locales/en.yml b/config/locales/en.yml index faed27c..bd67067 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -4,6 +4,9 @@ en: personal_conference: Conference Paper personal_conference: + publication_date_format: "Publication date format" + page_settings: "Page settings" + display_fields_in_member_page: "Display fields in member page" merge: Merge upload: Upload no_input: No Input diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml index 5bf5d6d..4a1bbcf 100644 --- a/config/locales/zh_tw.yml +++ b/config/locales/zh_tw.yml @@ -3,6 +3,9 @@ zh_tw: module_name: personal_conference: 研討會論文 personal_conference: + publication_date_format: "發表日期顯示格式" + page_settings: "頁面設定" + display_fields_in_member_page: "在會員頁面顯示欄位" merge: "合併" upload: "上傳" no_input: "未輸入" diff --git a/config/routes.rb b/config/routes.rb index fcf23d2..3db9928 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,10 @@ Rails.application.routes.draw do locales = Site.find_by(site_active: true).in_use_locales rescue I18n.available_locales + WritingConferenceSetting.create if WritingConferenceSetting.count == 0 scope "(:locale)", locale: Regexp.new(locales.join("|")) do namespace :admin do + post 'writing_conference_update_setting' => "writing_conferences#update_setting" + patch 'writing_conference_update_setting' => "writing_conferences#update_setting" get 'writing_conference_setting' => "writing_conferences#setting" get 'writing_conferences/download_excel_format' => 'writing_conferences#excel_format' post 'writing_conferences/import_from_excel' => 'writing_conferences#import_from_excel'