From 6c89f33caa6463df053af3df370c13382b5a9e2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E5=8D=9A=E4=BA=9E?= Date: Sat, 24 Feb 2024 20:56:13 +0800 Subject: [PATCH] Prepare to support ruby 3.3. --- app/helpers/event_news_helper.rb | 8 +- lib/event_news_mod/engine.rb | 392 ++++++++++++++++--------------- 2 files changed, 201 insertions(+), 199 deletions(-) diff --git a/app/helpers/event_news_helper.rb b/app/helpers/event_news_helper.rb index a0dd716..b98abe5 100644 --- a/app/helpers/event_news_helper.rb +++ b/app/helpers/event_news_helper.rb @@ -334,9 +334,9 @@ module EventNewsHelper if @target_action == "index" filename = File.basename(overridehtml.nil? ? params[:layout_type] : overridehtml) f = File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', 'event_news_mod', "#{filename}.html.erb") - if !File.exists?f + if !File.exist?(f) f = File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', 'event_news_mod', "index.html.erb") - if !File.exists?f + if !File.exist?(f) return "
Maybe the administrator has changed the theme, please select the index page design again from the page settings.
".html_safe end end @@ -376,7 +376,7 @@ module EventNewsHelper else filename = overridehtml.nil? ? @target_action : overridehtml f = File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', 'event_news_mod', "#{filename}.html.erb") - if File.exists?f + if File.exist?(f) file = File.open(f) doc = Nokogiri::HTML(file, nil, "UTF-8") file.close @@ -478,7 +478,7 @@ module EventNewsHelper layout_types = [] @key = Site.first.template f = File.join("#{Rails.root}/app/templates/#{@key}/modules/#{module_app}/info.json") - if File.exists?f + if File.exist?(f) info = File.read(f) hash = JSON.parse(info) rescue {} frontends = hash["frontend"] || [] diff --git a/lib/event_news_mod/engine.rb b/lib/event_news_mod/engine.rb index c45d3b6..751acd8 100644 --- a/lib/event_news_mod/engine.rb +++ b/lib/event_news_mod/engine.rb @@ -1,196 +1,198 @@ -require "yaml" -module EventNewsMod - class Engine < ::Rails::Engine - initializer "event_news_mod" do - begin - translate_data = Dir["#{EventNewsMod::Engine.root}/config/locales/*.yml"] .map{|yaml_file| YAML.load(File.read(yaml_file))} - data = {} - key1 = {} - key2 = {} - key3 = {} - key4 = {} - key5 = {} - key1_attr = [] - key2_attr = [] - key3_attr = [] - key4_attr = [] - data_item = {} - key_item1 = {} - key_item2 = {} - key_item3 = {} - value_item1 = {} - value_item2 = {} - value_item3 = {} - value2_item1 = {} - value2_item2 = {} - key1_options = ['small_size','medium_size','orignal_size'] - key2_options = ['not_enable_tabs','enable_tabs_with_categories_include_all','enable_tabs_with_categories'] - key3_options = ['default','upper_left','lower_left','upper_right','lower_right'] - key4_options = ['the_same_as_data_count','display_all_in_other_tabs'] - #After fix I18n.load_path, translation can work there - key5_attr = ['no_','yes_'].map{|v| I18n.available_locales.map{|k| I18n.with_locale(k){[k,I18n.t(v)]}}.to_h} - key1_options.each_with_index do |k,i| - key1_attr[i] = {} - end - key2_options.each_with_index do |k,i| - key2_attr[i] = {} - end - key3_options.each_with_index do |k,i| - key3_attr[i] = {} - end - key4_options.each_with_index do |k,i| - key4_attr[i] = {} - end - translate_data.each do |t_data| - v = t_data.values - k = t_data.keys[0] - key1[k] = v[0]['event_news']['picture_showing_size'] - key2[k] = v[0]['event_news']['tabs_options'] - key3[k] = v[0]['event_news']['read_more_position_options'] - key4[k] = v[0]['event_news']['all_tabs_setting'] - key5[k] = v[0]['event_news']['show_today_data_first'] - key1_options.each_with_index do |kk,i| - key1_attr[i][k] = v[0]['event_news'][kk] - end - key2_options.each_with_index do |kk,i| - key2_attr[i][k] = v[0]['event_news'][kk] - end - key3_options.each_with_index do |kk,i| - key3_attr[i][k] = v[0]['event_news'][kk] - end - key4_options.each_with_index do |kk,i| - key4_attr[i][k] = v[0]['event_news'][kk] - end - key_item1[k] = v[0]['event_news']['showing_back_and_next'] - key_item2[k] = v[0]['event_news']['enable_search'] - key_item3[k] = v[0]['event_news']['ad_banner_location'] - value_item1[k] = v[0]['event_news']['not_show'] - value_item2[k] = v[0]['event_news']['show_bottom'] - value_item3[k] = v[0]['event_news']['show_top'] - value2_item1[k] = v[0]['event_news']['no'] - value2_item2[k] = v[0]['event_news']['yes'] - end - data[key1] = key1_attr - data[key2] = key2_attr - data[key3] = key3_attr - data[key4] = key4_attr - data[key5] = key5_attr - data_item[key_item1] = [value_item1,value_item2,value_item3] - data_item[key_item2] = [value2_item1,value2_item2] - data_item[key_item3] = [value_item2,value_item3] - if ENV['worker_num']=='0' && File.basename($0) != 'rake' && !Rails.const_defined?('Console') - require File.expand_path('../../../app/models/event_news_cache', __FILE__) - if defined?(EventNewsCache) - EventNewsCache.destroy_all - end - require File.expand_path('../../../app/models/event_news_custom_title', __FILE__) - if defined? EventNewsCustomTitle - EventNewsCustomTitle.get_map - end - end - rescue => e - puts ['error in event_news',e,e.backtrace] - end - OrbitApp.registration "event_news_mod", :type => "ModuleApp" do - db = ::Mongoid::Sessions.default - collection = db[:module_apps] - update_results = collection.update_many({key: 'event_news'},'$set'=>{key: 'event_news_mod', title: 'event_news_mod'}) - if update_results.n != 0 - puts "Updating event_news to event_news_mod!" - collection = db[:pages] - collection.update_many({:module=> 'event_news'},'$set'=>{:module=> 'event_news_mod'}) - collection = db[:sub_parts] - collection.update_many({:module=> 'event_news'},'$set'=>{:module=> 'event_news_mod'}) - template_path = Rails.root.to_s + '/app/templates' - all_template = Dir.glob(template_path+'/*/') - all_template.each do |folder| - Bundler.with_clean_env{system ("mkdir -p #{folder}modules/event_news_mod; cp -rf #{folder}modules/event_news/* #{folder}modules/event_news_mod/. && rm -rf #{folder}modules/event_news_mod/event_news")} - end - end - module_label "event_news.event_news" - base_url File.expand_path File.dirname(__FILE__) - widget_methods ["widget","random_event_news_widget", "tag_cloud"] - widget_settings [{"data_count"=>30}] - taggable "EventNews" - categorizable - authorizable - frontend_enabled - feeds_url "/xhr/event_news/feeds" - data_count 1..30 - begin - show_options data - show_option_items data_item - rescue => e - puts ['there_was_no_show_option_method',e] - end - if File.basename($0) != 'rake' - begin - avoid_page_cache EventNewsCache - avoid_page_cache EventNewsFeedCache - avoid_page_cache EventNewsFeed - rescue => e - puts ["avoid_page_cache", e.to_s] - end - end - side_bar do - head_label_i18n 'event_news.event_news', icon_class: "icons-megaphone" - available_for "users" - active_for_controllers (['admin/event_news']) - head_link_path "admin_event_news_index_path" - - context_link 'event_news.all_articles', - :link_path=>"admin_event_news_index_path" , - :priority=>1, - :active_for_action=>{'admin/event_news'=>'index'}, - :available_for => 'users' - context_link 'new_', - :link_path=>"new_admin_event_news_path" , - :priority=>2, - :active_for_action=>{'admin/event_news'=>'new'}, - :available_for => 'sub_managers' - context_link 'categories', - :link_path=>"admin_module_app_categories_path" , - :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'event_news_mod').id}", - :priority=>3, - :active_for_action=>{'admin/event_news'=>'categories'}, - :active_for_category => 'EventNewsModule', - :available_for => 'managers' - context_link 'tags', - :link_path=>"admin_module_app_tags_path" , - :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'event_news_mod').id}", - :priority=>4, - :active_for_action=>{'admin/event_news'=>'tags'}, - :active_for_tag => 'EventNewsModule', - :available_for => 'managers' - context_link 'event_news.custom_fields_title', - :link_path=>"custom_fields_title_admin_event_news_index_path" , - :priority=>5, - :active_for_action=>{'admin/event_news'=>'custom_fields_title'}, - :available_for => 'managers' - - context_link 'event_news.feed_list', - :link_path=>"admin_event_news_feed_path" , - :priority=>6, - :active_for_action=>{'admin/event_news'=>'feed'}, - :available_for => 'managers' - context_link 'event_news.import', - :link_path=>"admin_event_news_import_path" , - :priority=>7, - :active_for_action=>{'admin/event_news'=>'import'}, - :available_for => 'managers' - context_link 'event_news.settings', - :link_path=>"admin_event_news_settings_path" , - :priority=>8, - :active_for_action=>{'admin/event_news'=>'settings'}, - :available_for => 'managers' - end - - end - # temp = YAML.load_file(File.join(Rails.root,"config","mongoid.yml")) - # dbsettings = temp["production"]["sessions"]["default"] - # s = Moped::Session.new(dbsettings["hosts"]) - # s.use dbsettings["database"] - # s[:bulletins].indexes.create({expirable_created_at: 1},{ expireAfterSeconds: 180 }) - end - end +module EventNewsMod + class Engine < ::Rails::Engine + initializer "event_news_mod" do + Rails.application.config.to_prepare do + require "yaml" + begin + translate_data = Dir["#{EventNewsMod::Engine.root}/config/locales/*.yml"] .map{|yaml_file| YAML.load(File.read(yaml_file))} + data = {} + key1 = {} + key2 = {} + key3 = {} + key4 = {} + key5 = {} + key1_attr = [] + key2_attr = [] + key3_attr = [] + key4_attr = [] + data_item = {} + key_item1 = {} + key_item2 = {} + key_item3 = {} + value_item1 = {} + value_item2 = {} + value_item3 = {} + value2_item1 = {} + value2_item2 = {} + key1_options = ['small_size','medium_size','orignal_size'] + key2_options = ['not_enable_tabs','enable_tabs_with_categories_include_all','enable_tabs_with_categories'] + key3_options = ['default','upper_left','lower_left','upper_right','lower_right'] + key4_options = ['the_same_as_data_count','display_all_in_other_tabs'] + #After fix I18n.load_path, translation can work there + key5_attr = ['no_','yes_'].map{|v| I18n.available_locales.map{|k| I18n.with_locale(k){[k,I18n.t(v)]}}.to_h} + key1_options.each_with_index do |k,i| + key1_attr[i] = {} + end + key2_options.each_with_index do |k,i| + key2_attr[i] = {} + end + key3_options.each_with_index do |k,i| + key3_attr[i] = {} + end + key4_options.each_with_index do |k,i| + key4_attr[i] = {} + end + translate_data.each do |t_data| + v = t_data.values + k = t_data.keys[0] + key1[k] = v[0]['event_news']['picture_showing_size'] + key2[k] = v[0]['event_news']['tabs_options'] + key3[k] = v[0]['event_news']['read_more_position_options'] + key4[k] = v[0]['event_news']['all_tabs_setting'] + key5[k] = v[0]['event_news']['show_today_data_first'] + key1_options.each_with_index do |kk,i| + key1_attr[i][k] = v[0]['event_news'][kk] + end + key2_options.each_with_index do |kk,i| + key2_attr[i][k] = v[0]['event_news'][kk] + end + key3_options.each_with_index do |kk,i| + key3_attr[i][k] = v[0]['event_news'][kk] + end + key4_options.each_with_index do |kk,i| + key4_attr[i][k] = v[0]['event_news'][kk] + end + key_item1[k] = v[0]['event_news']['showing_back_and_next'] + key_item2[k] = v[0]['event_news']['enable_search'] + key_item3[k] = v[0]['event_news']['ad_banner_location'] + value_item1[k] = v[0]['event_news']['not_show'] + value_item2[k] = v[0]['event_news']['show_bottom'] + value_item3[k] = v[0]['event_news']['show_top'] + value2_item1[k] = v[0]['event_news']['no'] + value2_item2[k] = v[0]['event_news']['yes'] + end + data[key1] = key1_attr + data[key2] = key2_attr + data[key3] = key3_attr + data[key4] = key4_attr + data[key5] = key5_attr + data_item[key_item1] = [value_item1,value_item2,value_item3] + data_item[key_item2] = [value2_item1,value2_item2] + data_item[key_item3] = [value_item2,value_item3] + if ENV['worker_num']=='0' && File.basename($0) != 'rake' && !Rails.const_defined?('Console') + require File.expand_path('../../../app/models/event_news_cache', __FILE__) + if defined?(EventNewsCache) + EventNewsCache.destroy_all + end + require File.expand_path('../../../app/models/event_news_custom_title', __FILE__) + if defined? EventNewsCustomTitle + EventNewsCustomTitle.get_map + end + end + rescue => e + puts ['error in event_news',e,e.backtrace] + end + OrbitApp.registration "event_news_mod", :type => "ModuleApp" do + db = ::Mongoid::Sessions.default + collection = db[:module_apps] + update_results = collection.update_many({key: 'event_news'},'$set'=>{key: 'event_news_mod', title: 'event_news_mod'}) + if update_results.n != 0 + puts "Updating event_news to event_news_mod!" + collection = db[:pages] + collection.update_many({:module=> 'event_news'},'$set'=>{:module=> 'event_news_mod'}) + collection = db[:sub_parts] + collection.update_many({:module=> 'event_news'},'$set'=>{:module=> 'event_news_mod'}) + template_path = Rails.root.to_s + '/app/templates' + all_template = Dir.glob(template_path+'/*/') + all_template.each do |folder| + Bundler.with_clean_env{system ("mkdir -p #{folder}modules/event_news_mod; cp -rf #{folder}modules/event_news/* #{folder}modules/event_news_mod/. && rm -rf #{folder}modules/event_news_mod/event_news")} + end + end + module_label "event_news.event_news" + base_url File.expand_path File.dirname(__FILE__) + widget_methods ["widget","random_event_news_widget", "tag_cloud"] + widget_settings [{"data_count"=>30}] + taggable "EventNews" + categorizable + authorizable + frontend_enabled + feeds_url "/xhr/event_news/feeds" + data_count 1..30 + begin + show_options data + show_option_items data_item + rescue => e + puts ['there_was_no_show_option_method',e] + end + if File.basename($0) != 'rake' + begin + avoid_page_cache EventNewsCache + avoid_page_cache EventNewsFeedCache + avoid_page_cache EventNewsFeed + rescue => e + puts ["avoid_page_cache", e.to_s] + end + end + side_bar do + head_label_i18n 'event_news.event_news', icon_class: "icons-megaphone" + available_for "users" + active_for_controllers (['admin/event_news']) + head_link_path "admin_event_news_index_path" + + context_link 'event_news.all_articles', + :link_path=>"admin_event_news_index_path" , + :priority=>1, + :active_for_action=>{'admin/event_news'=>'index'}, + :available_for => 'users' + context_link 'new_', + :link_path=>"new_admin_event_news_path" , + :priority=>2, + :active_for_action=>{'admin/event_news'=>'new'}, + :available_for => 'sub_managers' + context_link 'categories', + :link_path=>"admin_module_app_categories_path" , + :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'event_news_mod').id}", + :priority=>3, + :active_for_action=>{'admin/event_news'=>'categories'}, + :active_for_category => 'EventNewsModule', + :available_for => 'managers' + context_link 'tags', + :link_path=>"admin_module_app_tags_path" , + :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'event_news_mod').id}", + :priority=>4, + :active_for_action=>{'admin/event_news'=>'tags'}, + :active_for_tag => 'EventNewsModule', + :available_for => 'managers' + context_link 'event_news.custom_fields_title', + :link_path=>"custom_fields_title_admin_event_news_index_path" , + :priority=>5, + :active_for_action=>{'admin/event_news'=>'custom_fields_title'}, + :available_for => 'managers' + + context_link 'event_news.feed_list', + :link_path=>"admin_event_news_feed_path" , + :priority=>6, + :active_for_action=>{'admin/event_news'=>'feed'}, + :available_for => 'managers' + context_link 'event_news.import', + :link_path=>"admin_event_news_import_path" , + :priority=>7, + :active_for_action=>{'admin/event_news'=>'import'}, + :available_for => 'managers' + context_link 'event_news.settings', + :link_path=>"admin_event_news_settings_path" , + :priority=>8, + :active_for_action=>{'admin/event_news'=>'settings'}, + :available_for => 'managers' + end + + end + # temp = YAML.load_file(File.join(Rails.root,"config","mongoid.yml")) + # dbsettings = temp["production"]["sessions"]["default"] + # s = Moped::Session.new(dbsettings["hosts"]) + # s.use dbsettings["database"] + # s[:bulletins].indexes.create({expirable_created_at: 1},{ expireAfterSeconds: 180 }) + end + end + end end \ No newline at end of file