diff options
Diffstat (limited to 'app/models/refinery/blog')
-rw-r--r-- | app/models/refinery/blog/categorization.rb | 1 | ||||
-rw-r--r-- | app/models/refinery/blog/category.rb | 9 | ||||
-rw-r--r-- | app/models/refinery/blog/comment.rb | 30 | ||||
-rw-r--r-- | app/models/refinery/blog/post.rb | 68 |
4 files changed, 43 insertions, 65 deletions
diff --git a/app/models/refinery/blog/categorization.rb b/app/models/refinery/blog/categorization.rb index 7ca9c77..b7dbcc8 100644 --- a/app/models/refinery/blog/categorization.rb +++ b/app/models/refinery/blog/categorization.rb @@ -6,7 +6,6 @@ module Refinery belongs_to :blog_post, :class_name => 'Refinery::Blog::Post', :foreign_key => :blog_post_id belongs_to :blog_category, :class_name => 'Refinery::Blog::Category', :foreign_key => :blog_category_id - attr_accessible :blog_category_id, :blog_post_id end end end diff --git a/app/models/refinery/blog/category.rb b/app/models/refinery/blog/category.rb index acab8bf..5cf4ea5 100644 --- a/app/models/refinery/blog/category.rb +++ b/app/models/refinery/blog/category.rb @@ -1,10 +1,10 @@ module Refinery module Blog class Category < ActiveRecord::Base + extend FriendlyId translates :title, :slug - extend FriendlyId friendly_id :title, :use => [:slugged, :globalize] has_many :categorizations, :dependent => :destroy, :foreign_key => :blog_category_id @@ -12,13 +12,6 @@ module Refinery validates :title, :presence => true, :uniqueness => true - attr_accessible :title - attr_accessor :locale - - class Translation - attr_accessible :locale - end - def self.translated with_translations(::Globalize.locale) end diff --git a/app/models/refinery/blog/comment.rb b/app/models/refinery/blog/comment.rb index 7661e81..be94238 100644 --- a/app/models/refinery/blog/comment.rb +++ b/app/models/refinery/blog/comment.rb @@ -2,30 +2,26 @@ module Refinery module Blog class Comment < ActiveRecord::Base - attr_accessible :name, :email, :message + filters_spam author_field: :name, email_field: :email, message_field: :body - filters_spam :author_field => :name, - :email_field => :email, - :message_field => :body - - belongs_to :post, :foreign_key => 'blog_post_id' + belongs_to :post, foreign_key: 'blog_post_id' alias_attribute :message, :body - validates :name, :message, :presence => true - validates :email, :format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i } + validates :name, :message, presence: true + validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i } class << self def unmoderated - where(:state => nil) + where(state: nil) end def approved - where(:state => 'approved') + where(state: 'approved') end def rejected - where(:state => 'rejected') + where(state: 'rejected') end end @@ -55,7 +51,7 @@ module Refinery currently = Refinery::Setting.find_or_set(:comments_allowed, true, { :scoping => 'blog' }) - Refinery::Setting.set(:comments_allowed, {:value => !currently, :scoping => 'blog'}) + Refinery::Setting.set(:comments_allowed, {value: !currently, scoping: 'blog'}) end before_create do |comment| @@ -68,16 +64,16 @@ module Refinery class << self def enabled? Refinery::Setting.find_or_set(:comment_moderation, true, { - :scoping => 'blog', - :restricted => false + scoping: 'blog', + restricted: false }) end def toggle! new_value = { - :value => !Blog::Comment::Moderation.enabled?, - :scoping => 'blog', - :restricted => false + value: !Blog::Comment::Moderation.enabled?, + scoping: 'blog', + restricted: false } Refinery::Setting.set(:comment_moderation, new_value) end diff --git a/app/models/refinery/blog/post.rb b/app/models/refinery/blog/post.rb index cf0a526..005ec29 100644 --- a/app/models/refinery/blog/post.rb +++ b/app/models/refinery/blog/post.rb @@ -4,54 +4,38 @@ require 'seo_meta' module Refinery module Blog class Post < ActiveRecord::Base + extend FriendlyId translates :title, :body, :custom_url, :custom_teaser, :slug, :include => :seo_meta - extend FriendlyId friendly_id :friendly_id_source, :use => [:slugged, :globalize] - is_seo_meta if self.table_exists? - - default_scope :order => 'published_at DESC' - - belongs_to :author, :class_name => Refinery::Blog.user_class.to_s, :foreign_key => :user_id, :readonly => true + is_seo_meta - has_many :comments, :dependent => :destroy, :foreign_key => :blog_post_id acts_as_taggable + belongs_to :author, proc { readonly(true) }, :class_name => Refinery::Blog.user_class.to_s, :foreign_key => :user_id + has_many :comments, :dependent => :destroy, :foreign_key => :blog_post_id has_many :categorizations, :dependent => :destroy, :foreign_key => :blog_post_id has_many :categories, :through => :categorizations, :source => :blog_category validates :title, :presence => true, :uniqueness => true validates :body, :presence => true validates :published_at, :author, :presence => true - validates :source_url, :url => { :if => 'Refinery::Blog.validate_source_url', :update => true, :allow_nil => true, :allow_blank => true, :verify => [:resolve_redirects]} - attr_accessible :title, :body, :custom_teaser, :tag_list, :draft, :published_at, :custom_url, :author - attr_accessible :browser_title, :meta_description, :user_id, :category_ids - attr_accessible :source_url, :source_url_title - attr_accessor :locale - - - class Translation - is_seo_meta - attr_accessible :browser_title, :meta_description, :locale - end + class Translation + is_seo_meta + end - # Delegate SEO Attributes to globalize3 translation + # Delegate SEO Attributes to globalize translation seo_fields = ::SeoMeta.attributes.keys.map{|a| [a, :"#{a}="]}.flatten delegate(*(seo_fields << {:to => :translation})) - before_save do |m| - m.translation.globalized_model = self - m.translation.save if m.translation.new_record? - end - self.per_page = Refinery::Blog.posts_per_page def next @@ -63,7 +47,7 @@ module Refinery end def live? - !draft and published_at <= Time.now + !draft && published_at <= Time.now end def friendly_id_source @@ -82,7 +66,8 @@ module Refinery end end # A join implies readonly which we don't really want. - joins(:translations).where(globalized_conditions).where(conditions).readonly(false) + where(conditions).joins(:translations).where(globalized_conditions) + .readonly(false) end def find_by_slug_or_id(slug_or_id) @@ -94,44 +79,49 @@ module Refinery end def by_month(date) - where(:published_at => date.beginning_of_month..date.end_of_month) + newest_first.where(:published_at => date.beginning_of_month..date.end_of_month) end - def by_archive(date) - Refinery.deprecate("Refinery::Blog::Post.by_archive(date)", {:replacement => "Refinery::Blog::Post.by_month(date)", :when => 2.2 }) - by_month(date) + def by_year(date) + newest_first.where(:published_at => date.beginning_of_year..date.end_of_year).with_globalize end - def by_year(date) - where(:published_at => date.beginning_of_year..date.end_of_year).with_globalize + def newest_first + order("published_at DESC") end def published_dates_older_than(date) - published_before(date).select(:published_at).map(&:published_at) + newest_first.published_before(date).select(:published_at).map(&:published_at) end def recent(count) - live.limit(count) + newest_first.live.limit(count) end def popular(count) - unscoped.order("access_count DESC").limit(count).with_globalize + order("access_count DESC").limit(count).with_globalize end def previous(item) - published_before(item.published_at).first + newest_first.published_before(item.published_at).first end def uncategorized - live.includes(:categories).where(Refinery::Blog::Categorization.table_name => { :blog_category_id => nil }) + newest_first.live.includes(:categories).where( + Refinery::Blog::Categorization.table_name => { :blog_category_id => nil } + ) end def next(current_record) - where(["published_at > ? and draft = ?", current_record.published_at, false]).reorder('published_at ASC').with_globalize.first + where(arel_table[:published_at].gt(current_record.published_at)) + .where(:draft => false) + .order('published_at ASC').with_globalize.first end def published_before(date=Time.now) - where("published_at < ? and draft = ?", date, false).with_globalize + where(arel_table[:published_at].lt(date)) + .where(:draft => false) + .with_globalize end alias_method :live, :published_before |