Sha256: 6bc733178539400050b89881ab62f58258d19ba91526b3b1ba4667d0c2dd8e1c

Contents?: true

Size: 1.86 KB

Versions: 42

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 => ':path_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

42 entries across 42 versions & 1 rubygems

Version Path
caboose-cms-0.6.9 app/models/caboose/post.rb
caboose-cms-0.6.8 app/models/caboose/post.rb
caboose-cms-0.6.7 app/models/caboose/post.rb
caboose-cms-0.6.6 app/models/caboose/post.rb
caboose-cms-0.6.5 app/models/caboose/post.rb
caboose-cms-0.6.4 app/models/caboose/post.rb
caboose-cms-0.6.3 app/models/caboose/post.rb
caboose-cms-0.6.2 app/models/caboose/post.rb
caboose-cms-0.6.1 app/models/caboose/post.rb
caboose-cms-0.5.238 app/models/caboose/post.rb
caboose-cms-0.5.237 app/models/caboose/post.rb
caboose-cms-0.5.236 app/models/caboose/post.rb
caboose-cms-0.5.235 app/models/caboose/post.rb
caboose-cms-0.5.234 app/models/caboose/post.rb
caboose-cms-0.5.233 app/models/caboose/post.rb
caboose-cms-0.5.232 app/models/caboose/post.rb
caboose-cms-0.5.231 app/models/caboose/post.rb
caboose-cms-0.5.230 app/models/caboose/post.rb
caboose-cms-0.5.229 app/models/caboose/post.rb
caboose-cms-0.5.228 app/models/caboose/post.rb