Prepare to support ruby 3.3.

This commit is contained in:
邱博亞 2024-02-28 19:22:41 +08:00
parent 7f1bf3be49
commit e8f9eaa722
1 changed files with 198 additions and 196 deletions

View File

@ -1,218 +1,220 @@
module Ask module Ask
class Engine < ::Rails::Engine class Engine < ::Rails::Engine
initializer "ask" do initializer "ask" do
locales = Site.first.in_use_locales rescue [:en,:zh_tw] Rails.application.config.to_prepare do
begin locales = Site.first.in_use_locales rescue [:en,:zh_tw]
t_data0 = locales.collect{|l| Dir["#{ENV['PWD']}/config/locales/#{l.to_s}.yml"]}.flatten.map{|yaml_file| YAML.load(File.read(yaml_file))} begin
t_data1 = Dir["#{Ask::Engine.root}/config/locales/*.yml"].map{|yaml_file| YAML.load(File.read(yaml_file))} t_data0 = locales.collect{|l| Dir["#{ENV['PWD']}/config/locales/#{l.to_s}.yml"]}.flatten.map{|yaml_file| YAML.load(File.read(yaml_file))}
data_item = {} t_data1 = Dir["#{Ask::Engine.root}/config/locales/*.yml"].map{|yaml_file| YAML.load(File.read(yaml_file))}
key_item1 = {} data_item = {}
value_item1 = {} key_item1 = {}
value_item2 = {} value_item1 = {}
t_data0.each do |t_data| value_item2 = {}
v = t_data.values t_data0.each do |t_data|
k = t_data.keys[0] v = t_data.values
key_item1[k] = v[0]['theme'] k = t_data.keys[0]
end key_item1[k] = v[0]['theme']
t_data1.each do |t_data|
v = t_data.values
k = t_data.keys[0]
value_item1[k] = v[0]['ask']['widget']['index']
value_item2[k] = v[0]['ask']['is_published']
end
data_item[key_item1] = [value_item1,value_item2]
rescue => e
puts ['error in ask',e]
end
begin
require File.expand_path('../../../app/models/ask_setting', __FILE__)
require File.expand_path('../../../app/models/ask_list_setting', __FILE__)
require File.expand_path('../../../app/models/ask_category_setting', __FILE__)
require File.expand_path('../../../app/models/ask_setting_index', __FILE__)
if defined?(AskSetting)
ask_setting = AskSetting.first
if ask_setting.nil?
ask_setting = AskSetting.create()
elsif AskSetting.count > 1
AskSetting.all[1..-1].each do |a|
a.destroy
end
end end
if ask_setting.email_regex_enable t_data1.each do |t_data|
AskCategorySetting.all.update_all(email_regex_enable: ask_setting.email_regex_enable,email_regex: ask_setting.email_regex) v = t_data.values
k = t_data.keys[0]
value_item1[k] = v[0]['ask']['widget']['index']
value_item2[k] = v[0]['ask']['is_published']
end end
AskCategorySetting.all.each do |ask_category_setting| data_item[key_item1] = [value_item1,value_item2]
sort_number = ask_category_setting.sort_number rescue => e
have_custom_key = false puts ['error in ask',e]
sort_number.keys.each do |sort_number_key| end
have_default_key ||= sort_number_key.include?("default@default@") begin
have_custom_key ||= sort_number_key.include?("custom@") require File.join(Ask::Engine.root, 'app/models/ask_setting')
end require File.join(Ask::Engine.root, 'app/models/ask_list_setting')
if !have_custom_key require File.join(Ask::Engine.root, 'app/models/ask_category_setting')
new_sort_number = {} require File.join(Ask::Engine.root, 'app/models/ask_setting_index')
sort_number.keys.each do |sort_number_key| if defined?(AskSetting)
new_sort_number_key = sort_number_key ask_setting = AskSetting.first
if sort_number_key.include?("default@default@") if ask_setting.nil?
new_sort_number_key = sort_number_key.sub(/default@/, '') ask_setting = AskSetting.create()
else elsif AskSetting.count > 1
new_sort_number_key = sort_number_key.sub(/default@/, "custom@#{ask_category_setting.id}@") AskSetting.all[1..-1].each do |a|
end a.destroy
new_sort_number[new_sort_number_key] = sort_number[sort_number_key] end
end
if ask_setting.email_regex_enable
AskCategorySetting.all.update_all(email_regex_enable: ask_setting.email_regex_enable,email_regex: ask_setting.email_regex)
end
AskCategorySetting.all.each do |ask_category_setting|
sort_number = ask_category_setting.sort_number
have_custom_key = false
sort_number.keys.each do |sort_number_key|
have_default_key ||= sort_number_key.include?("default@default@")
have_custom_key ||= sort_number_key.include?("custom@")
end
if !have_custom_key
new_sort_number = {}
sort_number.keys.each do |sort_number_key|
new_sort_number_key = sort_number_key
if sort_number_key.include?("default@default@")
new_sort_number_key = sort_number_key.sub(/default@/, '')
else
new_sort_number_key = sort_number_key.sub(/default@/, "custom@#{ask_category_setting.id}@")
end
new_sort_number[new_sort_number_key] = sort_number[sort_number_key]
end
ask_category_setting.sort_number = new_sort_number
ask_category_setting.save
end end
ask_category_setting.sort_number = new_sort_number
ask_category_setting.save
end end
end end
end if defined?(AskListSetting)
if defined?(AskListSetting) ask_list_setting = AskListSetting.first
ask_list_setting = AskListSetting.first if ask_list_setting.nil?
if ask_list_setting.nil? ask_list_setting = AskListSetting.create()
ask_list_setting = AskListSetting.create() elsif AskListSetting.count > 1
elsif AskListSetting.count > 1 AskListSetting.where(:category_id=>nil)[1..-1].each do |a|
AskListSetting.where(:category_id=>nil)[1..-1].each do |a| a.destroy
a.destroy end
end end
end end
end if defined?(AskSettingIndex)
if defined?(AskSettingIndex) if AskSettingIndex.first.nil?
if AskSettingIndex.first.nil? AskSettingIndex.create()
AskSettingIndex.create() elsif AskSettingIndex.count > 1
elsif AskSettingIndex.count > 1 AskSettingIndex.all[1..-1].each do |ask_setting_index|
AskSettingIndex.all[1..-1].each do |ask_setting_index| ask_setting_index.destroy
ask_setting_index.destroy end
end end
end end
end
rescue => e
puts ['AskSetting not found',e]
end
require File.expand_path('../../../app/models/ask_question', __FILE__)
require File.expand_path('app/models/user_action', Rails.root)
def fix_reviewer
ask_question_no_reviewer_len = AskQuestion.where(:id.in => UserAction.where(controller: 'admin/asks', action: 'update').pluck(:request_path).map{|v| v.split('/')[-1]}, :reviewer_id => nil).count
if ask_question_no_reviewer_len==0
return
end
UserAction.where(controller: 'admin/asks', action: 'update').each do |user_action|
user = user_action.user
askquestion_id = user_action.request_path.split('/')[-1]
askquestion = AskQuestion.where(id: askquestion_id).first
if askquestion && user.member_profile_id
askquestion.update_attributes(reviewer_id: user.member_profile_id, review_time: user_action.created_at)
end
end
if defined?(AskListSetting)
AskListSetting.each do |ask_list_setting|
if ask_list_setting.default_fields.length != AskListSetting::DefaultEnabled.length
ask_list_setting.default_fields += ['reviewer', 'review_time']
ask_list_setting.save
end
end
end
end
fix_reviewer
OrbitApp.registration "Ask", :type => "ModuleApp" do
module_label "ask.ask"
base_url File.expand_path File.dirname(__FILE__)
begin
set_keyword_contstraints ['/asks']
rescue => e rescue => e
puts ['the site is too old'] puts ['AskSetting not found',e]
end end
widget_methods ["widget"] require File.join(Ask::Engine.root, 'app/models/ask_question')
widget_settings [{"data_count"=>10}] require File.expand_path('app/models/user_action', Rails.root)
# taggable "AskQuestion" def fix_reviewer
begin ask_question_no_reviewer_len = AskQuestion.where(:id.in => UserAction.where(controller: 'admin/asks', action: 'update').pluck(:request_path).map{|v| v.split('/')[-1]}, :reviewer_id => nil).count
show_option_items data_item if ask_question_no_reviewer_len==0
rescue => e return
puts ['there_was_no_show_option_method',e] end
UserAction.where(controller: 'admin/asks', action: 'update').each do |user_action|
user = user_action.user
askquestion_id = user_action.request_path.split('/')[-1]
askquestion = AskQuestion.where(id: askquestion_id).first
if askquestion && user.member_profile_id
askquestion.update_attributes(reviewer_id: user.member_profile_id, review_time: user_action.created_at)
end
end
if defined?(AskListSetting)
AskListSetting.each do |ask_list_setting|
if ask_list_setting.default_fields.length != AskListSetting::DefaultEnabled.length
ask_list_setting.default_fields += ['reviewer', 'review_time']
ask_list_setting.save
end
end
end
end end
categorizable fix_reviewer
authorizable OrbitApp.registration "Ask", :type => "ModuleApp" do
frontend_enabled module_label "ask.ask"
# data_count 1..10 base_url File.expand_path File.dirname(__FILE__)
begin
set_keyword_contstraints ['/asks']
rescue => e
puts ['the site is too old']
end
widget_methods ["widget"]
widget_settings [{"data_count"=>10}]
# taggable "AskQuestion"
begin
show_option_items data_item
rescue => e
puts ['there_was_no_show_option_method',e]
end
categorizable
authorizable
frontend_enabled
# data_count 1..10
side_bar do side_bar do
head_label_i18n 'ask.ask', icon_class: "icon-lightbulb" head_label_i18n 'ask.ask', icon_class: "icon-lightbulb"
available_for "users" available_for "users"
active_for_controllers (['admin/asks']) active_for_controllers (['admin/asks'])
head_link_path "admin_asks_path" head_link_path "admin_asks_path"
context_link 'ask.all_tickets', context_link 'ask.all_tickets',
:link_path=>"admin_asks_path" , :link_path=>"admin_asks_path" ,
:priority=>1, :priority=>1,
:active_for_action=>{'admin/asks'=>'index'}, :active_for_action=>{'admin/asks'=>'index'},
:available_for => 'users' :available_for => 'users'
# context_link 'tags', # context_link 'tags',
# :link_path=>"admin_module_app_tags_path" , # :link_path=>"admin_module_app_tags_path" ,
# :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}", # :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}",
# :priority=>4, # :priority=>4,
# :active_for_action=>{'admin/ask'=>'tags'}, # :active_for_action=>{'admin/ask'=>'tags'},
# :active_for_tag => 'Ask', # :active_for_tag => 'Ask',
# :available_for => 'managers' # :available_for => 'managers'
context_link 'ask.setting', context_link 'ask.setting',
:link_path=>"setting_admin_asks_path" , :link_path=>"setting_admin_asks_path" ,
:priority=>2, :priority=>2,
:active_for_action=>{'admin/asks'=>'setting'}, :active_for_action=>{'admin/asks'=>'setting'},
:available_for => 'managers' :available_for => 'managers'
context_link 'ask.category_setting', context_link 'ask.category_setting',
:link_path=>"category_setting_admin_asks_path" , :link_path=>"category_setting_admin_asks_path" ,
:priority=>3, :priority=>3,
:active_for_action=>{'admin/asks'=>'category_setting'}, :active_for_action=>{'admin/asks'=>'category_setting'},
:available_for => 'sub_managers' :available_for => 'sub_managers'
context_link 'ask.order_fields', context_link 'ask.order_fields',
:link_path=>"order_fields_admin_asks_path" , :link_path=>"order_fields_admin_asks_path" ,
:priority=>4, :priority=>4,
:active_for_action=>{'admin/asks'=>'order_fields'}, :active_for_action=>{'admin/asks'=>'order_fields'},
:available_for => 'sub_managers' :available_for => 'sub_managers'
context_link 'ask.print_setting', context_link 'ask.print_setting',
:link_path=>"print_setting_admin_asks_path" , :link_path=>"print_setting_admin_asks_path" ,
:priority=>5, :priority=>5,
:active_for_action=>{'admin/asks'=>'print_setting'}, :active_for_action=>{'admin/asks'=>'print_setting'},
:available_for => 'sub_managers' :available_for => 'sub_managers'
context_link 'ask.ticket_status', context_link 'ask.ticket_status',
:link_path=>"ticket_status_admin_asks_path" , :link_path=>"ticket_status_admin_asks_path" ,
:priority=>6, :priority=>6,
:active_for_action=>{'admin/asks'=>'ticket_status'}, :active_for_action=>{'admin/asks'=>'ticket_status'},
:available_for => 'managers' :available_for => 'managers'
context_link 'categories', context_link 'categories',
:link_path=>"admin_module_app_categories_path" , :link_path=>"admin_module_app_categories_path" ,
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}", :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}",
:priority=>7, :priority=>7,
:active_for_action=>{'admin/asks'=>'categories'}, :active_for_action=>{'admin/asks'=>'categories'},
:active_for_category => 'Ask', :active_for_category => 'Ask',
:available_for => 'managers' :available_for => 'managers'
context_link 'ask.acknowledgements', context_link 'ask.acknowledgements',
:link_path=>"admin_ask_acknowledgements_path" , :link_path=>"admin_ask_acknowledgements_path" ,
:priority=>8, :priority=>8,
:active_for_action=>{'admin/asks'=>'acknowledgements'}, :active_for_action=>{'admin/asks'=>'acknowledgements'},
:available_for => 'managers' :available_for => 'managers'
context_link 'ask.admins', context_link 'ask.admins',
:link_path=>"admin_ask_admins_path" , :link_path=>"admin_ask_admins_path" ,
:priority=>9, :priority=>9,
:active_for_action=>{'admin/asks'=>'admins'}, :active_for_action=>{'admin/asks'=>'admins'},
:available_for => 'managers' :available_for => 'managers'
context_link 'ask.exports', context_link 'ask.exports',
:link_path=>"export_admin_asks_path" , :link_path=>"export_admin_asks_path" ,
:priority=>10, :priority=>10,
:active_for_action=>{'admin/asks'=>'exports'}, :active_for_action=>{'admin/asks'=>'exports'},
:available_for => 'managers' :available_for => 'managers'
# context_link 'new_', # context_link 'new_',
# :link_path=>"new_admin_ask_path" , # :link_path=>"new_admin_ask_path" ,
# :priority=>2, # :priority=>2,
# :active_for_action=>{'admin/asks'=>'new'}, # :active_for_action=>{'admin/asks'=>'new'},
# :available_for => 'sub_managers' # :available_for => 'sub_managers'
# context_link 'tags',
# :link_path=>"admin_module_app_tags_path" ,
# :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}",
# :priority=>4,
# :active_for_action=>{'admin/asks'=>'tags'},
# :active_for_tag => 'Ask',
# :available_for => 'managers'
end
# context_link 'tags',
# :link_path=>"admin_module_app_tags_path" ,
# :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}",
# :priority=>4,
# :active_for_action=>{'admin/asks'=>'tags'},
# :active_for_tag => 'Ask',
# :available_for => 'managers'
end end
end end
end end
end end