Compare commits
83
Commits
nkut
...
0913_ntu_common
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d766eea9f4 | ||
|
|
d5dc3ef793 | ||
|
|
b3366b48a1 | ||
|
|
36e7e3d3e8 | ||
|
|
06c2240d34 | ||
|
|
c4e8ed96a9 | ||
|
|
8ad015af7f | ||
|
|
1857ad428c | ||
|
|
134b639465 | ||
|
|
45136f915d | ||
|
|
2c3924d92c | ||
|
|
41b562d3f7 | ||
|
|
4074ac677d | ||
|
|
e1c57c6843 | ||
|
|
915ea066d6 | ||
|
|
e7aa7ea1fa | ||
|
|
1ccfd6e48c | ||
|
|
23516277f3 | ||
|
|
87bc2852b3 | ||
|
|
27b86b078a | ||
|
|
8f393e1079 | ||
|
|
353039dcd0 | ||
|
|
d8dd68b4df | ||
|
|
aa8523c8cf | ||
|
|
69ef8fa747 | ||
|
|
473baa9b95 | ||
|
|
1592aaff89 | ||
|
|
030d994180 | ||
|
|
a88ad35641 | ||
|
|
a63193dc65 | ||
|
|
452bddb587 | ||
|
|
371485e420 | ||
|
|
69b3625861 | ||
|
|
72d1427854 | ||
|
|
079b9145c3 | ||
|
|
3102a46219 | ||
|
|
653a098ab6 | ||
|
|
426edea485 | ||
|
|
2e5b2555c6 | ||
|
|
2593707d8c | ||
|
|
b20955579e | ||
|
|
1ebda22f0e | ||
|
|
c511aeb8de | ||
|
|
26d3a89d30 | ||
|
|
91f80a0952 | ||
|
|
f333fe9e21 | ||
|
|
33f256bd16 | ||
|
|
fde9fd7ffe | ||
|
|
d977b83d06 | ||
|
|
a1eae7543e | ||
|
|
8d9bf62909 | ||
|
|
2f480c31bf | ||
|
|
19d33f78bd | ||
|
|
37c91664d3 | ||
|
|
eb853f773d | ||
|
|
d701d9d6ad | ||
|
|
75eeec737c | ||
|
|
36c3635bbb | ||
|
|
fa1c731ad3 | ||
|
|
2c24e788b0 | ||
|
|
26a8be2f0f | ||
|
|
fa51d16879 | ||
|
|
ceff21fd1f | ||
|
|
1357124f6f | ||
|
|
8c3fb43bf5 | ||
|
|
71e8b3c042 | ||
|
|
b37643147f | ||
|
|
ec57cbff1c | ||
|
|
7d6df11873 | ||
|
|
8043573370 | ||
|
|
f025c98ffa | ||
|
|
3a91c92bf7 | ||
|
|
b1d8a87256 | ||
|
|
c7ac4e2485 | ||
|
|
3467868607 | ||
|
|
ceac2b842c | ||
|
|
c763817ebf | ||
|
|
3c3bba514a | ||
|
|
837dc3ea7b | ||
|
|
ea5d89e0e1 | ||
|
|
aea15fa622 | ||
|
|
c1316f72a0 | ||
|
|
d996b91b54 |
No files matched your search
+5
-1
@@ -4,6 +4,8 @@
|
|||||||
.rvmrc
|
.rvmrc
|
||||||
|
|
||||||
Gemfile.lock
|
Gemfile.lock
|
||||||
|
Procfile
|
||||||
|
log/*
|
||||||
|
|
||||||
db/*.sqlite3
|
db/*.sqlite3
|
||||||
log/*.log
|
log/*.log
|
||||||
@@ -14,7 +16,9 @@ public/uploads/**/*
|
|||||||
solr/data
|
solr/data
|
||||||
tmp/**/*
|
tmp/**/*
|
||||||
uploads/**/*
|
uploads/**/*
|
||||||
|
config/*.god
|
||||||
|
log/*.gz
|
||||||
|
tmp/restart.txt
|
||||||
*.swp
|
*.swp
|
||||||
*.pid
|
*.pid
|
||||||
*.lck
|
*.lck
|
||||||
|
|||||||
@@ -14,7 +14,11 @@ 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', :git => 'git://github.com/amatsuda/kaminari.git'
|
gem 'kaminari'
|
||||||
|
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"
|
||||||
@@ -35,7 +39,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'
|
gem 'rubyzip','0.9.9'
|
||||||
|
|
||||||
gem 'sunspot_mongo'
|
gem 'sunspot_mongo'
|
||||||
gem 'sunspot_solr'
|
gem 'sunspot_solr'
|
||||||
@@ -46,7 +50,7 @@ gem 'sinatra'
|
|||||||
gem 'sprockets'
|
gem 'sprockets'
|
||||||
gem 'social-share-button'
|
gem 'social-share-button'
|
||||||
|
|
||||||
gem 'tinymce-rails'
|
gem 'tinymce-rails', '3.5.8.3'
|
||||||
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.
|
After Width: | Height: | Size: 11 KiB |
@@ -5,3 +5,4 @@
|
|||||||
*= require_self
|
*= require_self
|
||||||
*= require social-share-button
|
*= require social-share-button
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
class Admin::MailCronLogsController < OrbitBackendController
|
||||||
|
|
||||||
|
layout "new_admin"
|
||||||
|
before_filter :authenticate_user!
|
||||||
|
before_filter :is_admin?
|
||||||
|
|
||||||
|
def index
|
||||||
|
|
||||||
|
# @mail_cron_logs = MailCronLog.all.desc(:created_at).page(params[:page_main] ).per('20')
|
||||||
|
@mail_cron_logs = (params[:sort]) ? get_sorted_and_filtered("mail_cron_log") : get_viewable("mail_cron_log")
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html # index.html.erb
|
||||||
|
format.xml { render :xml => @mail_crons }
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@mail_cron_log = MailCronLog.find(params[:id])
|
||||||
|
@mail_cron_log.destroy
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to(admin_mail_cron_logs_url) }
|
||||||
|
# format.xml { head :ok }
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete
|
||||||
|
if params[:ids]
|
||||||
|
mail_cron_logs = MailCronLog.any_in(:_id => params[:ids]).destroy_all
|
||||||
|
end
|
||||||
|
redirect_to admin_mail_cron_logs_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
class Admin::MailCronsController < OrbitBackendController
|
||||||
|
|
||||||
|
layout "new_admin"
|
||||||
|
before_filter :authenticate_user!
|
||||||
|
before_filter :is_admin?
|
||||||
|
|
||||||
|
def index
|
||||||
|
|
||||||
|
# @mail_crons = MailCron.all.asc(:mail_sentdate).page(params[:page_main] ).per('20')
|
||||||
|
@mail_crons = (params[:sort]) ? get_sorted_and_filtered("mail_cron") : get_viewable("mail_cron")
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html # index.html.erb
|
||||||
|
format.xml { render :xml => @mail_crons }
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@mail_cron = MailCron.new
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html # new.html.erb
|
||||||
|
format.xml { render :xml => @mail_cron }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@mail_cron = MailCron.new(params[:mail_cron])
|
||||||
|
|
||||||
|
@mail_cron.create_user_id = current_user.id
|
||||||
|
@mail_cron.update_user_id = current_user.id
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @mail_cron.save
|
||||||
|
format.html { redirect_to(admin_mail_crons_url) }
|
||||||
|
format.xml { render :xml => @mail_cron, :status => :created, :location => @mail_cron }
|
||||||
|
else
|
||||||
|
format.html { render :action => "new" }
|
||||||
|
format.xml { render :xml => @mail_cron.errors, :status => :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@mail_cron = MailCron.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@datas = MailCron.where(:mail_sentdate.lte => Time.now, :mail_sent => false)
|
||||||
|
|
||||||
|
@datas.each do |mail_data|
|
||||||
|
|
||||||
|
@mail_j = 0
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
@mails = mail_data.mail_to.split(",")
|
||||||
|
|
||||||
|
@mails.each do |send_mail|
|
||||||
|
|
||||||
|
@read_mails << send_mail
|
||||||
|
|
||||||
|
@mail_j += 1
|
||||||
|
|
||||||
|
if 0 == @mail_j % 30
|
||||||
|
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if !@read_mails.join(',').blank?
|
||||||
|
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
@mail_cron = MailCron.find(params[:id])
|
||||||
|
|
||||||
|
@mail_cron.update_user_id = current_user.id
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @mail_cron.update_attributes(params[:mail_cron])
|
||||||
|
format.html { redirect_to(admin_mail_crons_url) }
|
||||||
|
format.js { render 'toggle_enable' }
|
||||||
|
format.xml { head :ok }
|
||||||
|
else
|
||||||
|
format.html { render :action => "edit" }
|
||||||
|
format.xml { render :xml => @mail_cron.errors, :status => :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@mail_cron = MailCron.find(params[:id])
|
||||||
|
@mail_cron.destroy
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to(admin_mail_crons_url) }
|
||||||
|
# format.xml { head :ok }
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete
|
||||||
|
if params[:ids]
|
||||||
|
mail_crons = MailCron.any_in(:_id => params[:ids]).destroy_all
|
||||||
|
end
|
||||||
|
redirect_to admin_mail_crons_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
end
|
||||||
@@ -11,23 +11,21 @@ class DefaultWidgetController< OrbitWidgetController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def query_for_default_widget
|
def query_for_default_widget
|
||||||
|
@ori_class_name = @default_widget["query"].split('.')[0]
|
||||||
@ori_class_name = @default_widget["query"].split('.')[0]
|
@result = eval(@default_widget["query"])
|
||||||
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 = @ori_class_name.constantize.where(:tagged_ids.in => params["tag_id"])
|
@result.selector[:tagged_ids] = { "$in" => params['tag_id'] }
|
||||||
else #has tag and cate
|
else #has tag and cate
|
||||||
result = eval("#{@ori_class_name}.where(:#{get_category_field_name}.in=>params['category_id'], :tagged_ids.in => params['tag_id'])")
|
@result.selector[get_category_field_name] = { "$in" => params['category_id'].collect{|t| BSON::ObjectId(t)}}
|
||||||
|
@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
|
||||||
result.available_for_lang(I18n.locale).can_display.desc(:is_top, :postdate)
|
eval("@result.#{@default_widget[:sorting_query]}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def search_result
|
def search_result
|
||||||
@@ -40,9 +38,13 @@ class DefaultWidgetController< OrbitWidgetController
|
|||||||
|
|
||||||
def default_widget
|
def default_widget
|
||||||
@search = params["search_query"].blank? ? false : true
|
@search = params["search_query"].blank? ? false : true
|
||||||
if !params[:id].blank?
|
if !params[:id].blank? and !params["clicked_field_name"].blank?
|
||||||
clicked_field_name = params["clicked_field_name"].to_sym
|
clicked_field_name = params["clicked_field_name"].to_sym
|
||||||
redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {inner: #{params[:inner] || true}})")
|
redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {inner: #{params[:inner] || true}})")
|
||||||
|
elsif !params[:id].blank? and params["preview"]
|
||||||
|
clicked_field_name = :title
|
||||||
|
@preview_pages = @page_part.module_app.widget_fields_link_method.find_all{|t| t[1].has_key?(:preview)}.collect{|t| t[0]}
|
||||||
|
redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {preview: true,inner: #{params[:inner] || true},clicked_field_name: '#{@preview_pages.first.to_s}'})")
|
||||||
else
|
else
|
||||||
@tag_class = nil
|
@tag_class = nil
|
||||||
@default_widget = @page_part.module_app.get_default_widget
|
@default_widget = @page_part.module_app.get_default_widget
|
||||||
@@ -91,9 +93,9 @@ class DefaultWidgetController< OrbitWidgetController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_category_field_name
|
def get_category_field_name
|
||||||
@ori_class_name = @ori_class_name.constantize
|
@ori_class_name = @ori_class_name.constantize unless @ori_class_name.is_a? Class
|
||||||
@ori_class_name.fields.each_key do |key|
|
@ori_class_name.fields.each_key do |key|
|
||||||
return key if key.include?('category_id')
|
return key.to_s if key.include?('category_id')
|
||||||
end
|
end
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,4 +7,10 @@ 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
|
||||||
@@ -44,29 +44,13 @@ class PagesController < ApplicationController
|
|||||||
# render :file => "#{Rails.root}/public/404.html", :status => :not_found
|
# render :file => "#{Rails.root}/public/404.html", :status => :not_found
|
||||||
#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?
|
||||||
if params[:category_id].is_a? Array
|
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id', params[:tag_id])}" unless params[:tag_id].blank?
|
||||||
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)
|
||||||
@@ -78,8 +62,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? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
|
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id', params[:category_id])}" unless params[:category_id].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
|
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('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?
|
||||||
@@ -98,23 +82,43 @@ 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 = params[:category_id].is_a?(Array) ? params[:category_id] : [params[:category_id]]
|
category_ids = Array(params[:category_id]) unless params[:category_id].nil?
|
||||||
tag_ids = params[:tag_id].is_a?(Array) ? params[:tag_id] : [params[:tag_id]]
|
tag_ids = Array(params[:tag_id]) unless params[:tag_id].nil?
|
||||||
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.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(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 => [nil, []]}) unless @item
|
@item = Item.where(default_query.merge(specific_categories).merge(in_tags)).first 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(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).merge(nil_tags)).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(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).merge(nil_categories)).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(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.merge(nil_categories).merge(nil_tags)).first unless @item
|
||||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: 'default_widget').first unless @item
|
@item = Item.where(default_query).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
|
||||||
|
|||||||
@@ -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,8 +7,9 @@ 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(object)
|
def delayed_impressionist(item)
|
||||||
# Resque.enqueue_at(1.minute.from_now,DelayedImpressionist,object)
|
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
|
||||||
|
|
||||||
def check_user_role_enable(attribute_fields)
|
def check_user_role_enable(attribute_fields)
|
||||||
@@ -242,25 +243,27 @@ 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
|
||||||
end
|
# impressions = Impression.where(options).and(:referrer.ne => nil)
|
||||||
|
# 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")
|
||||||
@@ -311,4 +314,8 @@ 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,6 +3,13 @@ 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
|
||||||
@@ -77,4 +84,13 @@ 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,16 +2,24 @@ 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} ]
|
||||||
|
|
||||||
%x[rm #{archive_db_list_path}]
|
Dir.foreach('tmp') do |item|
|
||||||
%x[ls #{Rails.root}/tmp/#{dbname}* | du -h --max-depth=1 --block-size=1M |sort -h >> #{archive_db_list_path}]
|
date_str = item.to_s.gsub("#{dbname}-",'')
|
||||||
|
next if not date_str.match(/\d{4}-\d{2}-\d{2}-\d{2}-\d{2}/)
|
||||||
|
if Date.parse(date_str).to_time < Site.first.backup_keep_for_days.days.ago
|
||||||
|
OrbitLogger.info "Deleting #{date_str}"
|
||||||
|
%x[rm -rf tmp/#{item}]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
%x[rm -f #{archive_db_list_path}]
|
||||||
|
%x[cd tmp ; ls -l |grep #{dbname} | awk '{print $8}'|xargs du -h --block-size=1M --max-depth=0 |sort -h >> #{archive_db_list_path}]
|
||||||
OrbitLogger.info "DB backup done Path:#{dbdirectory}"
|
OrbitLogger.info "DB backup done Path:#{dbdirectory}"
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1,36 +1,21 @@
|
|||||||
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.dashboard_counter[:visitors_this_week] = obj.display_visitors_this_week
|
site.visitor_counters[:total] = display_visitors
|
||||||
site.dashboard_counter[:visitors_this_month] = obj.display_visitors_this_month
|
site.visitor_counters[:today] = display_visitors_today
|
||||||
site.dashboard_counter[:visitors_this_year] = obj.display_visitors_this_year
|
site.visitor_counters[:this_week] = display_visitors_this_week
|
||||||
|
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.dashboard_counter.to_s}"
|
OrbitLogger.info "DashboardCounter done #{site.visitor_counters.to_s}"
|
||||||
end
|
|
||||||
|
|
||||||
|
#Notice this is mainly used at user dashbroad. however the code there is currentlly using realtime evaluation.
|
||||||
def display_visitors(options={})
|
#and the site model will need a field call dashboard_counter to complete this job.
|
||||||
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,7 +1,51 @@
|
|||||||
class DelayedImpressionist
|
class DelayedImpressionist
|
||||||
@queue = :low
|
def self.before_filter(*args)
|
||||||
def self.perform(object)
|
return
|
||||||
impressionist(object)
|
end
|
||||||
true
|
|
||||||
end
|
include ImpressionistController::InstanceMethods
|
||||||
|
@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
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
class EmailCron
|
||||||
|
@queue = :mail
|
||||||
|
|
||||||
|
def self.perform
|
||||||
|
|
||||||
|
@datas = MailCron.where(:mail_sentdate.lte => Time.now)
|
||||||
|
|
||||||
|
@datas.each do |mail_data|
|
||||||
|
|
||||||
|
@mail_j = 0
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
@mails = mail_data.mail_to.split(",")
|
||||||
|
|
||||||
|
@mails.each do |send_mail|
|
||||||
|
|
||||||
|
@read_mails << send_mail
|
||||||
|
|
||||||
|
@mail_j += 1
|
||||||
|
|
||||||
|
if 0 == @mail_j % 30
|
||||||
|
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if !@read_mails.join(',').blank?
|
||||||
|
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class GetAnnouncementFromRss
|
||||||
|
@queue = :high
|
||||||
|
|
||||||
|
def self.perform()
|
||||||
|
%x(ruby "#{Rails.root}/lib/rss_ntu_job.rb")
|
||||||
|
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.impressionist_count(:created_at.gte => 14.days.ago, :created_at.lte => Time.now))
|
tag.update_attribute(:cloud_view_count, tag.get_impressionist)
|
||||||
end
|
end
|
||||||
OrbitLogger.info "UpdateTagCloud Done"
|
OrbitLogger.info "UpdateTagCloud Done"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
class MailCronMailer < ActionMailer::Base
|
||||||
|
default :from => "orbit_test@rulingcom.com"
|
||||||
|
|
||||||
|
def get_settings
|
||||||
|
|
||||||
|
@site = Site.first
|
||||||
|
|
||||||
|
@smtp_settings = {
|
||||||
|
:address => @site['site_settings']['address'],
|
||||||
|
:port => @site['site_settings']['port'],
|
||||||
|
:domain => @site['site_settings']['domain'],
|
||||||
|
:authentication => @site['site_settings']['authentication'],
|
||||||
|
# :user_name => @site['site_settings']['user_name'],
|
||||||
|
# :password => @site['site_settings']['password'],
|
||||||
|
:tls => (@site['site_settings']['tls'] == '0' ? false : true ) ,
|
||||||
|
:enable_starttls_auto => (@site['site_settings']['enable_starttls_auto'] == '0' ? false : true )
|
||||||
|
}
|
||||||
|
|
||||||
|
if !@site['site_settings']['user_name'].blank?
|
||||||
|
@smtp_settings[:user_name] = @site['site_settings']['user_name']
|
||||||
|
end
|
||||||
|
|
||||||
|
if !@site['site_settings']['password'].blank?
|
||||||
|
@smtp_settings[:password] = @site['site_settings']['password']
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
ActionMailer::Base.smtp_settings = @smtp_settings
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def cron_mail( data_id, group_mail )
|
||||||
|
|
||||||
|
get_settings
|
||||||
|
|
||||||
|
@data = MailCron.find(data_id)
|
||||||
|
|
||||||
|
if @data
|
||||||
|
|
||||||
|
@user = User.find(@data.create_user_id)
|
||||||
|
|
||||||
|
if !@data.mail_cron_files.blank?
|
||||||
|
@data.mail_cron_files.each_with_index do |mail_cron_file, i|
|
||||||
|
file_type = File.extname(mail_cron_file.file.to_s)
|
||||||
|
file_content = Mongo::GridFileSystem.new(Mongoid.database).open(mail_cron_file.file.url.gsub("/gridfs/", "").force_encoding("UTF-8"), 'r')
|
||||||
|
attachments["#{mail_cron_file.title}#{file_type}"] = file_content.read
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if !@data.mail_content["text"].blank?
|
||||||
|
mail( :from => @data.mail_from, :reply_to => @data.mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
|
||||||
|
format.html { render :text => @data.mail_content["text"] }
|
||||||
|
end
|
||||||
|
elsif !@data.mail_content["template"].blank?
|
||||||
|
mail( :from => @data.mail_from, :reply_to => @data.mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
|
||||||
|
format.html { render :template => @data.mail_content["template"], :collection => @data.mail_content }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@mail_cron_log = {
|
||||||
|
:mail_subject => @data.mail_subject,
|
||||||
|
:mail_to => group_mail,
|
||||||
|
:mail_user => @user.name,
|
||||||
|
:mailer_count => group_mail.split(",").size,
|
||||||
|
:mail_from_app => @data.mail_from_app
|
||||||
|
}
|
||||||
|
|
||||||
|
@mail_cron_log = MailCronLog.new(@mail_cron_log)
|
||||||
|
|
||||||
|
|
||||||
|
@mail_cron_log.save
|
||||||
|
|
||||||
|
@data.destroy
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
class MailCron
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
|
||||||
|
field :mail_from_app
|
||||||
|
field :mail_from
|
||||||
|
field :mail_to
|
||||||
|
field :mail_reply_to
|
||||||
|
field :mail_subject
|
||||||
|
field :mail_content, :type => Hash
|
||||||
|
field :mail_sentdate , :type => DateTime
|
||||||
|
|
||||||
|
field :create_user_id
|
||||||
|
field :update_user_id
|
||||||
|
|
||||||
|
has_many :mail_cron_files, :autosave => true, :dependent => :destroy
|
||||||
|
|
||||||
|
accepts_nested_attributes_for :mail_cron_files, :allow_destroy => true
|
||||||
|
|
||||||
|
after_save :save_mail_cron_files
|
||||||
|
|
||||||
|
|
||||||
|
def save_mail_cron_files
|
||||||
|
self.mail_cron_files.each do |t|
|
||||||
|
if t.should_destroy
|
||||||
|
t.destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.send_mail_now(mail_cron_id)
|
||||||
|
|
||||||
|
mail_data = MailCron.find(mail_cron_id)
|
||||||
|
|
||||||
|
if !mail_data.blank?
|
||||||
|
|
||||||
|
@mail_j = 0
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
@mails = mail_data.mail_to.split(",")
|
||||||
|
|
||||||
|
@mails.each do |send_mail|
|
||||||
|
|
||||||
|
@read_mails << send_mail
|
||||||
|
|
||||||
|
@mail_j += 1
|
||||||
|
|
||||||
|
if 0 == @mail_j % 30
|
||||||
|
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if !@read_mails.join(',').blank?
|
||||||
|
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||||
|
@read_mails = Array.new
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
class MailCronFile
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
mount_uploader :file, AssetUploader
|
||||||
|
|
||||||
|
field :should_destroy, :type => Boolean
|
||||||
|
field :title
|
||||||
|
|
||||||
|
belongs_to :mail_cron
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
class MailCronLog
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
|
||||||
|
field :mail_subject
|
||||||
|
field :mail_to
|
||||||
|
field :mail_user
|
||||||
|
field :mailer_count
|
||||||
|
field :mail_from_app
|
||||||
|
|
||||||
|
|
||||||
|
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.get_impressionist(tag)})
|
temp_tags.merge!({tag => tag.cloud_view_count})
|
||||||
}
|
}
|
||||||
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
|
||||||
|
|||||||
+3
-1
@@ -18,6 +18,7 @@ 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=>{}
|
||||||
@@ -28,10 +29,11 @@ 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
|
||||||
|
|
||||||
|
|||||||
+1
-25
@@ -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,30 +17,6 @@ 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)
|
||||||
|
|||||||
+5
-10
@@ -3,7 +3,7 @@ class User
|
|||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
|
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable #, :timeoutable
|
||||||
|
|
||||||
mount_uploader :avatar, AvatarUploader
|
mount_uploader :avatar, AvatarUploader
|
||||||
|
|
||||||
@@ -42,7 +42,6 @@ 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")
|
||||||
|
|
||||||
@@ -89,9 +88,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.roles = self.roles.reject{|t| t.id.to_s==id}
|
self.role_ids.reject!{|t| t.to_s == id}
|
||||||
elsif(val=="false")
|
elsif(val=="false")
|
||||||
self.roles << Role.find(id)
|
self.role_ids += Array(id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -106,9 +105,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_roles = self.sub_roles.reject{|t| t.id.to_s==id}
|
self.sub_role_ids.reject!{|t| t.to_s == id}
|
||||||
elsif(val=="false")
|
elsif(val=="false")
|
||||||
self.sub_roles << SubRole.find(id)
|
self.sub_role_ids += Array(id)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -273,10 +272,6 @@ 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 = {}
|
||||||
|
|||||||
@@ -8,6 +8,5 @@
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div class="form-actions form-fixed pagination-right">
|
<div class="form-actions form-fixed pagination-right">
|
||||||
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:add), new_admin_design_path, :class => 'btn btn-primary pull-right' %>
|
|
||||||
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:upload), upload_package_admin_designs_path, :class => 'btn btn-primary pull-right' %>
|
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:upload), upload_package_admin_designs_path, :class => 'btn btn-primary pull-right' %>
|
||||||
</div>
|
</div>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="filter-clear">
|
||||||
|
<%= link_to content_tag(:i, nil, :class => 'icons-cycle') + t(:clear), admin_mail_crons_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn btn-small js_history" %>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<div id="filter" class="subnav">
|
||||||
|
<div class="filters">
|
||||||
|
<div id="sort_headers" class="table-label">
|
||||||
|
<%= render 'sort_headers' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "sort_header" %>
|
||||||
|
<% end %>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<tr id="<%= dom_id mail_cron_log %>" class="with_action">
|
||||||
|
<td class="span1">
|
||||||
|
<% if is_manager? %>
|
||||||
|
<%= check_box_tag 'to_delete[]', mail_cron_log.id, false, :class => "checkbox_in_list" %>
|
||||||
|
<% end -%>
|
||||||
|
</td>
|
||||||
|
<td class="span1-2">
|
||||||
|
<%= mail_cron_log.mail_subject %>
|
||||||
|
<div class="quick-edit">
|
||||||
|
<ul class="nav nav-pills hide">
|
||||||
|
<%if at_least_module_manager %>
|
||||||
|
<li><%= link_to t(:delete_), admin_mail_cron_log_path(mail_cron_log), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||||
|
<% end -%>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td class="span2">
|
||||||
|
<%= mail_cron_log.mail_to.gsub(/,/, "<br />").html_safe %>
|
||||||
|
</td>
|
||||||
|
<td class="span2">
|
||||||
|
<%= mail_cron_log.mail_user %>
|
||||||
|
</td>
|
||||||
|
<td class="span2">
|
||||||
|
<%= mail_cron_log.mail_from_app %>
|
||||||
|
</td>
|
||||||
|
<td class="span2">
|
||||||
|
<%= display_date_time(mail_cron_log.created_at) %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<%= render_sort_bar(true, delete_admin_mail_cron_logs_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
|
||||||
|
['subject', 'mail_subject','span2', :subject] ,
|
||||||
|
['mail_to', 'mail_to','span2', :mail_to] ,
|
||||||
|
['mail_user', 'mail_user','span2', :mail_user] ,
|
||||||
|
['mail_from_app', 'mail_from_app','span2', :mail_from_app] ,
|
||||||
|
['sentdate', 'created_at','span2', :sentdate] ).html_safe %>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
$("#<%= dom_id @mail_cron_log %>").remove();
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<% content_for :side_bar do %>
|
||||||
|
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<%= render 'filter' %>
|
||||||
|
<table class="table main-list">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="span1"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="tbody_mail_cron_logs" class="sort-holder">
|
||||||
|
<%= render :partial => "mail_cron_log",:collection=> @mail_cron_logs%>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-actions form-fixed pagination-right">
|
||||||
|
<div id="web_link_pagination" class="paginationFixed">
|
||||||
|
<%= paginate @mail_cron_logs, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
$("#delete_all").attr("action", "<%= delete_admin_mail_cron_logs_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>");
|
||||||
|
$("#sort_headers").html("<%= j render 'sort_headers' %>");
|
||||||
|
$("#tbody_mail_cron_logs").html("<%= j render :partial => 'mail_cron_log', :collection => @mail_cron_logs %>");
|
||||||
|
$("#mail_cron_log_pagination").html("<%= j paginate @mail_cron_logs, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="filter-clear">
|
||||||
|
<%= link_to content_tag(:i, nil, :class => 'icons-cycle') + t(:clear), admin_mail_crons_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn btn-small js_history" %>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<div id="filter" class="subnav">
|
||||||
|
<div class="filters">
|
||||||
|
<div id="sort_headers" class="table-label">
|
||||||
|
<%= render 'sort_headers' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "sort_header" %>
|
||||||
|
<% end %>
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
<div id= "poststuff">
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
|
||||||
|
<%= f.error_messages %>
|
||||||
|
|
||||||
|
<!--Widget start-->
|
||||||
|
|
||||||
|
<div id="sub-wiget">
|
||||||
|
|
||||||
|
<div id="widget-date" class="widget-box widget-size-300">
|
||||||
|
<h3 class="widget-title"><i class="icons-calendar"></i><%= t(:date_) %></h3>
|
||||||
|
<div class="widget-content clear">
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.datetime_picker :mail_sentdate, :picker_type => 'separated', :label => t(:start) %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!--Wiget End-->
|
||||||
|
<!--Post Start-->
|
||||||
|
|
||||||
|
<div id="post-body">
|
||||||
|
<div id="post-body-content" class="clear">
|
||||||
|
|
||||||
|
<%= f.label :mail_subject ,t(:mail_subject)%>
|
||||||
|
<%= f.text_field :mail_subject %>
|
||||||
|
|
||||||
|
<%= f.label :mail_from ,t(:mail_from)%>
|
||||||
|
<%= f.text_field :mail_from %>
|
||||||
|
|
||||||
|
<%= f.label :mail_reply_to ,t(:mail_reply_to)%>
|
||||||
|
<%= f.text_field :mail_reply_to %>
|
||||||
|
|
||||||
|
<%= f.label :mail_to ,t(:mail_to)%>
|
||||||
|
<%= f.text_field :mail_to %>
|
||||||
|
|
||||||
|
<%= f.label :mail_content ,t(:mail_content)%>
|
||||||
|
<%= f.text_area :mail_content, :class=>"span12", :cols=>"25", :rows=>"10" %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<div id='plugin_files' class="plugin_files_block">
|
||||||
|
|
||||||
|
<table class="table table-condensed">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>File</th>
|
||||||
|
<th>File Name</th>
|
||||||
|
<th class="span1"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:center" colspan="3">
|
||||||
|
<div id='add_plugin_file' class="info_input plugin_files_block">
|
||||||
|
<%= hidden_field_tag 'plugin_file_field_count', @mail_cron.mail_cron_files.count %>
|
||||||
|
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> ADD/新增</span></a>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tfoot>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<% @mail_cron.mail_cron_files.each_with_index do |mail_cron_file, i| %>
|
||||||
|
<%= f.fields_for :mail_cron_files, mail_cron_file do |f| %>
|
||||||
|
<%= render :partial => 'form_file', :object => mail_cron_file, :locals => {:f => f, :i => i} %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!--Post End-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-actions">
|
||||||
|
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
|
||||||
|
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "archive_plugin_form" %>
|
||||||
|
<script>
|
||||||
|
$('#add_plugin_file a.add').live('click', function(){
|
||||||
|
var new_id = $(this).prev().attr('value');
|
||||||
|
var old_id = new RegExp("new_add_plugin_files", "g");
|
||||||
|
$(this).prev().attr('value', parseInt(new_id) + 1);
|
||||||
|
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_file', f, :mail_cron_files) %>").replace(old_id, new_id));
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.add_plugin_files_block a.delete').live('click', function(){
|
||||||
|
$(this).parents('.list_item').remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.action a.remove_existing_record').live('click', function(){
|
||||||
|
$(this).next('.should_destroy').attr('value', 1);
|
||||||
|
$("tr#add_plugin_file_" + $(this).prev().attr('value')).hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<% # encoding: utf-8 %>
|
||||||
|
|
||||||
|
<tr id="<%= "plugin_file_#{form_file.id}" if !form_file.new_record? %>" class='list_item'>
|
||||||
|
<td>
|
||||||
|
<div class="control-group">
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.file_field :file %>
|
||||||
|
<%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
<div class="tab-content">
|
||||||
|
|
||||||
|
<%= f.text_field :title %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<span class="action">
|
||||||
|
<% if form_file.new_record? %>
|
||||||
|
<a class="delete"><i class="icon-remove"></i></a>
|
||||||
|
<% else %>
|
||||||
|
<%= f.hidden_field :id %>
|
||||||
|
<a class="remove_existing_record"><i class="icon-remove"></i></a>
|
||||||
|
<%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<tr id="<%= dom_id mail_cron %>" class="with_action">
|
||||||
|
<td class="span1">
|
||||||
|
<% if is_manager? %>
|
||||||
|
<%= check_box_tag 'to_delete[]', mail_cron.id, false, :class => "checkbox_in_list" %>
|
||||||
|
<% end -%>
|
||||||
|
</td>
|
||||||
|
<td class="span1-2">
|
||||||
|
<%= mail_cron.mail_subject %>
|
||||||
|
<div class="quick-edit">
|
||||||
|
<ul class="nav nav-pills hide">
|
||||||
|
<%if at_least_module_manager %>
|
||||||
|
<li><%= link_to t(:delete_), admin_mail_cron_path(mail_cron), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||||
|
<% end -%>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td class="span2">
|
||||||
|
<%= mail_cron.mail_to.gsub(/,/, "<br />").html_safe %>
|
||||||
|
</td>
|
||||||
|
<td class="span2">
|
||||||
|
<%= mail_cron.mail_from_app %>
|
||||||
|
</td>
|
||||||
|
<td class="span2">
|
||||||
|
<%= display_date_time(mail_cron.mail_sentdate) %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<%= render_sort_bar(true, delete_admin_mail_crons_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
|
||||||
|
['subject', 'mail_subject','span2', :mail_subject] ,
|
||||||
|
['mail_to', 'mail_to','span2', :mail_to] ,
|
||||||
|
['mail_from_app', 'mail_from_app','span2', :mail_from_app] ,
|
||||||
|
['sentdate', 'mail_sentdate','span2', :mail_sentdate] ).html_safe %>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
$("#<%= dom_id @mail_cron %>").remove();
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<% content_for :side_bar do %>
|
||||||
|
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<h1><%= t('mail_cron.editing_mail_cron') %></h1>
|
||||||
|
|
||||||
|
<%= form_for @mail_cron, :url => admin_mail_cron_path(@mail_cron), :html => {:class => 'clear'} do |f| %>
|
||||||
|
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||||
|
<% end %>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<% content_for :side_bar do %>
|
||||||
|
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<%= render 'filter' %>
|
||||||
|
<table class="table main-list">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="span1"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
<th class="span2"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="tbody_mail_crons" class="sort-holder">
|
||||||
|
<%= render :partial => "mail_cron",:collection=> @mail_crons%>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-actions form-fixed pagination-right">
|
||||||
|
<div id="web_link_pagination" class="paginationFixed">
|
||||||
|
<%= paginate @mail_crons, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
$("#delete_all").attr("action", "<%= delete_admin_mail_crons_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>");
|
||||||
|
$("#sort_headers").html("<%= j render 'sort_headers' %>");
|
||||||
|
$("#tbody_mail_crons").html("<%= j render :partial => 'mail_cron', :collection => @mail_crons %>");
|
||||||
|
$("#mail_cron_pagination").html("<%= j paginate @mail_crons, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
<% content_for :side_bar do %>
|
||||||
|
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div id="poststuff">
|
||||||
|
<h1><%= t('mail_cron.new_mail_cron') %></h1>
|
||||||
|
<%= form_for @mail_cron, :url => admin_mail_crons_path, :html => {:class => 'clear'} do |f| %>
|
||||||
|
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -17,4 +17,4 @@
|
|||||||
<%= render :partial=> "widget_ext_options" %>
|
<%= render :partial=> "widget_ext_options" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -9,6 +9,8 @@
|
|||||||
<%#= content_tag :li, link_to(t(:theme), admin_site_ui_theme_path(@site)), :class => active_for_action('sites', 'ui_theme') %>
|
<%#= content_tag :li, link_to(t(:theme), admin_site_ui_theme_path(@site)), :class => active_for_action('sites', 'ui_theme') %>
|
||||||
<%= content_tag :li, link_to(t('sitemap'), admin_site_sitemap_path(@site)), :class => active_for_action('sites', 'sitemap') %>
|
<%= content_tag :li, link_to(t('sitemap'), admin_site_sitemap_path(@site)), :class => active_for_action('sites', 'sitemap') %>
|
||||||
<%= content_tag :li, link_to(t('user_actions'), admin_user_actions_path), :class => active_for_action('user_actions', 'index') %>
|
<%= content_tag :li, link_to(t('user_actions'), admin_user_actions_path), :class => active_for_action('user_actions', 'index') %>
|
||||||
|
<%= content_tag :li, link_to(t('mail.mail_cron'), admin_mail_crons_path), :class => active_for_action('mail_cron', 'index') %>
|
||||||
|
<%= content_tag :li, link_to(t('mail.mail_cron_log'), admin_mail_cron_logs_path), :class => active_for_action('mail_cron_log', 'index') %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|||||||
@@ -1,19 +1,22 @@
|
|||||||
<%= 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(: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?%>
|
<%= content_tag(:th, content_tag(:span, get_field_header(field), class: @frontend_classes[index])) unless field.blank? %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
</thead>
|
||||||
|
<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>
|
||||||
<% end %>
|
</div>
|
||||||
|
<% 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) do %>
|
<%= content_tag(:li, class: get_top_hot_class(row_data)) 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}),: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, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), 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) do %>
|
<%= content_tag(:li, class: get_top_hot_class(row_data)) 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}),: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, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index]) unless field.blank? %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -3,9 +3,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>總機電話:<a href="tel:+886229393091">02-29393091</a></li>
|
<li>總務處電話:<a href="tel:+886229393091">02-29393091</a></li>
|
||||||
<li>傳真:02-29379611</li>
|
<li>總務處傳真:02-29379611</li>
|
||||||
<li>緊急重大事件通聯窗口:校內分機 66119、66110</li>
|
<li>總務處單一窗口 李梅森專員:<a href="tel:+886233662233">02-33662233</a></li>
|
||||||
<li>總值日室:<a href="tel:+88229387132">02-29387132</a></li>
|
|
||||||
<li>駐警衛室:<a href="tel:+88229387129">02-29387129</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
@@ -5,6 +5,6 @@
|
|||||||
<div id='map_canvas'></div>
|
<div id='map_canvas'></div>
|
||||||
|
|
||||||
<script type='text/javascript'>
|
<script type='text/javascript'>
|
||||||
var $map_center = "24.987449, 121.576117"
|
var $map_center = "25.015205, 121.535491"
|
||||||
var $map_zoom = 17
|
var $map_zoom = 17
|
||||||
</script>
|
</script>
|
||||||
@@ -3,6 +3,7 @@ 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
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ require 'resque_scheduler/server'
|
|||||||
# require 'yaml'
|
# require 'yaml'
|
||||||
|
|
||||||
Resque.redis = 'localhost:6379'
|
Resque.redis = 'localhost:6379'
|
||||||
Resque.redis.namespace = "resque"
|
Resque.redis.namespace = Site.first.resque_namespace rescue APP_CONFIG['orbit']
|
||||||
|
|
||||||
# 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
|
||||||
|
|||||||
@@ -272,6 +272,8 @@ en:
|
|||||||
setting: Mail settings
|
setting: Mail settings
|
||||||
tls: TLS
|
tls: TLS
|
||||||
user_name: User Name
|
user_name: User Name
|
||||||
|
mail_cron: Scheduled Email
|
||||||
|
mail_cron_log: Email Log
|
||||||
manager: Manager
|
manager: Manager
|
||||||
markup: Markup
|
markup: Markup
|
||||||
markup_options: Markup options
|
markup_options: Markup options
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ en:
|
|||||||
home: Home
|
home: Home
|
||||||
language: Language
|
language: Language
|
||||||
location: Location
|
location: Location
|
||||||
location_description: '<h3>This University</h3>No.101,Sec. 2, Jiafeng S Road, Zhubei City, Hsinchu County 302, Taiwan'
|
location_description: '<h3>OFFICE OF GENERAL AFFAIRS, NTU</h3>No. 1, Sec. 4, Roosevelt Road, Taipei, 10617 Taiwan (R.O.C)'
|
||||||
page: Page
|
page: Page
|
||||||
@@ -9,5 +9,5 @@ zh_tw:
|
|||||||
home: 首頁
|
home: 首頁
|
||||||
language: 語言
|
language: 語言
|
||||||
location: 地理位置
|
location: 地理位置
|
||||||
location_description: '<h3>本大學</h3>302新竹縣竹北市嘉豐南路二段101號'
|
location_description: '<h3>臺灣大學總務處 版權所有</h3>10617 臺北市大安區羅斯福路四段一號'
|
||||||
page: 頁面
|
page: 頁面
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
en:
|
||||||
|
|
||||||
|
ntu:
|
||||||
|
rss_origin: Back to NTU Announcements
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
zh_tw:
|
||||||
|
|
||||||
|
ntu:
|
||||||
|
rss_origin: 回臺大校園公佈欄
|
||||||
@@ -272,6 +272,8 @@ zh_tw:
|
|||||||
setting: 電子郵件設定
|
setting: 電子郵件設定
|
||||||
tls: 電子郵件TLS
|
tls: 電子郵件TLS
|
||||||
user_name: 電子郵件帳號
|
user_name: 電子郵件帳號
|
||||||
|
mail_cron: 待寄Email
|
||||||
|
mail_cron_log: Email發送記錄
|
||||||
manager: 管理者
|
manager: 管理者
|
||||||
markup: 輸入模式
|
markup: 輸入模式
|
||||||
markup_options: 標註選項
|
markup_options: 標註選項
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ defaults: &defaults
|
|||||||
|
|
||||||
development:
|
development:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
database: demo_site_development
|
database: test_site
|
||||||
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: demo_site_production
|
database: test_site
|
||||||
@@ -1,5 +1,17 @@
|
|||||||
|
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 30 2 * * *
|
||||||
class: UpdateTagCloud
|
class: UpdateTagCloud
|
||||||
args:
|
args:
|
||||||
description: UpdateTagCloud
|
description: UpdateTagCloud
|
||||||
@@ -8,4 +20,16 @@ generate_system_summary:
|
|||||||
cron: 0 0 12 * * *
|
cron: 0 0 12 * * *
|
||||||
class: GenerateSystemSummary
|
class: GenerateSystemSummary
|
||||||
args:
|
args:
|
||||||
description: Generate the system status such as disk free space,package version list for showing at site tab
|
description: Generate the system status such as disk free space,package version list for showing at site tab
|
||||||
|
|
||||||
|
email_cron:
|
||||||
|
cron: 0 0 [10,16,22] * * *
|
||||||
|
class: EmailCron
|
||||||
|
args:
|
||||||
|
description: EmailCron
|
||||||
|
|
||||||
|
get_announcement_from_rss:
|
||||||
|
cron: 0 0 [2,12] * * *
|
||||||
|
class: GetAnnouncementFromRss
|
||||||
|
args:
|
||||||
|
description: Loop through the announcement RSS until 24h ago
|
||||||
@@ -29,6 +29,19 @@ Orbit::Application.routes.draw do
|
|||||||
get 'delete'
|
get 'delete'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
resources :mail_crons do
|
||||||
|
collection do
|
||||||
|
get 'delete'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
resources :mail_cron_logs do
|
||||||
|
collection do
|
||||||
|
get 'delete'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
resources :asset_categories
|
resources :asset_categories
|
||||||
resources :asset_tags
|
resources :asset_tags
|
||||||
resources :app_auths
|
resources :app_auths
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
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,15 +6,14 @@ 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()
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
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,12 +102,17 @@ 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
|
||||||
@@ -122,7 +127,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} rescue nil
|
{"query"=>@query,"image"=>@image,"more_link"=>@more_link,"enabled_styles"=>@enabled_styles,:sorting_query=>@sorting_query} rescue nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def link_field(field_name,setting)
|
def link_field(field_name,setting)
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ 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
|
||||||
@@ -58,9 +59,6 @@ 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,4 +310,88 @@ 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 :save_users => :environment do
|
||||||
|
User.where(:email.not => /guest/).each{|s|s.save}
|
||||||
|
end
|
||||||
|
|
||||||
|
task :fix_bulletin_rss_available_lang => :environment do
|
||||||
|
Bulletin.all.each do |bull|
|
||||||
|
if bull.create_user_id.nil?
|
||||||
|
bull.update_attribute(:available_for_zh_tw, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
task :fix_imported_rss => :environment do
|
||||||
|
categories = BulletinCategory.where(key: /rss_/).entries
|
||||||
|
unless categories.blank?
|
||||||
|
categories.each do |category|
|
||||||
|
bulletins = category.bulletins
|
||||||
|
unless bulletins.blank?
|
||||||
|
bulletins.each do |bulletin|
|
||||||
|
bulletin.update_attribute(:is_top, false) unless bulletin.is_top?
|
||||||
|
bulletin.update_attribute(:is_hot, false) unless bulletin.is_hot?
|
||||||
|
bulletin.update_attribute(:is_hidden, false) unless bulletin.is_hidden?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
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
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
namespace :mongo_files do
|
||||||
|
|
||||||
|
MODELS = { 'ad_image' => 'file',
|
||||||
|
'archive_file_multiple' => 'file',
|
||||||
|
'asset' => 'data',
|
||||||
|
'bulletin' => 'image',
|
||||||
|
'bulletin_file' => 'file',
|
||||||
|
'design' => 'zip_file',
|
||||||
|
'design_file' => 'file',
|
||||||
|
'gallery_image' => 'file',
|
||||||
|
'image' => 'file',
|
||||||
|
'lab_file' => 'file',
|
||||||
|
'location_info' => 'file',
|
||||||
|
'preview_file' => 'file',
|
||||||
|
'project_file' => 'file',
|
||||||
|
'research_file' => 'file',
|
||||||
|
'site' => 'default_image',
|
||||||
|
'stylesheet' => 'file_orig',
|
||||||
|
'user' => 'avatar',
|
||||||
|
'writing_book_file' => 'file',
|
||||||
|
'writing_conference_file' => 'file',
|
||||||
|
'writing_journal_file' => 'file',
|
||||||
|
'writing_patent_file' => 'file' }
|
||||||
|
|
||||||
|
IMAGE_UPLOADER_MODELS = %w[ad_image bulletin image site]
|
||||||
|
|
||||||
|
# ad_banner
|
||||||
|
# bulletin
|
||||||
|
# design
|
||||||
|
# site
|
||||||
|
|
||||||
|
task :clean => :environment do
|
||||||
|
@files = Mongoid.database['fs.files']
|
||||||
|
@chunks = Mongoid.database['fs.chunks']
|
||||||
|
clean_duplicates
|
||||||
|
clean_unused
|
||||||
|
remove_objects
|
||||||
|
# remove_unlinked
|
||||||
|
end
|
||||||
|
|
||||||
|
# Remove unused files from db
|
||||||
|
def clean_unused
|
||||||
|
db_array = @files.find().inject([]) do |db_files, file|
|
||||||
|
db_files << file['filename']
|
||||||
|
db_files
|
||||||
|
end
|
||||||
|
|
||||||
|
p "# of files in db: #{db_array.size}"
|
||||||
|
|
||||||
|
name_array = MODELS.inject([]) do |model_files, (model, type)|
|
||||||
|
model.classify.constantize.all.each do |item|
|
||||||
|
url = item.send(type).url
|
||||||
|
thumb_url = item.send(type).thumb.url rescue nil
|
||||||
|
if url && !url.eql?('sign-in-logo.png')
|
||||||
|
url = url.gsub('/gridfs/', '')
|
||||||
|
model_files << url
|
||||||
|
end
|
||||||
|
if thumb_url && !thumb_url.eql?('sign-in-logo.png')
|
||||||
|
thumb_url = thumb_url.gsub('/gridfs/', '')
|
||||||
|
model_files << thumb_url
|
||||||
|
end
|
||||||
|
end
|
||||||
|
model_files
|
||||||
|
end
|
||||||
|
|
||||||
|
p "# of files from uploaders: #{name_array.size}"
|
||||||
|
useless_files = db_array - name_array
|
||||||
|
p "# of unmatched files: #{useless_files.size}"
|
||||||
|
|
||||||
|
useless_files.each do |file|
|
||||||
|
id = @files.find_one('filename' => file)['_id']
|
||||||
|
@files.remove('_id' => id)
|
||||||
|
@chunks.remove('files_id' => id)
|
||||||
|
end
|
||||||
|
# p files.remove('filename' => { "$in" => useless_files})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# Remove duplicate files from db
|
||||||
|
def clean_duplicates
|
||||||
|
p "# of files in db: #{@files.count}"
|
||||||
|
file_hash = @files.find().inject({}) do |db_files, file|
|
||||||
|
name = file['filename']
|
||||||
|
if db_files[name]
|
||||||
|
db_files[name] += [file['_id']]
|
||||||
|
else
|
||||||
|
db_files[name] = [file['_id']]
|
||||||
|
end
|
||||||
|
db_files
|
||||||
|
end
|
||||||
|
file_array = file_hash.inject([]) do |files, (key, value)|
|
||||||
|
files += value.drop(1) if value.size > 1
|
||||||
|
files
|
||||||
|
end
|
||||||
|
p "# of duplicate ids to delete: #{file_array.size}"
|
||||||
|
file_array.each do |id|
|
||||||
|
@files.remove('_id' => id)
|
||||||
|
@chunks.remove('files_id' => id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
task :file_size => :environment do
|
||||||
|
files = Mongoid.database['fs.files']
|
||||||
|
size_array = files.find().inject([]) do |size, file|
|
||||||
|
# size << [file['length'], file['filename']]
|
||||||
|
size << [file['filename'], file['length']]
|
||||||
|
size
|
||||||
|
end
|
||||||
|
size_array.sort.each do |pair|
|
||||||
|
p "#{pair[0]} - #{pair[1]}"
|
||||||
|
end
|
||||||
|
p size_array.size
|
||||||
|
end
|
||||||
|
|
||||||
|
def remove_objects
|
||||||
|
# Destroy writing_journals and writing_journal_files
|
||||||
|
Mongoid.database['writing_journals'].remove()
|
||||||
|
Mongoid.database['writing_journal_files'].remove()
|
||||||
|
|
||||||
|
# Destroy bulletins, bulletin_files and bulletin_links
|
||||||
|
Bulletin.excludes(create_user_id: nil).destroy
|
||||||
|
BulletinFile.destroy_all
|
||||||
|
BulletinLink.destroy_all
|
||||||
|
|
||||||
|
# Destroy gallery_albums and gallery_images
|
||||||
|
Mongoid.database['gallery_albums'].remove()
|
||||||
|
Mongoid.database['gallery_images'].remove()
|
||||||
|
|
||||||
|
db_array = @files.find().inject([]) do |db_files, file|
|
||||||
|
db_files << file['filename'] if file['filename'] =~ /writing_journal_file|news_bulletin_file|bulletin_file|gallery_image|image\/image/
|
||||||
|
db_files
|
||||||
|
end
|
||||||
|
p db_array.size
|
||||||
|
db_array.each do |file|
|
||||||
|
id = @files.find_one('filename' => file)['_id']
|
||||||
|
@files.remove('_id' => id)
|
||||||
|
@chunks.remove('files_id' => id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def remove_unlinked
|
||||||
|
# name_array = AdBanner.all.inject([]) do |files, banner|
|
||||||
|
# banner.ad_images.inject(files) do |image_files, image|
|
||||||
|
# url = image.file.url
|
||||||
|
# thumb_url = image.file.thumb.url rescue nil
|
||||||
|
# if url && !url.eql?('sign-in-logo.png')
|
||||||
|
# url = url.gsub('/gridfs/', '')
|
||||||
|
# image_files << url
|
||||||
|
# end
|
||||||
|
# if thumb_url && !thumb_url.eql?('sign-in-logo.png')
|
||||||
|
# thumb_url = thumb_url.gsub('/gridfs/', '')
|
||||||
|
# image_files << thumb_url
|
||||||
|
# end
|
||||||
|
# image_files
|
||||||
|
# end
|
||||||
|
# files
|
||||||
|
# end
|
||||||
|
name_array = Design.all.inject([]) do |files, design|
|
||||||
|
files += design.images.inject(files) do |image_files, image|
|
||||||
|
p image_files += get_url_and_thumb(image.file)
|
||||||
|
image_files
|
||||||
|
end
|
||||||
|
files
|
||||||
|
end
|
||||||
|
p name_array.size
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_url_and_thumb(file)
|
||||||
|
url = file.url
|
||||||
|
thumb_url = file.thumb.url rescue nil
|
||||||
|
files = [url, thumb_url].inject([]) do |urls, current|
|
||||||
|
urls << current.gsub('/gridfs/', '') if current && !current.eql?('sign-in-logo.png')
|
||||||
|
urls
|
||||||
|
end
|
||||||
|
files
|
||||||
|
end
|
||||||
|
|
||||||
|
task :delete_rss_ann => :environment do
|
||||||
|
Bulletin.where(create_user_id: nil).destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
+82
-4
@@ -1,4 +1,5 @@
|
|||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
require 'erb'
|
||||||
|
|
||||||
namespace :site do
|
namespace :site do
|
||||||
|
|
||||||
@@ -9,21 +10,26 @@ namespace :site do
|
|||||||
Site.create( :school => 'RulingDigital University', :department => 'Computer Science', :valid_locales => [ 'en', 'zh_tw' ], :in_use_locales => [ 'zh_tw', 'en' ])
|
Site.create( :school => 'RulingDigital University', :department => 'Computer Science', :valid_locales => [ 'en', 'zh_tw' ], :in_use_locales => [ 'zh_tw', 'en' ])
|
||||||
User.create!(:email=>'chris@rulingcom.com',:admin=>true,:user_id=>'chris',:password=>'password')
|
User.create!(:email=>'chris@rulingcom.com',:admin=>true,:user_id=>'chris',:password=>'password')
|
||||||
`mongo #{Mongoid.config.database.name} --eval "db.fs.chunks.ensureIndex({files_id: 1, n: 1})"`
|
`mongo #{Mongoid.config.database.name} --eval "db.fs.chunks.ensureIndex({files_id: 1, n: 1})"`
|
||||||
|
|
||||||
puts "Congres you can now login within url"
|
puts "Congres you can now login within url"
|
||||||
puts 'Please upload design package (/admin/designs/upload_package ) and run rake site:necessary_data'
|
puts 'Please upload design package (/admin/designs/upload_package ) and run rake site:necessary_data'
|
||||||
I18nVariable.create!( :document_class => 'language', :key => 'en', :en => 'English', :zh_tw => '英文' )
|
I18nVariable.create!( :document_class => 'language', :key => 'en', :en => 'English', :zh_tw => '英文' )
|
||||||
I18nVariable.create!( :document_class => 'language', :key => 'zh_tw', :en => 'Chinese', :zh_tw => '中文' )
|
I18nVariable.create!( :document_class => 'language', :key => 'zh_tw', :en => 'Chinese', :zh_tw => '中文' )
|
||||||
Info.create!(key: "profile", built_in: true, disabled: false, title: {"zh_tw"=>"基本欄位", "en"=>"Basic Info"}, to_search: false)
|
Info.create!(key: "profile", built_in: true, disabled: false, title: {"zh_tw"=>"基本欄位", "en"=>"Basic Info"}, to_search: false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
task :create_logrotate => :environment do #Can remove after all products update
|
||||||
|
create_rulingcom_logrotate
|
||||||
|
end
|
||||||
|
|
||||||
task :necessary_data => :environment do
|
task :necessary_data => :environment do
|
||||||
|
auto_setting
|
||||||
site = Site.first
|
site = Site.first
|
||||||
site.title = 'RulingOrbit Demo Site'
|
site.update_attribute(:title,'RulingOrbit Demo Site')
|
||||||
site.save
|
site.update_attribute(:resque_namespace,@resque_namespace)
|
||||||
|
|
||||||
# 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
|
||||||
@@ -31,6 +37,78 @@ 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
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# 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
|
||||||
+10
-10
@@ -9,17 +9,17 @@ namespace :web_link_url do
|
|||||||
|
|
||||||
@weblinks.each do |wl|
|
@weblinks.each do |wl|
|
||||||
|
|
||||||
if wl.url.nil?
|
if wl.url_translations.is_a?(String)
|
||||||
|
|
||||||
|
@wlurl = wl.url_translations
|
||||||
|
|
||||||
|
wl.url_translations = {}
|
||||||
|
|
||||||
|
wl.url_translations["zh_tw"] = @wlurl
|
||||||
|
|
||||||
|
wl.url_translations["en"] = @wlurl
|
||||||
|
|
||||||
@wlurl = wl.url_translations
|
wl.save
|
||||||
|
|
||||||
wl.url_translations = {}
|
|
||||||
|
|
||||||
wl.url_translations["zh_tw"] = @wlurl
|
|
||||||
|
|
||||||
wl.url_translations["en"] = @wlurl
|
|
||||||
|
|
||||||
wl.save
|
|
||||||
|
|
||||||
else
|
else
|
||||||
puts 'no data'
|
puts 'no data'
|
||||||
|
|||||||
@@ -4,33 +4,32 @@ user_home = ENV['HOME'] || File.dirname(__FILE__) + '/../..'
|
|||||||
development_uid = ''
|
development_uid = ''
|
||||||
development_gid = ''
|
development_gid = ''
|
||||||
|
|
||||||
num_workers = rails_env == 'production' ? 5 : 2
|
num_workers = rails_env == 'production' ? <%= @resque_workers %> : 1
|
||||||
|
|
||||||
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 = "worker-#{num}"
|
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>resque-worker-#{num}"
|
||||||
w.group = 'resque'
|
w.group = 'rulingcom'
|
||||||
|
|
||||||
w.interval = 30.seconds
|
w.interval = 30.seconds
|
||||||
|
|
||||||
queue = case num
|
queue = case num
|
||||||
when 0
|
when 0..2
|
||||||
'critical'
|
|
||||||
when 1..2
|
|
||||||
'high,low'
|
'high,low'
|
||||||
when 3..num_workers
|
when 3..num_workers
|
||||||
'low'
|
'low'
|
||||||
end
|
end
|
||||||
|
|
||||||
w.env = {"QUEUE"=>queue, "RAILS_ENV"=>rails_env}
|
w.pid_file = "#{rails_root}/tmp/#{w.name}.pid"
|
||||||
w.start = "HOME=#{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile resque:work"
|
w.env = {"RAILS_ENV"=>rails_env,"PIDFILE" => w.pid_file ,"HOME"=>user_home, "QUEUE"=>queue, "RAILS_ENV"=>rails_env }
|
||||||
|
w.start = "rake -f #{rails_root}/Rakefile resque:work"
|
||||||
|
w.stop = "sudo kill -KILL $(cat #{w.pid_file})"
|
||||||
w.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_resque-#{w.name}.log"
|
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
|
# restart if memory gets too high
|
||||||
w.transition(:up, :restart) do |on|
|
w.transition(:up, :restart) do |on|
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
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
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/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
|
||||||
@@ -6,16 +6,19 @@ development_gid = ''
|
|||||||
|
|
||||||
God.watch do |w|
|
God.watch do |w|
|
||||||
w.dir = rails_root
|
w.dir = rails_root
|
||||||
w.name = "scheduler"
|
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>sunspot-solr"
|
||||||
w.group = 'resque'
|
w.group = 'rulingcom'
|
||||||
|
w.pid_file = "#{rails_root}/solr/pids/production/sunspot-solr-production.pid"
|
||||||
w.interval = 30.seconds
|
w.interval = 30.seconds
|
||||||
w.env = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
|
w.env = {"RAILS_ENV"=>rails_env,"HOME"=>user_home ,"RAILS_ENV"=>rails_env}
|
||||||
w.start = "HOME= #{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile resque:scheduler"
|
w.start = "rake -f #{rails_root}/Rakefile sunspot:solr:start"
|
||||||
|
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_resque-#{w.name}.log"
|
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
|
# restart if memory gets too high
|
||||||
w.transition(:up, :restart) do |on|
|
w.transition(:up, :restart) do |on|
|
||||||
File renamed without changes.
vendor/built_in_modules/announcement/app/assets/stylesheets/announcement/bulletins_and_web_links.css
Vendored
+78
@@ -0,0 +1,78 @@
|
|||||||
|
|
||||||
|
.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;
|
||||||
|
}
|
||||||
+6
-1
@@ -26,6 +26,7 @@ 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
|
||||||
@@ -60,7 +61,11 @@ 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
|
||||||
delayed_impressionist(@tag) if @tag
|
if params["tag_id"]
|
||||||
|
params["tag_id"].each do |tag_id|
|
||||||
|
delayed_impressionist(Tag.find tag_id) rescue nil
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
+65
-4
@@ -66,14 +66,75 @@ 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])
|
|
||||||
@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
|
@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
|
||||||
|
|
||||||
|
@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])
|
|
||||||
@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
|
@part = PagePart.find(params[:part_id]) if !params[:part_id].blank?
|
||||||
|
|
||||||
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -40,6 +40,7 @@ class Bulletin
|
|||||||
field :not_checked_reason
|
field :not_checked_reason
|
||||||
|
|
||||||
field :public, :type => Boolean, :default => true
|
field :public, :type => Boolean, :default => true
|
||||||
|
field :rss_link
|
||||||
|
|
||||||
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) }
|
||||||
|
|||||||
Vendored
+5
@@ -36,6 +36,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% unless @bulletin.rss_link.blank? %>
|
||||||
|
<div>
|
||||||
|
<%= link_to t('ntu.rss_origin'), @bulletin.rss_link %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= share_links(@bulletin, 'announcement') %>
|
<%= share_links(@bulletin, 'announcement') %>
|
||||||
+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 , :tag_id => @selected_tag.id ) %>
|
<%= 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] ) %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class='pagination'>
|
<div class='pagination'>
|
||||||
<%= 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_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_next_page @bulletins, 'Next Page', :params => {:controller => 'widget/bulletins', :action => 'reload_bulletins', :tag_id => @selected_tag.id}, :remote => true, :class => 'next' %>
|
<%= 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' %>
|
||||||
</div>
|
</div>
|
||||||
Vendored
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
<li>
|
<li>
|
||||||
<%= link_to tag.name, panel_announcement_widget_bulletins_and_web_links_path(:id => tag.id), :remote => true, :class => ('active' if tag.eql?(@selected_tag)) %>
|
<%= 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)) %>
|
||||||
</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', :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', :part_id => params[:part_id], :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', :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', :part_id => params[:part_id], :tag_id => @selected_tag.id}, :remote => true, :class => 'next' %>
|
||||||
</div>
|
</div>
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
<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
@@ -0,0 +1,3 @@
|
|||||||
|
$('#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 %>")
|
||||||
@@ -16,6 +16,7 @@ en:
|
|||||||
bulletin_category_with_title: Bulletin Category with Title
|
bulletin_category_with_title: Bulletin Category with Title
|
||||||
postdate: Post Date
|
postdate: Post Date
|
||||||
title: Title
|
title: Title
|
||||||
|
subtitle: SubTitle
|
||||||
editing_announcement: Edit Announcement
|
editing_announcement: Edit Announcement
|
||||||
editing_announcement_category: Edit Category
|
editing_announcement_category: Edit Category
|
||||||
error:
|
error:
|
||||||
@@ -34,6 +35,6 @@ 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: Bulletins and Web Resources
|
bulletins_and_web_links: Differential Nav.
|
||||||
index: Index
|
index: Index
|
||||||
search: Search
|
search: Search
|
||||||
@@ -16,6 +16,7 @@ zh_tw:
|
|||||||
bulletin_category_with_title: 公告類別及標題
|
bulletin_category_with_title: 公告類別及標題
|
||||||
postdate: 張貼日期
|
postdate: 張貼日期
|
||||||
title: 標題
|
title: 標題
|
||||||
|
subtitle: 副標題
|
||||||
editing_announcement: 編輯類別
|
editing_announcement: 編輯類別
|
||||||
editing_announcement_category: 編輯類別
|
editing_announcement_category: 編輯類別
|
||||||
error:
|
error:
|
||||||
@@ -34,6 +35,6 @@ 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: 搜尋
|
||||||
+11
-4
@@ -23,18 +23,20 @@ module Announcement
|
|||||||
end
|
end
|
||||||
|
|
||||||
category ["BulletinCategory"]
|
category ["BulletinCategory"]
|
||||||
data_count 3..10
|
data_count 1..10
|
||||||
|
|
||||||
taggable
|
taggable
|
||||||
|
|
||||||
widgets do
|
widgets do
|
||||||
default_widget do
|
default_widget do
|
||||||
query 'Bulletin.any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
|
sorting 'desc(:postdate)'
|
||||||
enable ["typeA","typeC"]
|
query 'Bulletin.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"]
|
||||||
image :image
|
image :image
|
||||||
field :postdate
|
field :postdate
|
||||||
link_field :title,{:method => 'panel_announcement_front_end_bulletin_path',:args=>:self}
|
link_field :title,{:method => 'panel_announcement_front_end_bulletin_path',:args=>:self,:preview=>true}
|
||||||
link_field :bulletin_category_with_title,{:method => 'panel_announcement_front_end_bulletins_path',:args=>{:category_id => [:bulletin_category,:id]}}
|
link_field :bulletin_category_with_title,{:method => 'panel_announcement_front_end_bulletins_path',:args=>{:category_id => [:bulletin_category,:id]}}
|
||||||
|
field :subtitle
|
||||||
link_to_more 'panel_announcement_front_end_bulletins_path',:title_i18n=> 'more_plus'
|
link_to_more 'panel_announcement_front_end_bulletins_path',:title_i18n=> 'more_plus'
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -50,6 +52,11 @@ 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
|
||||||
|
|||||||
Vendored
-28
@@ -1,28 +0,0 @@
|
|||||||
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
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
<% if @ask_question.errors.empty? %>
|
|
||||||
$('html,body').scrollTop(0);
|
|
||||||
$('#acknowledgement')
|
|
||||||
.html('<%= j simple_format(@ask_acknowledgement.content) %>')
|
|
||||||
.fadeIn(600)
|
|
||||||
.delay(3000)
|
|
||||||
.fadeOut(600);
|
|
||||||
<% else %>
|
|
||||||
alert('<%= @ask_question.errors.full_messages.join('\n') %>');
|
|
||||||
Recaptcha.reload()
|
|
||||||
<% end %>
|
|
||||||
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 292 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user