Compare commits

..
Author SHA1 Message Date
Matt K. Fu e6511cbcdd fix default widget query 2013-08-23 11:03:28 +08:00
chris f664c3715c Changes for ntue (mail app) 2013-07-30 18:28:26 +08:00
204 changed files with 103 additions and 1597 deletions

No files matched your search

+1 -3
View File
@@ -14,9 +14,7 @@ public/uploads/**/*
solr/data
tmp/**/*
uploads/**/*
config/*.god
log/*.gz
tmp/restart.txt
*.swp
*.pid
*.lck
+2 -6
View File
@@ -16,11 +16,7 @@ gem 'execjs'
gem 'jquery-rails', '2.1.4'
gem 'jquery-ui-rails'
gem "select2-rails", '3.3.1'
gem 'kaminari'
gem "acts_as_unvlogable"
gem 'youtube_it'
gem 'gotcha'
gem 'kaminari', :git => 'git://github.com/amatsuda/kaminari.git'
# gem "memcached", "~> 1.4.3"
# gem "memcache-client"
@@ -41,7 +37,7 @@ gem 'resque-scheduler' # job scheduling
gem 'resque-restriction'
#gem 'rb-readline'
# gem 'ruby-debug19'
gem 'rubyzip','0.9.9'
gem 'rubyzip'
gem 'sunspot_mongo'
gem 'sunspot_solr'
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

-1
View File
@@ -5,4 +5,3 @@
*= require_self
*= require social-share-button
*/
+8 -10
View File
@@ -11,25 +11,23 @@ class DefaultWidgetController< OrbitWidgetController
end
def query_for_default_widget
@ori_class_name = @default_widget["query"].split('.')[0]
@ori_query = @default_widget["query"]
result = nil
result_objects = nil
result = eval(@ori_query)
if !params["tag_id"].blank?
if params["category_id"].blank? #has tag no cate
result.selector[:tagged_ids] = { "$in" => params['tag_id'] }
result = eval("#{@ori_query}.where(:tagged_ids.in => params['tag_id'])")
else #has tag and cate
result.selector[get_category_field_name] = { "$in" => params['category_id'].collect{|t| BSON::ObjectId(t)}}
result.selector[:tagged_ids] = { "$in" => params['tag_id'] }
result = eval("#{@ori_query}.where(:#{get_category_field_name}.in=>params['category_id'], :tagged_ids.in => params['tag_id'])")
end
elsif params["category_id"].blank? #no tag no cate
result = eval(@ori_query)
else #no tag has cate
result.selector[get_category_field_name] = { "$in" => params['category_id'].collect{|t| BSON::ObjectId(t)}}
result = eval("#{@ori_query}.where(:#{get_category_field_name}.in=>params['category_id'])")
end
eval("result.#{@default_widget[:sorting_query]}")
result.available_for_lang(I18n.locale).can_display
end
def search_result
@@ -97,9 +95,9 @@ class DefaultWidgetController< OrbitWidgetController
end
def get_category_field_name
@ori_class_name = @ori_class_name.constantize unless @ori_class_name.is_a? Class
@ori_class_name = @ori_class_name.constantize
@ori_class_name.fields.each_key do |key|
return key.to_s if key.include?('category_id')
return key if key.include?('category_id')
end
nil
end
+2 -1
View File
@@ -9,7 +9,8 @@ module ApplicationHelper
def delayed_impressionist(item)
user_id = current_user.nil? ? nil : current_user.id
Resque.enqueue(DelayedImpressionist,:request=>DelayImpressionistRequest.new(request),:obj=>item,:class=>item.class.to_s,:controller_name=>controller_name,:action_name=>action_name,:user=>user_id)
request = DelayImpressionistRequest.new(request)
Resque.enqueue(DelayedImpressionist,:request=>request,:obj=>item,:class=>item.class.to_s,:controller_name=>controller_name,:action_name=>action_name,:user=>user_id)
end
def check_user_role_enable(attribute_fields)
+4 -12
View File
@@ -2,24 +2,16 @@ class BackupServer
@queue = :high
def self.perform()
#CronMail.time_check("Going to backup Orbit").deliver
dbhost = Mongoid.config.database.connection.primary.join ':'
dbname = Mongoid.config.database.name
archive_db_list_path = OrbitSystemPreference::ArchiveDbListPath
dbdirectory = "#{Rails.root}/tmp/#{dbname}-"+Time.now.strftime("%Y-%m-%d-%H-%M")
%x[mongodump -h #{dbhost} -d #{dbname} -o #{dbdirectory} ]
Dir.foreach('tmp') do |item|
date_str = item.to_s.gsub("#{dbname}-",'')
next if not date_str.match(/\d{4}-\d{2}-\d{2}-\d{2}-\d{2}/)
if Date.parse(date_str).to_time < Site.first.backup_keep_for_days.days.ago
OrbitLogger.info "Deleting #{date_str}"
%x[rm -rf tmp/#{item}]
end
end
%x[rm -f #{archive_db_list_path}]
%x[cd tmp ; ls -l |grep #{dbname} | awk '{print $8}'|xargs du -h --block-size=1M --max-depth=0 |sort -h >> #{archive_db_list_path}]
%x[rm #{archive_db_list_path}]
%x[ls #{Rails.root}/tmp/#{dbname}* | du -h --max-depth=1 --block-size=1M |sort -h >> #{archive_db_list_path}]
OrbitLogger.info "DB backup done Path:#{dbdirectory}"
end
end
+1 -7
View File
@@ -17,16 +17,10 @@ class DelayedImpressionist
arg = args[0]
@request= DelayImpressionistRequest.new
@request.restore(arg["request"])
request = @request
obj = eval("#{arg["class"]}.find '#{arg['obj']['_id']}'")
# imp = new(@request,arg["controller_name"],arg["action_name"],arg["user"],obj)
new_impression = obj.impressions.build(:user_id=>arg["user"],:controller_name=>arg["controller_name"],:action_name=>arg["action_name"],:ip_address=>@request.remote_ip,:referrer=>@request.referer)
@try = 1
loop do
result = new_impression.save rescue false
break if (result || @try >= 10)
@try = @try + 1
puts "trying:#{@try}"
end
new_impression.save
obj.update_attribute(:view_count,obj.impression_count)
end
+1 -2
View File
@@ -29,11 +29,10 @@ class Site
mount_uploader :default_image, ImageUploader
field :search,:type => Hash
field :resque_namespace,:type => String, :default=>APP_CONFIG['orbit']
field :title, localize: true
field :footer, localize: true
field :sub_menu, localize: true
field :backup_keep_for_days,:type=>Integer,:default=> APP_CONFIG['backup_keep_for_days']
field :mobile_on, :type => Boolean, :default => false
-1
View File
@@ -3,7 +3,6 @@ defaults: &defaults
store_ip: 'redmine.rulingcom.com:3001'
orbit: 'Orbit'
ruling_digital: 'RulingDigital'
backup_keep_for_days: 30
development:
<<: *defaults
+1 -1
View File
@@ -3,7 +3,7 @@ require 'resque_scheduler/server'
# require 'yaml'
Resque.redis = 'localhost:6379'
Resque.redis.namespace = Site.first.resque_namespace rescue APP_CONFIG['orbit']
Resque.redis.namespace = "resque"
# If you want to be able to dynamically change the schedule,
# uncomment this line. A dynamic schedule can be updated via the
+2 -2
View File
@@ -8,7 +8,7 @@ defaults: &defaults
development:
<<: *defaults
database: test_site
database: demo_site_development
test:
<<: *defaults
database: test_site
@@ -21,4 +21,4 @@ production:
# password: <%= ENV['MONGOID_PASSWORD'] %>
# database: <%= ENV['MONGOID_DATABASE'] %>
<<: *defaults
database: test_site
database: demo_site_production
@@ -4,32 +4,33 @@ user_home = ENV['HOME'] || File.dirname(__FILE__) + '/../..'
development_uid = ''
development_gid = ''
num_workers = rails_env == 'production' ? <%= @resque_workers %> : 1
num_workers = rails_env == 'production' ? 5 : 2
num_workers.times do |num|
God.watch do |w|
w.dir = rails_root
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>resque-worker-#{num}"
w.group = 'rulingcom'
w.name = "worker-#{num}"
w.group = 'resque'
w.interval = 30.seconds
queue = case num
when 0..2
when 0
'critical'
when 1..2
'high,low'
when 3..num_workers
'low'
end
w.pid_file = "#{rails_root}/tmp/#{w.name}.pid"
w.env = {"RAILS_ENV"=>rails_env,"PIDFILE" => w.pid_file ,"HOME"=>user_home, "QUEUE"=>queue, "RAILS_ENV"=>rails_env }
w.start = "rake -f #{rails_root}/Rakefile resque:work"
w.stop = "sudo kill -KILL $(cat #{w.pid_file})"
w.env = {"QUEUE"=>queue, "RAILS_ENV"=>rails_env}
w.start = "HOME=#{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile resque:work"
w.uid = (rails_env == 'production' )? "root" : development_uid
w.gid = (rails_env == 'production' )? "root" : development_gid
w.log = (rails_env == 'production' )? "/var/log/#{w.group}/#{w.name}.log":"#{rails_root}/log/dev-#{w.name}.log"
w.log = (rails_env == 'production' )? "/var/log/#{w.group}/#{w.name}.log":"#{rails_root}/log/dev_resque-#{w.name}.log"
# restart if memory gets too high
w.transition(:up, :restart) do |on|
@@ -6,19 +6,16 @@ development_gid = ''
God.watch do |w|
w.dir = rails_root
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>sunspot-solr"
w.group = 'rulingcom'
w.pid_file = "#{rails_root}/solr/pids/production/sunspot-solr-production.pid"
w.name = "scheduler"
w.group = 'resque'
w.interval = 30.seconds
w.env = {"RAILS_ENV"=>rails_env,"HOME"=>user_home ,"RAILS_ENV"=>rails_env}
w.start = "rake -f #{rails_root}/Rakefile sunspot:solr:start"
w.stop = "sudo kill -KILL $(cat #{w.pid_file})"
w.keepalive
w.env = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
w.start = "HOME= #{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile resque:scheduler"
w.uid = (rails_env == 'production' )? "root" : development_uid
w.gid = (rails_env == 'production' )? "root" : development_gid
w.log = (rails_env == 'production' )? "/var/log/#{w.group}/#{w.name}.log":"#{rails_root}/log/dev-#{w.name}.log"
w.log = (rails_env == 'production' )? "/var/log/#{w.group}/#{w.name}.log":"#{rails_root}/log/dev_resque-#{w.name}.log"
# restart if memory gets too high
w.transition(:up, :restart) do |on|
-6
View File
@@ -4,12 +4,6 @@ dashboard_counter_cache:
args:
description: DashboardCounterCache
backup_server:
cron: 0 0 2 * * *
class: BackupServer
args:
description: BackupServer and remove old backups
update_tag_cloud:
cron: 0 0 [0,12] * * *
class: UpdateTagCloud
+5 -14
View File
@@ -4,33 +4,24 @@ module OrbitApp
Version = "0.1"
def display_visitors(options={})
map = "function(){ emit( this.referrer,{session_hash: this.session_hash,created_at: this.created_at}); };"
reduce = "function(key, values){ var sum = 0; values.forEach(function(doc){sum += doc.amount; }); return {amount: sum};};"
if options.blank?
impressions = Impression.collection.map_reduce(map, reduce,read: :primary, out: "vr")
else
query = Impression.where(options).selector
impressions = Impression.where(options).collection.map_reduce(map, reduce,read: :primary, out: "vr",:query=>query)
end
impressions.count
impressions = Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
end
def display_visitors_today
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day , '$lte' => DateTime.now})
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
end
def display_visitors_this_week
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day - 7.days, '$lte' => DateTime.now})
display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week})
end
def display_visitors_this_month
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day - 1.month, '$lte' => DateTime.now})
display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month})
end
def display_visitors_this_year
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day - 1.year, '$lte' =>DateTime.now})
display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
end
end # end of VisitorCounterEval
end # of Module
end # of OrbitApp
+1 -6
View File
@@ -102,17 +102,12 @@ module OrbitApp
def initialize(&block)
@query = nil
@image = nil
@sorting_query = 'desc(:created_at)'
@more_link = {}
@fields = []
@enabled_styles = STYLE
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
end
def sorting(query)
@sorting_query = query
end
def enable(args)
@enabled_styles = args
end
@@ -127,7 +122,7 @@ module OrbitApp
end
def to_module_app_format
{"query"=>@query,"image"=>@image,"more_link"=>@more_link,"enabled_styles"=>@enabled_styles,:sorting_query=>@sorting_query} rescue nil
{"query"=>@query,"image"=>@image,"more_link"=>@more_link,"enabled_styles"=>@enabled_styles} rescue nil
end
def link_field(field_name,setting)
+4 -82
View File
@@ -1,5 +1,4 @@
# encoding: utf-8
require 'erb'
namespace :site do
@@ -10,26 +9,21 @@ namespace :site do
Site.create( :school => 'RulingDigital University', :department => 'Computer Science', :valid_locales => [ 'en', 'zh_tw' ], :in_use_locales => [ 'zh_tw', 'en' ])
User.create!(:email=>'chris@rulingcom.com',:admin=>true,:user_id=>'chris',:password=>'password')
`mongo #{Mongoid.config.database.name} --eval "db.fs.chunks.ensureIndex({files_id: 1, n: 1})"`
puts "Congres you can now login within url"
puts 'Please upload design package (/admin/designs/upload_package ) and run rake site:necessary_data'
I18nVariable.create!( :document_class => 'language', :key => 'en', :en => 'English', :zh_tw => '英文' )
I18nVariable.create!( :document_class => 'language', :key => 'zh_tw', :en => 'Chinese', :zh_tw => '中文' )
Info.create!(key: "profile", built_in: true, disabled: false, title: {"zh_tw"=>"基本欄位", "en"=>"Basic Info"}, to_search: false)
Info.create!(key: "profile", built_in: true, disabled: false, title: {"zh_tw"=>"基本欄位", "en"=>"Basic Info"}, to_search: false)
end
task :create_logrotate => :environment do #Can remove after all products update
create_rulingcom_logrotate
end
task :necessary_data => :environment do
auto_setting
site = Site.first
site.update_attribute(:title,'RulingOrbit Demo Site')
site.update_attribute(:resque_namespace,@resque_namespace)
site.title = 'RulingOrbit Demo Site'
site.save
# home_trans = I18nVariable.create!( :document_class => 'Home', :key => 'home', :en => 'Homepage', :zh_tw => '首頁')
design = Design.first
site = Site.first
site.design = design
site.save
theme = design.themes.first
@@ -37,78 +31,6 @@ namespace :site do
home.title_translations = {"zh_tw"=>"首頁", "en"=>"Home"}
home.save
puts "Rember to restart server after you setup all sites for starting God"
end
task :start_auto_setting => :environment do
auto_setting
end
def auto_setting
puts "Enter your resque namespace[Orbit]:......"
@resque_namespace = STDIN.gets.gsub("\n",'')
@resque_namespace = APP_CONFIG['orbit'] if @resque_namespace.empty?
puts "Is this the only site [ Entry site? ] on this mechine?[Default No]:......"
site_is_alone = false
site_is_alone = STDIN.gets.gsub("\n",'')
site_is_alone = true if site_is_alone.downcase == 'yes'
puts "Is this a primary site?[Default No]:......"
site_is_primary = false
site_is_primary = STDIN.gets.gsub("\n",'')
site_is_primary = true if site_is_primary.downcase == 'yes'
puts "Traffic heavy?[Default No]:......"
traffic_heavy = false
traffic_heavy = STDIN.gets.gsub("\n",'')
traffic_heavy = true if traffic_heavy.downcase == 'yes'
@traffic_rate = traffic_heavy ? 2 : 1
if site_is_alone
@resque_workers = 5 * @traffic_rate #Entry Site
else
if site_is_primary
@resque_workers = 2 * @traffic_rate #Primary Site
else
@resque_workers = 1 * @traffic_rate #Secondary Site
end
end
resque_setting = ERB.new(File.new("lib/template/setting/resque.god.erb").read)
File.open("config/resque.god", 'w') { |file| file.write(resque_setting.result) }
resque_schedule_setting = ERB.new(File.new("lib/template/setting/resque_schedule.god.erb").read)
File.open("config/resque_schedule.god", 'w') { |file| file.write(resque_schedule_setting.result) }
if site_is_primary
solr_setting = ERB.new(File.new("lib/template/setting/solr.god.erb").read)
File.open("config/solr.god", 'w') { |file| file.write(solr_setting.result) }
create_rulingcom_logrotate
end
end
def create_rulingcom_logrotate
`sudo mkdir -p /var/log/rulingcom` unless File.directory? "/var/log/rulingcom"
@project_folder = ENV["PWD"]
puts "Is your Orbit folder: #{@project_folder} (If YES => Press enter,or enter your path)"
user_enter_project_folder = STDIN.gets.gsub("\n",'')
@project_folder = user_enter_project_folder unless user_enter_project_folder.empty?
@user_home_folder = ENV["HOME"]
puts "Is your Home folder: #{@user_home_folder} (If YES => Press enter,or enter your path)"
user_enter_home_folder = STDIN.gets.gsub("\n",'')
@user_home_folder = user_enter_home_folder unless user_enter_home_folder.empty?
logrotate_setting = ERB.new(File.new("lib/template/setting/rulingcom_log.erb").read)
File.open("#{@project_loc}/tmp/logrotate_setting", 'w') { |file| file.write(logrotate_setting.result) }
`sudo cp #{@project_loc}/tmp/logrotate_setting /etc/logrotate.d/rulingcom`
`logrotate -v -f /etc/logrotate.conf`
end
end
-14
View File
@@ -1,14 +0,0 @@
# encoding: utf-8
namespace :system_check do
task :god_can_start => :environment do
unless File.directory? "/var/log/rulingcom"
puts "Creating Rulingcom log folder"
`sudo mkdir -p /var/log/rulingcom`
end
end
task :set_resque_namespace,[:namespace] => :environment do |t,args|
site = Site.first
site.resque_namespace = args[:namespace]
site.save
end
end
@@ -1,59 +0,0 @@
rails_env = ENV['RAILS_ENV'] || "production"
rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/..'
user_home = ENV['HOME'] || File.dirname(__FILE__) + '/../..'
development_uid = ''
development_gid = ''
God.watch do |w|
w.dir = rails_root
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>resque-scheduler"
w.group = 'rulingcom'
w.interval = 10.seconds
w.pid_file = "#{rails_root}/tmp/#{w.name}.pid"
w.env = {"QUEUE"=>"*", "RAILS_ENV"=>rails_env,"HOME"=>user_home, "RAILS_ENV"=>rails_env}
w.start = "rake -f #{rails_root}/Rakefile resque:scheduler"
w.stop = "sudo kill -KILL $(cat #{w.pid_file})"
w.uid = (rails_env == 'production' )? "root" : development_uid
w.gid = (rails_env == 'production' )? "root" : development_gid
w.log = (rails_env == 'production' )? "/var/log/#{w.group}/#{w.name}.log":"#{rails_root}/log/dev-#{w.name}.log"
# restart if memory gets too high
w.transition(:up, :restart) do |on|
on.condition(:memory_usage) do |c|
c.above = 350.megabytes
c.times = 2
end
end
# determine the state on startup
w.transition(:init, { true => :up, false => :start }) do |on|
on.condition(:process_running) do |c|
c.running = true
end
end
# determine when process has finished starting
w.transition([:start, :restart], :up) do |on|
on.condition(:process_running) do |c|
c.running = true
c.interval = 5.seconds
end
# failsafe
on.condition(:tries) do |c|
c.times = 5
c.transition = :start
c.interval = 5.seconds
end
end
# start if process is not running
w.transition(:up, :start) do |on|
on.condition(:process_running) do |c|
c.running = false
end
end
end
-33
View File
@@ -1,33 +0,0 @@
/var/log/rulingcom/*.log {
daily
dateext
compress
rotate 30
}
#Resque
<%= "#{@project_folder}/nginx/logs/access.log" %>{
daily
dateext
compress
rotate 30
}
#DB log
/var/log/mongodb{
daily
dateext
compress
rotate 30
}
#Orbit
<%= "#{@project_folder}/log/*production.log" %>{
daily
dateext
compress
rotate 30
}
# end of Orbit,EXTEND IF NEEDED
#Remember to save this file as /etc/logrotate.d/rulingcom
@@ -89,10 +89,6 @@ class Bulletin
def bulletin_category_with_title
self.bulletin_category.title
end
def bulletin_create_dept
User.get_member_list_attribute_value(self.create_user_id,"staff","Unit").get_value_by_locale(I18n.locale)
end
def share_item
Item.first(conditions:{name: 'announcement'})
@@ -4,8 +4,8 @@
<div class="info1">
<span class="pull-right"><%= dislpay_view_count(@bulletin) %></span>
<span class="date"><%= display_date_time(@bulletin.postdate) %></span>
<% unit = User.get_member_list_attribute_value(@bulletin.create_user_id,"staff","Unit").get_value_by_locale(I18n.locale) rescue nil %>
<span><%= t('announcement.default_widget.bulletin_create_dept') + ": " + unit unless unit.blank? %></span>
<% unit = @bulletin.cache_dept[I18n.locale.to_s] rescue nil %>
<span><%= link_to unit,panel_announcement_front_end_index_bulletins_by_unit_path(:name=>unit) unless unit.blank? %></span>
</div>
</div>
<div class="news_image">
@@ -17,7 +17,6 @@ en:
postdate: Post Date
title: Title
subtitle: SubTitle
bulletin_create_dept: Unit
editing_announcement: Edit Announcement
editing_announcement_category: Edit Category
error:
@@ -17,7 +17,6 @@ zh_tw:
postdate: 張貼日期
title: 標題
subtitle: 副標題
bulletin_create_dept: 單位
editing_announcement: 編輯類別
editing_announcement_category: 編輯類別
error:
+1 -3
View File
@@ -29,15 +29,13 @@ module Announcement
widgets do
default_widget do
sorting 'desc(:postdate)'
query 'Bulletin.can_display.any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
query 'Bulletin.any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
enable ["typeA","typeB_style3","typeC"]
image :image
field :postdate
link_field :title,{:method => 'panel_announcement_front_end_bulletin_path',:args=>:self,:preview=>true}
link_field :bulletin_category_with_title,{:method => 'panel_announcement_front_end_bulletins_path',:args=>{:category_id => [:bulletin_category,:id]}}
field :subtitle
field :bulletin_create_dept
link_to_more 'panel_announcement_front_end_bulletins_path',:title_i18n=> 'more_plus'
end
@@ -3,4 +3,5 @@ log/*.log
pkg/
test/dummy/db/*.sqlite3
test/dummy/log/*.log
test/dummy/tmp/
test/dummy/tmp/
test/dummy/.sass-cache
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,28 @@
class Panel::Ask::FrontEnd::AskQuestionsController < OrbitWidgetController
layout false
def initialize
super
@app_title = 'ask'
end
def index
@ask_question = AskQuestion.new
end
def create
@ask_question = AskQuestion.new(params[:ask_question])
if verify_recaptcha model: @ask_question, private_key: '6Lfl7OESAAAAAD4rl5S16-zjt5yiKNYJ6jsqdwmL'
@ask_acknowledgement = AskAcknowledgement.first || AskAcknowlegement.new
@ask_question.save
AskAdmin.all.each do |ask_admin|
Resque.enqueue(SendAskNoticeMail, ask_admin.id, @ask_question.id)
end
end
respond_to do |format|
format.js
end
end
end
@@ -1,6 +1,6 @@
class AskMailer < ActionMailer::Base
default from: 'orbit_test@rulingcom.com'
def reply(ask_question)
@ask_question = ask_question
mail(:to => @ask_question.email, :subject => "#{t('ask.reply')}:#{@ask_question.title}")
@@ -1,8 +1,4 @@
class AskQuestion
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
include Mongoid::Document
include Mongoid::Timestamps
include OrbitCoreLib::ObjectDisable
@@ -19,5 +15,4 @@ class AskQuestion
belongs_to :ask_category
has_one :ask_reply, dependent: :destroy
end
@@ -5,7 +5,7 @@
</head>
<body>
<p>
<%= @ask_question.content %>
<%= @ask_question.ask_reply.content %>
</p>
<p>此為系統自動發信,請勿直接回覆</p>
</body>
@@ -18,5 +18,6 @@
<div class="form-actions form-fixed pagination-right">
<div id="ask_questions_pagination" class="paginationFixed">
<%= paginate @ask_questions %>
</div>
</div>
@@ -0,0 +1,11 @@
<% if @ask_question.errors.empty? %>
$('html,body').scrollTop(0);
$('#acknowledgement')
.html('<%= j simple_format(@ask_acknowledgement.content) %>')
.fadeIn(600)
.delay(3000)
.fadeOut(600);
<% else %>
alert('<%= @ask_question.errors.full_messages.join('\n') %>');
Recaptcha.reload()
<% end %>
@@ -1,37 +1,8 @@
<link href='/assets/ask.css' rel='stylesheet' type='text/css' />
<style type="text/css">
.spinner {
position: fixed;
top: 50%;
left: 50%;
margin-left: -50px; /* half width of the spinner gif */
margin-top: -50px; /* half height of the spinner gif */
text-align:center;
z-index:1234;
overflow: auto;
width: 100px; /* width of the spinner gif */
height: 102px; /*hight of the spinner gif +2px to fix IE8 issue */
}
</style>
<script type="text/javascript">
$(document).ready(function(){
$("#spinner").bind("ajaxSend", function() {
$(this).show();
}).bind("ajaxStop", function() {
$(this).hide();
}).bind("ajaxError", function() {
$(this).hide();
});
});
</script>
<div id="spinner" class="spinner" style="display:none;">
Sending Mail <%= image_tag 'loading.gif', :id => "img-spinner"%>
</div>
<div id="new-ask-question" class="ask-question">
<div id="acknowledgement"></div>
<%= form_for @ask_question, url: panel_ask_front_end_ask_questions_path(standalone: true), html: {class: 'form-horizontal'} do |f| %>
<%= form_for @ask_question, url: panel_ask_front_end_ask_questions_path(standalone: true), remote: true,
html: {class: 'form-horizontal'} do |f| %>
<div class="control-group">
<%= f.label :ask_category_id, class: 'control-label required' %>
<div class="controls">
@@ -84,26 +55,17 @@ $(document).ready(function(){
<%= f.text_area :content, rows: 8, class: 'input-xlarge' %>
</div>
</div>
<div class="control-group">
<div class="control-group">
<div class="controls">
<%= gotcha_error %>
<%= gotcha%>
<%= recaptcha_tags ajax: true, public_key: '6Lfl7OESAAAAAKdxTSSmWSOWlL__04A9AqQzD7_z' %>
</div>
</div>
<div class="form-actions">
<%= f.submit t('submit'), class: 'btn btn-primary', :id => 'button-mail' %>
<%= f.submit t('submit'), class: 'btn btn-primary' %>
<%= f.button t('cancel'), type: 'reset', class: 'btn' %>
</div>
<% end %>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#button-mail').click(function() {
$('#spinner').show();
});
});
</script>
<script type="text/javascript">
$(function() {
$('#new-ask-question .required').each(function() {
@@ -115,4 +77,4 @@ $(document).ready(function(){
return false;
});
});
</script>
</script>
File renamed without changes.
File renamed without changes.
@@ -18,7 +18,6 @@ Rails.application.routes.draw do
end
namespace :front_end do
match "ask_questions/thank_you" => "ask_questions#thank_you", :as => 'thank_you'
resources :ask_questions
end
end
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 204 files, more files were not shown because too many files have changed in this diff. Show more