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
146 147 148 |
# File 'app/models/blog_post.rb', line 146 def all_columns select "blog_posts.*" end |
.archives(preview = false) ⇒ Object
188 189 190 191 192 |
# File 'app/models/blog_post.rb', line 188 def archives(preview = false) context = BlogPost context = posted unless preview context.reverse_chronological.select([:url_title, :title, :posted_at]).to_a end |
.create_post(current_user, params) ⇒ Object
111 112 113 114 |
# File 'app/models/blog_post.rb', line 111 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
150 151 152 153 154 |
# File 'app/models/blog_post.rb', line 150 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
194 195 196 |
# File 'app/models/blog_post.rb', line 194 def feed posted.reverse_chronological.take 10 end |
.first_post ⇒ Object
142 143 144 |
# File 'app/models/blog_post.rb', line 142 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
175 176 177 178 179 |
# File 'app/models/blog_post.rb', line 175 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
138 139 140 |
# File 'app/models/blog_post.rb', line 138 def newest_post posted.reverse_chronological.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.") end |
.newest_preview_post ⇒ Object
134 135 136 |
# File 'app/models/blog_post.rb', line 134 def newest_preview_post reverse_chronological.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.") end |
.next_post(post) ⇒ Object
169 170 171 172 173 |
# File 'app/models/blog_post.rb', line 169 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
156 157 158 159 160 161 |
# File 'app/models/blog_post.rb', line 156 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
181 182 183 184 185 186 |
# File 'app/models/blog_post.rb', line 181 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
163 164 165 166 167 |
# File 'app/models/blog_post.rb', line 163 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
107 108 109 |
# File 'app/models/blog_post.rb', line 107 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
198 199 200 |
# File 'app/models/blog_post.rb', line 198 def sitemap posted.reverse_chronological.to_a end |
.update_post(params) ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'app/models/blog_post.rb', line 116 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
130 131 132 |
# File 'app/models/blog_post.rb', line 130 def url_titlize(title) title.downcase.gsub(" ", "-").gsub(/[^-_a-z0-9]/, "") end |
Instance Method Details
#edit_url ⇒ Object
27 28 29 |
# File 'app/models/blog_post.rb', line 27 def edit_url "/admin/blog/#{id}/edit" end |
#first_post ⇒ Object
31 32 33 34 35 |
# File 'app/models/blog_post.rb', line 31 def first_post return @first_post if @first_post_retrieved @first_post_retrieved = true @first_post ||= BlogPost.first_post end |
#first_url_title ⇒ Object
37 38 39 |
# File 'app/models/blog_post.rb', line 37 def first_url_title first_post.url_title if first_post end |
#newest? ⇒ Boolean
65 66 67 |
# File 'app/models/blog_post.rb', line 65 def newest? id == newest_id end |
#newest_id ⇒ Object
53 54 55 |
# File 'app/models/blog_post.rb', line 53 def newest_id newest_post.id if newest_post end |
#newest_post ⇒ Object
41 42 43 44 45 |
# File 'app/models/blog_post.rb', line 41 def newest_post return @newest_post if @newest_post_retrieved @newest_post_retrieved = true @newest_post ||= BlogPost.newest_post end |
#newest_preview? ⇒ Boolean
69 70 71 |
# File 'app/models/blog_post.rb', line 69 def newest_preview? id == newest_preview_id end |
#newest_preview_id ⇒ Object
57 58 59 |
# File 'app/models/blog_post.rb', line 57 def newest_preview_id newest_preview_post.id if newest_preview_post end |
#newest_preview_post ⇒ Object
47 48 49 50 51 |
# File 'app/models/blog_post.rb', line 47 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
85 86 87 88 89 90 91 92 |
# File 'app/models/blog_post.rb', line 85 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
98 99 100 |
# File 'app/models/blog_post.rb', line 98 def next_url_title next_post.url_title if next_post end |
#oldest? ⇒ Boolean
61 62 63 |
# File 'app/models/blog_post.rb', line 61 def oldest? url_title == first_url_title end |
#prev_url_title ⇒ Object
94 95 96 |
# File 'app/models/blog_post.rb', line 94 def prev_url_title previous_post.url_title if previous_post end |
#preview_url ⇒ Object
23 24 25 |
# File 'app/models/blog_post.rb', line 23 def preview_url "/admin/blog/#{url_title}/preview" end |
#previous_post ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 |
# File 'app/models/blog_post.rb', line 73 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
102 103 104 |
# File 'app/models/blog_post.rb', line 102 def real? url_title end |
#to_backup_entries ⇒ Object
13 14 15 16 17 |
# File 'app/models/blog_post.rb', line 13 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
19 20 21 |
# File 'app/models/blog_post.rb', line 19 def url "/blog/#{url_title}" end |