Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6511cbcdd | ||
|
|
f664c3715c |
No files matched your search
+1
-3
@@ -14,9 +14,7 @@ public/uploads/**/*
|
|||||||
solr/data
|
solr/data
|
||||||
tmp/**/*
|
tmp/**/*
|
||||||
uploads/**/*
|
uploads/**/*
|
||||||
config/*.god
|
|
||||||
log/*.gz
|
|
||||||
tmp/restart.txt
|
|
||||||
*.swp
|
*.swp
|
||||||
*.pid
|
*.pid
|
||||||
*.lck
|
*.lck
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
source 'http://rubygems.org'
|
source 'http://rubygems.org'
|
||||||
gem 'rails', "~> 3.2.9"
|
gem 'rails', "~> 3.2.9"
|
||||||
|
|
||||||
|
gem 'savon', '~> 2.2.0'
|
||||||
|
|
||||||
gem "brakeman"
|
gem "brakeman"
|
||||||
gem 'mime-types'
|
gem 'mime-types'
|
||||||
|
|
||||||
@@ -14,11 +16,7 @@ gem 'execjs'
|
|||||||
gem 'jquery-rails', '2.1.4'
|
gem 'jquery-rails', '2.1.4'
|
||||||
gem 'jquery-ui-rails'
|
gem 'jquery-ui-rails'
|
||||||
gem "select2-rails", '3.3.1'
|
gem "select2-rails", '3.3.1'
|
||||||
gem 'kaminari'
|
gem 'kaminari', :git => 'git://github.com/amatsuda/kaminari.git'
|
||||||
gem "acts_as_unvlogable"
|
|
||||||
gem 'youtube_it'
|
|
||||||
gem 'gotcha'
|
|
||||||
|
|
||||||
|
|
||||||
# gem "memcached", "~> 1.4.3"
|
# gem "memcached", "~> 1.4.3"
|
||||||
# gem "memcache-client"
|
# gem "memcache-client"
|
||||||
@@ -39,7 +37,7 @@ gem 'resque-scheduler' # job scheduling
|
|||||||
gem 'resque-restriction'
|
gem 'resque-restriction'
|
||||||
#gem 'rb-readline'
|
#gem 'rb-readline'
|
||||||
# gem 'ruby-debug19'
|
# gem 'ruby-debug19'
|
||||||
gem 'rubyzip','0.9.9'
|
gem 'rubyzip'
|
||||||
|
|
||||||
gem 'sunspot_mongo'
|
gem 'sunspot_mongo'
|
||||||
gem 'sunspot_solr'
|
gem 'sunspot_solr'
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB |
@@ -15,11 +15,6 @@ function load_tinymce() {
|
|||||||
theme_advanced_statusbar_location : "bottom",
|
theme_advanced_statusbar_location : "bottom",
|
||||||
theme_advanced_resizing : true,
|
theme_advanced_resizing : true,
|
||||||
|
|
||||||
// Domain Absolute URLs
|
|
||||||
relative_urls : false,
|
|
||||||
remove_script_host : false,
|
|
||||||
document_base_url: window.location.protocol + '//' + window.location.host,
|
|
||||||
|
|
||||||
// Skin options
|
// Skin options
|
||||||
skin : "o2k7",
|
skin : "o2k7",
|
||||||
skin_variant : "silver",
|
skin_variant : "silver",
|
||||||
|
|||||||
@@ -5,4 +5,3 @@
|
|||||||
*= require_self
|
*= require_self
|
||||||
*= require social-share-button
|
*= require social-share-button
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -11,21 +11,23 @@ class DefaultWidgetController< OrbitWidgetController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def query_for_default_widget
|
def query_for_default_widget
|
||||||
|
|
||||||
@ori_class_name = @default_widget["query"].split('.')[0]
|
@ori_class_name = @default_widget["query"].split('.')[0]
|
||||||
@result = eval(@default_widget["query"])
|
@ori_query = @default_widget["query"]
|
||||||
|
result = nil
|
||||||
|
result_objects = nil
|
||||||
if !params["tag_id"].blank?
|
if !params["tag_id"].blank?
|
||||||
if params["category_id"].blank? #has tag no cate
|
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
|
else #has tag and 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'], :tagged_ids.in => params['tag_id'])")
|
||||||
@result.selector[:tagged_ids] = { "$in" => params['tag_id'] }
|
|
||||||
end
|
end
|
||||||
elsif params["category_id"].blank? #no tag no cate
|
elsif params["category_id"].blank? #no tag no cate
|
||||||
|
result = eval(@ori_query)
|
||||||
else #no tag has cate
|
else #no tag has cate
|
||||||
|
result = eval("#{@ori_query}.where(:#{get_category_field_name}.in=>params['category_id'])")
|
||||||
@result.selector[get_category_field_name] = { "$in" => params['category_id'].collect{|t| BSON::ObjectId(t)}}
|
|
||||||
end
|
end
|
||||||
eval("@result.#{@default_widget[:sorting_query]}")
|
result.available_for_lang(I18n.locale).can_display
|
||||||
end
|
end
|
||||||
|
|
||||||
def search_result
|
def search_result
|
||||||
@@ -93,9 +95,9 @@ class DefaultWidgetController< OrbitWidgetController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_category_field_name
|
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|
|
@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
|
end
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class MobileController < ApplicationController
|
|||||||
|
|
||||||
def page
|
def page
|
||||||
@page_title = t('mobile.page')
|
@page_title = t('mobile.page')
|
||||||
@page_contexts = get_sorted_page_from_structure
|
@page_contexts = PageContext.where(:archived => false).page(params[:page_main]).per(15)
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_content
|
def page_content
|
||||||
@@ -57,12 +57,4 @@ class MobileController < ApplicationController
|
|||||||
@no_footer = true if request.path =~ /app/
|
@no_footer = true if request.path =~ /app/
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_sorted_page_from_structure
|
|
||||||
page_contexts = Item.structure_ordered_items.inject([]){ |pages, page|
|
|
||||||
pages << page.page_contexts.where(archived: false).limit(1)[0] if page.is_a?(Page) && !page.page_contexts.blank?
|
|
||||||
pages
|
|
||||||
}
|
|
||||||
Kaminari.paginate_array(page_contexts).page(params[:page]).per(15)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
class SessionsController < Devise::SessionsController
|
||||||
|
prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
|
||||||
|
|
||||||
|
require 'savon'
|
||||||
|
|
||||||
|
def create
|
||||||
|
|
||||||
|
@sys_id = params["sys_id"]
|
||||||
|
|
||||||
|
client = Savon.client(wsdl: 'http://sso.ntue.edu.tw/soap/soapserver.php?wsdl')
|
||||||
|
|
||||||
|
client.operations
|
||||||
|
|
||||||
|
response = client.call(:chkidno, message: { sys_id: @sys_id })
|
||||||
|
|
||||||
|
@id = response.body[:chkidno_response][:return][:id]
|
||||||
|
|
||||||
|
login_uid = @id
|
||||||
|
|
||||||
|
resource = User.first(conditions:{user_id: login_uid})
|
||||||
|
|
||||||
|
if !resource.blank?
|
||||||
|
resource_name = resource.class.to_s.downcase
|
||||||
|
sign_in(resource_name, resource)
|
||||||
|
redirect_to after_sign_in_path_for(resource)
|
||||||
|
else
|
||||||
|
flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員<br />Sorry, you don't have the account or authority to login. Please contact the website administrator."
|
||||||
|
redirect_to :root
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -9,7 +9,8 @@ module ApplicationHelper
|
|||||||
|
|
||||||
def delayed_impressionist(item)
|
def delayed_impressionist(item)
|
||||||
user_id = current_user.nil? ? nil : current_user.id
|
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
|
end
|
||||||
|
|
||||||
def check_user_role_enable(attribute_fields)
|
def check_user_role_enable(attribute_fields)
|
||||||
|
|||||||
@@ -2,24 +2,16 @@ class BackupServer
|
|||||||
@queue = :high
|
@queue = :high
|
||||||
|
|
||||||
def self.perform()
|
def self.perform()
|
||||||
|
#CronMail.time_check("Going to backup Orbit").deliver
|
||||||
dbhost = Mongoid.config.database.connection.primary.join ':'
|
dbhost = Mongoid.config.database.connection.primary.join ':'
|
||||||
dbname = Mongoid.config.database.name
|
dbname = Mongoid.config.database.name
|
||||||
archive_db_list_path = OrbitSystemPreference::ArchiveDbListPath
|
archive_db_list_path = OrbitSystemPreference::ArchiveDbListPath
|
||||||
dbdirectory = "#{Rails.root}/tmp/#{dbname}-"+Time.now.strftime("%Y-%m-%d-%H-%M")
|
dbdirectory = "#{Rails.root}/tmp/#{dbname}-"+Time.now.strftime("%Y-%m-%d-%H-%M")
|
||||||
%x[mongodump -h #{dbhost} -d #{dbname} -o #{dbdirectory} ]
|
%x[mongodump -h #{dbhost} -d #{dbname} -o #{dbdirectory} ]
|
||||||
|
|
||||||
Dir.foreach('tmp') do |item|
|
%x[rm #{archive_db_list_path}]
|
||||||
date_str = item.to_s.gsub("#{dbname}-",'')
|
%x[ls #{Rails.root}/tmp/#{dbname}* | du -h --max-depth=1 --block-size=1M |sort -h >> #{archive_db_list_path}]
|
||||||
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}]
|
|
||||||
OrbitLogger.info "DB backup done Path:#{dbdirectory}"
|
OrbitLogger.info "DB backup done Path:#{dbdirectory}"
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -17,16 +17,10 @@ class DelayedImpressionist
|
|||||||
arg = args[0]
|
arg = args[0]
|
||||||
@request= DelayImpressionistRequest.new
|
@request= DelayImpressionistRequest.new
|
||||||
@request.restore(arg["request"])
|
@request.restore(arg["request"])
|
||||||
|
request = @request
|
||||||
obj = eval("#{arg["class"]}.find '#{arg['obj']['_id']}'")
|
obj = eval("#{arg["class"]}.find '#{arg['obj']['_id']}'")
|
||||||
# imp = new(@request,arg["controller_name"],arg["action_name"],arg["user"],obj)
|
# 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)
|
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
|
new_impression.save
|
||||||
obj.update_attribute(:view_count,obj.impression_count)
|
obj.update_attribute(:view_count,obj.impression_count)
|
||||||
end
|
end
|
||||||
|
|||||||
+1
-2
@@ -29,11 +29,10 @@ class Site
|
|||||||
mount_uploader :default_image, ImageUploader
|
mount_uploader :default_image, ImageUploader
|
||||||
|
|
||||||
field :search,:type => Hash
|
field :search,:type => Hash
|
||||||
field :resque_namespace,:type => String, :default=>APP_CONFIG['orbit']
|
|
||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
field :footer, localize: true
|
field :footer, localize: true
|
||||||
field :sub_menu, 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
|
field :mobile_on, :type => Boolean, :default => false
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ class User
|
|||||||
|
|
||||||
before_create :initialize_desktop
|
before_create :initialize_desktop
|
||||||
before_save :rebuild_status_record
|
before_save :rebuild_status_record
|
||||||
|
before_save :save_roles
|
||||||
scope :remote_account, where(:nccu_id.ne => nil)
|
scope :remote_account, where(:nccu_id.ne => nil)
|
||||||
scope :not_guest_user, all_of(:name.ne => "guest")
|
scope :not_guest_user, all_of(:name.ne => "guest")
|
||||||
|
|
||||||
@@ -88,9 +89,9 @@ class User
|
|||||||
var[:id].each do |id,val|
|
var[:id].each do |id,val|
|
||||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||||
if (val=="true")
|
if (val=="true")
|
||||||
self.role_ids.reject!{|t| t.to_s == id}
|
self.roles = self.roles.reject{|t| t.id.to_s==id}
|
||||||
elsif(val=="false")
|
elsif(val=="false")
|
||||||
self.role_ids += Array(id)
|
self.roles << Role.find(id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -105,9 +106,9 @@ class User
|
|||||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||||
|
|
||||||
if ( self.roles.include?(@roid) == false or val=="true")
|
if ( self.roles.include?(@roid) == false or val=="true")
|
||||||
self.sub_role_ids.reject!{|t| t.to_s == id}
|
self.sub_roles = self.sub_roles.reject{|t| t.id.to_s==id}
|
||||||
elsif(val=="false")
|
elsif(val=="false")
|
||||||
self.sub_role_ids += Array(id)
|
self.sub_roles << SubRole.find(id)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -272,6 +273,10 @@ class User
|
|||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
def save_roles
|
||||||
|
# self.roles = self.sub_roles.collect{|t| t.role}.uniq
|
||||||
|
self.roles = self.roles.uniq
|
||||||
|
end
|
||||||
|
|
||||||
def rebuild_status_record
|
def rebuild_status_record
|
||||||
self.status_record = {}
|
self.status_record = {}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ defaults: &defaults
|
|||||||
store_ip: 'redmine.rulingcom.com:3001'
|
store_ip: 'redmine.rulingcom.com:3001'
|
||||||
orbit: 'Orbit'
|
orbit: 'Orbit'
|
||||||
ruling_digital: 'RulingDigital'
|
ruling_digital: 'RulingDigital'
|
||||||
backup_keep_for_days: 30
|
|
||||||
|
|
||||||
development:
|
development:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
|
|||||||
@@ -34,15 +34,15 @@ Orbit::Application.configure do
|
|||||||
# :sender_address => %{"notifier" <redmine@rulingcom.com>},
|
# :sender_address => %{"notifier" <redmine@rulingcom.com>},
|
||||||
# :exception_recipients => %w{chris@rulingcom.com}
|
# :exception_recipients => %w{chris@rulingcom.com}
|
||||||
|
|
||||||
config.action_mailer.delivery_method = :smtp
|
# config.action_mailer.delivery_method = :smtp
|
||||||
config.action_mailer.smtp_settings = {
|
# config.action_mailer.smtp_settings = {
|
||||||
:enable_starttls_auto => true,
|
# :enable_starttls_auto => true,
|
||||||
:address => "smtp.gmail.com",
|
# :address => "smtp.gmail.com",
|
||||||
:port => '587',
|
# :port => '587',
|
||||||
:domain => "smtp.gmail.com",
|
# :domain => "smtp.gmail.com",
|
||||||
:authentication => "plain",
|
# :authentication => "plain",
|
||||||
:user_name => "redmine@rulingcom.com",
|
# :user_name => "redmine@rulingcom.com",
|
||||||
:password => "rulingredmine" }
|
# :password => "rulingredmine" }
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@ require 'resque_scheduler/server'
|
|||||||
# require 'yaml'
|
# require 'yaml'
|
||||||
|
|
||||||
Resque.redis = 'localhost:6379'
|
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,
|
# If you want to be able to dynamically change the schedule,
|
||||||
# uncomment this line. A dynamic schedule can be updated via the
|
# uncomment this line. A dynamic schedule can be updated via the
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ defaults: &defaults
|
|||||||
|
|
||||||
development:
|
development:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
database: test_site
|
database: demo_site_development
|
||||||
test:
|
test:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
database: test_site
|
database: test_site
|
||||||
@@ -21,4 +21,4 @@ production:
|
|||||||
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
||||||
# database: <%= ENV['MONGOID_DATABASE'] %>
|
# database: <%= ENV['MONGOID_DATABASE'] %>
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
database: test_site
|
database: demo_site_production
|
||||||
@@ -4,32 +4,33 @@ user_home = ENV['HOME'] || File.dirname(__FILE__) + '/../..'
|
|||||||
development_uid = ''
|
development_uid = ''
|
||||||
development_gid = ''
|
development_gid = ''
|
||||||
|
|
||||||
num_workers = rails_env == 'production' ? <%= @resque_workers %> : 1
|
num_workers = rails_env == 'production' ? 5 : 2
|
||||||
|
|
||||||
num_workers.times do |num|
|
num_workers.times do |num|
|
||||||
God.watch do |w|
|
God.watch do |w|
|
||||||
|
|
||||||
w.dir = rails_root
|
w.dir = rails_root
|
||||||
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>resque-worker-#{num}"
|
w.name = "worker-#{num}"
|
||||||
w.group = 'rulingcom'
|
w.group = 'resque'
|
||||||
|
|
||||||
w.interval = 30.seconds
|
w.interval = 30.seconds
|
||||||
|
|
||||||
queue = case num
|
queue = case num
|
||||||
when 0..2
|
when 0
|
||||||
|
'critical'
|
||||||
|
when 1..2
|
||||||
'high,low'
|
'high,low'
|
||||||
when 3..num_workers
|
when 3..num_workers
|
||||||
'low'
|
'low'
|
||||||
end
|
end
|
||||||
|
|
||||||
w.pid_file = "#{rails_root}/tmp/#{w.name}.pid"
|
w.env = {"QUEUE"=>queue, "RAILS_ENV"=>rails_env}
|
||||||
w.env = {"RAILS_ENV"=>rails_env,"PIDFILE" => w.pid_file ,"HOME"=>user_home, "QUEUE"=>queue, "RAILS_ENV"=>rails_env }
|
w.start = "HOME=#{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile resque:work"
|
||||||
w.start = "rake -f #{rails_root}/Rakefile resque:work"
|
|
||||||
w.stop = "sudo kill -KILL $(cat #{w.pid_file})"
|
|
||||||
w.uid = (rails_env == 'production' )? "root" : development_uid
|
w.uid = (rails_env == 'production' )? "root" : development_uid
|
||||||
w.gid = (rails_env == 'production' )? "root" : development_gid
|
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
|
# restart if memory gets too high
|
||||||
w.transition(:up, :restart) do |on|
|
w.transition(:up, :restart) do |on|
|
||||||
@@ -6,19 +6,16 @@ development_gid = ''
|
|||||||
|
|
||||||
God.watch do |w|
|
God.watch do |w|
|
||||||
w.dir = rails_root
|
w.dir = rails_root
|
||||||
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>sunspot-solr"
|
w.name = "scheduler"
|
||||||
w.group = 'rulingcom'
|
w.group = 'resque'
|
||||||
w.pid_file = "#{rails_root}/solr/pids/production/sunspot-solr-production.pid"
|
|
||||||
w.interval = 30.seconds
|
w.interval = 30.seconds
|
||||||
w.env = {"RAILS_ENV"=>rails_env,"HOME"=>user_home ,"RAILS_ENV"=>rails_env}
|
w.env = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
|
||||||
w.start = "rake -f #{rails_root}/Rakefile sunspot:solr:start"
|
w.start = "HOME= #{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile resque:scheduler"
|
||||||
w.stop = "sudo kill -KILL $(cat #{w.pid_file})"
|
|
||||||
w.keepalive
|
|
||||||
|
|
||||||
w.uid = (rails_env == 'production' )? "root" : development_uid
|
w.uid = (rails_env == 'production' )? "root" : development_uid
|
||||||
w.gid = (rails_env == 'production' )? "root" : development_gid
|
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
|
# restart if memory gets too high
|
||||||
w.transition(:up, :restart) do |on|
|
w.transition(:up, :restart) do |on|
|
||||||
@@ -4,12 +4,6 @@ dashboard_counter_cache:
|
|||||||
args:
|
args:
|
||||||
description: DashboardCounterCache
|
description: DashboardCounterCache
|
||||||
|
|
||||||
backup_server:
|
|
||||||
cron: 0 0 2 * * *
|
|
||||||
class: BackupServer
|
|
||||||
args:
|
|
||||||
description: BackupServer and remove old backups
|
|
||||||
|
|
||||||
update_tag_cloud:
|
update_tag_cloud:
|
||||||
cron: 0 0 [0,12] * * *
|
cron: 0 0 [0,12] * * *
|
||||||
class: UpdateTagCloud
|
class: UpdateTagCloud
|
||||||
|
|||||||
@@ -7,6 +7,11 @@ Orbit::Application.routes.draw do
|
|||||||
match "/users_passwd" => "desktop/registrations#update", :as => :users_passwd, :via => :put
|
match "/users_passwd" => "desktop/registrations#update", :as => :users_passwd, :via => :put
|
||||||
end
|
end
|
||||||
|
|
||||||
|
devise_scope :user do
|
||||||
|
get 'soap_login' => 'sessions#create'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
mount Resque::Server, :at => "/admin/resque"
|
mount Resque::Server, :at => "/admin/resque"
|
||||||
mount Rack::GridFS::Endpoint.new(:db => Mongoid.database,:lookup=>:path), :at => "gridfs"
|
mount Rack::GridFS::Endpoint.new(:db => Mongoid.database,:lookup=>:path), :at => "gridfs"
|
||||||
|
|
||||||
|
|||||||
@@ -4,33 +4,24 @@ module OrbitApp
|
|||||||
Version = "0.1"
|
Version = "0.1"
|
||||||
|
|
||||||
def display_visitors(options={})
|
def display_visitors(options={})
|
||||||
map = "function(){ emit( this.referrer,{session_hash: this.session_hash,created_at: this.created_at}); };"
|
impressions = Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
||||||
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
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def display_visitors_today
|
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
|
end
|
||||||
|
|
||||||
def display_visitors_this_week
|
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
|
end
|
||||||
|
|
||||||
def display_visitors_this_month
|
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
|
end
|
||||||
|
|
||||||
def display_visitors_this_year
|
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 # end of VisitorCounterEval
|
end # end of VisitorCounterEval
|
||||||
end # of Module
|
end # of Module
|
||||||
end # of OrbitApp
|
end # of OrbitApp
|
||||||
|
|
||||||
@@ -102,17 +102,12 @@ module OrbitApp
|
|||||||
def initialize(&block)
|
def initialize(&block)
|
||||||
@query = nil
|
@query = nil
|
||||||
@image = nil
|
@image = nil
|
||||||
@sorting_query = 'desc(:created_at)'
|
|
||||||
@more_link = {}
|
@more_link = {}
|
||||||
@fields = []
|
@fields = []
|
||||||
@enabled_styles = STYLE
|
@enabled_styles = STYLE
|
||||||
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
|
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
|
||||||
end
|
end
|
||||||
|
|
||||||
def sorting(query)
|
|
||||||
@sorting_query = query
|
|
||||||
end
|
|
||||||
|
|
||||||
def enable(args)
|
def enable(args)
|
||||||
@enabled_styles = args
|
@enabled_styles = args
|
||||||
end
|
end
|
||||||
@@ -127,7 +122,7 @@ module OrbitApp
|
|||||||
end
|
end
|
||||||
|
|
||||||
def to_module_app_format
|
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
|
end
|
||||||
|
|
||||||
def link_field(field_name,setting)
|
def link_field(field_name,setting)
|
||||||
|
|||||||
@@ -326,44 +326,4 @@ namespace :migrate do
|
|||||||
`mongo #{Mongoid.config.database.name} --eval "db.tags.remove({_type: {$ne: 'Tag'}})"`
|
`mongo #{Mongoid.config.database.name} --eval "db.tags.remove({_type: {$ne: 'Tag'}})"`
|
||||||
end
|
end
|
||||||
|
|
||||||
task :add_missing_user_link => :environment do
|
|
||||||
User.all.each do |user|
|
|
||||||
user.role_ids.uniq!
|
|
||||||
user.sub_role_ids.uniq!
|
|
||||||
user.save
|
|
||||||
user.roles.each do |role|
|
|
||||||
unless role.user_ids.include?(user.id)
|
|
||||||
role.user_ids << user.id
|
|
||||||
role.save
|
|
||||||
end
|
|
||||||
end
|
|
||||||
user.sub_roles.each do |sub_role|
|
|
||||||
unless sub_role.user_ids.include?(user.id)
|
|
||||||
sub_role.user_ids << user.id
|
|
||||||
sub_role.save
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
Role.all.each do |role|
|
|
||||||
role.user_ids.uniq!
|
|
||||||
role.save
|
|
||||||
role.users.each do |user|
|
|
||||||
unless user.role_ids.include?(role.id)
|
|
||||||
user.role_ids << role.id
|
|
||||||
user.save
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
SubRole.all.each do |sub_role|
|
|
||||||
sub_role.user_ids.uniq!
|
|
||||||
sub_role.save
|
|
||||||
sub_role.users.each do |user|
|
|
||||||
unless user.sub_role_ids.include?(sub_role.id)
|
|
||||||
user.sub_role_ids << sub_role.id
|
|
||||||
user.save
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
+4
-82
@@ -1,5 +1,4 @@
|
|||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
require 'erb'
|
|
||||||
|
|
||||||
namespace :site do
|
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' ])
|
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')
|
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})"`
|
`mongo #{Mongoid.config.database.name} --eval "db.fs.chunks.ensureIndex({files_id: 1, n: 1})"`
|
||||||
|
|
||||||
puts "Congres you can now login within url"
|
puts "Congres you can now login within url"
|
||||||
puts 'Please upload design package (/admin/designs/upload_package ) and run rake site:necessary_data'
|
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 => 'en', :en => 'English', :zh_tw => '英文' )
|
||||||
I18nVariable.create!( :document_class => 'language', :key => 'zh_tw', :en => 'Chinese', :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
|
end
|
||||||
|
|
||||||
task :create_logrotate => :environment do #Can remove after all products update
|
|
||||||
create_rulingcom_logrotate
|
|
||||||
end
|
|
||||||
|
|
||||||
task :necessary_data => :environment do
|
task :necessary_data => :environment do
|
||||||
auto_setting
|
|
||||||
site = Site.first
|
site = Site.first
|
||||||
site.update_attribute(:title,'RulingOrbit Demo Site')
|
site.title = 'RulingOrbit Demo Site'
|
||||||
site.update_attribute(:resque_namespace,@resque_namespace)
|
site.save
|
||||||
|
|
||||||
# home_trans = I18nVariable.create!( :document_class => 'Home', :key => 'home', :en => 'Homepage', :zh_tw => '首頁')
|
# home_trans = I18nVariable.create!( :document_class => 'Home', :key => 'home', :en => 'Homepage', :zh_tw => '首頁')
|
||||||
design = Design.first
|
design = Design.first
|
||||||
|
site = Site.first
|
||||||
site.design = design
|
site.design = design
|
||||||
site.save
|
site.save
|
||||||
theme = design.themes.first
|
theme = design.themes.first
|
||||||
@@ -37,78 +31,6 @@ namespace :site do
|
|||||||
|
|
||||||
home.title_translations = {"zh_tw"=>"首頁", "en"=>"Home"}
|
home.title_translations = {"zh_tw"=>"首頁", "en"=>"Home"}
|
||||||
home.save
|
home.save
|
||||||
|
|
||||||
puts "Rember to restart server after you setup all sites for starting God"
|
|
||||||
end
|
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
|
end
|
||||||
@@ -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
|
|
||||||
|
|
||||||
@@ -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
|
|
||||||
vendor/built_in_modules/announcement/app/assets/stylesheets/announcement/bulletins_and_web_links.css
Vendored
-78
@@ -1,78 +0,0 @@
|
|||||||
|
|
||||||
.mega_tab_block {
|
|
||||||
clear: both;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mega_tab_block h3 {
|
|
||||||
font: 22px/100% 'arial',sans-serif;
|
|
||||||
margin: 0 0 10px;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mega_tab_block .pagination {
|
|
||||||
float: left;
|
|
||||||
height: auto;
|
|
||||||
margin: 10px 0 0;
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
.mega_tab_block .pagination a {
|
|
||||||
background: none repeat scroll 0 0 #EEEEEE;
|
|
||||||
display: block;
|
|
||||||
float: left;
|
|
||||||
margin: 0 5px 0 0;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.tag_block {
|
|
||||||
clear: both;
|
|
||||||
margin: 0 0 20px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.mega_tab_block .tag_list {
|
|
||||||
background: none repeat scroll 0 0 #EEEEEE;
|
|
||||||
margin: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
padding: 0 0 0 5px;
|
|
||||||
}
|
|
||||||
.mega_tab_block .tag_list li {
|
|
||||||
float: left;
|
|
||||||
list-style: none outside none;
|
|
||||||
}
|
|
||||||
.mega_tab_block .tag_list li a {
|
|
||||||
background: none repeat scroll 0 0 #DDDDDD;
|
|
||||||
float: left;
|
|
||||||
margin: 0 5px 0 0;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.news_block {
|
|
||||||
clear: both;
|
|
||||||
margin: 0 0 20px;
|
|
||||||
overflow: hidden;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.mega_tab_block .news_list {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.mega_tab_block .news_list li {
|
|
||||||
list-style: none outside none;
|
|
||||||
padding: 5px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.links_block {
|
|
||||||
clear: both;
|
|
||||||
overflow: hidden;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.mega_tab_block .links_list {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.mega_tab_block .links_list li {
|
|
||||||
list-style: none outside none;
|
|
||||||
padding: 5px 0;
|
|
||||||
}
|
|
||||||
+73
@@ -1,3 +1,4 @@
|
|||||||
|
# encoding: utf-8
|
||||||
class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendController
|
class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
before_filter :is_admin?
|
before_filter :is_admin?
|
||||||
@@ -6,6 +7,7 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
|
|||||||
|
|
||||||
|
|
||||||
def preview_and_approve
|
def preview_and_approve
|
||||||
|
email_group_data
|
||||||
@bulletin = Bulletin.find params[:bulletin_id]
|
@bulletin = Bulletin.find params[:bulletin_id]
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -15,6 +17,14 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
|
|||||||
@bulletin.proc_check(params[:bulletin][:is_checked],params[:bulletin][:not_checked_reason])
|
@bulletin.proc_check(params[:bulletin][:is_checked],params[:bulletin][:not_checked_reason])
|
||||||
@bulletin.de_pending
|
@bulletin.de_pending
|
||||||
if @bulletin.save
|
if @bulletin.save
|
||||||
|
|
||||||
|
if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
|
||||||
|
send_email_data(@bulletin)
|
||||||
|
|
||||||
|
@bulletin.email_sent = false
|
||||||
|
@bulletin.save
|
||||||
|
end
|
||||||
|
|
||||||
notice = t('announcement.approve_bulletin_success')
|
notice = t('announcement.approve_bulletin_success')
|
||||||
else
|
else
|
||||||
notice = t('announcement.approve_bulletin_fail')
|
notice = t('announcement.approve_bulletin_fail')
|
||||||
@@ -61,6 +71,69 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
|
|||||||
object_auth.privilege_users = privilege_users
|
object_auth.privilege_users = privilege_users
|
||||||
object_auth
|
object_auth
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def send_email_data(bulletin)
|
||||||
|
|
||||||
|
@site = Site.first
|
||||||
|
@user = User.find(bulletin.create_user_id)
|
||||||
|
@host = request.host_with_port
|
||||||
|
|
||||||
|
email_group_data
|
||||||
|
|
||||||
|
@group_mail = Array.new
|
||||||
|
|
||||||
|
bulletin.email_group.each do |egroup|
|
||||||
|
|
||||||
|
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
|
||||||
|
|
||||||
|
@group_mail << @email_group_data[egroup]["email"]
|
||||||
|
|
||||||
|
elsif @email_group_data.include?(egroup) and egroup == '4'
|
||||||
|
|
||||||
|
@group_mail << bulletin.other_mailaddress
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if !@group_mail.join.blank?
|
||||||
|
|
||||||
|
@mail_content = {
|
||||||
|
"host" => @host,
|
||||||
|
"site_title" => @site.title,
|
||||||
|
"title" => bulletin.title,
|
||||||
|
"template" => 'announcement_mailer/cron_mail',
|
||||||
|
"url" => "http://#{@host}#{panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id)}"
|
||||||
|
}
|
||||||
|
|
||||||
|
@mail_cron = {
|
||||||
|
:mail_from_app => 'announcement',
|
||||||
|
:mail_from => @user.email,
|
||||||
|
:mail_reply_to => @user.email,
|
||||||
|
:mail_subject => "#{t("announcement.mail_subject",:site_title => @site.title)}:#{bulletin.title}",
|
||||||
|
:mail_to => @group_mail.join(','),
|
||||||
|
:mail_content => @mail_content ,
|
||||||
|
# :mail_sentdate => bulletin.email_sentdate,
|
||||||
|
:mail_sentdate => DateTime.now,
|
||||||
|
:create_user_id => bulletin.create_user_id,
|
||||||
|
:update_user_id => bulletin.create_user_id
|
||||||
|
}
|
||||||
|
|
||||||
|
@mail_cron = MailCron.new(@mail_cron)
|
||||||
|
|
||||||
|
@mail_cron.save
|
||||||
|
|
||||||
|
MailCron.send_mail_now(@mail_cron.id)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def email_group_data
|
||||||
|
|
||||||
|
@email_group_data = Bulletin.email_group_data
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
# def get_categorys(id = nil)
|
# def get_categorys(id = nil)
|
||||||
# @bulletin_categorys = []
|
# @bulletin_categorys = []
|
||||||
|
|||||||
+85
@@ -1,3 +1,4 @@
|
|||||||
|
# encoding: utf-8
|
||||||
class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||||
include OrbitControllerLib::DivisionForDisable
|
include OrbitControllerLib::DivisionForDisable
|
||||||
|
|
||||||
@@ -77,6 +78,9 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||||||
# GET /bulletins/new
|
# GET /bulletins/new
|
||||||
# GET /bulletins/new.xml
|
# GET /bulletins/new.xml
|
||||||
def new
|
def new
|
||||||
|
|
||||||
|
email_group_data
|
||||||
|
|
||||||
if(session[:in_validate_object].blank?)
|
if(session[:in_validate_object].blank?)
|
||||||
@bulletin = Bulletin.new(:postdate => DateTime.now)
|
@bulletin = Bulletin.new(:postdate => DateTime.now)
|
||||||
else
|
else
|
||||||
@@ -94,6 +98,9 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||||||
|
|
||||||
# GET /bulletins/1/edit
|
# GET /bulletins/1/edit
|
||||||
def edit
|
def edit
|
||||||
|
|
||||||
|
email_group_data
|
||||||
|
|
||||||
@bulletin = Bulletin.find(params[:id])
|
@bulletin = Bulletin.find(params[:id])
|
||||||
if !current_user.admin? && (@bulletin.is_rejected? || @bulletin.is_checked?)
|
if !current_user.admin? && (@bulletin.is_rejected? || @bulletin.is_checked?)
|
||||||
redirect_to :action => :index
|
redirect_to :action => :index
|
||||||
@@ -146,6 +153,13 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @bulletin.save
|
if @bulletin.save
|
||||||
|
|
||||||
|
# if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
|
||||||
|
# send_email_data(@bulletin)
|
||||||
|
|
||||||
|
# @bulletin.email_sent = false
|
||||||
|
# @bulletin.save
|
||||||
|
# end
|
||||||
|
|
||||||
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('announcement.create_bulletin_success')) }
|
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('announcement.create_bulletin_success')) }
|
||||||
format.xml { render :xml => @bulletin, :status => :created, :location => @bulletin }
|
format.xml { render :xml => @bulletin, :status => :created, :location => @bulletin }
|
||||||
# format.js
|
# format.js
|
||||||
@@ -226,6 +240,14 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||||||
@bulletin.is_rejected = false
|
@bulletin.is_rejected = false
|
||||||
@bulletin.de_pending!
|
@bulletin.de_pending!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
|
||||||
|
# send_email_data(@bulletin)
|
||||||
|
|
||||||
|
# @bulletin.email_sent = false
|
||||||
|
# @bulletin.save
|
||||||
|
# end
|
||||||
|
|
||||||
# if (params[:bulletin][:is_checked] == "false")
|
# if (params[:bulletin][:is_checked] == "false")
|
||||||
# @bulletin.is_rejected = true
|
# @bulletin.is_rejected = true
|
||||||
# @bulletin.save!
|
# @bulletin.save!
|
||||||
@@ -293,6 +315,69 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
|
def send_email_data(bulletin)
|
||||||
|
|
||||||
|
@site = Site.first
|
||||||
|
@user = User.find(bulletin.create_user_id)
|
||||||
|
@host = request.host_with_port
|
||||||
|
|
||||||
|
email_group_data
|
||||||
|
|
||||||
|
@group_mail = Array.new
|
||||||
|
|
||||||
|
bulletin.email_group.each do |egroup|
|
||||||
|
|
||||||
|
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
|
||||||
|
|
||||||
|
@group_mail << @email_group_data[egroup]["email"]
|
||||||
|
|
||||||
|
elsif @email_group_data.include?(egroup) and egroup == '4'
|
||||||
|
|
||||||
|
@group_mail << bulletin.other_mailaddress
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if !@group_mail.join.blank?
|
||||||
|
|
||||||
|
@mail_content = {
|
||||||
|
"host" => @host,
|
||||||
|
"site_title" => @site.title,
|
||||||
|
"title" => bulletin.title,
|
||||||
|
"template" => 'announcement_mailer/cron_mail',
|
||||||
|
"url" => "http://#{@host}#{panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id)}"
|
||||||
|
}
|
||||||
|
|
||||||
|
@mail_cron = {
|
||||||
|
:mail_from_app => 'announcement',
|
||||||
|
:mail_from => @user.email,
|
||||||
|
:mail_reply_to => @user.email,
|
||||||
|
:mail_subject => "#{t("announcement.mail_subject",:site_title => @site.title)}:#{bulletin.title}",
|
||||||
|
:mail_to => @group_mail.join(','),
|
||||||
|
:mail_content => @mail_content ,
|
||||||
|
# :mail_sentdate => bulletin.email_sentdate,
|
||||||
|
:mail_sentdate => DateTime.now,
|
||||||
|
:create_user_id => bulletin.create_user_id,
|
||||||
|
:update_user_id => bulletin.create_user_id
|
||||||
|
}
|
||||||
|
|
||||||
|
@mail_cron = MailCron.new(@mail_cron)
|
||||||
|
|
||||||
|
@mail_cron.save
|
||||||
|
|
||||||
|
MailCron.send_mail_now(@mail_cron.id)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def email_group_data
|
||||||
|
|
||||||
|
@email_group_data = Bulletin.email_group_data
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
def delete_out_invalid_date_from_params
|
def delete_out_invalid_date_from_params
|
||||||
if((params[:bulletin]["deadline(1i)"] && params[:bulletin]["deadline(1i)"].blank?) or (params[:bulletin]["deadline(2i)"] && params[:bulletin]["deadline(2i)"].blank?) or (params[:bulletin]["deadline(3i)"] && params[:bulletin]["deadline(3i)"].blank?))
|
if((params[:bulletin]["deadline(1i)"] && params[:bulletin]["deadline(1i)"].blank?) or (params[:bulletin]["deadline(2i)"] && params[:bulletin]["deadline(2i)"].blank?) or (params[:bulletin]["deadline(3i)"] && params[:bulletin]["deadline(3i)"].blank?))
|
||||||
params[:bulletin].delete("deadline(1i)")
|
params[:bulletin].delete("deadline(1i)")
|
||||||
|
|||||||
+4
-65
@@ -66,75 +66,14 @@ class Panel::Announcement::Widget::BulletinsController < OrbitWidgetController
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def bulletins_and_web_links
|
|
||||||
|
|
||||||
@part = PagePart.find(params[:part_id]) if !params[:part_id].blank?
|
|
||||||
|
|
||||||
@title = @part.title_translations[I18n.locale.to_s]
|
|
||||||
|
|
||||||
if !@part.blank? and @part.widget_data_count
|
|
||||||
@page_num = @part.widget_data_count
|
|
||||||
else
|
|
||||||
@page_num = 5
|
|
||||||
end
|
|
||||||
|
|
||||||
date_now = Time.now
|
|
||||||
|
|
||||||
if !params[:tag_id].blank?
|
|
||||||
@tags = Tag.any_in(:_id => params[:tag_id]).asc(:created_at)
|
|
||||||
elsif params[:tag_id].blank? and !@part.tag.blank?
|
|
||||||
@tags = Tag.any_in(:_id => @part.tag).asc(:created_at)
|
|
||||||
else
|
|
||||||
@ModuleApp_b = ModuleApp.first(:conditions => {:key=>'announcement'})
|
|
||||||
@tags = Tag.where(:module_tag_id => @ModuleApp_b.id).asc(:created_at)
|
|
||||||
end
|
|
||||||
|
|
||||||
@selected_tag = Tag.find(params[:id]).first rescue @tags[0]
|
|
||||||
|
|
||||||
@bulletins = Bulletin.available_for_lang(I18n.locale).can_display.where(:tagged_ids => @selected_tag.id.to_s, :is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, :postdate).page(params[:page]).per(@page_num) rescue nil
|
|
||||||
|
|
||||||
if @part.widget_style == 'bulletins_and_web_links'
|
|
||||||
@ModuleApp_w = ModuleApp.first(:conditions => {:key=>'web_resource'})
|
|
||||||
@link_selected_tag = Tag.first(:conditions => {:name => @selected_tag.name, :module_tag_id => @ModuleApp_w.id})
|
|
||||||
@web_links = WebLink.where(:tagged_ids => @link_selected_tag.id.to_s, :is_hidden => false).desc(:is_top,:created_at).available_for_lang(I18n.locale).page(params[:page]).per(@page_num) rescue nil
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
def reload_bulletins
|
def reload_bulletins
|
||||||
|
@selected_tag = Tag.find(params[:tag_id])
|
||||||
@part = PagePart.find(params[:part_id]) if !params[:part_id].blank?
|
@bulletins = Bulletin.available_for_lang(I18n.locale).can_display.where(:tagged_ids => params[:tag_id]).where(:is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, sort).page(params[:page]).per(5) rescue nil
|
||||||
|
|
||||||
@title = @part.title_translations[I18n.locale.to_s]
|
|
||||||
|
|
||||||
if !@part.blank? and @part.widget_data_count
|
|
||||||
@page_num = @part.widget_data_count
|
|
||||||
else
|
|
||||||
@page_num = 5
|
|
||||||
end
|
|
||||||
|
|
||||||
date_now = Time.now
|
|
||||||
|
|
||||||
@selected_tag = Tag.find(params[:tag_id]).first
|
|
||||||
@bulletins = Bulletin.available_for_lang(I18n.locale).can_display.where(:tagged_ids => @selected_tag.id.to_s, :is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, :postdate).page(params[:page]).per(@page_num) rescue nil
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def reload_web_links
|
def reload_web_links
|
||||||
|
@selected_tag = Tag.find(params[:tag_id])
|
||||||
@part = PagePart.find(params[:part_id]) if !params[:part_id].blank?
|
@web_links = WebLink.where(:name => @selected_tag.name).where(:is_hidden => false).desc(:is_top, sort).available_for_lang(I18n.locale).page(params[:page]).per(5) rescue nil
|
||||||
|
|
||||||
if !@part.blank? and @part.widget_data_count
|
|
||||||
@page_num = @part.widget_data_count
|
|
||||||
else
|
|
||||||
@page_num = 5
|
|
||||||
end
|
|
||||||
|
|
||||||
date_now = Time.now
|
|
||||||
|
|
||||||
@selected_tag = Tag.find(params[:tag_id]).first
|
|
||||||
@ModuleApp = ModuleApp.first(:conditions => {:key=>'web_resource'})
|
|
||||||
@link_selected_tag = Tag.first(:conditions => {:name => @selected_tag.name, :module_tag_id => @ModuleApp.id})
|
|
||||||
@web_links = WebLink.where(:tagged_ids => @link_selected_tag.id.to_s, :is_hidden => false).desc(:is_top,:created_at).available_for_lang(I18n.locale).page(params[:page]).per(@page_num) rescue nil
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def bulletins_side_bar
|
def bulletins_side_bar
|
||||||
|
|||||||
@@ -40,6 +40,12 @@ class Bulletin
|
|||||||
field :not_checked_reason
|
field :not_checked_reason
|
||||||
|
|
||||||
field :public, :type => Boolean, :default => true
|
field :public, :type => Boolean, :default => true
|
||||||
|
|
||||||
|
|
||||||
|
field :email_sent, :type => Boolean, :default => false
|
||||||
|
field :email_sentdate , :type => DateTime
|
||||||
|
field :email_group, :type => Array
|
||||||
|
field :other_mailaddress
|
||||||
|
|
||||||
scope :can_display, where(is_checked: true, is_rejected: false, is_pending: false)
|
scope :can_display, where(is_checked: true, is_rejected: false, is_pending: false)
|
||||||
scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
|
scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
|
||||||
@@ -215,8 +221,46 @@ class Bulletin
|
|||||||
preview_object
|
preview_object
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_email_group_data(email_group_data)
|
||||||
|
|
||||||
|
group_mail = Array.new
|
||||||
|
|
||||||
|
self.email_group.each do |egroup|
|
||||||
|
|
||||||
|
if email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
|
||||||
|
|
||||||
|
group_mail << "#{email_group_data[egroup]["email"]}(#{email_group_data[egroup]["name"]})"
|
||||||
|
|
||||||
|
elsif email_group_data.include?(egroup) and egroup == '4'
|
||||||
|
|
||||||
|
self.other_mailaddress.split(",").each do |otmail|
|
||||||
|
|
||||||
|
group_mail << "#{otmail}(#{email_group_data[egroup]["name"]})"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
group_mail.join("<br />").html_safe
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
|
def self.email_group_data
|
||||||
|
|
||||||
|
@email_group_data = {
|
||||||
|
'0'=> {"name"=>I18n.t('announcement.email_group_data_0'), "email"=>"alluser@tea.ntue.edu.tw"},
|
||||||
|
'1'=> {"name"=>I18n.t('announcement.email_group_data_1'), "email"=>"allstu@tea.ntue.edu.tw"},
|
||||||
|
'2'=> {"name"=>I18n.t('announcement.email_group_data_2'), "email"=>"allgrad@tea.ntue.edu.tw"},
|
||||||
|
'3'=> {"name"=>I18n.t('announcement.email_group_data_3'), "email"=>"allad@tea.ntue.edu.tw"},
|
||||||
|
'4'=> {"name"=>I18n.t('announcement.email_group_data_4')}
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
def check_deadline
|
def check_deadline
|
||||||
if(!self.deadline.nil? and (self.deadline < self.postdate ))
|
if(!self.deadline.nil? and (self.deadline < self.postdate ))
|
||||||
|
|||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||||
|
</head>
|
||||||
|
<body bgcolor="#FFFFFF">
|
||||||
|
<div style="text-ident:20px">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<%= t('announcement.mail_hi') %> <br /><br />
|
||||||
|
<%= t('announcement.mail_url_view') %> <br /><br />
|
||||||
|
<a href="<%= @data.mail_content["url"] %>" target="_blank"> <%= @data.mail_content["title"] %> </a> <br /><br />
|
||||||
|
</div>
|
||||||
|
<span style="color:#555">--<br />
|
||||||
|
<%= t('announcement.mail_source') %> :<a href="http://<%= @data.mail_content["host"] %>" target="_blank"> <%= @data.mail_content["site_title"] %> </a><br />
|
||||||
|
<%= t('announcement.mail_time') %> <%= DateTime.now %>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+6
@@ -14,6 +14,12 @@
|
|||||||
<%# preview_block_ad_images_helper(bulletin).each do |ad_image| -%>
|
<%# preview_block_ad_images_helper(bulletin).each do |ad_image| -%>
|
||||||
<%#= image_tag ad_image.file,:alt => (ad_image.title[locale] || " "),:time_to_next => bulletin.transition_msec,:link_open=> ad_image.link_open, :link_url =>((ad_image.out_link || bulletin.context || " ")) %>
|
<%#= image_tag ad_image.file,:alt => (ad_image.title[locale] || " "),:time_to_next => bulletin.transition_msec,:link_open=> ad_image.link_open, :link_url =>((ad_image.out_link || bulletin.context || " ")) %>
|
||||||
<%# end -%>
|
<%# end -%>
|
||||||
|
|
||||||
|
<% if !@bulletin.email_group.blank? %>
|
||||||
|
<%= label_tag 'group_mail' %>
|
||||||
|
<%= @bulletin.get_email_group_data(@email_group_data) %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
|
|||||||
Vendored
+49
@@ -265,6 +265,50 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="widget" class="widget-box">
|
||||||
|
<div class="widget-action clear">
|
||||||
|
<a class="action"><i title="Added to the file" class="icon-exclamation-sign icon-white tip"></i></a>
|
||||||
|
</div>
|
||||||
|
<h3 class="widget-title"><i class="icons-bell"></i><%= t('announcement.email_eminder')%></h3>
|
||||||
|
<div class="widget-content">
|
||||||
|
<div class="controls">
|
||||||
|
<label class="checkbox inline"><input id="remind-check" type="checkbox" value="1" name="bulletin[email_sent]"><%= t('announcement.activate_email_eminder')%></label>
|
||||||
|
<div id="content-box">
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<%#= f.datetime_picker :email_sentdate, :picker_type => 'separated', :label => t("announcement.email_sentdate") %>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<%= f.label :email_group ,t("announcement.email_group")%>
|
||||||
|
<div class="form-inline">
|
||||||
|
<ul class="nav nav-pills">
|
||||||
|
<% @email_group_data.collect do |k,v| %>
|
||||||
|
<li class="pull-left">
|
||||||
|
<%= check_box_tag 'bulletin[email_group][]', k, (@bulletin.email_group.nil? ? false : @bulletin.email_group.include?(k)), :id => "field-#{k}" %>
|
||||||
|
<label for="field-<%= k %>"><%= v["name"] %></label>
|
||||||
|
<%= hidden_field_tag 'bulletin[email_group][]', '' %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<%= f.label :other_mailaddress ,"#{t("announcement.other_mailaddress")}(#{t("announcement.other_mailaddress_note")})"%>
|
||||||
|
<%= f.text_area :other_mailaddress, :class=>"span12", :cols=>"25", :rows=>"10" %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -300,6 +344,11 @@
|
|||||||
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_bulletin_file', f, :bulletin_files) %>").replace(old_id, new_id));
|
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_bulletin_file', f, :bulletin_files) %>").replace(old_id, new_id));
|
||||||
});
|
});
|
||||||
$('.for_preview').popover({ html : true });
|
$('.for_preview').popover({ html : true });
|
||||||
|
|
||||||
|
$('#remind-check').prop('checked') ? '':$('#content-box').addClass('hide')
|
||||||
|
$('#remind-check').on('change', function() {
|
||||||
|
$(this).prop('checked') ? $('#content-box').removeClass('hide'):$('#content-box').addClass('hide')
|
||||||
|
})
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<% end %>
|
<% end %>
|
||||||
+3
-3
@@ -1,10 +1,10 @@
|
|||||||
<% @bulletins.each do |bulletin| %>
|
<% @bulletins.each do |bulletin| %>
|
||||||
<li>
|
<li>
|
||||||
<%= link_to bulletin.title, panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category_id , :part_id => params[:part_id], :tag_id => [@selected_tag.id] ) %>
|
<%= link_to bulletin.title, panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category_id , :tag_id => @selected_tag.id ) %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class='pagination'>
|
<div class='pagination'>
|
||||||
<%= link_to_previous_page @bulletins, 'Previous Page', :params => {:controller => 'widget/bulletins', :action => 'reload_bulletins', :part_id => params[:part_id], :tag_id => [@selected_tag.id]}, :remote => true, :class => 'previous' %>
|
<%= link_to_previous_page @bulletins, 'Previous Page', :params => {:controller => 'widget/bulletins', :action => 'reload_bulletins', :tag_id => @selected_tag.id}, :remote => true, :class => 'previous' %>
|
||||||
<%= link_to_next_page @bulletins, 'Next Page', :params => {:controller => 'widget/bulletins', :action => 'reload_bulletins', :part_id => params[:part_id], :tag_id => [@selected_tag.id]}, :remote => true, :class => 'next' %>
|
<%= link_to_next_page @bulletins, 'Next Page', :params => {:controller => 'widget/bulletins', :action => 'reload_bulletins', :tag_id => @selected_tag.id}, :remote => true, :class => 'next' %>
|
||||||
</div>
|
</div>
|
||||||
Vendored
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
<li>
|
<li>
|
||||||
<%= link_to tag.name, panel_announcement_widget_bulletins_and_web_links_path(:inner=>true, :id => [tag.id], :part_id=>params[:part_id]), :remote => true, :class => ('active' if tag.eql?(@selected_tag)) %>
|
<%= link_to tag.name, panel_announcement_widget_bulletins_and_web_links_path(:id => tag.id), :remote => true, :class => ('active' if tag.eql?(@selected_tag)) %>
|
||||||
</li>
|
</li>
|
||||||
+2
-2
@@ -5,6 +5,6 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class='pagination'>
|
<div class='pagination'>
|
||||||
<%= link_to_previous_page @web_links, 'Previous Page', :params => {:controller => 'widget/bulletins', :action => 'reload_web_links', :part_id => params[:part_id], :tag_id => @selected_tag.id}, :remote => true, :class => 'previous' %>
|
<%= link_to_previous_page @web_links, 'Previous Page', :params => {:controller => 'widget/bulletins', :action => 'reload_web_links', :tag_id => @selected_tag.id}, :remote => true, :class => 'previous' %>
|
||||||
<%= link_to_next_page @web_links, 'Next Page', :params => {:controller => 'widget/bulletins', :action => 'reload_web_links', :part_id => params[:part_id], :tag_id => @selected_tag.id}, :remote => true, :class => 'next' %>
|
<%= link_to_next_page @web_links, 'Next Page', :params => {:controller => 'widget/bulletins', :action => 'reload_web_links', :tag_id => @selected_tag.id}, :remote => true, :class => 'next' %>
|
||||||
</div>
|
</div>
|
||||||
-36
@@ -1,36 +0,0 @@
|
|||||||
<div class="mega_tab_block">
|
|
||||||
|
|
||||||
<div class="tag_block">
|
|
||||||
<ul id='bulletins_web_links_tags' class="tag_list">
|
|
||||||
<%= render :partial => 'tag', :collection => @tags %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="news_block">
|
|
||||||
<h3 class="news_title2">
|
|
||||||
<%#= link_to t("announcement.bulletins"), panel_announcement_front_end_bulletins_path, :class => 'more' %>
|
|
||||||
<%= link_to @title, panel_announcement_front_end_bulletins_path, :class => 'more' %>
|
|
||||||
</h3>
|
|
||||||
<ul id='bulletins_web_links_bulletins' class="news_list">
|
|
||||||
<%= render 'bulletins' if @bulletins %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<% if @part.widget_style == 'bulletins_and_web_links' %>
|
|
||||||
|
|
||||||
<div class="links_block">
|
|
||||||
<h3 class="links_title"><%= t(:related_links) %></h3>
|
|
||||||
<ul id='bulletins_web_links_web_links' class="links_list">
|
|
||||||
<%= render 'web_links' if @web_links %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<% content_for :page_specific_javascript do %>
|
|
||||||
<%= javascript_include_tag "news_link" %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<%= stylesheet_link_tag "announcement/bulletins_and_web_links" %>
|
|
||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
$('#bulletins_web_links_tags').html("<%= j render :partial => 'tag', :collection => @tags %>")
|
|
||||||
$('#bulletins_web_links_bulletins').html("<%= j render 'bulletins' if @bulletins %>")
|
|
||||||
$('#bulletins_web_links_web_links').html("<%= j render 'web_links' if @web_links %>")
|
|
||||||
+19
-2
@@ -35,6 +35,23 @@ en:
|
|||||||
update_bulletin_category_success: Update Category Successfully
|
update_bulletin_category_success: Update Category Successfully
|
||||||
url: URL
|
url: URL
|
||||||
widget:
|
widget:
|
||||||
bulletins_and_web_links: Differential Nav.
|
bulletins_and_web_links: Bulletins and Web Resources
|
||||||
index: Index
|
index: Index
|
||||||
search: Search
|
search: Search
|
||||||
|
email_eminder: Email Reminder
|
||||||
|
activate_email_eminder: Activate Email Reminder
|
||||||
|
email_sentdate: Email Time
|
||||||
|
email_group: Email Group
|
||||||
|
email_group_data_0: All Faculty
|
||||||
|
email_group_data_1: Undergraduates
|
||||||
|
email_group_data_2: Postgraduates
|
||||||
|
email_group_data_3: Continuing Ed. Postgraduates
|
||||||
|
email_group_data_4: Other
|
||||||
|
mail_subject: this is an announcement reminder from【%{site_title}】
|
||||||
|
other_mailaddress: Other Email
|
||||||
|
other_mailaddress_note: Divide different email accounts with ","
|
||||||
|
mail_hi: Hi
|
||||||
|
mail_url_view: This email is the reminder of an announcement, please click the link for the details
|
||||||
|
mail_source: Source
|
||||||
|
mail_time: Time
|
||||||
|
|
||||||
@@ -35,6 +35,24 @@ zh_tw:
|
|||||||
update_bulletin_category_success: 更新類別成功
|
update_bulletin_category_success: 更新類別成功
|
||||||
url: 連結位置
|
url: 連結位置
|
||||||
widget:
|
widget:
|
||||||
bulletins_and_web_links: 分眾頁籤
|
bulletins_and_web_links: 索引
|
||||||
index: 索引
|
index: 索引
|
||||||
search: 搜尋
|
search: 搜尋
|
||||||
|
email_eminder: 寄送提醒
|
||||||
|
activate_email_eminder: 開啟寄送提醒
|
||||||
|
email_sentdate: 寄送時間
|
||||||
|
email_group: 寄送群組
|
||||||
|
other_mailaddress: 其他Mail
|
||||||
|
other_mailaddress_note: 輸入多組mail時,請用","逗號隔開
|
||||||
|
email_group_data_0: 全校教職員
|
||||||
|
email_group_data_1: 大學部學生
|
||||||
|
email_group_data_2: 日間部研究生
|
||||||
|
email_group_data_3: 進修部研究生
|
||||||
|
email_group_data_4: 其他
|
||||||
|
mail_subject: 來自【%{site_title}】的公告事件提醒
|
||||||
|
mail_hi: 您好
|
||||||
|
mail_url_view: 此封信件為公告事件提醒,請點選以下連結詳細觀看
|
||||||
|
mail_source: 來源
|
||||||
|
mail_time: 時間
|
||||||
|
|
||||||
|
|
||||||
+1
-7
@@ -29,8 +29,7 @@ module Announcement
|
|||||||
|
|
||||||
widgets do
|
widgets do
|
||||||
default_widget do
|
default_widget do
|
||||||
sorting 'desc(:is_top, :postdate)'
|
query 'Bulletin.any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
|
||||||
query 'Bulletin.can_display.available_for_lang(I18n.locale).any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
|
|
||||||
enable ["typeA","typeB_style3","typeC"]
|
enable ["typeA","typeB_style3","typeC"]
|
||||||
image :image
|
image :image
|
||||||
field :postdate
|
field :postdate
|
||||||
@@ -52,11 +51,6 @@ module Announcement
|
|||||||
widget_i18n "announcement.widget.search"
|
widget_i18n "announcement.widget.search"
|
||||||
end
|
end
|
||||||
|
|
||||||
customize_widget "bulletins_and_web_links" do
|
|
||||||
widget_i18n "announcement.widget.bulletins_and_web_links"
|
|
||||||
style ["bulletins_and_links","bulletins_only"]
|
|
||||||
end
|
|
||||||
|
|
||||||
# item "index","announcement.widget.index",:default_template=>true,:fields=>["title","category","postdate"]
|
# item "index","announcement.widget.index",:default_template=>true,:fields=>["title","category","postdate"]
|
||||||
# item "bulletins_and_web_links","announcement.widget.bulletins_and_web_links"
|
# item "bulletins_and_web_links","announcement.widget.bulletins_and_web_links"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ log/*.log
|
|||||||
pkg/
|
pkg/
|
||||||
test/dummy/db/*.sqlite3
|
test/dummy/db/*.sqlite3
|
||||||
test/dummy/log/*.log
|
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.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Vendored
+28
@@ -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
-1
@@ -1,6 +1,6 @@
|
|||||||
class AskMailer < ActionMailer::Base
|
class AskMailer < ActionMailer::Base
|
||||||
default from: 'orbit_test@rulingcom.com'
|
default from: 'orbit_test@rulingcom.com'
|
||||||
|
|
||||||
def reply(ask_question)
|
def reply(ask_question)
|
||||||
@ask_question = ask_question
|
@ask_question = ask_question
|
||||||
mail(:to => @ask_question.email, :subject => "#{t('ask.reply')}:#{@ask_question.title}")
|
mail(:to => @ask_question.email, :subject => "#{t('ask.reply')}:#{@ask_question.title}")
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
-5
@@ -1,8 +1,4 @@
|
|||||||
class AskQuestion
|
class AskQuestion
|
||||||
include ActiveModel::Validations
|
|
||||||
include ActiveModel::Conversion
|
|
||||||
extend ActiveModel::Naming
|
|
||||||
|
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
include OrbitCoreLib::ObjectDisable
|
include OrbitCoreLib::ObjectDisable
|
||||||
@@ -19,5 +15,4 @@ class AskQuestion
|
|||||||
|
|
||||||
belongs_to :ask_category
|
belongs_to :ask_category
|
||||||
has_one :ask_reply, dependent: :destroy
|
has_one :ask_reply, dependent: :destroy
|
||||||
|
|
||||||
end
|
end
|
||||||
File renamed without changes.
File renamed without changes.
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
<%= @ask_question.content %>
|
<%= @ask_question.ask_reply.content %>
|
||||||
</p>
|
</p>
|
||||||
<p>此為系統自動發信,請勿直接回覆</p>
|
<p>此為系統自動發信,請勿直接回覆</p>
|
||||||
</body>
|
</body>
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
@@ -18,5 +18,6 @@
|
|||||||
|
|
||||||
<div class="form-actions form-fixed pagination-right">
|
<div class="form-actions form-fixed pagination-right">
|
||||||
<div id="ask_questions_pagination" class="paginationFixed">
|
<div id="ask_questions_pagination" class="paginationFixed">
|
||||||
|
<%= paginate @ask_questions %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
File renamed without changes.
+11
@@ -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 %>
|
||||||
+6
-44
@@ -1,37 +1,8 @@
|
|||||||
<link href='/assets/ask.css' rel='stylesheet' type='text/css' />
|
<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="new-ask-question" class="ask-question">
|
||||||
<div id="acknowledgement"></div>
|
<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">
|
<div class="control-group">
|
||||||
<%= f.label :ask_category_id, class: 'control-label required' %>
|
<%= f.label :ask_category_id, class: 'control-label required' %>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
@@ -84,26 +55,17 @@ $(document).ready(function(){
|
|||||||
<%= f.text_area :content, rows: 8, class: 'input-xlarge' %>
|
<%= f.text_area :content, rows: 8, class: 'input-xlarge' %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= gotcha_error %>
|
<%= recaptcha_tags ajax: true, public_key: '6Lfl7OESAAAAAKdxTSSmWSOWlL__04A9AqQzD7_z' %>
|
||||||
<%= gotcha%>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-actions">
|
<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' %>
|
<%= f.button t('cancel'), type: 'reset', class: 'btn' %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
|
||||||
$(document).ready(function(){
|
|
||||||
$('#button-mail').click(function() {
|
|
||||||
$('#spinner').show();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function() {
|
$(function() {
|
||||||
$('#new-ask-question .required').each(function() {
|
$('#new-ask-question .required').each(function() {
|
||||||
@@ -115,4 +77,4 @@ $(document).ready(function(){
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Vendored
-1
@@ -18,7 +18,6 @@ Rails.application.routes.draw do
|
|||||||
end
|
end
|
||||||
|
|
||||||
namespace :front_end do
|
namespace :front_end do
|
||||||
match "ask_questions/thank_you" => "ask_questions#thank_you", :as => 'thank_you'
|
|
||||||
resources :ask_questions
|
resources :ask_questions
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
File renamed without changes.
File renamed without changes.
Vendored
File renamed without changes.
File renamed without changes.
Vendored
File renamed without changes.
File renamed without changes.
Loaded 100 of 289 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user