class Admin::Post

Public Class Methods

Public Instance Methods

content=(content) click to toggle source
# File lib/ecrire/app/models/admin/post.rb, line 48
def content=(content)
  content_will_change!
  if content.is_a?(String)
    self.content.html = self.content.raw = content
  elsif content.kind_of?(Hash)
    content = content.with_indifferent_access
    self.content.html = content['html']
    self.content.raw = content['raw']
    write_attribute('content', {'raw' => self.content.raw, 'html' => self.content.html})
  end
end
javascript() click to toggle source
Calls superclass method
# File lib/ecrire/app/models/admin/post.rb, line 44
def javascript
  super || ""
end
publish!(params = {}) click to toggle source
# File lib/ecrire/app/models/admin/post.rb, line 28
def publish!(params = {})
  self.assign_attributes(params)
  self.published_at = DateTime.now
  self.save!
end
status() click to toggle source
# File lib/ecrire/app/models/admin/post.rb, line 60
def status
  published? ? 'published' : 'draft'
end
stylesheet() click to toggle source
Calls superclass method
# File lib/ecrire/app/models/admin/post.rb, line 40
def stylesheet
  super || ""
end
unpublish!(params = {}) click to toggle source
# File lib/ecrire/app/models/admin/post.rb, line 34
def unpublish!(params = {})
  self.assign_attributes(params)
  self.published_at = nil
  self.save!
end

Private Instance Methods

excerptize!() click to toggle source
# File lib/ecrire/app/models/admin/post.rb, line 66
def excerptize!
  html = Nokogiri::HTML(self.content.html)
  html.xpath("//img").each do |img|
    img.remove
  end

  valid_elements = %w(p ul ol li text).freeze
  require 'byebug'
  elements = html.xpath('//body').children.find_all do |el|
    !el.text.blank?
  end
  elements = elements[0..4].take_while do |el|
    valid_elements.include?(el.name)
  end

  self.compiled_excerpt = elements.map(&:to_s).join
end