Merge branch 'master' into 'master'

Updated!

See merge request spen/seminar!21
This commit is contained in:
chiu 2021-10-26 14:08:45 +00:00
commit 1043304d20
8 changed files with 101 additions and 25503 deletions

View File

@ -37,28 +37,45 @@ class SeminarsController < ApplicationController
template_path = content_style_info["template"] template_path = content_style_info["template"]
template_info = content_style_info["info"] template_info = content_style_info["info"]
custom_footer = seminar_template_setting.footer_info custom_footer = seminar_template_setting.footer_info
if seminar_template_setting.seminar_banner_images.count != 0 if seminar_template_setting.seminar_banner_images.count != 0 || background_style_info["default_logo"]
banner_title = seminar.title banner_title = seminar.title
external_link = prefix_url + "/home" external_link = prefix_url + "/home"
images = seminar_template_setting.seminar_banner_images.map.with_index do |image,i| images = []
caption = (i == 0 ? '<div class="cycle-overlay"></div><div class="cycle-pager"></div>' : "") if seminar_template_setting.seminar_banner_images.count == 0
klass = (i == 0 ? "active" : "") images = [{
alt_title = image.description "image_link" => background_style_info["default_logo"],
context = "" "image_alt" => banner_title,
image_link = image.file.url "title" => "",
{ "alt_title" => banner_title,
"image_link" => image_link, "class" => "active",
"image_alt" => alt_title, "height" => 0,
"title" => "", "width" => 0,
"alt_title" => alt_title, "caption" => '<div class="cycle-overlay"></div><div class="cycle-pager"></div>',
"class" => klass, "context" => "",
"height" => 0, "link" => external_link,
"width" => 0, "target" => ""
"caption" => caption, }]
"context" => context, else
"link" => external_link, images = seminar_template_setting.seminar_banner_images.map.with_index do |image,i|
"target" => "" caption = (i == 0 ? '<div class="cycle-overlay"></div><div class="cycle-pager"></div>' : "")
} klass = (i == 0 ? "active" : "")
alt_title = image.description
context = ""
image_link = image.file.url
{
"image_link" => image_link,
"image_alt" => alt_title,
"title" => "",
"alt_title" => alt_title,
"class" => klass,
"height" => 0,
"width" => 0,
"caption" => caption,
"context" => context,
"link" => external_link,
"target" => ""
}
end
end end
custom_banner = { custom_banner = {
"extras" => { "extras" => {

View File

@ -473,6 +473,22 @@ class SeminarMain
no_dup_flag = new_object.send(f).present? no_dup_flag = new_object.send(f).present?
elsif clone_target.relations[f].macro == :has_many elsif clone_target.relations[f].macro == :has_many
no_dup_flag = new_object.send(f).to_a.count != 0 no_dup_flag = new_object.send(f).to_a.count != 0
elsif clone_target.relations[f].macro == :embeds_many #Fix localize fields
if new_object.send(f).to_a.count != 0
need_fix_fields = new_object.send(f).to_a[0].fields.select{|k,v| (v.options[:localize] rescue false)}.keys
locale = I18n.locale.to_s
embeded_records = new_object.send(f).map do |embeded_record|
need_fix_fields.each do |f|
if (embeded_record[f][locale].class != String rescue false)
embeded_record.send("#{f}_translations=",embeded_record[f][locale])
else
embeded_record.send("#{f}_translations=",embeded_record[f])
end
end
embeded_record
end
new_object.send("#{f}=",embeded_records)
end
end end
if clone_target.relations[f].macro == :belongs_to || clone_target.relations[f].class_name == "MemberProfile" if clone_target.relations[f].macro == :belongs_to || clone_target.relations[f].class_name == "MemberProfile"
if @records_all["#{f}_ids"].nil? if @records_all["#{f}_ids"].nil?

View File

@ -10,10 +10,46 @@ class SeminarTemplateSetting
field :website_title, type: String , default: "", localize: true field :website_title, type: String , default: "", localize: true
field :footer_info, type: String , default: "", localize: true field :footer_info, type: String , default: "", localize: true
field :introduction, type: String , default: "", localize: true field :introduction, type: String , default: "", localize: true
field :background_style, type: String , default: "" field :background_style, type: String , default: "1"
field :content_style, type: String , default: "" field :content_style, type: String , default: "1"
has_many :seminar_banner_images, :autosave => true, :dependent => :destroy has_many :seminar_banner_images, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :seminar_banner_images, :allow_destroy => true accepts_nested_attributes_for :seminar_banner_images, :allow_destroy => true
after_create do
if self.seminar_main
@seminar_page_root = Page.where(:parent_page_id=>self.seminar_main_id).first
available_locales = Site.first.in_use_locales rescue I18n.available_locales
available_locales = available_locales.map{|l| l.to_s}
if @seminar_page_root.nil?
@seminar_page_root = Page.create(:parent_page_id=>self.seminar_main_id,:module=>"seminars_home",:name_translations=>@seminar.title_translations,:url=>"/home",:page_id=>"home",:enabled_for=>available_locales,:bind_uid=>@seminar.uid,:bind_module_app=>"seminar",:bind_model=>"SeminarMain",:menu_enabled_for=>available_locales)
else
@seminar_page_root.update(:name_translations=>@seminar.title_translations,:module=>"seminars_home",:url=>"/home",:page_id=>"home",:enabled_for=>available_locales,:bind_uid=>@seminar.uid,:bind_module_app=>"seminar",:bind_model=>"SeminarMain",:menu_enabled_for=>available_locales)
end
pages_info = {"introduction" => "seminars_page",
"news" => "custom_announcement",
"registration" => "seminar_registration",
"submission" => "seminar_submission",
"album" => "custom_gallery"}
relation_model = {"news" => "CustomBulletin","album"=>"CustomAlbum"}
pages_info.each do |page_id , page_module|
seminar_page = @seminar_page_root.child_page.where(:page_id=>page_id).first
page_trans = available_locales.map{|l| [l,I18n.with_locale(l){I18n.t("seminar.menu.#{page_id}")}]}.to_h
available_locales_tmp = available_locales.clone
if relation_model[page_id]
relation = relation_model[page_id].constantize rescue nil
if relation
if relation.where(:bind_uid=>@seminar.uid).count == 0
available_locales_tmp = []
end
end
end
if seminar_page.nil?
seminar_page = @seminar_page_root.child_page.create(:name_translations=>page_trans,:page_id=>page_id,:url=>"/home/#{page_id}",:enabled_for=>available_locales_tmp,:module=>page_module,:menu_enabled_for=>available_locales_tmp)
else
seminar_page.update(:name_translations=>page_trans,:page_id=>page_id,:url=>"/home/#{page_id}",:module=>page_module)
end
end
end
end
after_save do after_save do
if self.display_menu_changed? if self.display_menu_changed?
@seminar_page_root = Page.where(:parent_page_id=>self.seminar_main_id).first @seminar_page_root = Page.where(:parent_page_id=>self.seminar_main_id).first
@ -45,10 +81,15 @@ class SeminarTemplateSetting
image_file = image_file.select{|f| File.basename(f).include?(folder_name)}.first image_file = image_file.select{|f| File.basename(f).include?(folder_name)}.first
key = File.basename(folder) key = File.basename(folder)
image_path = "/assets/seminar/background_style/#{key}/#{File.basename(image_file) rescue ''}" image_path = "/assets/seminar/background_style/#{key}/#{File.basename(image_file) rescue ''}"
@@background_style_infos[key] = { default_logo = nil
if File.exist?("#{folder}logo.jpg")
default_logo = "#{folder}logo.jpg".split("app")[1..-1].join("app").sub("/stylesheets/","/")
end
@@background_style_infos[key] = {
"image"=>image_path, "image"=>image_path,
"css"=> get_folder_content(folder,"css"), "css"=> get_folder_content(folder,"css"),
"js"=> get_folder_content(folder,"js") "js"=> get_folder_content(folder,"js"),
"default_logo"=> default_logo
} }
end end
@@background_style_infos = @@background_style_infos.sort_by {|k, v| (k.match(/\d+/)[0].to_i rescue 0)}.to_h @@background_style_infos = @@background_style_infos.sort_by {|k, v| (k.match(/\d+/)[0].to_i rescue 0)}.to_h

View File

@ -8,7 +8,8 @@
<% begin %> <% begin %>
<table class="table table-hover table-striped seminar-index"> <table class="table table-hover table-striped seminar-index">
<caption> <caption>
<h3><%= t('seminar.seminar') %></h3> <% page = OrbitHelper.page rescue Page.where(:page_id => params[:page_id]).first %>
<h3><%= page.name rescue t('seminar.seminar') %></h3>
</caption> </caption>
<thead> <thead>
<tr> <tr>