Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d1cadf67b4 | ||
|
|
d56d52828b | ||
|
|
17b8207033 | ||
|
|
3a03c7e30c | ||
|
|
d4e3286d49 | ||
|
|
9f7193bf59 | ||
|
|
c2c25f6187 | ||
|
|
323be8912c | ||
|
|
eb05d125b8 |
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'
|
||||||
@@ -50,7 +48,7 @@ gem 'sinatra'
|
|||||||
gem 'sprockets'
|
gem 'sprockets'
|
||||||
gem 'social-share-button'
|
gem 'social-share-button'
|
||||||
|
|
||||||
gem 'tinymce-rails', '3.5.8.3'
|
gem 'tinymce-rails', "~> 3.5.8"
|
||||||
gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux")
|
gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux")
|
||||||
gem 'libv8', '~> 3.11.8' if RUBY_PLATFORM.downcase.include?("linux")
|
gem 'libv8', '~> 3.11.8' if RUBY_PLATFORM.downcase.include?("linux")
|
||||||
gem 'mongoid-encryptor', :require => 'mongoid/encryptor'
|
gem 'mongoid-encryptor', :require => 'mongoid/encryptor'
|
||||||
|
|||||||
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]
|
|
||||||
@result = eval(@default_widget["query"])
|
@ori_class_name = @default_widget["query"].split('.')[0]
|
||||||
|
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 = @ori_class_name.constantize.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_class_name}.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(@default_widget["query"])
|
||||||
else #no tag has cate
|
else #no tag has cate
|
||||||
|
result = eval("#{@ori_class_name}.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.desc(:is_top, :postdate)
|
||||||
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
|
||||||
@@ -7,10 +7,4 @@ class OrbitFrontendComponentController< ApplicationController
|
|||||||
@app_title = request.fullpath.split('/')[2]
|
@app_title = request.fullpath.split('/')[2]
|
||||||
end
|
end
|
||||||
|
|
||||||
def delay_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)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -45,12 +45,28 @@ class PagesController < ApplicationController
|
|||||||
#end
|
#end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def convert_array_param(key,array)
|
||||||
|
array.collect{|t| "#{key}[]=#{t}"}.join("&")
|
||||||
|
end
|
||||||
|
|
||||||
def index_from_link
|
def index_from_link
|
||||||
url = "/#{@item.path}"
|
url = "/#{@item.path}"
|
||||||
options = ''
|
options = ''
|
||||||
options << "#{options.blank? ? '?' : '&'}page_main=#{params[:page_main]}" unless params[:page_main].blank?
|
options << "#{options.blank? ? '?' : '&'}page_main=#{params[:page_main]}" unless params[:page_main].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id', params[:category_id])}" unless params[:category_id].blank?
|
|
||||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id', params[:tag_id])}" unless params[:tag_id].blank?
|
if params[:category_id].is_a? Array
|
||||||
|
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id',params[:category_id])}" unless params[:category_id].blank?
|
||||||
|
elsif params[:category_id].is_a? String
|
||||||
|
options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
|
||||||
|
end
|
||||||
|
|
||||||
|
if params[:tag_id].is_a? Array
|
||||||
|
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id',params[:tag_id])}" unless params[:tag_id].blank?
|
||||||
|
elsif params[:category_id].is_a? String
|
||||||
|
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
options << "#{options.blank? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
|
options << "#{options.blank? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}name=#{params[:name]}" unless params[:name].blank?
|
options << "#{options.blank? ? '?' : '&'}name=#{params[:name]}" unless params[:name].blank?
|
||||||
uri = URI::escape(url + options)
|
uri = URI::escape(url + options)
|
||||||
@@ -62,8 +78,8 @@ class PagesController < ApplicationController
|
|||||||
url = "/#{@item.path}"
|
url = "/#{@item.path}"
|
||||||
options = ''
|
options = ''
|
||||||
options << "#{options.blank? ? '?' : '&'}id=#{params[:id]}" unless params[:id].blank?
|
options << "#{options.blank? ? '?' : '&'}id=#{params[:id]}" unless params[:id].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id', params[:category_id])}" unless params[:category_id].blank?
|
options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id', params[:tag_id])}" unless params[:tag_id].blank?
|
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}preview=#{params[:preview]}" unless params[:preview].blank?
|
options << "#{options.blank? ? '?' : '&'}preview=#{params[:preview]}" unless params[:preview].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}controller_action=#{params[:controller_action]}" unless params[:controller_action].blank?
|
options << "#{options.blank? ? '?' : '&'}controller_action=#{params[:controller_action]}" unless params[:controller_action].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}clicked_field_name=#{params[:clicked_field_name]}" unless params[:clicked_field_name].blank?
|
options << "#{options.blank? ? '?' : '&'}clicked_field_name=#{params[:clicked_field_name]}" unless params[:clicked_field_name].blank?
|
||||||
@@ -82,43 +98,23 @@ class PagesController < ApplicationController
|
|||||||
elsif params[:same_page_id]
|
elsif params[:same_page_id]
|
||||||
@item = Item.find(params[:same_page_id])
|
@item = Item.find(params[:same_page_id])
|
||||||
else
|
else
|
||||||
category_ids = Array(params[:category_id]) unless params[:category_id].nil?
|
category_ids = params[:category_id].is_a?(Array) ? params[:category_id] : [params[:category_id]]
|
||||||
tag_ids = Array(params[:tag_id]) unless params[:tag_id].nil?
|
tag_ids = params[:tag_id].is_a?(Array) ? params[:tag_id] : [params[:tag_id]]
|
||||||
module_app = ModuleApp.first(:conditions => {:key => params[:app_name]})
|
module_app = ModuleApp.first(:conditions => {:key => params[:app_name]})
|
||||||
|
|
||||||
default_query = { is_published: true, module_app_id: module_app.id, :app_frontend_url.in => [params[:app_action], 'default_widget'] }
|
|
||||||
specific_categories = { :category => category_ids }
|
|
||||||
in_categories = { :category.in => category_ids }
|
|
||||||
nil_categories = { :category.in => [nil, []] }
|
|
||||||
specific_tags = { :tag => tag_ids }
|
|
||||||
in_tags = { :tag.in => tag_ids }
|
|
||||||
nil_tags = { :tag.in => [nil, []] }
|
|
||||||
|
|
||||||
if !category_ids.blank? && !tag_ids.blank?
|
if !category_ids.blank? && !tag_ids.blank?
|
||||||
@item = Item.where(default_query.merge(specific_categories).merge(specific_tags)).first
|
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category.in => category_ids, :tag.in => tag_ids})
|
||||||
@item = Item.where(default_query.merge(specific_categories).merge(in_tags)).first unless @item
|
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category.in => category_ids, :tag.in => [nil, []]}) unless @item
|
||||||
@item = Item.where(default_query.merge(specific_categories).merge(nil_tags)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(specific_tags).merge(in_categories)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(specific_tags).merge(nil_categories)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(in_categories).merge(in_tags)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(in_categories).merge(nil_tags)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(in_tags).merge(nil_categories)).first unless @item
|
|
||||||
elsif !category_ids.blank?
|
elsif !category_ids.blank?
|
||||||
@item = Item.where(default_query.merge(specific_categories).merge(nil_tags)).first
|
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action], :category.in => category_ids).any_in(tag: [nil, []]).first
|
||||||
@item = Item.where(default_query.merge(specific_categories)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(in_categories).merge(nil_tags)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(in_categories)).first unless @item
|
|
||||||
elsif !tag_ids.blank?
|
elsif !tag_ids.blank?
|
||||||
@item = Item.where(default_query.merge(specific_tags).merge(nil_categories)).first
|
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action], :tag.in => tag_ids).any_in(category: [nil, []]).first
|
||||||
@item = Item.where(default_query.merge(specific_tags)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(in_tags).merge(nil_categories)).first unless @item
|
|
||||||
@item = Item.where(default_query.merge(in_tags)).first unless @item
|
|
||||||
end
|
end
|
||||||
@item = Item.find(params[:orig_page]) unless @item || params[:orig_page].blank?
|
@item = Item.find(params[:orig_page]) unless @item || params[:orig_page].blank?
|
||||||
@item = Item.where(default_query.merge(nil_categories).merge(nil_tags)).first unless @item
|
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).all_of("tag" => {"$in" => [nil, []]},"category" => { "$in" => [nil, []]}).first unless @item
|
||||||
@item = Item.where(default_query).first unless @item
|
@item = Item.where(module_app_id: module_app.id, app_frontend_url: 'default_widget').first unless @item
|
||||||
|
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).first unless @item
|
||||||
end
|
end
|
||||||
raise PageError, 'Missing Frontend Page' if @item.nil?
|
raise PageError,'Missing Frontend Page' if @item.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
def save_from_no_lang_for_page
|
def save_from_no_lang_for_page
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
module ApplicationHelper
|
module ApplicationHelper
|
||||||
include OrbitApp::Module::VisitorCounter
|
|
||||||
FLASH_NOTICE_KEYS = [:error, :notice, :warning]
|
FLASH_NOTICE_KEYS = [:error, :notice, :warning]
|
||||||
|
|
||||||
|
|
||||||
@@ -7,9 +7,8 @@ module ApplicationHelper
|
|||||||
request.referer.include?('?') ? [request.referer,param_hash.to_param].join('&') : [request.referer,param_hash.to_param].join('?')
|
request.referer.include?('?') ? [request.referer,param_hash.to_param].join('&') : [request.referer,param_hash.to_param].join('?')
|
||||||
end
|
end
|
||||||
|
|
||||||
def delayed_impressionist(item)
|
def delayed_impressionist(object)
|
||||||
user_id = current_user.nil? ? nil : current_user.id
|
# Resque.enqueue_at(1.minute.from_now,DelayedImpressionist,object)
|
||||||
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)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_user_role_enable(attribute_fields)
|
def check_user_role_enable(attribute_fields)
|
||||||
@@ -243,27 +242,25 @@ module ApplicationHelper
|
|||||||
"#{t(:view_count)}: #{object.view_count}"
|
"#{t(:view_count)}: #{object.view_count}"
|
||||||
end
|
end
|
||||||
|
|
||||||
# def display_visitors(options={})
|
def display_visitors(options={})
|
||||||
# # Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
||||||
# impressions = Impression.where(options).and(:referrer.ne => nil)
|
end
|
||||||
# impressions.map{|i| i[:session_hash]}.uniq.count
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def display_visitors_today
|
def display_visitors_today
|
||||||
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
|
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_week, '$lte' => Date.today.end_of_week})
|
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_month, '$lte' => Date.today.end_of_month})
|
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_year, '$lte' => Date.today.end_of_year})
|
display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
|
||||||
# end
|
end
|
||||||
|
|
||||||
def display_date_time(object)
|
def display_date_time(object)
|
||||||
object.strftime("%Y-%m-%d %H:%M")
|
object.strftime("%Y-%m-%d %H:%M")
|
||||||
@@ -314,8 +311,4 @@ module ApplicationHelper
|
|||||||
link_to title, params.merge({direction: direction, sort: column, sort_options: column}), {:class => "#{css_class} sortable", :remote => options[:remote]}
|
link_to title, params.merge({direction: direction, sort: column, sort_options: column}), {:class => "#{css_class} sortable", :remote => options[:remote]}
|
||||||
end
|
end
|
||||||
|
|
||||||
def convert_array_param(key, array)
|
|
||||||
Array(array).collect{|t| "#{key}[]=#{t}"}.join("&")
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -3,13 +3,6 @@ module DefaultWidgetHelper
|
|||||||
I18n.t("#{@page_part.module_app.key}.default_widget.#{field}")
|
I18n.t("#{@page_part.module_app.key}.default_widget.#{field}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_top_hot_class(row_data)
|
|
||||||
class_attr = []
|
|
||||||
class_attr << 'data_is_hot' if( row_data.is_hot? rescue false )
|
|
||||||
class_attr << 'data_is_top' if( row_data.is_top? rescue false)
|
|
||||||
return class_attr.join(" ")
|
|
||||||
end
|
|
||||||
|
|
||||||
def link_to_field(row_data,field, switch, options=nil)
|
def link_to_field(row_data,field, switch, options=nil)
|
||||||
method_ary = @page_part.module_app.widget_fields_link_method
|
method_ary = @page_part.module_app.widget_fields_link_method
|
||||||
field = field.to_sym
|
field = field.to_sym
|
||||||
@@ -84,13 +77,4 @@ module DefaultWidgetHelper
|
|||||||
content_tag(:span,get_display(row_data,field_setting),:class=>field_setting[:class])
|
content_tag(:span,get_display(row_data,field_setting),:class=>field_setting[:class])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_row_category(row_data)
|
|
||||||
row_data.send("#{row_data.class.to_s.underscore}_category_id") rescue nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_row_tags(row_data)
|
|
||||||
row_data.tagged_ids rescue nil
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -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
|
||||||
@@ -1,21 +1,36 @@
|
|||||||
class DashboardCounter < Resque::Plugins::RestrictionJob
|
class DashboardCounter < Resque::Plugins::RestrictionJob
|
||||||
extend OrbitApp::Module::VisitorCounterEval
|
|
||||||
|
|
||||||
@queue = :high
|
@queue = :high
|
||||||
|
|
||||||
def self.perform(*args)
|
def self.perform(*args)
|
||||||
site = Site.first
|
site = Site.first
|
||||||
obj = new(*args)
|
obj = new(*args)
|
||||||
site.visitor_counters[:total] = display_visitors
|
site.dashboard_counter[:visitors_this_week] = obj.display_visitors_this_week
|
||||||
site.visitor_counters[:today] = display_visitors_today
|
site.dashboard_counter[:visitors_this_month] = obj.display_visitors_this_month
|
||||||
site.visitor_counters[:this_week] = display_visitors_this_week
|
site.dashboard_counter[:visitors_this_year] = obj.display_visitors_this_year
|
||||||
site.visitor_counters[:this_month] = display_visitors_this_month
|
|
||||||
site.visitor_counters[:this_year] = display_visitors_this_year
|
|
||||||
site.save
|
site.save
|
||||||
OrbitLogger.info "DashboardCounter done #{site.visitor_counters.to_s}"
|
OrbitLogger.info "DashboardCounter done #{site.dashboard_counter.to_s}"
|
||||||
|
end
|
||||||
|
|
||||||
#Notice this is mainly used at user dashbroad. however the code there is currentlly using realtime evaluation.
|
|
||||||
#and the site model will need a field call dashboard_counter to complete this job.
|
def display_visitors(options={})
|
||||||
|
impressions = Impression.where(options).and(:referrer.ne => nil)
|
||||||
|
impressions.map{|i| i[:session_hash]}.uniq.count
|
||||||
|
end
|
||||||
|
|
||||||
|
def display_visitors_today
|
||||||
|
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_week, '$lte' => Date.today.end_of_week})
|
||||||
|
end
|
||||||
|
|
||||||
|
def display_visitors_this_month
|
||||||
|
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_year, '$lte' => Date.today.end_of_year})
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -1,51 +1,7 @@
|
|||||||
class DelayedImpressionist
|
class DelayedImpressionist
|
||||||
def self.before_filter(*args)
|
@queue = :low
|
||||||
return
|
def self.perform(object)
|
||||||
end
|
impressionist(object)
|
||||||
|
true
|
||||||
include ImpressionistController::InstanceMethods
|
end
|
||||||
@queue = :low
|
|
||||||
|
|
||||||
def initialize(request,controller_name,action_name,user,obj)
|
|
||||||
@controller_name = controller_name
|
|
||||||
@action_name = action_name
|
|
||||||
@user = User.find user unless user.nil?
|
|
||||||
@request = request
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.perform(*args)
|
|
||||||
arg = args[0]
|
|
||||||
@request= DelayImpressionistRequest.new
|
|
||||||
@request.restore(arg["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
|
|
||||||
|
|
||||||
private
|
|
||||||
def user
|
|
||||||
@user
|
|
||||||
end
|
|
||||||
|
|
||||||
def action_name
|
|
||||||
@action_name
|
|
||||||
end
|
|
||||||
|
|
||||||
def controller_name
|
|
||||||
@controller_name
|
|
||||||
end
|
|
||||||
|
|
||||||
def request
|
|
||||||
@request
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -3,7 +3,7 @@ class UpdateTagCloud
|
|||||||
|
|
||||||
def self.perform()
|
def self.perform()
|
||||||
Tag.all.each do |tag|
|
Tag.all.each do |tag|
|
||||||
tag.update_attribute(:cloud_view_count, tag.get_impressionist)
|
tag.update_attribute(:cloud_view_count, tag.impressionist_count(:created_at.gte => 14.days.ago, :created_at.lte => Time.now))
|
||||||
end
|
end
|
||||||
OrbitLogger.info "UpdateTagCloud Done"
|
OrbitLogger.info "UpdateTagCloud Done"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ class ModuleApp
|
|||||||
def sorted_tags_for_cloud
|
def sorted_tags_for_cloud
|
||||||
temp_tags = {}
|
temp_tags = {}
|
||||||
self.tags.each{ |tag|
|
self.tags.each{ |tag|
|
||||||
temp_tags.merge!({tag => tag.cloud_view_count})
|
temp_tags.merge!({tag => Tag.get_impressionist(tag)})
|
||||||
}
|
}
|
||||||
if !temp_tags.blank?
|
if !temp_tags.blank?
|
||||||
sorted_tags = temp_tags.sort{|a,b| a[1]<=>b[1]}.reverse
|
sorted_tags = temp_tags.sort{|a,b| a[1]<=>b[1]}.reverse
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ class Page < Item
|
|||||||
include Impressionist::Impressionable
|
include Impressionist::Impressionable
|
||||||
include ParserFrontEnd
|
include ParserFrontEnd
|
||||||
|
|
||||||
is_impressionable #:counter_cache => { :column_name => :view_count }
|
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||||
|
|
||||||
field :content, localize: true
|
field :content, localize: true
|
||||||
field :app_frontend_url
|
field :app_frontend_url
|
||||||
|
|||||||
+1
-3
@@ -18,7 +18,6 @@ class Site
|
|||||||
field :title_always_on, :type => Boolean, :default => false
|
field :title_always_on, :type => Boolean, :default => false
|
||||||
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
||||||
field :mail_settings, :type => Hash
|
field :mail_settings, :type => Hash
|
||||||
field :visitor_counters,:type=> Hash,:default=>{:total=>0,:today=>0,:this_week=>0,:this_month=>0,:this_year=>0}
|
|
||||||
|
|
||||||
field :disk_space, :type => String
|
field :disk_space, :type => String
|
||||||
field :system_package_info, :type => Hash,:default=>{}
|
field :system_package_info, :type => Hash,:default=>{}
|
||||||
@@ -29,11 +28,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
|
||||||
|
|
||||||
|
|||||||
+25
-1
@@ -8,7 +8,7 @@ class Tag
|
|||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
include Impressionist::Impressionable
|
include Impressionist::Impressionable
|
||||||
|
|
||||||
is_impressionable #:counter_cache => { :column_name => :view_count }
|
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||||
|
|
||||||
field :name, localize: true
|
field :name, localize: true
|
||||||
field :view_count, :type => Integer, :default => 0
|
field :view_count, :type => Integer, :default => 0
|
||||||
@@ -17,6 +17,30 @@ class Tag
|
|||||||
belongs_to :module_tag, polymorphic: true
|
belongs_to :module_tag, polymorphic: true
|
||||||
has_many :taggings, dependent: :destroy
|
has_many :taggings, dependent: :destroy
|
||||||
|
|
||||||
|
#field :cloud_amper,:type: Integer,:default=> 0
|
||||||
|
|
||||||
|
# def self.sorted_for_cloud
|
||||||
|
# tags = {}
|
||||||
|
# self.all.each{ |tag|
|
||||||
|
# tags.merge!({tag => self.get_impressionist(tag)})
|
||||||
|
# }
|
||||||
|
# if !tags.blank?
|
||||||
|
# sorted_tags = tags.sort{|a,b| a[1]<=>b[1]}.reverse
|
||||||
|
# sorted_tags[0][1] = :hot1
|
||||||
|
# offset = (sorted_tags.size - 1) / 3
|
||||||
|
# i = 1
|
||||||
|
# class_i = 2
|
||||||
|
# sorted_tags[1..-1].collect!{ |x|
|
||||||
|
# x[1] = "hot#{class_i}"
|
||||||
|
# i == offset ? i = 1 : i += 1 if class_i < 4
|
||||||
|
# class_i += 1 if i == offset && class_i < 4
|
||||||
|
# }
|
||||||
|
# sorted_tags
|
||||||
|
# else
|
||||||
|
# []
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def self.get_impressionist(item_tag = self)
|
def self.get_impressionist(item_tag = self)
|
||||||
|
|||||||
+10
-5
@@ -3,7 +3,7 @@ class User
|
|||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable #, :timeoutable
|
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
|
||||||
|
|
||||||
mount_uploader :avatar, AvatarUploader
|
mount_uploader :avatar, AvatarUploader
|
||||||
|
|
||||||
@@ -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 = {}
|
||||||
|
|||||||
@@ -1,22 +1,19 @@
|
|||||||
<%= content_tag :div, class: @tag_class do %>
|
<%= content_tag :div,:class=>@tag_class do%>
|
||||||
<div class="default_widget_type_A">
|
<div class="default_widget_type_A">
|
||||||
<table class="default_widget_tb" border="0" cellpadding="0" cellspacing="0" >
|
<table class="default_widget_tb" border="0" cellpadding="0" cellspacing="0" >
|
||||||
<thead>
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<% @frontend_field_names.each_with_index do |field,index|%>
|
||||||
|
<%= content_tag(:th,content_tag(:span,get_field_header(field),:class=>@frontend_classes[index]))unless field.blank?%>
|
||||||
|
<% end %>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<% @data.each do |row_data| %>
|
||||||
<tr>
|
<tr>
|
||||||
<% @frontend_field_names.each_with_index do |field, index| %>
|
<% @frontend_field_names.each_with_index do |field,index|%>
|
||||||
<%= content_tag(:th, content_tag(:span, get_field_header(field), class: @frontend_classes[index])) unless field.blank? %>
|
<%= content_tag(:td,content_tag(:span,link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s}),:class=>@frontend_classes[index]))unless field.blank?%>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
<% end %>
|
||||||
<tbody>
|
|
||||||
<% @data.each do |row_data| %>
|
|
||||||
<tr class="<%= get_top_hot_class(row_data) %>">
|
|
||||||
<% @frontend_field_names.each_with_index do |field, index|%>
|
|
||||||
<%= content_tag(:td, content_tag(:span, link_to_field(row_data, field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index])) unless field.blank? %>
|
|
||||||
<% end %>
|
|
||||||
</tr>
|
|
||||||
<% end %>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
<% end %>
|
||||||
<% end %>
|
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
<%= content_tag :div, class: @tag_class do %>
|
<%= content_tag :div,:class=>@tag_class do%>
|
||||||
<ul class="default_widget_list">
|
<ul class="default_widget_list">
|
||||||
<% @data.each do |row_data| %>
|
<% @data.each do |row_data| %>
|
||||||
<%= content_tag(:li, class: get_top_hot_class(row_data)) do %>
|
<%= content_tag(:li) do %>
|
||||||
<div class="img app-pic">
|
<div class="img app-pic">
|
||||||
<%= image_tag row_data.send(@widget_image_field) %>
|
<%= image_tag row_data.send(@widget_image_field)%>
|
||||||
</div>
|
</div>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<% @frontend_field_names.each_with_index do |field, index| %>
|
<% @frontend_field_names.each_with_index do |field,index|%>
|
||||||
<%= content_tag(:span, link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index]) unless field.blank? %>
|
<%= content_tag(:span,link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s}),:class=>@frontend_classes[index]) unless field.blank?%>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<%= content_tag :div, class: @tag_class do %>
|
<%= content_tag :div,:class=>@tag_class do%>
|
||||||
<div class="img app-pic">
|
<div class="img app-pic">
|
||||||
<%= image_tag @data.first.send(@widget_image_field) %>
|
<%= image_tag @data.first.send(@widget_image_field)%>
|
||||||
</div>
|
</div>
|
||||||
<ul class="default_widget_list">
|
<ul class="default_widget_list">
|
||||||
<% @data.each do |row_data| %>
|
<% @data.each do |row_data| %>
|
||||||
<%= content_tag(:li, class: get_top_hot_class(row_data)) do %>
|
<%= content_tag(:li) do %>
|
||||||
<% @frontend_field_names.each_with_index do |field, index|%>
|
<% @frontend_field_names.each_with_index do |field,index|%>
|
||||||
<%= content_tag(:span, link_to_field(row_data, field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index]) unless field.blank? %>
|
<%= content_tag(:span, link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s}),:class=>@frontend_classes[index]) unless field.blank?%>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -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|
|
||||||
@@ -1,15 +1,3 @@
|
|||||||
dashboard_counter_cache:
|
|
||||||
cron: 0 * * * * *
|
|
||||||
class: DashboardCounter
|
|
||||||
args:
|
|
||||||
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"
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
class DelayImpressionistRequest
|
|
||||||
attr_accessor :session_options,:remote_ip,:referer,:user_agent
|
|
||||||
def initialize(request=nil)
|
|
||||||
if request
|
|
||||||
self.session_options=request.session_options
|
|
||||||
self.remote_ip=request.remote_ip
|
|
||||||
self.referer=request.referer
|
|
||||||
self.user_agent=request.user_agent
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def restore(args)
|
|
||||||
args.each do |key,value|
|
|
||||||
self.send("#{key}=", value)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -6,14 +6,15 @@ module DefaultWidgetTagHelper
|
|||||||
@request = req
|
@request = req
|
||||||
params.delete :inner
|
params.delete :inner
|
||||||
@params = params
|
@params = params
|
||||||
params_str = "?"
|
|
||||||
|
params_str ="?"
|
||||||
params.each do |index,param|
|
params.each do |index,param|
|
||||||
if param.is_a?(Array) and !param.blank?
|
if param.is_a?(Array) and !param.blank?
|
||||||
params_str << "&" unless params_str.eql?("?")
|
|
||||||
params_str << param.collect{|t| "#{index}[]=#{t}"}.join("&")
|
params_str << param.collect{|t| "#{index}[]=#{t}"}.join("&")
|
||||||
params.delete index
|
params.delete index
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
params_str = params_str + (params_str.eql?("?") ? params.to_param : "&#{params.to_param}" )
|
params_str = params_str + (params_str.eql?("?") ? params.to_param : "&#{params.to_param}" )
|
||||||
content_tag :div,:class=> 'more' do
|
content_tag :div,:class=> 'more' do
|
||||||
link_to I18n.t(@more_link[:label_i18n]),[eval("#{@more_link[:path_method]}"),params_str].join()
|
link_to I18n.t(@more_link[:label_i18n]),[eval("#{@more_link[:path_method]}"),params_str].join()
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
module OrbitApp
|
|
||||||
module Module
|
|
||||||
module VisitorCounter
|
|
||||||
Version = "0.1"
|
|
||||||
|
|
||||||
def display_visitors(options={})
|
|
||||||
Site.first.visitor_counters["total"]
|
|
||||||
end
|
|
||||||
|
|
||||||
def display_visitors_today
|
|
||||||
Site.first.visitor_counters["today"]
|
|
||||||
end
|
|
||||||
|
|
||||||
def display_visitors_this_week
|
|
||||||
Site.first.visitor_counters["this_week"]
|
|
||||||
end
|
|
||||||
|
|
||||||
def display_visitors_this_month
|
|
||||||
Site.first.visitor_counters["this_month"]
|
|
||||||
end
|
|
||||||
|
|
||||||
def display_visitors_this_year
|
|
||||||
Site.first.visitor_counters["this_year"]
|
|
||||||
end
|
|
||||||
|
|
||||||
end # of VisitorCounter
|
|
||||||
end # of Module
|
|
||||||
end # of OrbitApp
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
module OrbitApp
|
|
||||||
module Module
|
|
||||||
module VisitorCounterEval
|
|
||||||
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
|
|
||||||
end
|
|
||||||
|
|
||||||
def display_visitors_today
|
|
||||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day , '$lte' => DateTime.now})
|
|
||||||
end
|
|
||||||
|
|
||||||
def display_visitors_this_week
|
|
||||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day - 7.days, '$lte' => DateTime.now})
|
|
||||||
end
|
|
||||||
|
|
||||||
def display_visitors_this_month
|
|
||||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day - 1.month, '$lte' => DateTime.now})
|
|
||||||
end
|
|
||||||
|
|
||||||
def display_visitors_this_year
|
|
||||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day - 1.year, '$lte' =>DateTime.now})
|
|
||||||
end
|
|
||||||
end # end of VisitorCounterEval
|
|
||||||
end # of Module
|
|
||||||
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)
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ module OrbitTag
|
|||||||
def tags=(tag_ids)
|
def tags=(tag_ids)
|
||||||
ids = [tag_ids].flatten
|
ids = [tag_ids].flatten
|
||||||
tag_ids.delete('')
|
tag_ids.delete('')
|
||||||
self.tagged_ids = tag_ids
|
|
||||||
ids = self.taggings.blank? ? [] : self.taggings.map{|t| t.tag.id}
|
ids = self.taggings.blank? ? [] : self.taggings.map{|t| t.tag.id}
|
||||||
tag_ids.each do |tag_id|
|
tag_ids.each do |tag_id|
|
||||||
unless ids.include? tag_id
|
unless ids.include? tag_id
|
||||||
@@ -59,6 +58,9 @@ module OrbitTag
|
|||||||
|
|
||||||
def tag_ids=(ids)
|
def tag_ids=(ids)
|
||||||
self.tags = ids
|
self.tags = ids
|
||||||
|
ids = [ids].flatten
|
||||||
|
ids.delete('')
|
||||||
|
self.tagged_ids = ids
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@@ -310,60 +310,4 @@ namespace :migrate do
|
|||||||
Rake::Task["web_link_url:web_link_url_i18n"].execute
|
Rake::Task["web_link_url:web_link_url_i18n"].execute
|
||||||
end
|
end
|
||||||
|
|
||||||
task :fix_tagged_ids => :environment do
|
|
||||||
Tag.all.each do |tag|
|
|
||||||
tag.taggings.each do |tagging|
|
|
||||||
tagged_ids = tagging.taggable.tagged_ids
|
|
||||||
unless tagged_ids.include?(tag.id.to_s)
|
|
||||||
tagged_ids << tag.id.to_s
|
|
||||||
tagging.taggable.update_attribute(:tagged_ids, tagged_ids)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
task :clear_news_tags => :environment do
|
|
||||||
`mongo #{Mongoid.config.database.name} --eval "db.tags.remove({_type: {$ne: 'Tag'}})"`
|
|
||||||
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
|
||||||
+3
-81
@@ -1,5 +1,4 @@
|
|||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
require 'erb'
|
|
||||||
|
|
||||||
namespace :site do
|
namespace :site do
|
||||||
|
|
||||||
@@ -10,7 +9,6 @@ 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 => '英文' )
|
||||||
@@ -18,18 +16,14 @@ namespace :site do
|
|||||||
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')
|
||||||
@@ -62,6 +72,69 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
|
|||||||
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 = []
|
||||||
# if(is_manager? || is_admin?)
|
# if(is_manager? || is_admin?)
|
||||||
|
|||||||
+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)")
|
||||||
|
|||||||
+1
-6
@@ -26,7 +26,6 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
|
||||||
@item = Page.find(params[:page_id]) rescue nil
|
@item = Page.find(params[:page_id]) rescue nil
|
||||||
if @item
|
if @item
|
||||||
if @item.frontend_data_count
|
if @item.frontend_data_count
|
||||||
@@ -61,11 +60,7 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
|
|||||||
else
|
else
|
||||||
@bulletins = Bulletin.all.available_for_lang(I18n.locale).can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(@page_num)
|
@bulletins = Bulletin.all.available_for_lang(I18n.locale).can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(@page_num)
|
||||||
end
|
end
|
||||||
if params["tag_id"]
|
delayed_impressionist(@tag) if @tag
|
||||||
params["tag_id"].each do |tag_id|
|
|
||||||
delayed_impressionist(Tag.find tag_id) rescue nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
+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
|
||||||
|
|||||||
+45
-1
@@ -14,7 +14,7 @@ class Bulletin
|
|||||||
include OrbitTag::Taggable
|
include OrbitTag::Taggable
|
||||||
taggable
|
taggable
|
||||||
|
|
||||||
is_impressionable #:counter_cache => { :column_name => :view_count }
|
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||||
|
|
||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
field :subtitle, localize: true
|
field :subtitle, localize: true
|
||||||
@@ -41,6 +41,12 @@ class Bulletin
|
|||||||
|
|
||||||
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,9 +221,47 @@ 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 ))
|
||||||
self.deadline = nil
|
self.deadline = nil
|
||||||
|
|||||||
+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 %>")
|
|
||||||
+18
-1
@@ -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: 時間
|
||||||
|
|
||||||
|
|
||||||
+2
-8
@@ -23,14 +23,13 @@ module Announcement
|
|||||||
end
|
end
|
||||||
|
|
||||||
category ["BulletinCategory"]
|
category ["BulletinCategory"]
|
||||||
data_count 1..10
|
data_count 3..10
|
||||||
|
|
||||||
taggable
|
taggable
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -4,3 +4,4 @@ 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
|
||||||
File renamed without changes.
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.
Loaded 100 of 315 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user