diff --git a/app/controllers/admin/asks_controller.rb b/app/controllers/admin/asks_controller.rb index 0207c36..a8a1906 100644 --- a/app/controllers/admin/asks_controller.rb +++ b/app/controllers/admin/asks_controller.rb @@ -426,6 +426,7 @@ class Admin::AsksController < OrbitAdminController param_clone = param.clone param_clone['default_setting'].each { |k, v| param_clone['default_setting'][k] = (v == 'true'? true : false) if param_clone['default_setting'][k].class==String} param_clone.delete('custom_fields') + param_clone.delete('email_regex') custom_fields = ask_setting['custom_fields'].clone params_custom_fields = (params.require(collection_name).require('custom_fields') rescue {}) params_custom_fields.each do |k,v| diff --git a/app/controllers/asks_controller.rb b/app/controllers/asks_controller.rb index 2610e26..7d5239b 100644 --- a/app/controllers/asks_controller.rb +++ b/app/controllers/asks_controller.rb @@ -39,10 +39,12 @@ class AsksController < ApplicationController csrf_value = OrbitHelper.request.session[:_csrf_token] || SecureRandom.base64(32) token_tag = hidden_field_tag('authenticity_token',csrf_value) switch_form = cal_switch_form(ask_settings,categories,token_tag,referer_url) + email_regex = @default_ask_setting.email_regex_enable ? @default_ask_setting.email_regex.gsub("\\A","^").gsub("\\z","$") : nil { 'fields' => defalt_fields, 'extras'=>{ - 'switch_form' => switch_form + 'switch_form' => switch_form, + 'email_regex' => email_regex } } else @@ -141,6 +143,7 @@ class AsksController < ApplicationController switch_form = cal_switch_form(ask_settings,categories,token_tag,referer_url) tags = module_app.tags ask_question = AskQuestion.new(id: nil) + email_regex = @default_ask_setting.email_regex_enable ? @default_ask_setting.email_regex.gsub("\\A","^").gsub("\\z","$") : nil { 'layout_type' => 'index', 'ask_question' => ask_question, @@ -149,7 +152,8 @@ class AsksController < ApplicationController 'module_app' => module_app, 'switch_form' => switch_form, 'ask_setting' => ask_setting, - 'default_ask_setting' => @default_ask_setting + 'default_ask_setting' => @default_ask_setting, + 'email_regex' => email_regex } elsif @layout_type == 'published_index' page_number = OrbitHelper.page_number.to_i @@ -178,10 +182,15 @@ class AsksController < ApplicationController temp_params = create_params all_to_save = [] ask_setting = AskCategorySetting.where(category_id: params['ask_question']['category_id']).first + email_regex = nil if ask_setting.nil? ask_setting = AskSetting.first ask_setting = AskSetting.create() if ask_setting.nil? + email_regex = ask_setting.email_regex + else + email_regex = AskSetting.first.email_regex rescue nil end + email_regex = nil if !(ask_setting.email_regex_enable) || !(ask_setting.default_setting['mail']) ask_setting.custom_fields.select{|k,v| v['type']=='file' || v['type']=='image'}.each do |k,v| file = temp_params['custom_values'][k] if !file.blank? @@ -199,7 +208,7 @@ class AsksController < ApplicationController temp_params['custom_values'][to_save[0]] = [temp_params['custom_values'][to_save[0]].original_filename ,to_save[1].file.url] end end - if flag + if (email_regex ? ::Regexp.new(email_regex).match?(temp_params["mail"].to_s) : true) && flag @ask_question.update_attributes(temp_params) build_email(@ask_question) redirect_to "#{params[:referer_url]}?method=thank" @@ -346,7 +355,7 @@ class AsksController < ApplicationController " end.join - "