From 14822f2bbfdad46cd579ca5f0157d15dcdccb4ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E5=8D=9A=E4=BA=9E?= Date: Sat, 6 May 2023 16:24:25 +0800 Subject: [PATCH] fix error for comment and bundle update --- app/assets/images/announcement-default.jpg | Bin 0 -> 14882 bytes app/controllers/announcements_controller.rb | 18 + app/views/announcements/400.html | 63 ++ temp_file/config/application.rb | 19 +- temp_file/config/boot.rb | 5 + temp_file/config/do_on_startup.rb | 726 ++++++++++++++++++++ temp_file/config/environment.rb | 111 +++ 7 files changed, 941 insertions(+), 1 deletion(-) create mode 100644 app/assets/images/announcement-default.jpg create mode 100644 app/views/announcements/400.html create mode 100644 temp_file/config/boot.rb create mode 100644 temp_file/config/do_on_startup.rb create mode 100644 temp_file/config/environment.rb diff --git a/app/assets/images/announcement-default.jpg b/app/assets/images/announcement-default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6b82f03c1e1cb15541b947547670fbfa53ec142 GIT binary patch literal 14882 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 bPy5NhPX>N6@RNa`4E$u^-(%qX{=okM!PVIQ literal 0 HcmV?d00001 diff --git a/app/controllers/announcements_controller.rb b/app/controllers/announcements_controller.rb index 92acbdb..64bc8d8 100644 --- a/app/controllers/announcements_controller.rb +++ b/app/controllers/announcements_controller.rb @@ -1,4 +1,5 @@ class AnnouncementsController < ApplicationController + ViewRootDir = File.expand_path("../../views", __FILE__) include AnnouncementsHelper DefaultImgSrc = "/assets/announcement-default.jpg\" onerror=\"this.src="/assets/announcement-default-2.jpg";this.onerror='';" def initialize @@ -29,6 +30,12 @@ class AnnouncementsController < ApplicationController AnnouncementSetting.first.enable_manually_sort rescue false end end + def render_400 + render(:file => "#{ViewRootDir}/announcements/400.html", :layout => false, :status => 400, :formats => [:html]) + end + def render_404 + render(:file => "#{Rails.root}/app/views/errors/404.html", :layout => false, :status => 404, :formats => [:html]) + end def comment @bulletin = Bulletin.where(:uid=>params[:uid]).first comment_val = params['comment'] @@ -38,6 +45,8 @@ class AnnouncementsController < ApplicationController b.bulletin_id = @bulletin.id b.save render :json => {} + else + render_404 end end def index @@ -1018,6 +1027,15 @@ class AnnouncementsController < ApplicationController }, "total_pages" => total_pages } + @layout_type = params[:layout_type] + if @layout_type.blank? + @layout_type = 'annc_index1' + else + @layout_type = @layout_type.to_s + if File.dirname(@layout_type) != '.' + render_400 and return + end + end render :layout => false end diff --git a/app/views/announcements/400.html b/app/views/announcements/400.html new file mode 100644 index 0000000..f84cc9f --- /dev/null +++ b/app/views/announcements/400.html @@ -0,0 +1,63 @@ + + + + + Bad Request + + + + + + + \ No newline at end of file diff --git a/temp_file/config/application.rb b/temp_file/config/application.rb index 5621d83..a06f663 100644 --- a/temp_file/config/application.rb +++ b/temp_file/config/application.rb @@ -170,6 +170,20 @@ else self.to_bson_key.bson_int64? end end + if Mongoid::VERSION.to_i >= 7 + begin + require 'mongoid/association/relatable' + module Mongoid::Association::Relatable + alias_method :org_initialize, :initialize + attr_reader :macro + def initialize(*args, &block) + @macro = self.class.to_s.demodulize.underscore.to_sym + org_initialize(*args, &block) + end + end + rescue ScriptError => e + end + end end module Mongoid module Findable @@ -248,7 +262,10 @@ module Orbit alias_method :org_call, :call def call(env) request = ActionDispatch::Request.new(env) - request_path = env["REQUEST_PATH"].to_s.sub(/^\/#{I18n.locale}\//, '/') + request_path = env["REQUEST_PATH"].to_s + I18n.available_locales.each do |locale| + request_path = request_path.sub(/^\/#{locale}\//, '/') + end session = env["rack.session"] if (Site::DEBUG rescue false) || (Rails.env != "production" && request_path.start_with?('/admin') && (@current_user = (session[:user_id] ? User.find(session[:user_id]) : nil) rescue nil)) exception = env['action_dispatch.exception'] diff --git a/temp_file/config/boot.rb b/temp_file/config/boot.rb new file mode 100644 index 0000000..d01d340 --- /dev/null +++ b/temp_file/config/boot.rb @@ -0,0 +1,5 @@ +# Set up gems listed in the Gemfile. +puts 'boot' +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) + +require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) diff --git a/temp_file/config/do_on_startup.rb b/temp_file/config/do_on_startup.rb new file mode 100644 index 0000000..c18d3eb --- /dev/null +++ b/temp_file/config/do_on_startup.rb @@ -0,0 +1,726 @@ +OrbitApp.cleanup_modules +begin + OrbitApp.check_module_permissions +rescue Exception => e +end +include BundlerHelper +current_locale = I18n.locale +extra_langs = File.read('config/extra_lang.txt').scan(/.*extra_.*/).select{|v| v.exclude? '#'}[0].to_s.split(/extra_language.*:|,| /).select{|v| !v.empty?}.map{|v| v.to_sym} rescue [] + +site = Site.first +if (site.password_failed_lock_num.nil? rescue false) + site.update({:password_failed_lock_num=> site.fields['password_failed_lock_num'].options[:default]}) +end +site.reset_cache +if ModuleApp.where(:key=>'member_sign_up').count > 1 + ModuleApp.where(:key=>'member_sign_up')[0...1].each{|m| m.destroy} +end + +if (site.page_sets.count==0 rescue false) + site.page_sets.create() +elsif site.page_sets.count > 1 + site.page_sets.skip(1).destroy +end +$member_extra_url = site.member_extra_url +if File.basename($0) != 'rake' + crontab_email=%x[crontab -l|grep 'bundle exec rake email:deliver_all'|grep `pwd`] + crontab_email_all = crontab_email.split("\n") + if crontab_email_all.count >= 1 + crontab_jobs=%x[crontab -l|grep -v "cd `pwd`.*bundle exec rake email:deliver_all"].gsub(/^\n$/,'').gsub(/'/,"'\"'\"'") + system("echo '#{crontab_jobs}' | crontab -") + end + CronWorker.cron_every_minute(Email.method(:deliver_all)) + nginx_exe = %x[ps -o args -C nginx| grep -E 'daemon|master'| awk '{print $4}'].split("\n")[0] + if !nginx_exe.nil? + nginx_config = %x[#{nginx_exe} -V 2>&1 | grep -o '\\-\\-conf-path=\\(.*conf\\)' | cut -d '=' -f2].sub("\n",'') + orbit_sites_config = %x[grep orbit_sites #{nginx_config}].scan(/^[\t ]*include(.*);/)[0][0].gsub(/ /,'') + current_site_config = %x[grep -H `pwd` #{orbit_sites_config}|grep -E ':\s\+root'].split(':')[0] + current_site_config_content = current_site_config.present? ? %x[cat #{current_site_config}] : "" + config_domain = site.site_settings['domain'] rescue nil + server_names = current_site_config_content.scan(/^[\t ]*server_name[\t ]*(.*);/).flatten.collect{|v| v.to_s.split(/[\t ]+/)}.flatten.sort_by{|v| v==config_domain ? 0 : v.split(".").count}.reverse + ip = UDPSocket.open {|s| s.connect("8.8.8.8", 1); s.addr.last} rescue nil + new_server_names = server_names.uniq.select{|server_name| ip == (IPSocket.getaddress(server_name) rescue nil)} + server_name = new_server_names.select{|server_name| ip != server_name}.first + if server_name.nil? + if new_server_names.count != 0 + server_name = new_server_names.first + else + server_name = server_names.first + if server_name.nil? + server_name = ip || (`ip route get 8.8.8.8|xargs|awk '{print $7}'`.strip) + end + end + end + ports = current_site_config_content.scan(/^[\t ]*listen[\t ]*(.*);/).flatten.collect{|v| v.split(/[\t ]+/)}.flatten.select{|v| v.to_i.to_s == v} + port = ports.blank? ? '80' : (ports.select{|v| v=='443'}.blank? ? ports.sort_by{|v| v.to_i==80 ? -1 : v.to_i}[0] : '443') + root_url = (port=='443' ? "https://#{server_name}" : (port=='80' ? "http://#{server_name}" : "http://#{server_name}:#{port}")) + site.update_attributes(root_url: root_url) + end + if ShowForAdminMessage.first.nil? + ShowForAdminMessage.create() + end + + if site.template.nil? + site.template = (Dir.glob("#{Rails.root}/app/templates/*").collect{|temp| temp.split('/').last}-['mobile']).first + site.save + end + + if Page.count == 0 + home = Page.new + extra_trans = {} + extra_langs.each do |extra_lang| + extra_trans[extra_lang] = 'Home' + end + home.name_translations = {:en=>"Home",:zh_tw=>"首頁"}.merge(extra_trans) + home.url = "/" + home.save + end + + if Page.where(:module=>"sitemap").blank? + sitemap = Page.new + sitemap.module = "sitemap" + sitemap.page_id = "sitemap" + extra_trans = {} + extra_langs.each do |extra_lang| + extra_trans[extra_lang] = 'Sitemap' + end + sitemap.name_translations = {:en=>"Sitemap",:zh_tw=>"網站導覽"}.merge(extra_trans) + sitemap.enabled_for = ["en", "zh_tw"] + sitemap.menu_enabled_for = [] + sitemap.url = "/sitemap" + sitemap.parent_page_id = Page.root.id + sitemap.save + end + termofuse = Page.where(:page_id=>'termofuse').first + page = termofuse.page_contexts.order(:version=>-1).first rescue nil + default_content_translations = {} + ac = ActionController::Base.new() + site.in_use_locales.each do |locale| + I18n.with_locale(locale) do + content = ac.render_to_string(:partial=>"pages/default_term_of_use",locals: {:current_site=>site}) + default_content_translations[locale] = content + end + end + if page.nil? + page = PageContext.new + extra_trans = {} + extra_langs.each do |extra_lang| + extra_trans[extra_lang] = '' + end + page.content_translations = default_content_translations + page.version = 1 + page.save + else + change_flag = false + new_content_translations = {} + site.in_use_locales.each do |locale| + if page.content_translations[locale].blank? + change_flag = true + new_content_translations[locale] = default_content_translations[locale] + end + end + if change_flag + page.content_translations = page.content_translations.merge(new_content_translations) + page.save + end + end + if termofuse.nil? + termofuse = Page.new + termofuse.module = "page_content" + termofuse.page_id = "termofuse" + termofuse.page_contexts << page + extra_trans = {} + extra_langs.each do |extra_lang| + extra_trans[extra_lang] = 'Term of use' + end + termofuse.name_translations = {:en=>"Term of use",:zh_tw=>"使用規則"}.merge(extra_trans) + termofuse.enabled_for = ["en", "zh_tw"] + termofuse.menu_enabled_for = [] + termofuse.url = "/termofuse" + termofuse.parent_page_id = Page.root.id + termofuse.save + site.terms_of_use_link = "/termofuse" + site.save + end + + if Workgroup.count == 0 + groups = [{"title"=>"Administrator", "key"=>"admin"}, + {"title"=>"Sub Managers", "key"=>"sub_managers"}, + {"title"=>"Managers", "key"=>"managers"}] + groups.each do |group| + workgroup = Workgroup.new + workgroup.title = group["title"] + workgroup.key = group["key"] + workgroup.save + end + end + + if Role.count==0 + + #teacher + role = Role.new + role.key = 'teacher' + role.title_translations = {:en=>'Teacher', :zh_tw=>'老師'} + role.save + + role_status = RoleStatus.new + role_status.key = 'Full-Time' + role_status.role_id = role.id + role_status.title_translations = {:en=>'Full-Time', :zh_tw=>'專任'} + role_status.save + + role_status = RoleStatus.new + role_status.key = 'Adjunct' + role_status.role_id = role.id + role_status.title_translations = {:en=>'Adjunct', :zh_tw=>'兼任'} + role_status.save + + role_status = RoleStatus.new + role_status.key = 'appointment' + role_status.role_id = role.id + role_status.title_translations = {:en=>'appointment', :zh_tw=>'合聘'} + role_status.save + + attribute_field = AttributeField.new + attribute_field.key = 'job_title' + attribute_field.role_id = role.id + attribute_field.title_translations = {:en=>'Job Title', :zh_tw=>'職稱'} + attribute_field.markup = 'select' + attribute_field.option_list = { + "0" => { "zh_tw" => "教授兼系主任", + "en" => "Professor and Chairman" }, + "1" => { "zh_tw" => "教授", + "en" => "Professor" }, + "2" => { "zh_tw" => "副教授", + "en" => "Associate Professor" }, + "3" => { "zh_tw" => "助理教授", + "en" => "Assistant Professor" }, + "4" => { "zh_tw" => "講師", + "en" => "Lecturer" } + } + + attribute_field.typeB = { + "initial" => { "zh_tw" => "", + "en" => "" }, + "option_list" => { + "0" => { "zh_tw" => "教授兼系主任", + "en" => "Professor and Chairman" }, + "1" => { "zh_tw" => "教授", + "en" => "Professor" }, + "2" => { "zh_tw" => "副教授", + "en" => "Associate Professor" }, + "3" => { "zh_tw" => "助理教授", + "en" => "Assistant Professor" }, + "4" => { "zh_tw" => "講師", + "en" => "Lecturer" } + } } + + attribute_field.save + + attribute_field = AttributeField.new + attribute_field.key = 'Research_Expertise' + attribute_field.role_id = role.id + attribute_field.title_translations = {:en=>'Research Expertise', :zh_tw=>'研究專長'} + attribute_field.markup = 'text_area' + attribute_field.save + + attribute_field = AttributeField.new + attribute_field.key = 'Teaching_Field' + attribute_field.role_id = role.id + attribute_field.title_translations = {:en=>'Teaching Field', :zh_tw=>'授課領域'} + attribute_field.markup = 'text_area' + attribute_field.save + + #satff + role = Role.new + role.key = 'staff' + role.title_translations = {:en=>'Staff', :zh_tw=>'行政人員'} + role.save + + role_status = RoleStatus.new + role_status.key = 'Full-Time' + role_status.role_id = role.id + role_status.title_translations = {:en=>'Full-Time', :zh_tw=>'全職'} + role_status.save + + role_status = RoleStatus.new + role_status.key = 'Part-time' + role_status.role_id = role.id + role_status.title_translations = {:en=>'Part-time', :zh_tw=>'兼職'} + role_status.save + + role_status = RoleStatus.new + role_status.key = 'Contracted' + role_status.role_id = role.id + role_status.title_translations = {:en=>'Contracted', :zh_tw=>'約聘'} + role_status.save + + attribute_field = AttributeField.new + attribute_field.key = 'job_title' + attribute_field.role_id = role.id + attribute_field.title_translations = {:en=>'Job Title', :zh_tw=>'職稱'} + attribute_field.markup = 'select' + attribute_field.option_list = { + "0" => { "zh_tw" => "組長", + "en" => "Group Leader" }, + "1" => { "zh_tw" => "編審", + "en" => "Editor" }, + "2" => { "zh_tw" => "技士", + "en" => "Technician" }, + "3" => { "zh_tw" => "幹事", + "en" => "Assistant" }, + "4" => { "zh_tw" => "組員", + "en" => "Clerk" } , + "5" => { "zh_tw" => "工讀", + "en" => "Work-study" } + } + + attribute_field.typeB = { + "initial" => { "zh_tw" => "", + "en" => "" }, + "option_list" => { + "0" => { "zh_tw" => "組長", + "en" => "Group Leader" }, + "1" => { "zh_tw" => "編審", + "en" => "Editor" }, + "2" => { "zh_tw" => "技士", + "en" => "Technician" }, + "3" => { "zh_tw" => "幹事", + "en" => "Assistant" }, + "4" => { "zh_tw" => "組員", + "en" => "Clerk" } , + "5" => { "zh_tw" => "工讀", + "en" => "Work-study" } + } } + + attribute_field.save + + attribute_field = AttributeField.new + attribute_field.key = 'Duties' + attribute_field.role_id = role.id + attribute_field.title_translations = {:en=>'Duties', :zh_tw=>'承辦業務'} + attribute_field.markup = 'text_area' + attribute_field.save + + attribute_field = AttributeField.new + attribute_field.key = 'Deputy' + attribute_field.role_id = role.id + attribute_field.title_translations = {:en=>'Deputy', :zh_tw=>'代理人'} + attribute_field.markup = 'text_area' + attribute_field.save + + end + + if User.all.count==0 + group = Workgroup.where(:key=>'admin').first + profile = MemberProfile.new + profile.first_name_translations = {:en=>'Digital', :zh_tw=>'Digital'} + profile.last_name_translations = {:en=>'Ruling', :zh_tw=>'Ruling'} + profile.email = "orbit@rulingcom.com" + profile.is_hidden = true + profile.save + + user = User.new + user.workgroup = group + user.member_profile = profile + user.user_name = "rulingcom" + user.password_digest = "$2a$12$ODoNQJc22aU.U6HpWhUJIeKRYIf/3xcfzym8V.4tqt/V7pM2c9alq" + user.email = "orbit@rulingcom.com" + user.approved = true + user.beta_tester = true + user.save(:validate=>false) + + profile = MemberProfile.new + profile.first_name_translations = {:en=>'Admin', :zh_tw=>'Admin'} + profile.last_name_translations = {:en=>'Admin', :zh_tw=>'Admin'} + profile.email = "service@rulingcom.com" + profile.save + + user = User.new + user.workgroup = group + user.member_profile = profile + user.user_name = "admin" + user.password_digest = "$2a$12$zCT/qE6TdMUcYzA8NHhM/.G150JlazF1PRThjOuuxYt3Oi7DBrHrK" + user.email = "service@rulingcom.com" + user.approved = true + user.save(:validate=>false) + end + MemberProfileDefaultField.get_field_to_set + MemberIndexCache.destroy_all + env_pwd = ENV['PWD'] + dir_name = env_pwd.split('/')[-1] + watch_dog = %x[screen -ls auto_reopen_#{dir_name}] + all_css_files = Dir["app/templates/**/*.css","app/templates/**/*.scss"] + contents = all_css_files.collect do |css_file| + [css_file,File.open(css_file, "r") { |f| f.read }] + end + s=contents.collect do |f,c| + c_tp = c + tmp = [] + flag = false + c_tp = c_tp.gsub(/(^[ \t]*background(?:(?!\R).)*:[ \t]*linear-gradient(?:(?!\R|;).)*;[ \r]*(?:\/\/(?:(?!\R|;).)*)*)[ \r\t]*[\n]*([\t ]*(?:(?!\R|;).)*(?:$|;))/m) do |m| + var1 = $1 + var2 = $2 + if !var2.to_s.match(/^[ \t]*-pie-background/) + get_indent = var1.scan(/([ \t]*)background/).flatten[0].to_s + t = var1.sub(/background.*:/,'-pie-background:') + m = "#{var1}\n#{t}\n#{get_indent}behavior: url(\"/assets/ie_support/PIE2/PIE.htc\");\n#{var2}" + tmp << m + flag = true + end + m + end + c_tp = c_tp.gsub(/^([ \t]*border-radius:[ \t]*\d+(?:em|px|%|cm|pt|rem|vw|vh)(?:(?!\R|;).)*;[ \r]*(?:\/\/(?:(?!\R|;).)*)*)[ \r\t]*[\n]*([\t ]*(?:(?!\R|;).)*(?:$|;))/m) do |m| + var1 = $1 + var2 = $2 + if !var2.to_s.match(/^[ \t]*behavior: url\(\"\/assets\/ie_support\/PIE2\/PIE.htc\"\);/) + get_indent = var1.scan(/([ \t]*)border-radius/).flatten[0].to_s + m = "#{var1}\n#{get_indent}behavior: url(\"/assets/ie_support/PIE2/PIE.htc\");\n#{var2}" + tmp << m + flag = true + end + m + end + if flag + File.open(f, "w") { |f| f.write c_tp } + end + flag ? [f,tmp] : nil + end.compact + + def gsub_block(c,rg,block) + return c.scan(rg) if !block + result = c.gsub(rg) do |str| + block.call(str) + end + end + + def get_js_include_name(c,name,&block) + gsub_block(c,/^[ \t]*(?:).)*(?:<\/script>|%>)[ \t\r]*(?:\n)*/m,block) + end + def get_css_include_name(c,name,&block) + gsub_block(c,/^[ \t]*(?:|%>)[ \t\r]*(?:\n)*/m,block) + end + all_html_files = Dir['app/templates/**/*.html','app/templates/**/*.erb'] + all_html_contents = all_html_files.collect{|file| [file,File.open(file,'r'){|f| f.read}]} + s = all_html_contents.collect do |f,c| + flag = false + c_tp = c.clone + tmp = [] + c_tp = get_js_include_name(c_tp,"(?:html5shiv|jquery|jquery\_prefix|response|ie9|cssParser|polycalc|jquery\.cycle2|jquery\.cycle2\.carousel|jquery\.cycle2\.scrollVert|jquery\.cycle2\.tile|jquery\.dataTables|dataTables\.responsive)") do |m| + flag = true + tmp << m + m = '' + end + c_tp = get_css_include_name(c_tp,"(?:responsive\.dataTables)") do |m| + flag = true + tmp << m + m = '' + end + if flag + File.open(f, "w") { |f| f.write c_tp } + end + tmp.length>0 ? [f,tmp] : nil + end.compact + + all_head_files = Dir['app/templates/*/partial/_head.html.erb','app/templates/mobile/orbit_mobile/partial/_head.html.erb'] + all_head_files.each do |f| + c = File.open(f, "r") { |f| f.read } + flag = false + if c.scan(/<%= render 'shared\/ie_html5_fix' %>/).length == 0 + c = "<%= render 'shared/ie_html5_fix' %>\n#{c}" + flag = true + end + c = get_css_include_name(c,/\/\/(?:(?!\n).)*bootstrap/) do |m| + flag = true + v_match = m.scan(/"(.*)"/).flatten[0] + v = v_match.start_with?('http') ? v_match : ("http:"+v_match) + save_path = File.expand_path('../../assets/stylesheets/bootstrap/bootstrap.min.css',f) + system("wget #{v} -O #{save_path}") + m.sub(v_match,"bootstrap/bootstrap.min") + end + if flag + File.open(f, "w") { |f| f.write c } + end + end + #autofix DataTable width 0 issue + bs = "[ \t\r\n]*" + Dir['app/templates/**/*.erb'].each do |v| + c = File.open(v,'r'){|f| f.read} + flag = false + c = c.gsub(/().)*class=\"(?:(?!>).)*) nowrap((?:(?!>).)*\"(?:(?!>).)*>)/m) do |m| + flag = true + "#{$1}#{$2}" + end + c = c.gsub(/\$\('\.i-member span a'\)/) do |m| + flag = true + "$('.i-member span.member-data-value-name a')" + end + c = c.gsub(/^([ \t]*)(\$\((?:(?!\n).)*\))\.(DataTable\({#{bs}searching:#{bs}false,#{bs}paging:#{bs}false,#{bs}ordering:#{bs}false,#{bs}info:#{bs}false(?:(?!,|\n).)*(?:(?!autoWidth|}).)*)[\r\n]+^[ \t]*}\)/m) do |m| + flag = true + indent = $1 + new_text = "#{indent}#{$2}.each(function(){\n#{indent} if($(this).find('thead').length!=0 && $(this).find('td').length!=0 && !$(this).hasClass('dataTable')){\n#{indent} $(this).#{$3.gsub(/^ /,' ')},\n#{indent} autoWidth: false\n#{indent} });\n#{indent} }\n#{indent}});" + new_text + end + if flag + File.open(v,'w'){|f| f.write c} + end + end + + + if watch_dog.scan("auto_reopen_#{dir_name}").count != 0 + bundler_with_clean_env{%x[screen -ls | grep auto_reopen_#{dir_name} | cut -d. -f1 | awk '{print $1}' | xargs kill]} + end + + if !Rails.const_defined?('Console') + Thread.new do + begin + admin_message = ShowForAdminMessage.first + save_flag = false + message_tmp = '' + PagePart.all.group_by{|v| [v.part_id,v.page_id]}.each do |k,v| + next if k[1].nil? #For popup window + if v.count > 1 + page = Page.find(k[1]) + all_sub_parts = [] + new_v = [] + v.each do |v1| + tmp_sub_parts = v1.sub_parts + if tmp_sub_parts.count == 0 + v1.destroy + else + all_sub_parts += tmp_sub_parts + new_v << v1 + end + end + if new_v.count > 1 + if message_tmp.exclude? ("#{page.name}") + message_tmp += "#{page.name}
" + end + save_flag = true + new_v.each_with_index do |p1,i1| + if i1 == 0 + p1.sub_parts = all_sub_parts + p1.save! + else + p1.sub_parts = [] + p1.destroy + end + end + end + end + end + if save_flag + admin_message_message_tp = admin_message.message + admin_message_message_tp << [I18n.t('please_check_for_repeate_data'),message_tmp,false] + admin_message.update_attributes(message: admin_message_message_tp) + end + broken_pages = Page.all.select{|v| v.child_page_ids.include?(v.id)} + if broken_pages.length>0 + page_root = Page.root + broken_pages.each do |p| + p.child_page_ids -= [p.id] + p.save + end + end + broken_pages = Page.all.select{|v| v.id==v.parent_page_id} + if broken_pages.length>0 + page_root = Page.root + broken_pages.each do |p| + p.parent_page_id = page_root.id + p.save + end + end + # Site.make_cache + if (!(site.tmp_flags.include?("uf1")) rescue false) + MemberProfile.any_of([{:is_approved => nil},{:tmp_name=>nil}]).each do |member| + if (member.user.approved rescue true) + member.is_approved = true + else + member.is_approved = false + end + begin + member.save! + rescue => e + puts "member save failed" + puts e.to_s + end + end + User.where(:member_name=>nil).each do |user| + user.fix_member_name + end + site.tmp_flags << "uf1" + site.save + end + ModuleApp.create_indexes + Category.create_indexes + Page.create_indexes + RoleStatus.create_indexes + MemberProfile.create_indexes + Role.create_indexes + User.create_indexes + AttributeValue.create_indexes + Impression.index(impressionable_type: -1,impressionable_id: -1) + Impression.index(created_at: -1) + Impression.create_indexes + PageCacheModel.create_indexes + ['bulletin', 'page_context', 'web_link'].each do |app| + app_class = app.classify.constantize rescue nil + if !app_class.nil? + [{updated_at: -1}, {view_count: -1}].map{|v| app_class.index(v)} + app_class.create_indexes + end + end + + image_regex = Asset::ImageRegex + #remove duplicated index + AssetTag.collection.indexes.drop_one({asset_wrap_id: 1}) rescue nil + AssetTag.collection.indexes.drop_one({asset_tag_id: -1, created_at: -1}) rescue nil + AssetTag.collection.indexes.drop_one({is_public: 1, is_admin: -1}) rescue nil + Asset.collection.indexes.drop_one({_fts: 'text', _ftsx: 1}) rescue nil + Asset.where("data" => image_regex).update_all(is_image: true) + Asset.where(:data.not => image_regex).update_all(is_image: false) + Asset.where(size: nil).each{|asset| asset.save} + AssetTag.create_indexes + SubPart.create_indexes + PagePart.create_indexes + Asset.create_indexes + AssetTag.all.update_all(assets_count: 0) + Asset.collection.aggregate([{"$match"=>{"user_id"=>{"$ne"=>nil}}},{"$group"=>{"_id"=>"$user_id","count"=>{"$sum"=> 1}}}]).to_a.each do |gp| + User.where(id: gp['_id']).update_all(assets_count: gp['count']) + end + Asset.collection.aggregate([{"$match"=>{"asset_tag_id"=>{"$ne"=>nil}}},{"$group"=>{"_id"=>{"tag_id" => "$asset_tag_id","parent_ids" => "$root_asset_tag_ids"},"count"=>{"$sum"=> 1}}}]).to_a.each do |gp| + AssetTag.where(:id => gp['_id']['tag_id']).update_all(assets_count: gp['count']) + end + flag = !User::PasswordValidTime.nil? + Email.where(template: 'reset_password_mailer/reset_user_password',"template_data.period_flag" => true).count + if (!(site.tmp_flags.include?("uf2")) rescue false) + User.all.each do |v| + m = MemberProfile.where(id: v.member_profile_id).first + if m.nil? + v.destroy + end + if flag + send_date = v.password_updated_at.nil? ? Time.now : (v.password_updated_at+User::PasswordValidTime) + v.send_password_reset_email(send_date: send_date,period_flag: true,email: m.email) + end + end + site.tmp_flags << "uf2" + site.save + end + if (!(site.tmp_flags.include?("uf3")) rescue false) + MemberProfile.all.each do |m| + m.save + end + site.tmp_flags << "uf3" + site.save + end + if (!(site.tmp_flags.include?("asf1")) rescue false) + Asset.where(:title=>nil).each do |a| + a.title_translations = I18n.available_locales.map{|l| [l.to_s, a[:data]]}.to_h + a.description_translations = I18n.available_locales.map{|l| [l.to_s, ""]}.to_h + a.save + end + site.tmp_flags << "asf1" + site.save + end + if (!(site.tmp_flags.include?("sm1")) rescue false) + Page.where(:page_id=>'sitemap').update_all("name.zh_tw"=>"網站導覽") + site.tmp_flags << "sm1" + site.save + end + if (!(site.tmp_flags.include?("sm2")) rescue false) + Page.where(:module => "login_page").each do |p| + p.instance_variable_set(:@skip_callback, true) + p.save + end + site.tmp_flags << "sm2" + site.save + end + if (!(site.tmp_flags.include?("sort1")) rescue false) + Category.where(:sort_number=>nil).each do |c| + c.sort_number = 0 + c.save + end + Tag.where(:sort_number=>nil).each do |t| + t.sort_number = 0 + t.save + end + site.tmp_flags << "sort1" + site.save + end + if File.exist?('start_site.sh') && File.stat('start_site.sh').mode < 0100755 + tmp = File.read('start_site.sh') + File.open('start_site.sh', 'w+'){|f| f.write(tmp.gsub("\r", ""))} + File.chmod(0755, 'start_site.sh') + end + if File.exist?('close_site.sh') && File.stat('close_site.sh').mode < 0100755 + tmp = File.read('close_site.sh') + File.open('close_site.sh', 'w+'){|f| f.write(tmp.gsub("\r", ""))} + File.chmod(0755, 'close_site.sh') + end + force_update_thumb = !(site.tmp_flags.include?('uf4')) + if `which fc-list`.present? && `fc-list |grep 'MingLiU'`.blank? + puts "Installing fonts for system to fix fetching template bug ..." + system("wget -q http://gitlab.tp.rulingcom.com/erictyl/install_r45_on_ubuntu_1804lts_doc/-/raw/master/fonts.tgz?inline=false -O fonts.tgz") + system("mkdir ~/.local/share/fonts -p") + system("tar -zxf fonts.tgz -C ~/.local/share && fc-cache -r") + puts "Finish installing fonts!" + force_update_thumb = true + end + Multithread.where(:key=>"fetch_design_thumbs").destroy + require File.expand_path('../fetch_design_thumb', __FILE__) + puts 'fetch_design_thumb start' + fetch_design_thumb(site,current_locale,nil,force_update_thumb) + puts 'fetch_design_thumb finish' + site.tmp_flags << "uf4" if force_update_thumb + if (!(site.tmp_flags.include?("uf5")) rescue false) + SelectOption.all.to_a.group_by{|o| [o.field_name, o.sub_part_id]}.each do |k, select_options| + select_options[1..-1].each{|o| o.destroy} + end + site.tmp_flags << "uf5" + site.save + end + if (!(site.tmp_flags.include?("uf6")) rescue false) + MemberProfileField.where(:option_list.in=>[{},nil]).each do |m| + m.save + end + site.tmp_flags << "uf6" + site.save + end + if (!(site.tmp_flags.include?("uf7")) rescue false) + MemberProfile.where(:is_approved=>true).each do |member| + if (member.user && !(member.user.approved)) + member.user.update(:approved=>true) + end + end + user = User.where(:user_name=>'rulingcom').first + user.member_profile.update(:is_hidden=>true) if user && user.member_profile + site.tmp_flags << "uf7" + site.save + end + if (!(site.tmp_flags.include?("uf8")) rescue false) + users = User.where(beta_tester: true) + users.each do |user| + user.member_profile.update(:is_hidden=>true) if user.member_profile + end + site.tmp_flags << "uf8" + site.save + end + if (!(site.tmp_flags.include?("uf9")) rescue false) + Page.where(:module=>'member').each do |page| + page.custom_array_field = page.custom_array_field.to_a.sort_by{|a| a['sort_order'].to_i} + page.custom_array_field_for_show = page.custom_array_field_for_show.to_a.sort_by{|a| a['sort_order'].to_i} + page.save + end + MemberProfile.cache_member_page + site.tmp_flags << "uf9" + site.save + end + site.tmp_flags = site.tmp_flags.uniq + site.save + rescue => e + puts [e,e.backtrace] + end + end + end +end \ No newline at end of file diff --git a/temp_file/config/environment.rb b/temp_file/config/environment.rb new file mode 100644 index 0000000..9015415 --- /dev/null +++ b/temp_file/config/environment.rb @@ -0,0 +1,111 @@ +# Load the Rails application. +require File.expand_path('../application', __FILE__) + +require File.expand_path('../../app/helpers/orbit_helper', __FILE__) +OrbitHelper.const_set("SharedMutex",Thread.current[:shared_mutex]) +OrbitHelper.const_set("SharedHash",Thread.current[:shared_hash]) + + +# Initialize the Rails application. +Orbit::Application.initialize! +Orbit::Application.config.secret_key_base = 'acc6ffc5a7d360c9cf2a7bdb4ddf9a897942ec6767413a5c0324a0fa8b86197a96298288a66bd46d8770d8b6edf509aad65716961c2c364ce006b475e6cfd418' +site = Site.first +default_locale = (site.default_locale rescue I18n.available_locales[0]) rescue nil +if !default_locale.nil? + I18n.default_locale = default_locale + I18n.locale = default_locale +end + +[MemberProfile,Page,Role,RoleStatus,AttributeValue,AttributeField,MemberProfileField,MemberProfileFieldValue,MemberProfileDefaultField,MemberRelation].each do |m| + m.class_eval{include MemberCleanCache} +end +require File.expand_path('../../app/models/page_cache_model', __FILE__) rescue nil + +if (site.enable_cache rescue false) + module MongoidObs + require 'active_support/concern' + extend ActiveSupport::Concern + included do + excluded_classes = [Asset,AssetTag,Email,EmailLog,Multithread,Site,Impression,ModuleApp,OrbitMemberModule,OrbitWidget,PageCacheModel,UserAction] + excluded_classes += OrbitApp::Module::Registration.avoid_page_cache + if excluded_classes.exclude?(self) + custom_flag = false + if self == Page + def delete_page_cache + if self.changed? || self.new_record? + drop_flag = false + if self.changed != ['view_count'] + if (['access_level', 'always_show_on_menu'] & self.changed).count != 0 + drop_flag = true + end + end + if drop_flag + PageCacheModel.delete_all + else + PageCacheModel.where(page_id: self.id).delete + end + end + true #return true to save ok + end + elsif self == SubPart + def delete_page_cache + if self.changed? || self.new_record? + page = self.page_part.page rescue nil + if page + PageCacheModel.where(page_id: self.id).delete + end + end + true #return true to save ok + end + elsif self == PagePart + def delete_page_cache + if self.changed? || self.new_record? + page = self.page rescue nil + if page + PageCacheModel.where(page_id: self.id).delete + end + end + true #return true to save ok + end + elsif self.instance_methods.include?(:delete_page_cache_custom) + custom_flag = true + else + def delete_page_cache + if self.changed? || self.new_record? + PageCacheModel.delete_all + end + true #return true to save ok + end + end + if custom_flag + self.after_save :delete_page_cache_custom + else + self.after_save :delete_page_cache + end + end + end + end + module MongoidObsWrap + def included(m) + super(m) + m.include(MongoidObs) + end + end + Mongoid::Document.extend(MongoidObsWrap) + preload_models = Mongoid.models + preload_models.each{|v| v.include(MongoidObs)} +end +if Rails.env != "production" + load_models = %w(app/models/attribute_value.rb app/models/member_profile_field_value.rb) + load_models.each do |load_model| + load(load_model) + end +end +$Orbit_Categorized = JSON.parse(File.read("orbit_categorized_tmp.txt")) rescue {} +if ENV['worker_num'] == '0' + if defined?(PageCacheModel) + PageCacheModel.collection.drop + PageCacheModel.create_indexes + end + require File.expand_path('../do_on_startup', __FILE__) +end