99 lines
3.9 KiB
Ruby
99 lines
3.9 KiB
Ruby
|
module GreetingCardSettingConcern
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
included do
|
||
|
self.field :email_regex_enable, type: Boolean, default: false
|
||
|
self.field :email_regex, type: String, default: '\A[^@\s]+@([^@.\s]+\.)+[^@.\s]+\z'
|
||
|
self.field :only_logged_in_users, type: Boolean, default: false
|
||
|
self.field :validate_enable, type: Boolean, default: false
|
||
|
self.field :must_verify_email, type: Boolean, default: false
|
||
|
self.field :validation_email_content, type: String, localize: true
|
||
|
|
||
|
self.field :tmp_sort_number, type: Hash, default: {} # For Frontend
|
||
|
self.field :sort_number, type: Hash, default: {}
|
||
|
self.field :default_setting, type: Hash,default: {title:true,greeting_card_category_id: true,name: true,sender_mail: true,recipients: true,greetings: true,card: true,sending_time: true,recaptcha: true,agree_show: true,agree_usage: true}
|
||
|
self.field :default_setting_required, type: Hash,default: {title:true,greeting_card_category_id: true,name: true,sender_mail: true,recipients: true,greetings: true,card: true,sending_time: true,recaptcha: true,agree_show: false,agree_usage: true}
|
||
|
self.field :default_setting_field_name, type: Hash,default: {}
|
||
|
self.field :default_setting_prompt_word, type: Hash,default: {}
|
||
|
|
||
|
self.field :custom_fields, type: Hash,default: {}
|
||
|
self.field :usage_rule, type: String, default: ''
|
||
|
self.field :title_layout, type: Integer, default: 0
|
||
|
|
||
|
self.has_many :greeting_card_images, :autosave => true, :dependent => :destroy
|
||
|
self.accepts_nested_attributes_for :greeting_card_images, :allow_destroy => true
|
||
|
|
||
|
self.before_save do
|
||
|
unless @skip_callback
|
||
|
if self.sort_number_changed?
|
||
|
self.sort_number = self.sort_number.map{|k,v| [k,v.to_i]}.sort_by{|k,v| v}.to_h
|
||
|
end
|
||
|
@custom_fields_changed = self.custom_fields_changed?
|
||
|
if @custom_fields_changed
|
||
|
@delete_custom_fields = self.custom_fields.select{|k,v| v['delete'] == true}.keys
|
||
|
@delete_custom_fields.each{|f| self.sort_number.delete(f)}
|
||
|
self.custom_fields = self.custom_fields.select{|k,v| v['delete'] != true}
|
||
|
end
|
||
|
self.recalc_sort(false)
|
||
|
end
|
||
|
true
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def recalc_sort(save_flag=true)
|
||
|
self.tmp_sort_number = GreetingCardSetting.get_sort_number_only(true, self, true).map.with_index{|(k,v), i| [k,i]}.to_h
|
||
|
self.save if save_flag
|
||
|
end
|
||
|
|
||
|
def get_cache_sort_number #For Frontend
|
||
|
if self.tmp_sort_number.blank?
|
||
|
self.recalc_sort
|
||
|
end
|
||
|
self.tmp_sort_number
|
||
|
end
|
||
|
|
||
|
def default_field_name(k, locale=I18n.locale.to_s, use_checkbox_trans=false)
|
||
|
I18n.with_locale(locale) do
|
||
|
if use_checkbox_trans && ['agree_show','agree_usage'].include?(k.to_s)
|
||
|
I18n.t("greeting_card.#{k}_checkbox")
|
||
|
else
|
||
|
if ['serial_number','situation','ip'].include?(k)
|
||
|
I18n.t("greeting_card.#{k}")
|
||
|
else
|
||
|
I18n.t("mongoid.attributes.greeting_card_record.#{k}")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def field_name(k, locale=I18n.locale.to_s, use_checkbox_trans=false)
|
||
|
tmp = self.default_setting_field_name[k]
|
||
|
(tmp && tmp[locale]) ? tmp[locale] : self.default_field_name(k, locale, use_checkbox_trans)
|
||
|
end
|
||
|
|
||
|
def prompt_word(k,locale=I18n.locale.to_s,use_checkbox_trans=false)
|
||
|
tmp = self.default_setting_prompt_word[k]
|
||
|
(tmp&&tmp[locale]) ? tmp[locale] : self.field_name(k,locale)
|
||
|
end
|
||
|
|
||
|
def field_name_translations(k)
|
||
|
I18n.available_locales.map{|v| [v.to_s,self.field_name(k,v.to_s)]}.to_h
|
||
|
end
|
||
|
|
||
|
def prompt_word_translations(k)
|
||
|
I18n.available_locales.map{|v| [v.to_s,self.prompt_word(k,v.to_s)]}.to_h
|
||
|
end
|
||
|
|
||
|
def is_required(k)
|
||
|
self.default_setting_required[k]
|
||
|
end
|
||
|
|
||
|
def get_email_regex(frontend=false)
|
||
|
tmp = self.email_regex
|
||
|
if tmp && frontend
|
||
|
tmp = tmp.gsub("\\A","^").gsub("\\z","$").gsub("\\","\\\\\\\\")
|
||
|
end
|
||
|
tmp = nil if !(self.email_regex_enable) || ((self.default_setting[:mail] == false) rescue false)
|
||
|
tmp
|
||
|
end
|
||
|
end
|