Class: BlogPost
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- BlogPost
- Includes:
- Entity, Lockable, Postable
- Defined in:
- app/models/blog_post.rb
Instance Attribute Summary collapse
-
#for_preview ⇒ Object
Returns the value of attribute for_preview.
Class Method Summary collapse
- .all_columns ⇒ Object
- .archives(preview = false) ⇒ Object
- .create_post(current_user, params) ⇒ Object
- .current ⇒ Object
- .feed ⇒ Object
- .first_post ⇒ Object
- .from_url_title(url_title) ⇒ Object
- .newest_post ⇒ Object
- .newest_preview_post ⇒ Object
- .next_post(post) ⇒ Object
- .preview_current ⇒ Object
- .preview_from_url_title(url_title) ⇒ Object
- .previous_post(post) ⇒ Object
- .search(query) ⇒ Object
- .sitemap ⇒ Object
- .update_post(params) ⇒ Object
- .url_titlize(title) ⇒ Object
Instance Method Summary collapse
- #edit_url ⇒ Object
- #first_post ⇒ Object
- #first_url_title ⇒ Object
- #newest? ⇒ Boolean
- #newest_id ⇒ Object
- #newest_post ⇒ Object
- #newest_preview? ⇒ Boolean
- #newest_preview_id ⇒ Object
- #newest_preview_post ⇒ Object
- #next_post ⇒ Object
- #next_url_title ⇒ Object
- #oldest? ⇒ Boolean
- #prev_url_title ⇒ Object
- #preview_url ⇒ Object
- #previous_post ⇒ Object
- #real? ⇒ Boolean
- #to_backup_entries ⇒ Object
- #url ⇒ Object
Instance Attribute Details
#for_preview ⇒ Object
Returns the value of attribute for_preview.
11 12 13 |
# File 'app/models/blog_post.rb', line 11 def for_preview @for_preview end |
Class Method Details
.all_columns ⇒ Object
147 148 149 |
# File 'app/models/blog_post.rb', line 147 def all_columns select "blog_posts.*" end |
.archives(preview = false) ⇒ Object
189 190 191 192 193 |
# File 'app/models/blog_post.rb', line 189 def archives(preview = false) context = BlogPost context = posted unless preview context.reverse_chronological.select([:url_title, :title, :posted_at]).all end |
.create_post(current_user, params) ⇒ Object
112 113 114 115 |
# File 'app/models/blog_post.rb', line 112 def create_post(current_user, params) url_title = url_titlize params[:title] create :title => params[:title], :url_title => url_title, :content => params[:content], :author => current_user.name, :locked => true end |
.current ⇒ Object
151 152 153 154 155 |
# File 'app/models/blog_post.rb', line 151 def current post = posted.reverse_chronological.first post = new :title => "No Posts Yet", :content => "There are no blog posts yet." unless post post end |
.feed ⇒ Object
195 196 197 |
# File 'app/models/blog_post.rb', line 195 def feed posted.reverse_chronological.take 10 end |
.first_post ⇒ Object
143 144 145 |
# File 'app/models/blog_post.rb', line 143 def first_post posted.chronological.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.") end |
.from_url_title(url_title) ⇒ Object
176 177 178 179 180 |
# File 'app/models/blog_post.rb', line 176 def from_url_title(url_title) post = posted.where(:url_title => url_title).first raise ActiveRecord::RecordNotFound.new("No records found!") unless post post end |
.newest_post ⇒ Object
139 140 141 |
# File 'app/models/blog_post.rb', line 139 def newest_post posted.reverse_chronological.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.") end |
.newest_preview_post ⇒ Object
135 136 137 |
# File 'app/models/blog_post.rb', line 135 def newest_preview_post reverse_chronological.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.") end |
.next_post(post) ⇒ Object
170 171 172 173 174 |
# File 'app/models/blog_post.rb', line 170 def next_post(post) context = BlogPost context = posted unless post.for_preview context.where("blog_posts.posted_at > ?", post.posted_at).chronological.first end |
.preview_current ⇒ Object
157 158 159 160 161 162 |
# File 'app/models/blog_post.rb', line 157 def preview_current post = reverse_chronological.first post = new :title => "No Posts Yet", :content => "There are no blog posts yet." unless post post.for_preview = true post end |
.preview_from_url_title(url_title) ⇒ Object
182 183 184 185 186 187 |
# File 'app/models/blog_post.rb', line 182 def preview_from_url_title(url_title) post = where(:url_title => url_title).first raise ActiveRecord::RecordNotFound.new("No records found!") unless post post.for_preview = true post end |
.previous_post(post) ⇒ Object
164 165 166 167 168 |
# File 'app/models/blog_post.rb', line 164 def previous_post(post) context = BlogPost context = posted unless post.for_preview context.where("blog_posts.posted_at < ?", post.posted_at).reverse_chronological.first end |
.search(query) ⇒ Object
108 109 110 |
# File 'app/models/blog_post.rb', line 108 def search(query) reverse_chronological.where "LOWER(title) LIKE :query OR LOWER(url_title) LIKE :query OR LOWER(content) LIKE :query OR LOWER(author) LIKE :query", :query => "%#{query.downcase}%" end |
.sitemap ⇒ Object
199 200 201 |
# File 'app/models/blog_post.rb', line 199 def sitemap posted.reverse_chronological.all end |
.update_post(params) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'app/models/blog_post.rb', line 117 def update_post(params) post = find params[:id].to_i post.ensure_unlocked! original_url_title = post.url_title post.title = params[:title] post.url_title = url_titlize params[:title] post. = params[:author] post.content = params[:content] post.locked = true post.post_from params post.save! post end |
.url_titlize(title) ⇒ Object
131 132 133 |
# File 'app/models/blog_post.rb', line 131 def url_titlize(title) title.downcase.gsub(" ", "-").gsub(/[^-_a-z0-9]/, "") end |
Instance Method Details
#edit_url ⇒ Object
28 29 30 |
# File 'app/models/blog_post.rb', line 28 def edit_url "/admin/blog/#{id}/edit" end |
#first_post ⇒ Object
32 33 34 35 36 |
# File 'app/models/blog_post.rb', line 32 def first_post return @first_post if @first_post_retrieved @first_post_retrieved = true @first_post ||= BlogPost.first_post end |
#first_url_title ⇒ Object
38 39 40 |
# File 'app/models/blog_post.rb', line 38 def first_url_title first_post.url_title if first_post end |
#newest? ⇒ Boolean
66 67 68 |
# File 'app/models/blog_post.rb', line 66 def newest? id == newest_id end |
#newest_id ⇒ Object
54 55 56 |
# File 'app/models/blog_post.rb', line 54 def newest_id newest_post.id if newest_post end |
#newest_post ⇒ Object
42 43 44 45 46 |
# File 'app/models/blog_post.rb', line 42 def newest_post return @newest_post if @newest_post_retrieved @newest_post_retrieved = true @newest_post ||= BlogPost.newest_post end |
#newest_preview? ⇒ Boolean
70 71 72 |
# File 'app/models/blog_post.rb', line 70 def newest_preview? id == newest_preview_id end |
#newest_preview_id ⇒ Object
58 59 60 |
# File 'app/models/blog_post.rb', line 58 def newest_preview_id newest_preview_post.id if newest_preview_post end |
#newest_preview_post ⇒ Object
48 49 50 51 52 |
# File 'app/models/blog_post.rb', line 48 def newest_preview_post return @newest_preview_post if @newest_preview_post_retrieved @newest_preview_post_retrieved = true @newest_preview_post ||= BlogPost.newest_preview_post end |
#next_post ⇒ Object
86 87 88 89 90 91 92 93 |
# File 'app/models/blog_post.rb', line 86 def next_post return @next_post if @next_post_retrieved if posted_at @next_post_retrieved = true @next_post ||= BlogPost.next_post(self) end end |
#next_url_title ⇒ Object
99 100 101 |
# File 'app/models/blog_post.rb', line 99 def next_url_title next_post.url_title if next_post end |
#oldest? ⇒ Boolean
62 63 64 |
# File 'app/models/blog_post.rb', line 62 def oldest? url_title == first_url_title end |
#prev_url_title ⇒ Object
95 96 97 |
# File 'app/models/blog_post.rb', line 95 def prev_url_title previous_post.url_title if previous_post end |
#preview_url ⇒ Object
24 25 26 |
# File 'app/models/blog_post.rb', line 24 def preview_url "/admin/blog/#{url_title}/preview" end |
#previous_post ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 |
# File 'app/models/blog_post.rb', line 74 def previous_post return @previous_post if @previous_post_retrieved if posted_at @previous_post_retrieved = true @previous_post ||= BlogPost.previous_post(self) elsif for_preview @previous_post_retrieved = true @previous_post ||= BlogPost.preview_current end end |
#real? ⇒ Boolean
103 104 105 |
# File 'app/models/blog_post.rb', line 103 def real? url_title end |
#to_backup_entries ⇒ Object
14 15 16 17 18 |
# File 'app/models/blog_post.rb', line 14 def to_backup_entries post = Backup::Entry.new id, url_title, "markdown", content = Backup::Entry.new id, "#{url_title}.meta", "json", to_json(:except => :content) [post, ] end |
#url ⇒ Object
20 21 22 |
# File 'app/models/blog_post.rb', line 20 def url "/blog/#{url_title}" end |