Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8bb0bba56 | ||
|
|
47b8b3e277 | ||
|
|
ecc3581106 | ||
|
|
6d4d3ccfd4 | ||
|
|
141b708392 | ||
|
|
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
+3
-1
@@ -14,7 +14,9 @@ public/uploads/**/*
|
||||
solr/data
|
||||
tmp/**/*
|
||||
uploads/**/*
|
||||
|
||||
config/*.god
|
||||
log/*.gz
|
||||
tmp/restart.txt
|
||||
*.swp
|
||||
*.pid
|
||||
*.lck
|
||||
|
||||
@@ -14,7 +14,11 @@ gem 'execjs'
|
||||
gem 'jquery-rails', '2.1.4'
|
||||
gem 'jquery-ui-rails'
|
||||
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 "memcache-client"
|
||||
@@ -35,7 +39,7 @@ gem 'resque-scheduler' # job scheduling
|
||||
gem 'resque-restriction'
|
||||
#gem 'rb-readline'
|
||||
# gem 'ruby-debug19'
|
||||
gem 'rubyzip'
|
||||
gem 'rubyzip','0.9.9'
|
||||
|
||||
gem 'sunspot_mongo'
|
||||
gem 'sunspot_solr'
|
||||
@@ -46,7 +50,7 @@ gem 'sinatra'
|
||||
gem 'sprockets'
|
||||
gem 'social-share-button'
|
||||
|
||||
gem 'tinymce-rails'
|
||||
gem 'tinymce-rails', '3.5.8.3'
|
||||
gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux")
|
||||
gem 'libv8', '~> 3.11.8' if RUBY_PLATFORM.downcase.include?("linux")
|
||||
gem 'mongoid-encryptor', :require => 'mongoid/encryptor'
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -15,6 +15,11 @@ function load_tinymce() {
|
||||
theme_advanced_statusbar_location : "bottom",
|
||||
theme_advanced_resizing : true,
|
||||
|
||||
// Domain Absolute URLs
|
||||
relative_urls : false,
|
||||
remove_script_host : false,
|
||||
document_base_url: window.location.protocol + '//' + window.location.host,
|
||||
|
||||
// Skin options
|
||||
skin : "o2k7",
|
||||
skin_variant : "silver",
|
||||
|
||||
@@ -5,3 +5,4 @@
|
||||
*= require_self
|
||||
*= 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
|
||||
|
||||
def query_for_default_widget
|
||||
|
||||
@ori_class_name = @default_widget["query"].split('.')[0]
|
||||
result = nil
|
||||
result_objects = nil
|
||||
|
||||
@ori_class_name = @default_widget["query"].split('.')[0]
|
||||
@result = eval(@default_widget["query"])
|
||||
if !params["tag_id"].blank?
|
||||
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
|
||||
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
|
||||
elsif params["category_id"].blank? #no tag no cate
|
||||
result = eval(@default_widget["query"])
|
||||
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
|
||||
result.available_for_lang(I18n.locale).can_display.desc(:is_top, :postdate)
|
||||
eval("@result.#{@default_widget[:sorting_query]}")
|
||||
end
|
||||
|
||||
def search_result
|
||||
@@ -40,9 +38,13 @@ class DefaultWidgetController< OrbitWidgetController
|
||||
|
||||
def default_widget
|
||||
@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
|
||||
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
|
||||
@tag_class = nil
|
||||
@default_widget = @page_part.module_app.get_default_widget
|
||||
@@ -91,9 +93,9 @@ class DefaultWidgetController< OrbitWidgetController
|
||||
end
|
||||
|
||||
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|
|
||||
return key if key.include?('category_id')
|
||||
return key.to_s if key.include?('category_id')
|
||||
end
|
||||
nil
|
||||
end
|
||||
|
||||
@@ -43,7 +43,7 @@ class MobileController < ApplicationController
|
||||
|
||||
def page
|
||||
@page_title = t('mobile.page')
|
||||
@page_contexts = PageContext.where(:archived => false).page(params[:page_main]).per(15)
|
||||
@page_contexts = get_sorted_page_from_structure
|
||||
end
|
||||
|
||||
def page_content
|
||||
@@ -57,4 +57,12 @@ class MobileController < ApplicationController
|
||||
@no_footer = true if request.path =~ /app/
|
||||
end
|
||||
|
||||
def get_sorted_page_from_structure
|
||||
page_contexts = Item.structure_ordered_items.inject([]){ |pages, page|
|
||||
pages << page.page_contexts.where(archived: false).limit(1)[0] if page.is_a?(Page) && !page.page_contexts.blank?
|
||||
pages
|
||||
}
|
||||
Kaminari.paginate_array(page_contexts).page(params[:page]).per(15)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -7,4 +7,10 @@ class OrbitFrontendComponentController< ApplicationController
|
||||
@app_title = request.fullpath.split('/')[2]
|
||||
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
|
||||
@@ -44,29 +44,13 @@ class PagesController < ApplicationController
|
||||
# render :file => "#{Rails.root}/public/404.html", :status => :not_found
|
||||
#end
|
||||
end
|
||||
|
||||
def convert_array_param(key,array)
|
||||
array.collect{|t| "#{key}[]=#{t}"}.join("&")
|
||||
end
|
||||
|
||||
def index_from_link
|
||||
url = "/#{@item.path}"
|
||||
options = ''
|
||||
options << "#{options.blank? ? '?' : '&'}page_main=#{params[:page_main]}" unless params[:page_main].blank?
|
||||
|
||||
if params[:category_id].is_a? Array
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id',params[:category_id])}" unless params[:category_id].blank?
|
||||
elsif params[:category_id].is_a? String
|
||||
options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
|
||||
end
|
||||
|
||||
if params[:tag_id].is_a? Array
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id',params[:tag_id])}" unless params[:tag_id].blank?
|
||||
elsif params[:category_id].is_a? String
|
||||
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
|
||||
end
|
||||
|
||||
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id', params[:category_id])}" unless params[:category_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id', params[:tag_id])}" unless params[:tag_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}name=#{params[:name]}" unless params[:name].blank?
|
||||
uri = URI::escape(url + options)
|
||||
@@ -78,8 +62,8 @@ class PagesController < ApplicationController
|
||||
url = "/#{@item.path}"
|
||||
options = ''
|
||||
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? ? '?' : '&'}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?
|
||||
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? ? '?' : '&'}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?
|
||||
@@ -98,23 +82,43 @@ class PagesController < ApplicationController
|
||||
elsif params[:same_page_id]
|
||||
@item = Item.find(params[:same_page_id])
|
||||
else
|
||||
category_ids = params[:category_id].is_a?(Array) ? params[:category_id] : [params[:category_id]]
|
||||
tag_ids = params[:tag_id].is_a?(Array) ? params[:tag_id] : [params[:tag_id]]
|
||||
category_ids = Array(params[:category_id]) unless params[:category_id].nil?
|
||||
tag_ids = Array(params[:tag_id]) unless params[:tag_id].nil?
|
||||
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?
|
||||
@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.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(specific_tags)).first
|
||||
@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?
|
||||
@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?
|
||||
@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
|
||||
@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(module_app_id: module_app.id, app_frontend_url: 'default_widget').first unless @item
|
||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).first unless @item
|
||||
@item = Item.where(default_query.merge(nil_categories).merge(nil_tags)).first unless @item
|
||||
@item = Item.where(default_query).first unless @item
|
||||
end
|
||||
raise PageError,'Missing Frontend Page' if @item.nil?
|
||||
raise PageError, 'Missing Frontend Page' if @item.nil?
|
||||
end
|
||||
|
||||
def save_from_no_lang_for_page
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module ApplicationHelper
|
||||
|
||||
include OrbitApp::Module::VisitorCounter
|
||||
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('?')
|
||||
end
|
||||
|
||||
def delayed_impressionist(object)
|
||||
# Resque.enqueue_at(1.minute.from_now,DelayedImpressionist,object)
|
||||
def delayed_impressionist(item)
|
||||
user_id = current_user.nil? ? nil : current_user.id
|
||||
Resque.enqueue(DelayedImpressionist,:request=>DelayImpressionistRequest.new(request),:obj=>item,:class=>item.class.to_s,:controller_name=>controller_name,:action_name=>action_name,:user=>user_id)
|
||||
end
|
||||
|
||||
def check_user_role_enable(attribute_fields)
|
||||
@@ -242,25 +243,27 @@ module ApplicationHelper
|
||||
"#{t(:view_count)}: #{object.view_count}"
|
||||
end
|
||||
|
||||
def display_visitors(options={})
|
||||
Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
||||
end
|
||||
# def display_visitors(options={})
|
||||
# # Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
||||
# 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_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_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_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
|
||||
# def display_visitors_this_year
|
||||
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
|
||||
# end
|
||||
|
||||
def display_date_time(object)
|
||||
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]}
|
||||
end
|
||||
|
||||
def convert_array_param(key, array)
|
||||
Array(array).collect{|t| "#{key}[]=#{t}"}.join("&")
|
||||
end
|
||||
|
||||
end
|
||||
@@ -3,6 +3,13 @@ module DefaultWidgetHelper
|
||||
I18n.t("#{@page_part.module_app.key}.default_widget.#{field}")
|
||||
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)
|
||||
method_ary = @page_part.module_app.widget_fields_link_method
|
||||
field = field.to_sym
|
||||
@@ -77,4 +84,13 @@ module DefaultWidgetHelper
|
||||
content_tag(:span,get_display(row_data,field_setting),:class=>field_setting[:class])
|
||||
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
|
||||
@@ -2,16 +2,24 @@ class BackupServer
|
||||
@queue = :high
|
||||
|
||||
def self.perform()
|
||||
#CronMail.time_check("Going to backup Orbit").deliver
|
||||
dbhost = Mongoid.config.database.connection.primary.join ':'
|
||||
dbname = Mongoid.config.database.name
|
||||
archive_db_list_path = OrbitSystemPreference::ArchiveDbListPath
|
||||
dbdirectory = "#{Rails.root}/tmp/#{dbname}-"+Time.now.strftime("%Y-%m-%d-%H-%M")
|
||||
%x[mongodump -h #{dbhost} -d #{dbname} -o #{dbdirectory} ]
|
||||
|
||||
%x[rm #{archive_db_list_path}]
|
||||
%x[ls #{Rails.root}/tmp/#{dbname}* | du -h --max-depth=1 --block-size=1M |sort -h >> #{archive_db_list_path}]
|
||||
Dir.foreach('tmp') do |item|
|
||||
date_str = item.to_s.gsub("#{dbname}-",'')
|
||||
next if not date_str.match(/\d{4}-\d{2}-\d{2}-\d{2}-\d{2}/)
|
||||
if Date.parse(date_str).to_time < Site.first.backup_keep_for_days.days.ago
|
||||
OrbitLogger.info "Deleting #{date_str}"
|
||||
%x[rm -rf tmp/#{item}]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
%x[rm -f #{archive_db_list_path}]
|
||||
%x[cd tmp ; ls -l |grep #{dbname} | awk '{print $8}'|xargs du -h --block-size=1M --max-depth=0 |sort -h >> #{archive_db_list_path}]
|
||||
OrbitLogger.info "DB backup done Path:#{dbdirectory}"
|
||||
|
||||
end
|
||||
end
|
||||
@@ -1,36 +1,21 @@
|
||||
class DashboardCounter < Resque::Plugins::RestrictionJob
|
||||
extend OrbitApp::Module::VisitorCounterEval
|
||||
|
||||
@queue = :high
|
||||
|
||||
def self.perform(*args)
|
||||
site = Site.first
|
||||
obj = new(*args)
|
||||
site.dashboard_counter[:visitors_this_week] = obj.display_visitors_this_week
|
||||
site.dashboard_counter[:visitors_this_month] = obj.display_visitors_this_month
|
||||
site.dashboard_counter[:visitors_this_year] = obj.display_visitors_this_year
|
||||
site.visitor_counters[:total] = display_visitors
|
||||
site.visitor_counters[:today] = display_visitors_today
|
||||
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
|
||||
OrbitLogger.info "DashboardCounter done #{site.dashboard_counter.to_s}"
|
||||
end
|
||||
OrbitLogger.info "DashboardCounter done #{site.visitor_counters.to_s}"
|
||||
|
||||
|
||||
def display_visitors(options={})
|
||||
impressions = Impression.where(options).and(:referrer.ne => nil)
|
||||
impressions.map{|i| i[:session_hash]}.uniq.count
|
||||
end
|
||||
|
||||
def display_visitors_today
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
|
||||
end
|
||||
|
||||
def display_visitors_this_week
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week})
|
||||
end
|
||||
|
||||
def display_visitors_this_month
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month})
|
||||
end
|
||||
|
||||
def display_visitors_this_year
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
|
||||
#Notice this is mainly used at user dashbroad. however the code there is currentlly using realtime evaluation.
|
||||
#and the site model will need a field call dashboard_counter to complete this job.
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,7 +1,51 @@
|
||||
class DelayedImpressionist
|
||||
@queue = :low
|
||||
def self.perform(object)
|
||||
impressionist(object)
|
||||
true
|
||||
end
|
||||
class DelayedImpressionist
|
||||
def self.before_filter(*args)
|
||||
return
|
||||
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
|
||||
@@ -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
|
||||
@@ -3,7 +3,7 @@ class UpdateTagCloud
|
||||
|
||||
def self.perform()
|
||||
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
|
||||
OrbitLogger.info "UpdateTagCloud Done"
|
||||
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
|
||||
temp_tags = {}
|
||||
self.tags.each{ |tag|
|
||||
temp_tags.merge!({tag => Tag.get_impressionist(tag)})
|
||||
temp_tags.merge!({tag => tag.cloud_view_count})
|
||||
}
|
||||
if !temp_tags.blank?
|
||||
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 ParserFrontEnd
|
||||
|
||||
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||
is_impressionable #:counter_cache => { :column_name => :view_count }
|
||||
|
||||
field :content, localize: true
|
||||
field :app_frontend_url
|
||||
|
||||
+3
-1
@@ -18,6 +18,7 @@ class Site
|
||||
field :title_always_on, :type => Boolean, :default => false
|
||||
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
||||
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 :system_package_info, :type => Hash,:default=>{}
|
||||
@@ -28,10 +29,11 @@ class Site
|
||||
mount_uploader :default_image, ImageUploader
|
||||
|
||||
field :search,:type => Hash
|
||||
|
||||
field :resque_namespace,:type => String, :default=>APP_CONFIG['orbit']
|
||||
field :title, localize: true
|
||||
field :footer, localize: true
|
||||
field :sub_menu, localize: true
|
||||
field :backup_keep_for_days,:type=>Integer,:default=> APP_CONFIG['backup_keep_for_days']
|
||||
|
||||
field :mobile_on, :type => Boolean, :default => false
|
||||
|
||||
|
||||
+1
-25
@@ -8,7 +8,7 @@ class Tag
|
||||
include Mongoid::Timestamps
|
||||
include Impressionist::Impressionable
|
||||
|
||||
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||
is_impressionable #:counter_cache => { :column_name => :view_count }
|
||||
|
||||
field :name, localize: true
|
||||
field :view_count, :type => Integer, :default => 0
|
||||
@@ -17,30 +17,6 @@ class Tag
|
||||
belongs_to :module_tag, polymorphic: true
|
||||
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
|
||||
|
||||
def self.get_impressionist(item_tag = self)
|
||||
|
||||
+5
-10
@@ -3,7 +3,7 @@ class User
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
|
||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable #, :timeoutable
|
||||
|
||||
mount_uploader :avatar, AvatarUploader
|
||||
|
||||
@@ -42,7 +42,6 @@ class User
|
||||
|
||||
before_create :initialize_desktop
|
||||
before_save :rebuild_status_record
|
||||
before_save :save_roles
|
||||
scope :remote_account, where(:nccu_id.ne => nil)
|
||||
scope :not_guest_user, all_of(:name.ne => "guest")
|
||||
|
||||
@@ -89,9 +88,9 @@ class User
|
||||
var[:id].each do |id,val|
|
||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||
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")
|
||||
self.roles << Role.find(id)
|
||||
self.role_ids += Array(id)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -106,9 +105,9 @@ class User
|
||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||
|
||||
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")
|
||||
self.sub_roles << SubRole.find(id)
|
||||
self.sub_role_ids += Array(id)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -273,10 +272,6 @@ class User
|
||||
end
|
||||
|
||||
protected
|
||||
def save_roles
|
||||
# self.roles = self.sub_roles.collect{|t| t.role}.uniq
|
||||
self.roles = self.roles.uniq
|
||||
end
|
||||
|
||||
def rebuild_status_record
|
||||
self.status_record = {}
|
||||
|
||||
@@ -8,6 +8,5 @@
|
||||
</table>
|
||||
|
||||
<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' %>
|
||||
</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>
|
||||
|
||||
@@ -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('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('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 -%>
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
<%= content_tag :div,:class=>@tag_class do%>
|
||||
<%= content_tag :div, class: @tag_class do %>
|
||||
<div class="default_widget_type_A">
|
||||
<table class="default_widget_tb" border="0" cellpadding="0" cellspacing="0" >
|
||||
<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| %>
|
||||
<thead>
|
||||
<tr>
|
||||
<% @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?%>
|
||||
<% @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>
|
||||
<% 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>
|
||||
<% 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">
|
||||
<% @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">
|
||||
<%= image_tag row_data.send(@widget_image_field)%>
|
||||
<%= image_tag row_data.send(@widget_image_field) %>
|
||||
</div>
|
||||
<div class="wrap">
|
||||
<% @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?%>
|
||||
<% @frontend_field_names.each_with_index do |field, index| %>
|
||||
<%= content_tag(:span, link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index]) unless field.blank? %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<%= content_tag :div,:class=>@tag_class do%>
|
||||
<%= content_tag :div, class: @tag_class do %>
|
||||
<div class="img app-pic">
|
||||
<%= image_tag @data.first.send(@widget_image_field)%>
|
||||
<%= image_tag @data.first.send(@widget_image_field) %>
|
||||
</div>
|
||||
<ul class="default_widget_list">
|
||||
<% @data.each do |row_data| %>
|
||||
<%= content_tag(:li) do %>
|
||||
<% @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(:li, class: get_top_hot_class(row_data)) do %>
|
||||
<% @frontend_field_names.each_with_index do |field, index|%>
|
||||
<%= content_tag(:span, link_to_field(row_data, field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index]) unless field.blank? %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@@ -3,6 +3,7 @@ defaults: &defaults
|
||||
store_ip: 'redmine.rulingcom.com:3001'
|
||||
orbit: 'Orbit'
|
||||
ruling_digital: 'RulingDigital'
|
||||
backup_keep_for_days: 30
|
||||
|
||||
development:
|
||||
<<: *defaults
|
||||
|
||||
@@ -3,7 +3,7 @@ require 'resque_scheduler/server'
|
||||
# require 'yaml'
|
||||
|
||||
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,
|
||||
# uncomment this line. A dynamic schedule can be updated via the
|
||||
|
||||
@@ -272,6 +272,8 @@ en:
|
||||
setting: Mail settings
|
||||
tls: TLS
|
||||
user_name: User Name
|
||||
mail_cron: Scheduled Email
|
||||
mail_cron_log: Email Log
|
||||
manager: Manager
|
||||
markup: Markup
|
||||
markup_options: Markup options
|
||||
|
||||
@@ -272,6 +272,8 @@ zh_tw:
|
||||
setting: 電子郵件設定
|
||||
tls: 電子郵件TLS
|
||||
user_name: 電子郵件帳號
|
||||
mail_cron: 待寄Email
|
||||
mail_cron_log: Email發送記錄
|
||||
manager: 管理者
|
||||
markup: 輸入模式
|
||||
markup_options: 標註選項
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ defaults: &defaults
|
||||
|
||||
development:
|
||||
<<: *defaults
|
||||
database: demo_site_development
|
||||
database: test_site
|
||||
test:
|
||||
<<: *defaults
|
||||
database: test_site
|
||||
@@ -21,4 +21,4 @@ production:
|
||||
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
||||
# database: <%= ENV['MONGOID_DATABASE'] %>
|
||||
<<: *defaults
|
||||
database: demo_site_production
|
||||
database: test_site
|
||||
@@ -1,3 +1,15 @@
|
||||
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:
|
||||
cron: 0 0 [0,12] * * *
|
||||
class: UpdateTagCloud
|
||||
@@ -8,4 +20,10 @@ generate_system_summary:
|
||||
cron: 0 0 12 * * *
|
||||
class: GenerateSystemSummary
|
||||
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
|
||||
@@ -29,6 +29,19 @@ Orbit::Application.routes.draw do
|
||||
get 'delete'
|
||||
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_tags
|
||||
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
|
||||
params.delete :inner
|
||||
@params = params
|
||||
|
||||
params_str ="?"
|
||||
params_str = "?"
|
||||
params.each do |index,param|
|
||||
if param.is_a?(Array) and !param.blank?
|
||||
params_str << "&" unless params_str.eql?("?")
|
||||
params_str << param.collect{|t| "#{index}[]=#{t}"}.join("&")
|
||||
params.delete index
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
params_str = params_str + (params_str.eql?("?") ? params.to_param : "&#{params.to_param}" )
|
||||
content_tag :div,:class=> 'more' do
|
||||
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)
|
||||
@query = nil
|
||||
@image = nil
|
||||
@sorting_query = 'desc(:created_at)'
|
||||
@more_link = {}
|
||||
@fields = []
|
||||
@enabled_styles = STYLE
|
||||
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
|
||||
end
|
||||
|
||||
def sorting(query)
|
||||
@sorting_query = query
|
||||
end
|
||||
|
||||
def enable(args)
|
||||
@enabled_styles = args
|
||||
end
|
||||
@@ -122,7 +127,7 @@ module OrbitApp
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
def link_field(field_name,setting)
|
||||
|
||||
@@ -43,6 +43,7 @@ module OrbitTag
|
||||
def tags=(tag_ids)
|
||||
ids = [tag_ids].flatten
|
||||
tag_ids.delete('')
|
||||
self.tagged_ids = tag_ids
|
||||
ids = self.taggings.blank? ? [] : self.taggings.map{|t| t.tag.id}
|
||||
tag_ids.each do |tag_id|
|
||||
unless ids.include? tag_id
|
||||
@@ -58,9 +59,6 @@ module OrbitTag
|
||||
|
||||
def tag_ids=(ids)
|
||||
self.tags = ids
|
||||
ids = [ids].flatten
|
||||
ids.delete('')
|
||||
self.tagged_ids = ids
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -310,4 +310,60 @@ namespace :migrate do
|
||||
Rake::Task["web_link_url:web_link_url_i18n"].execute
|
||||
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
|
||||
+82
-4
@@ -1,4 +1,5 @@
|
||||
# encoding: utf-8
|
||||
require 'erb'
|
||||
|
||||
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' ])
|
||||
User.create!(:email=>'chris@rulingcom.com',:admin=>true,:user_id=>'chris',:password=>'password')
|
||||
`mongo #{Mongoid.config.database.name} --eval "db.fs.chunks.ensureIndex({files_id: 1, n: 1})"`
|
||||
|
||||
puts "Congres you can now login within url"
|
||||
puts 'Please upload design package (/admin/designs/upload_package ) and run rake site:necessary_data'
|
||||
I18nVariable.create!( :document_class => 'language', :key => 'en', :en => 'English', :zh_tw => '英文' )
|
||||
I18nVariable.create!( :document_class => 'language', :key => 'zh_tw', :en => 'Chinese', :zh_tw => '中文' )
|
||||
Info.create!(key: "profile", built_in: true, disabled: false, title: {"zh_tw"=>"基本欄位", "en"=>"Basic Info"}, to_search: false)
|
||||
Info.create!(key: "profile", built_in: true, disabled: false, title: {"zh_tw"=>"基本欄位", "en"=>"Basic Info"}, to_search: false)
|
||||
end
|
||||
|
||||
task :create_logrotate => :environment do #Can remove after all products update
|
||||
create_rulingcom_logrotate
|
||||
end
|
||||
|
||||
task :necessary_data => :environment do
|
||||
auto_setting
|
||||
site = Site.first
|
||||
site.title = 'RulingOrbit Demo Site'
|
||||
site.save
|
||||
site.update_attribute(:title,'RulingOrbit Demo Site')
|
||||
site.update_attribute(:resque_namespace,@resque_namespace)
|
||||
|
||||
# home_trans = I18nVariable.create!( :document_class => 'Home', :key => 'home', :en => 'Homepage', :zh_tw => '首頁')
|
||||
design = Design.first
|
||||
site = Site.first
|
||||
site.design = design
|
||||
site.save
|
||||
theme = design.themes.first
|
||||
@@ -31,6 +37,78 @@ namespace :site do
|
||||
|
||||
home.title_translations = {"zh_tw"=>"首頁", "en"=>"Home"}
|
||||
home.save
|
||||
|
||||
puts "Rember to restart server after you setup all sites for starting God"
|
||||
end
|
||||
|
||||
task :start_auto_setting => :environment do
|
||||
auto_setting
|
||||
end
|
||||
|
||||
def auto_setting
|
||||
puts "Enter your resque namespace[Orbit]:......"
|
||||
@resque_namespace = STDIN.gets.gsub("\n",'')
|
||||
@resque_namespace = APP_CONFIG['orbit'] if @resque_namespace.empty?
|
||||
|
||||
|
||||
puts "Is this the only site [ Entry site? ] on this mechine?[Default No]:......"
|
||||
site_is_alone = false
|
||||
site_is_alone = STDIN.gets.gsub("\n",'')
|
||||
site_is_alone = true if site_is_alone.downcase == 'yes'
|
||||
|
||||
puts "Is this a primary site?[Default No]:......"
|
||||
site_is_primary = false
|
||||
site_is_primary = STDIN.gets.gsub("\n",'')
|
||||
site_is_primary = true if site_is_primary.downcase == 'yes'
|
||||
|
||||
puts "Traffic heavy?[Default No]:......"
|
||||
traffic_heavy = false
|
||||
traffic_heavy = STDIN.gets.gsub("\n",'')
|
||||
traffic_heavy = true if traffic_heavy.downcase == 'yes'
|
||||
|
||||
@traffic_rate = traffic_heavy ? 2 : 1
|
||||
|
||||
if site_is_alone
|
||||
@resque_workers = 5 * @traffic_rate #Entry Site
|
||||
else
|
||||
if site_is_primary
|
||||
@resque_workers = 2 * @traffic_rate #Primary Site
|
||||
else
|
||||
@resque_workers = 1 * @traffic_rate #Secondary Site
|
||||
end
|
||||
end
|
||||
|
||||
resque_setting = ERB.new(File.new("lib/template/setting/resque.god.erb").read)
|
||||
File.open("config/resque.god", 'w') { |file| file.write(resque_setting.result) }
|
||||
|
||||
resque_schedule_setting = ERB.new(File.new("lib/template/setting/resque_schedule.god.erb").read)
|
||||
File.open("config/resque_schedule.god", 'w') { |file| file.write(resque_schedule_setting.result) }
|
||||
|
||||
if site_is_primary
|
||||
solr_setting = ERB.new(File.new("lib/template/setting/solr.god.erb").read)
|
||||
File.open("config/solr.god", 'w') { |file| file.write(solr_setting.result) }
|
||||
create_rulingcom_logrotate
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def create_rulingcom_logrotate
|
||||
`sudo mkdir -p /var/log/rulingcom` unless File.directory? "/var/log/rulingcom"
|
||||
@project_folder = ENV["PWD"]
|
||||
puts "Is your Orbit folder: #{@project_folder} (If YES => Press enter,or enter your path)"
|
||||
user_enter_project_folder = STDIN.gets.gsub("\n",'')
|
||||
@project_folder = user_enter_project_folder unless user_enter_project_folder.empty?
|
||||
|
||||
@user_home_folder = ENV["HOME"]
|
||||
puts "Is your Home folder: #{@user_home_folder} (If YES => Press enter,or enter your path)"
|
||||
user_enter_home_folder = STDIN.gets.gsub("\n",'')
|
||||
@user_home_folder = user_enter_home_folder unless user_enter_home_folder.empty?
|
||||
|
||||
logrotate_setting = ERB.new(File.new("lib/template/setting/rulingcom_log.erb").read)
|
||||
File.open("#{@project_loc}/tmp/logrotate_setting", 'w') { |file| file.write(logrotate_setting.result) }
|
||||
|
||||
`sudo cp #{@project_loc}/tmp/logrotate_setting /etc/logrotate.d/rulingcom`
|
||||
`logrotate -v -f /etc/logrotate.conf`
|
||||
end
|
||||
|
||||
end
|
||||
@@ -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
|
||||
@@ -4,33 +4,32 @@ user_home = ENV['HOME'] || File.dirname(__FILE__) + '/../..'
|
||||
development_uid = ''
|
||||
development_gid = ''
|
||||
|
||||
num_workers = rails_env == 'production' ? 5 : 2
|
||||
num_workers = rails_env == 'production' ? <%= @resque_workers %> : 1
|
||||
|
||||
num_workers.times do |num|
|
||||
God.watch do |w|
|
||||
|
||||
w.dir = rails_root
|
||||
w.name = "worker-#{num}"
|
||||
w.group = 'resque'
|
||||
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>resque-worker-#{num}"
|
||||
w.group = 'rulingcom'
|
||||
|
||||
w.interval = 30.seconds
|
||||
|
||||
queue = case num
|
||||
when 0
|
||||
'critical'
|
||||
when 1..2
|
||||
when 0..2
|
||||
'high,low'
|
||||
when 3..num_workers
|
||||
'low'
|
||||
end
|
||||
|
||||
w.env = {"QUEUE"=>queue, "RAILS_ENV"=>rails_env}
|
||||
w.start = "HOME=#{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile resque:work"
|
||||
|
||||
w.pid_file = "#{rails_root}/tmp/#{w.name}.pid"
|
||||
w.env = {"RAILS_ENV"=>rails_env,"PIDFILE" => w.pid_file ,"HOME"=>user_home, "QUEUE"=>queue, "RAILS_ENV"=>rails_env }
|
||||
w.start = "rake -f #{rails_root}/Rakefile resque:work"
|
||||
w.stop = "sudo kill -KILL $(cat #{w.pid_file})"
|
||||
w.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_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
|
||||
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|
|
||||
w.dir = rails_root
|
||||
w.name = "scheduler"
|
||||
w.group = 'resque'
|
||||
w.name = "<%= @resque_namespace.nil? ? "" : "#{@resque_namespace}-" %>sunspot-solr"
|
||||
w.group = 'rulingcom'
|
||||
w.pid_file = "#{rails_root}/solr/pids/production/sunspot-solr-production.pid"
|
||||
w.interval = 30.seconds
|
||||
w.env = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
|
||||
w.start = "HOME= #{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile resque:scheduler"
|
||||
w.env = {"RAILS_ENV"=>rails_env,"HOME"=>user_home ,"RAILS_ENV"=>rails_env}
|
||||
w.start = "rake -f #{rails_root}/Rakefile sunspot:solr:start"
|
||||
w.stop = "sudo kill -KILL $(cat #{w.pid_file})"
|
||||
w.keepalive
|
||||
|
||||
w.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_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
|
||||
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
|
||||
|
||||
def index
|
||||
|
||||
@item = Page.find(params[:page_id]) rescue nil
|
||||
if @item
|
||||
if @item.frontend_data_count
|
||||
@@ -60,7 +61,11 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
|
||||
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)
|
||||
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
|
||||
|
||||
+65
-4
@@ -66,14 +66,75 @@ class Panel::Announcement::Widget::BulletinsController < OrbitWidgetController
|
||||
|
||||
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
|
||||
@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
|
||||
|
||||
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
|
||||
|
||||
def bulletins_side_bar
|
||||
|
||||
@@ -14,7 +14,7 @@ class Bulletin
|
||||
include OrbitTag::Taggable
|
||||
taggable
|
||||
|
||||
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||
is_impressionable #:counter_cache => { :column_name => :view_count }
|
||||
|
||||
field :title, localize: true
|
||||
field :subtitle, localize: true
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
<% @bulletins.each do |bulletin| %>
|
||||
<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>
|
||||
<% end %>
|
||||
|
||||
<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_next_page @bulletins, 'Next Page', :params => {:controller => 'widget/bulletins', :action => 'reload_bulletins', :tag_id => @selected_tag.id}, :remote => true, :class => 'next' %>
|
||||
<%= 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', :part_id => params[:part_id], :tag_id => [@selected_tag.id]}, :remote => true, :class => 'next' %>
|
||||
</div>
|
||||
Vendored
+1
-1
@@ -1,3 +1,3 @@
|
||||
<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>
|
||||
+2
-2
@@ -5,6 +5,6 @@
|
||||
<% end %>
|
||||
|
||||
<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_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_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', :part_id => params[:part_id], :tag_id => @selected_tag.id}, :remote => true, :class => 'next' %>
|
||||
</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
|
||||
postdate: Post Date
|
||||
title: Title
|
||||
subtitle: SubTitle
|
||||
editing_announcement: Edit Announcement
|
||||
editing_announcement_category: Edit Category
|
||||
error:
|
||||
@@ -34,6 +35,6 @@ en:
|
||||
update_bulletin_category_success: Update Category Successfully
|
||||
url: URL
|
||||
widget:
|
||||
bulletins_and_web_links: Bulletins and Web Resources
|
||||
bulletins_and_web_links: Differential Nav.
|
||||
index: Index
|
||||
search: Search
|
||||
@@ -16,6 +16,7 @@ zh_tw:
|
||||
bulletin_category_with_title: 公告類別及標題
|
||||
postdate: 張貼日期
|
||||
title: 標題
|
||||
subtitle: 副標題
|
||||
editing_announcement: 編輯類別
|
||||
editing_announcement_category: 編輯類別
|
||||
error:
|
||||
@@ -34,6 +35,6 @@ zh_tw:
|
||||
update_bulletin_category_success: 更新類別成功
|
||||
url: 連結位置
|
||||
widget:
|
||||
bulletins_and_web_links: 索引
|
||||
bulletins_and_web_links: 分眾頁籤
|
||||
index: 索引
|
||||
search: 搜尋
|
||||
+11
-4
@@ -23,18 +23,20 @@ module Announcement
|
||||
end
|
||||
|
||||
category ["BulletinCategory"]
|
||||
data_count 3..10
|
||||
data_count 1..10
|
||||
|
||||
taggable
|
||||
|
||||
widgets do
|
||||
default_widget do
|
||||
query 'Bulletin.any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
|
||||
enable ["typeA","typeC"]
|
||||
sorting 'desc(:is_top, :postdate)'
|
||||
query 'Bulletin.can_display.available_for_lang(I18n.locale).any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
|
||||
enable ["typeA","typeB_style3","typeC"]
|
||||
image :image
|
||||
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]}}
|
||||
field :subtitle
|
||||
link_to_more 'panel_announcement_front_end_bulletins_path',:title_i18n=> 'more_plus'
|
||||
end
|
||||
|
||||
@@ -50,6 +52,11 @@ module Announcement
|
||||
widget_i18n "announcement.widget.search"
|
||||
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 "bulletins_and_web_links","announcement.widget.bulletins_and_web_links"
|
||||
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.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Vendored
+46
@@ -0,0 +1,46 @@
|
||||
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 gotcha_valid? && @ask_question.save
|
||||
@acknowledgement = AskAcknowledgement.last
|
||||
@ask_acknowledgement = AskAcknowledgement.first || AskAcknowlegement.new
|
||||
#@ask_question.save
|
||||
redirect_to root_path
|
||||
AskAdmin.all.each do |ask_admin|
|
||||
AskMailer.notice(ask_admin, @ask_question).deliver
|
||||
Resque.enqueue(SendAskNoticeMail, ask_admin.id, @ask_question.id)
|
||||
end
|
||||
# redirect_to panel_ask_front_end_thank_you_path
|
||||
respond_to do |format|
|
||||
format.js
|
||||
# format.js { render :thank_you, notice: 'Your question has been successfully sent.' }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def thank_you
|
||||
@acknowledgement = AskAcknowledgement.last
|
||||
@item = Page.find(params[:page_id]) rescue nil
|
||||
if @item
|
||||
if @item.frontend_data_count
|
||||
@page_num = @item.frontend_data_count
|
||||
else
|
||||
@page_num = 15
|
||||
end
|
||||
@frontend_style = @item.frontend_style
|
||||
end
|
||||
@item = Page.find(params[:page_id]) rescue nil
|
||||
end
|
||||
end
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
class AskMailer < ActionMailer::Base
|
||||
default from: 'orbit_test@rulingcom.com'
|
||||
|
||||
|
||||
def reply(ask_question)
|
||||
@ask_question = ask_question
|
||||
mail(:to => @ask_question.email, :subject => "#{t('ask.reply')}:#{@ask_question.title}")
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 285 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user