Sha256: 5b73ccaf08043c927d62ca6ce81a7f448060680374798d34e257ebed6b571327

Contents?: true

Size: 1.86 KB

Versions: 25

Compression:

Stored size: 1.86 KB

Contents

class Caboose::Post < ActiveRecord::Base
  self.table_name = "posts"
  
  has_many :post_category_memberships
  has_many :post_categories, :through => :post_category_memberships
  belongs_to :site
  
  attr_accessible :id,        
    :site_id     ,
    :title       ,
    :subtitle    ,
    :author      ,
    :body        ,
    :preview     ,
    :hide        ,
    :image_url   ,
    :published   ,
    :created_at  ,
    :updated_at
    
  has_attached_file :image, 
    :path => ':caboose_prefixposts/:id_:style.:extension',
    :default_url => 'http://placehold.it/300x300',
    :styles => {
      :tiny  => '75x75>',
      :thumb => '150x150>',
      :large => '400x400>',
      :huge => '1000x1000'
      
    }
  do_not_validate_attachment_file_type :image
  
  def block
    Caboose::Block.where("post_id = ? and parent_id is null", self.id).first
  end
  
  def top_level_blocks
    Caboose::Block.where("post_id = ? and parent_id is null", self.id).reorder(:sort_order).all
  end
  
  def self.slug(str)    
    return str.downcase.gsub(' ', '-').gsub(/[^\w-]/, '')        
  end
  
  def self.uri(post)
    str = "/posts/#x{post.created_at.strftime('%Y/%m/%d')}/#{post.slug}"
    i = 2
    while Caboose::Post.where("site_id = ? and id <> ? and uri = ?", post.site_id, post.id, str).exists?
      str = "/posts/#{post.created_at.strftime('%Y/%m/%d')}/#{post.slug}-#{i}"
      i = i + 1
    end      
    return str
  end
  
  def set_slug_and_uri(str)
    d = self.created_at.strftime('%Y/%m/%d')
    s = Caboose::Post.slug(str)
    new_slug = "#{s}"
    new_uri = "/posts/#{d}/#{new_slug}"
    i = 2
    while Caboose::Post.where("site_id = ? and id <> ? and uri = ?", self.site_id, self.id, new_uri).exists?
      new_slug = "#{s}-#{i}"
      new_uri = "/posts/#{d}/#{new_slug}"      
      i = i + 1
    end
    self.slug = new_slug
    self.uri = new_uri
    self.save        
  end  

end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
caboose-cms-0.6.34 app/models/caboose/post.rb
caboose-cms-0.6.33 app/models/caboose/post.rb
caboose-cms-0.6.32 app/models/caboose/post.rb
caboose-cms-0.6.31 app/models/caboose/post.rb
caboose-cms-0.6.30 app/models/caboose/post.rb
caboose-cms-0.6.29 app/models/caboose/post.rb
caboose-cms-0.6.28 app/models/caboose/post.rb
caboose-cms-0.6.27 app/models/caboose/post.rb
caboose-cms-0.6.26 app/models/caboose/post.rb
caboose-cms-0.6.25 app/models/caboose/post.rb
caboose-cms-0.6.24 app/models/caboose/post.rb
caboose-cms-0.6.23 app/models/caboose/post.rb
caboose-cms-0.6.22 app/models/caboose/post.rb
caboose-cms-0.6.21 app/models/caboose/post.rb
caboose-cms-0.6.20 app/models/caboose/post.rb
caboose-cms-0.6.19 app/models/caboose/post.rb
caboose-cms-0.6.18 app/models/caboose/post.rb
caboose-cms-0.6.17 app/models/caboose/post.rb
caboose-cms-0.6.16 app/models/caboose/post.rb
caboose-cms-0.6.15 app/models/caboose/post.rb