Sha256: ba7de25568e3217435b1379af731c41fb77713af9641d4bc96fa0ab7f9ac0614

Contents?: true

Size: 1.84 KB

Versions: 30

Compression:

Stored size: 1.84 KB

Contents

module Blog
  class Entry < Sequel::Model
    set_schema do
      primary_key :id

      time :published
      time :updated
      text :content
      varchar :title
      boolean :allow_comments, :default => true
    end

    many_to_many :tags, :class => 'Blog::Tag'
    one_to_many :comments, :class => 'Blog::Comment'

    before_save{ self.updated = Time.now }
    before_create{ self.published = Time.now }

    def self.from_slug(slug)
      self[slug[/\d+/]]
    end

    def self.history(limit)
      order(:published.desc).first(limit)
    end

    def update(hash)
      self.title = hash[:title]
      self.content = hash[:content]
      save
      self.tags = hash[:tags]
      self
    end

    def slug
      self.class.slug(id, title)
    end

    def href
      self.class.href(id, title)
    end

    def self.slug(id, title)
      Innate::Helper::CGI.u("#{id}-#{title.scan(/\w+/).join('-')}")
    end

    def self.href(id, title)
      Blog::Entries.r(:/, slug(id, title))
    end

    def trackback_href
      Blog::Entries.r(:trackback, slug)
    end

    def respond_href
      Blog::Entries.r(:/, "#{slug}#respond")
    end

    def comment_href
      Blog::Entries.r(:/, "#{slug}#comments")
    end

    def tags=(tags)
      remove_all_tags
      tags.to_s.downcase.scan(/[^\s,\.]+/).uniq.each{|tag|
        add_tag(Tag.find_or_create(:name => tag))
      }
    end

    def summary(size = 255)
      content[0..size]
    end

    def to_html(text = content)
      Maruku.new(text).to_html
    end

    create_table unless table_exists?

    if empty?
      Ramaze::Log.info 'Populating database with fake entries'

      entry = create(:title => 'Blog created',
                     :content => 'Exciting news today, first post on this blog')
      entry.add_tag(Tag.create(:name => 'ramaze'))
      entry.add_tag(Tag.create(:name => 'blog'))
    end
  end
end

Version data entries

30 entries across 30 versions & 4 rubygems

Version Path
Pistos-ramaze-2009.04.08 examples/app/blog/model/entry.rb
Pistos-ramaze-2009.06.12 examples/app/blog/model/entry.rb
manveru-ramaze-2009.04.01 examples/app/blog/model/entry.rb
manveru-ramaze-2009.04.08 examples/app/blog/model/entry.rb
manveru-ramaze-2009.04.18 examples/app/blog/model/entry.rb
manveru-ramaze-2009.04.22 examples/app/blog/model/entry.rb
manveru-ramaze-2009.04 examples/app/blog/model/entry.rb
manveru-ramaze-2009.05.08 examples/app/blog/model/entry.rb
manveru-ramaze-2009.05 examples/app/blog/model/entry.rb
manveru-ramaze-2009.06.04 examples/app/blog/model/entry.rb
manveru-ramaze-2009.06.12 examples/app/blog/model/entry.rb
manveru-ramaze-2009.06 examples/app/blog/model/entry.rb
manveru-ramaze-2009.07 examples/app/blog/model/entry.rb
rjspotter-ramaze-2009.06.29 examples/app/blog/model/entry.rb
rjspotter-ramaze-2009.06.31 examples/app/blog/model/entry.rb
ramaze-2011.07.25 examples/app/blog/model/entry.rb
ramaze-2011.01.30 examples/app/blog/model/entry.rb
ramaze-2011.01 examples/app/blog/model/entry.rb
ramaze-2010.06.18 examples/app/blog/model/entry.rb
ramaze-2010.04.04 examples/app/blog/model/entry.rb