Sha256: 3e56aa262b115d19ee39e07137c2f1e1be22439d8ed5353f58612252d6ef2b98

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

require 'dm-timestamps'
class OrangeBlogPost < Orange::Carton
  id
  front do
    title :title
    fulltext :body
  end
  admin do
    fulltext :summary
  end
  orange do
    boolean :published, :default => false
    text :slug
    text :author
  end
  
  property :created_at, DateTime
  property :published_at, DateTime
  property :updated_at, DateTime
  belongs_to :blog, "OrangeBlog"
  
  def title=(t)
    self.attribute_set('title', t)
    self.attribute_set('slug', str.downcase.gsub(/[']+/, "").gsub(/[^a-z0-9]+/, "_"))
  end
  
  def publish
    self.published_at = Time.now
    self.published = true
  end
  
  def publish!
    self.published_at = Time.now
    self.published = true
    self.save
  end
  
  def self.year_and_month(yr, mnth)
    all(:published_at.gte => DateTime.new(yr, mnth, 1), :published_at.lt => DateTime.new(yr, mnth + 1, 1))
  end
  
  def self.slug(slug)
    first(:slug => slug)
  end
  
  def self.published
    all(:published => true)
  end
  
  def self.draft
    all(:published => false)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
orange-0.1.7 lib/orange-more/blog/cartons/blog_post.rb
orange-0.1.4 lib/orange-more/blog/cartons/blog_post.rb