diff --git a/app/controllers/admin/asks_controller.rb b/app/controllers/admin/asks_controller.rb index 6a4f6cc..9a90693 100644 --- a/app/controllers/admin/asks_controller.rb +++ b/app/controllers/admin/asks_controller.rb @@ -389,7 +389,7 @@ class Admin::AsksController < OrbitAdminController temp_params['custom_values'][to_save[0]] = [temp_params['custom_values'][to_save[0]].original_filename ,to_save[1].file.url] end end - + temp_params = temp_params.merge({reviewer: current_user.member_profile, review_time: DateTime.now}) @ask_question.update_attributes(temp_params) if @ask_question.send_email build_email(@ask_question) diff --git a/app/controllers/asks_controller.rb b/app/controllers/asks_controller.rb index b7348cd..79833a6 100644 --- a/app/controllers/asks_controller.rb +++ b/app/controllers/asks_controller.rb @@ -255,7 +255,6 @@ class AsksController < ApplicationController end end end - puts "flag", flag flag = !ask_setting.default_setting['recaptcha'] || gotcha_valid? if flag all_to_save.each do |to_save| @@ -291,7 +290,8 @@ class AsksController < ApplicationController email_er.email_id = email.id email_er.save - @group_mail = email_er.email_address + @group_mail = email_er.mail + @manager_emails = email_er.reviewer_emails @mail_sentdate = DateTime.now site = current_site rescue Site.first @@ -300,13 +300,14 @@ class AsksController < ApplicationController if host_url == "http://" host_url = request.protocol + request.host_with_port end + mail_subject = mail_from+" #{t('ask.new_question')}:" email_er.email.update_attributes( :mail_lang=> site.default_locale, :create_user=>(current_user rescue nil), :mail_sentdate=>@mail_sentdate, :module_app=>@module_app, :mail_to=>@group_mail, - :mail_subject=>mail_from+" #{t('ask.new_question')}:", + :mail_subject=>mail_subject, :template=>'asks/email', :template_data=>{ # "title" => email_er.title, @@ -321,8 +322,35 @@ class AsksController < ApplicationController "ask_question_id" => email_er.id.to_s, "site_host" => host_url, "usage_rule" => @usage_rule - } + }, + :mail_reply_to => (@manager_emails.empty? ? nil : @manager_emails) ) + if !@manager_emails.empty? + Email.new( + :mail_lang=> site.default_locale, + :create_user=>(current_user rescue nil), + :mail_sentdate=>@mail_sentdate, + :module_app=>@module_app, + :mail_to=>@group_mail, + :mail_subject=>mail_subject+" #{@group_mail}", + :template=>'asks/email', + :template_data=>{ + # "title" => email_er.title, + "name" => email_er.name, + "identity" => email_er[:identity], + "mail" => email_er.mail, + "phone" => email_er.phone, + # "fax" => email_er.fax, + # "content" => email_er.content + "appointment" => email_er.appointment, + "disp_fields_infos" => @disp_fields_infos, + "ask_question_id" => email_er.id.to_s, + "site_host" => host_url, + "usage_rule" => @usage_rule, + "edit_url" => "#{host_url}/#{site.default_locale}/admin/asks/#{email_er.id}/edit" + } + ).save + end # email_er.email.deliver end @@ -357,7 +385,7 @@ class AsksController < ApplicationController has_ask_category_id = false disp_fields_infos.each do |field, info| if field.start_with?("default@") - k = field[8..-1] + k = is_cat_record ? field : field[8..-1] v = ask_setting.custom_fields[k] if v field_name = info['trans'] diff --git a/app/models/ask_admin.rb b/app/models/ask_admin.rb index eda70d6..b0847dd 100644 --- a/app/models/ask_admin.rb +++ b/app/models/ask_admin.rb @@ -3,4 +3,5 @@ class AskAdmin include Mongoid::Timestamps field :email, type: String + has_and_belongs_to_many :categories end \ No newline at end of file diff --git a/app/models/ask_category_setting.rb b/app/models/ask_category_setting.rb index 3978e31..97dcb10 100644 --- a/app/models/ask_category_setting.rb +++ b/app/models/ask_category_setting.rb @@ -136,10 +136,10 @@ class AskCategorySetting end def get_email_regex(frontend=false) tmp = self.email_regex - if tmp + if tmp && frontend tmp = tmp.gsub("\\A","^").gsub("\\z","$").gsub("\\","\\\\\\\\") end - tmp = nil if !(self.email_regex_enable) || (self.application_form_signup_field_sets.where(:field_name=>'email').pluck(:disabled)[0] rescue false) + tmp = nil if !(self.email_regex_enable) || ((self.default_setting[:mail] == false) rescue false) tmp end field :tmp_sort_number, type: Hash, default: {} # For Frontend diff --git a/app/models/ask_list_setting.rb b/app/models/ask_list_setting.rb index 4c8e1b8..876afae 100644 --- a/app/models/ask_list_setting.rb +++ b/app/models/ask_list_setting.rb @@ -1,15 +1,17 @@ class AskListSetting include Mongoid::Document include Mongoid::Timestamps - DefaultFields = ['serial_number','situation','ask_category_id','title','name','sex','mail','phone','appointment','created_at','ip'] - DefaultEnabled = ['serial_number','situation','ask_category_id','title','name','phone','appointment','created_at','ip'] + DefaultFields = ['serial_number','situation','ask_category_id','title','name','sex','mail','phone','appointment','created_at','ip','reviewer','review_time'] + DefaultEnabled = ['serial_number','situation','ask_category_id','title','name','phone','appointment','created_at','ip','reviewer','review_time'] field :default_fields, type: Array, default: [] field :custom_fields, type: Array, default: [] field :category_id def default_fields tmp = super() - return tmp if tmp.length>0 - self.class::DefaultEnabled + if tmp.empty? + tmp = self.class::DefaultEnabled + end + return tmp end def custom_fields_list locale = I18n.locale diff --git a/app/models/ask_question.rb b/app/models/ask_question.rb index 3530f5e..91fcc2c 100644 --- a/app/models/ask_question.rb +++ b/app/models/ask_question.rb @@ -26,6 +26,10 @@ class AskQuestion field :custom_values, type: Hash,default: {} field :agree_show,type: Boolean,default: false field :agree_usage,type: Boolean,default: false + + field :review_time, type: DateTime + belongs_to :reviewer , :class_name=>"MemberProfile", :foreign_key => :reviewer_id + # validates_presence_of :name, :identity, :mail, :title, :content before_create do last_serial_number = AskSetting.update_last_serial_number @@ -34,8 +38,8 @@ class AskQuestion def email mail = Email.find(self.email_id) rescue nil end - def email_address - email_address = AskAdmin.pluck(:email).select{|s| s.present?}.uniq rescue [] + def reviewer_emails + email_address = AskAdmin.or(:category_ids.in => [self.category_id, [], nil]).pluck(:email).select{|s| s.present?}.uniq rescue [] authorizes = Authorization.where(:module_app_id=>ModuleApp.where(:key=>'ask').first.id).to_a rescue [] authorizes.each do |a| if a.category_id @@ -50,7 +54,6 @@ class AskQuestion a.destroy end end - email_address = email_address +[self.mail] if !self.mail.blank? email_address = email_address.flatten email_address.uniq end diff --git a/app/models/ask_setting.rb b/app/models/ask_setting.rb index 8936df2..bb890ad 100644 --- a/app/models/ask_setting.rb +++ b/app/models/ask_setting.rb @@ -192,7 +192,11 @@ class AskSetting tmp_locales = I18n.available_locales.map{|l| l.to_s} tmp_locales = [locale] + (tmp_locales - [locale]) ask_setting.custom_fields.each do |k,v| - tmp_k = (k.start_with?('default@') ? k : "default@#{k}") + tmp_k = k + if !k.start_with?('default@') + prefix = is_cat_record ? "custom@#{cat.id}@" : 'default@' + tmp_k = "#{prefix}#{k}" + end disp_fields_infos[tmp_k] = sort_number[tmp_k] end ask_category_settings = [] @@ -202,15 +206,15 @@ class AskSetting ask_category_settings = AskCategorySetting.enabled.to_a end ask_category_settings.each do |c| - cat = Category.find(c.category_id) rescue nil - if cat.nil? + category = Category.find(c.category_id) rescue nil + if category.nil? c.destroy next end c.custom_fields.each do |k,v| next if k.start_with?('default@') tmp_k = "custom@#{c.id}@#{k}" - cat_title = cat.title rescue "" + cat_title = category.title rescue "" disp_fields_infos[tmp_k] = sort_number[tmp_k] end end @@ -296,7 +300,11 @@ class AskSetting end end next if trans.class != String - tmp_k = (k.start_with?('default@') ? k : "default@#{k}") + tmp_k = k + if !k.start_with?('default@') + prefix = is_cat_record ? "custom@#{cat.id}@" : 'default@' + tmp_k = "#{prefix}#{k}" + end disp_fields_infos[tmp_k] = {"trans"=>trans,"sort_number"=>sort_number[tmp_k],"key"=>k,"type"=>v["type"],"options"=>v["options"],"instructions"=>v["instructions"]} end ask_category_settings = [] @@ -306,8 +314,8 @@ class AskSetting ask_category_settings = AskCategorySetting.enabled.to_a end ask_category_settings.each do |c| - cat = Category.find(c.category_id) rescue nil - if cat.nil? + category = Category.find(c.category_id) rescue nil + if category.nil? c.destroy next end @@ -322,7 +330,7 @@ class AskSetting next if trans.class != String next if k.start_with?('default@') tmp_k = "custom@#{c.id}@#{k}" - cat_title = cat.title rescue "" + cat_title = category.title rescue "" disp_fields_infos[tmp_k] = {"trans"=>"#{cat_title}-#{trans}","sort_number"=>sort_number[tmp_k],"key"=>k,"type"=>v["type"],"options"=>v["options"],"instructions"=>v["instructions"]} end end @@ -349,10 +357,10 @@ class AskSetting end def get_email_regex(frontend=false) tmp = self.email_regex - if tmp + if tmp && frontend tmp = tmp.gsub("\\A","^").gsub("\\z","$").gsub("\\","\\\\\\\\") end - tmp = nil if !(self.email_regex_enable) || (self.application_form_signup_field_sets.where(:field_name=>'email').pluck(:disabled)[0] rescue false) + tmp = nil if !(self.email_regex_enable) || ((self.default_setting[:mail] == false) rescue false) tmp end end diff --git a/app/views/admin/ask_admins/_ask_admin_form.html.erb b/app/views/admin/ask_admins/_ask_admin_form.html.erb new file mode 100644 index 0000000..ce0b01e --- /dev/null +++ b/app/views/admin/ask_admins/_ask_admin_form.html.erb @@ -0,0 +1,42 @@ +