class Admin::Post
Public Class Methods
search(params = {})
click to toggle source
# File lib/ecrire/app/models/admin/post.rb, line 9 def self.search(params = {}) rel = self if params.has_key?(:tag) && !params[:tag].blank? rel = rel.where('? = ANY(posts.tags)', params[:tag]) end if params.has_key?(:title) && !params[:title].blank? titles = Admin::Title.search_by_name(params[:title]) rel = rel.where('id in (?)', titles.pluck(:post_id).uniq.compact) end if params.has_key?(:status) rel = rel.status(params[:status]) end rel end
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