fix for not displaying bulletin at fronted when it's parent category is disable

This commit is contained in:
Matthew K. Fu JuYuan 2012-07-11 17:17:44 +08:00
parent 98b274d9dd
commit ca2c056a07
10 changed files with 77 additions and 10 deletions

View File

@ -1,4 +1,34 @@
module OrbitCoreLib module OrbitCoreLib
module BelongsToCategoryMayDisable
def self.included(base)
base.instance_eval("belongs_to :#{base::BelongsToCategory.to_s}")
base.instance_eval("
scope :currently_available_by_category, lambda { |category|
check_data = category.to_a.collect{|cate| cate.id}
any_in(#{ base::BelongsToCategory.to_s}_id: check_data)
}
")
base.instance_eval("scope :admin_manager_all,find(:all)")
# base.instance_eval("scope :all,where(disable: false)")
base.instance_eval("
scope :all, lambda {
category = base::BelongsToCategory.to_s.classify.constantize.all
check_data = category.to_a.collect{|cate| cate.id}
any_in(#{ base::BelongsToCategory.to_s}_id: check_data)
}
")
base.class_eval("
def disable?
#{base::BelongsToCategory.to_s}.disable?
end
")
end
# end
end
module ObjectDisable module ObjectDisable
def self.included(base) def self.included(base)

View File

@ -29,8 +29,12 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
preview_content preview_content
else else
@bulletin = Bulletin.can_display.where(_id: params[:id]).first @bulletin = Bulletin.can_display.where(_id: params[:id]).first
unless @bulletin.disable?
impressionist(@bulletin) impressionist(@bulletin)
get_categorys get_categorys
else
render :nothing => true, :status => 403
end
end end
end end

View File

@ -8,4 +8,8 @@ class AnnouncementTag < Tag
self.bulletins.where(:is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, sort) self.bulletins.where(:is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, sort)
end end
def bulletins
Bulletin.all.any_in(:_id => bulletin_ids)
end
end end

View File

@ -5,6 +5,10 @@ class Bulletin
include Mongoid::Timestamps include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes include Mongoid::MultiParameterAttributes
include Impressionist::Impressionable include Impressionist::Impressionable
BelongsToCategory = :bulletin_category
include OrbitCoreLib::BelongsToCategoryMayDisable
# include NccuSearch # include NccuSearch
scope :searchable,where(:is_checked=>true,:is_hidden=>false,:is_pending=>false) scope :searchable,where(:is_checked=>true,:is_hidden=>false,:is_pending=>false)
@ -39,7 +43,7 @@ class Bulletin
mount_uploader :image, ImageUploader mount_uploader :image, ImageUploader
belongs_to :bulletin_category
# belongs_to :unit_list_for_anc # belongs_to :unit_list_for_anc
# embeds_many :bulletin_links, :cascade_callbacks => true # embeds_many :bulletin_links, :cascade_callbacks => true
@ -59,6 +63,17 @@ class Bulletin
after_save :save_bulletin_files after_save :save_bulletin_files
# scope :currently_available, lambda { |category, limit|
# # limit ||= 5
# # {
# # debugger
# # a=1
# :where => {:bulletin_category_id => bulletin_category_id, :disable => false}#,
# # :limit => limit
# # }
# }
def publish_month def publish_month
published_at.strftime("%B %Y") published_at.strftime("%B %Y")
end end

View File

@ -5,7 +5,10 @@ class AnnouncementTag < Tag
def get_visible_bulletins(sort = :name) def get_visible_bulletins(sort = :name)
date_now = Time.now date_now = Time.now
self.bulletins.where(:is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, sort) self.bulletins.all.where(:is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, sort)
end end
def bulletins
Bulletin.all.any_in(:_id => bulletin_ids)
end
end end

View File

@ -264,7 +264,7 @@ class Panel::News::BackEnd::NewsBulletinsController < OrbitBackendController
respond_to do |format| respond_to do |format|
if @news_bulletin.update_attributes(params[:news_bulletin]) if @news_bulletin.update_attributes(params[:news_bulletin])
# format.html { redirect_to(panel_news_back_end_news_bulletin_url(@news_bulletin), :notice => t('news_bulletin.update_news_bulletin_success')) } # format.html { redirect_to(panel_news_back_end_news_bulletin_url(@news_bulletin), :notice => t('news_bulletin.update_news_bulletin_success')) }
format.html { redirect_to(panel_news_back_end_news_bulletins_url, :notice => t('news_bulletin.update_news_bulletin_success')) } format.html { redirect_to(panel_news_back_end_news_bulletins_url, :notice => t('news_bulletin.update_success')) }
format.js { render 'toggle_enable' } format.js { render 'toggle_enable' }
format.xml { head :ok } format.xml { head :ok }
else else

View File

@ -49,8 +49,13 @@ class Panel::News::FrontEnd::NewsBulletinsController < OrbitWidgetController
preview_content preview_content
else else
@news_bulletin = NewsBulletin.can_display.where(_id: params[:id]).first @news_bulletin = NewsBulletin.can_display.where(_id: params[:id]).first
unless @news_bulletin.disable?
impressionist(@news_bulletin) impressionist(@news_bulletin)
get_categorys get_categorys
else
render :nothing => true, :status => 403
end
end end
end end

View File

@ -51,11 +51,11 @@ class Panel::News::Widget::NewsBulletinsController < OrbitWidgetController
def home_banner def home_banner
if !params[:category_id].blank? if !params[:category_id].blank?
@news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).widget_datas.limit(9) @news_bulletins = NewsBulletin.all.can_display.where(:news_bulletin_category_id => params[:category_id]).widget_datas.limit(9)
elsif !params[:tag_id].blank? elsif !params[:tag_id].blank?
@news_bulletins = NewsTag.find(params[:tag_id]).news_bulletins.can_display.widget_datas.limit(9) rescue nil @news_bulletins = NewsTag.find(params[:tag_id]).news_bulletins.can_display.widget_datas.limit(9) rescue nil
else else
@news_bulletins = NewsBulletin.can_display.widget_datas.limit(9) @news_bulletins = NewsBulletin.all.can_display.widget_datas.limit(9)
end end
get_categorys get_categorys

View File

@ -5,6 +5,9 @@ class NewsBulletin
include Mongoid::Timestamps include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes include Mongoid::MultiParameterAttributes
include Impressionist::Impressionable include Impressionist::Impressionable
BelongsToCategory = :news_bulletin_category
include OrbitCoreLib::BelongsToCategoryMayDisable
# include Tire::Model::Search # include Tire::Model::Search
# include Tire::Model::Callbacks # include Tire::Model::Callbacks
# include Redis::Objects # include Redis::Objects
@ -43,7 +46,6 @@ class NewsBulletin
mount_uploader :image, ImageUploader mount_uploader :image, ImageUploader
belongs_to :news_bulletin_category
belongs_to :unit_list_for_anc belongs_to :unit_list_for_anc
# embeds_many :news_bulletin_links, :cascade_callbacks => true # embeds_many :news_bulletin_links, :cascade_callbacks => true

View File

@ -8,4 +8,8 @@ class NewsTag < Tag
self.news_bulletins.where(:is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, sort) self.news_bulletins.where(:is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, sort)
end end
def news_bulletins
NewsBulletin.all.any_in(:_id => news_bulletin_ids)
end
end end