cartoonist-blog 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
- class BlogAdminController < CartoonistController
1
+ class Admin::BlogController < CartoonistController
2
2
  helper :blog
3
3
  before_filter :preview!, :only => [:preview]
4
4
  before_filter :ensure_ssl!
@@ -9,7 +9,7 @@ class BlogAdminController < CartoonistController
9
9
  begin
10
10
  @post = BlogPost.preview_from_url_title params[:id]
11
11
  rescue
12
- redirect_to "/blog_admin/preview"
12
+ redirect_to "/admin/blog/preview"
13
13
  end
14
14
 
15
15
  if @post.posted_at
@@ -33,34 +33,34 @@ class BlogAdminController < CartoonistController
33
33
 
34
34
  def index
35
35
  @unposted = BlogPost.unposted.chronological
36
- @posted = BlogPost.posted.reversed
36
+ @posted = BlogPost.posted.reverse_chronological
37
37
  end
38
38
 
39
39
  def create
40
40
  post = BlogPost.create_post current_user, params
41
- redirect_to "/blog_admin/#{post.id}/edit"
41
+ redirect_to "/admin/blog/#{post.id}/edit"
42
42
  end
43
43
 
44
44
  def edit
45
45
  @post = BlogPost.find params[:id].to_i
46
46
  rescue ActiveRecord::RecordNotFound
47
- redirect_to "/blog_admin/new"
47
+ redirect_to "/admin/blog/new"
48
48
  end
49
49
 
50
50
  def update
51
51
  post = BlogPost.update_post params
52
- redirect_to "/blog_admin/#{post.id}/edit"
52
+ redirect_to "/admin/blog/#{post.id}/edit"
53
53
  end
54
54
 
55
55
  def lock
56
56
  post = BlogPost.find params[:id].to_i
57
57
  post.lock!
58
- redirect_to "/blog_admin/#{post.id}/edit"
58
+ redirect_to "/admin/blog/#{post.id}/edit"
59
59
  end
60
60
 
61
61
  def unlock
62
62
  post = BlogPost.find params[:id].to_i
63
63
  post.unlock!
64
- redirect_to "/blog_admin/#{post.id}/edit"
64
+ redirect_to "/admin/blog/#{post.id}/edit"
65
65
  end
66
66
  end
@@ -1,4 +1,4 @@
1
- module BlogAdminHelper
1
+ module Admin::BlogHelper
2
2
  def lock_toggle_target
3
3
  if @post.locked
4
4
  "unlock"
@@ -1,7 +1,7 @@
1
1
  module BlogHelper
2
2
  def blog_current_url
3
3
  if preview?
4
- "/blog_admin/preview"
4
+ "/admin/blog/preview"
5
5
  else
6
6
  "/blog"
7
7
  end
@@ -9,7 +9,7 @@ module BlogHelper
9
9
 
10
10
  def blog_post_url(url_title)
11
11
  if preview?
12
- "/blog_admin/#{url_title}/preview"
12
+ "/admin/blog/#{url_title}/preview"
13
13
  else
14
14
  "/blog/#{url_title}"
15
15
  end
@@ -1,7 +1,21 @@
1
1
  class BlogPost < ActiveRecord::Base
2
- include Tweetable
2
+ include Postable
3
+ include Entity
4
+ entity_type :blog
5
+ entity_global_url "/blog"
6
+ entity_url &:url
7
+ entity_edit_url &:edit_url
8
+ entity_description &:title
3
9
  attr_accessor :for_preview
4
- attr_accessible :title, :url_title, :author, :posted_at, :content, :tweet, :tweeted_at, :locked
10
+ attr_accessible :title, :url_title, :author, :posted_at, :content, :locked
11
+
12
+ def url
13
+ "/blog/#{url_title}"
14
+ end
15
+
16
+ def edit_url
17
+ "/admin/blog/#{id}/edit"
18
+ end
5
19
 
6
20
  def lock!
7
21
  self.locked = true
@@ -13,22 +27,6 @@ class BlogPost < ActiveRecord::Base
13
27
  save!
14
28
  end
15
29
 
16
- def posted?
17
- posted_at && posted_at <= Time.now
18
- end
19
-
20
- def expected_tweet_time
21
- posted_at
22
- end
23
-
24
- def formatted_posted_at(default_msg = "not yet posted")
25
- if posted_at
26
- posted_at.localtime.strftime "%-m/%-d/%Y at %-l:%M %P"
27
- else
28
- default_msg
29
- end
30
- end
31
-
32
30
  def first_post
33
31
  return @first_post if @first_post_retrieved
34
32
  @first_post_retrieved = true
@@ -104,32 +102,22 @@ class BlogPost < ActiveRecord::Base
104
102
  url_title
105
103
  end
106
104
 
107
- def absolute_url
108
- "http://#{Setting[:domain]}/blog/#{url_title}"
109
- end
110
-
111
105
  class << self
112
106
  def create_post(current_user, params)
113
107
  url_title = url_titlize params[:title]
114
- create :title => params[:title], :url_title => url_title, :content => params[:content], :author => current_user.name, :tweet => tweet_message(url_title), :locked => true
108
+ create :title => params[:title], :url_title => url_title, :content => params[:content], :author => current_user.name, :locked => true
115
109
  end
116
110
 
117
111
  def update_post(params)
118
112
  post = find params[:id].to_i
119
113
  raise "Cannot update locked post!" if post.locked
120
- original_tweet = post.tweet
121
114
  original_url_title = post.url_title
122
115
  post.title = params[:title]
123
116
  post.url_title = url_titlize params[:title]
124
117
  post.author = params[:author]
125
- post.tweet = params[:tweet]
126
118
  post.content = params[:content]
127
119
  post.locked = true
128
120
 
129
- if original_tweet == post.tweet && original_url_title != post.url_title && !post.tweeted?
130
- post.tweet = tweet_message post.url_title
131
- end
132
-
133
121
  if params[:post_now].present? && !post.posted?
134
122
  post.posted_at = Time.now
135
123
  elsif params[:post_in_hour].present? && !post.posted?
@@ -154,45 +142,29 @@ class BlogPost < ActiveRecord::Base
154
142
  end
155
143
 
156
144
  def newest_preview_post
157
- reversed.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.")
145
+ reverse_chronological.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.")
158
146
  end
159
147
 
160
148
  def newest_post
161
- posted.reversed.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.")
149
+ posted.reverse_chronological.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.")
162
150
  end
163
151
 
164
152
  def first_post
165
153
  posted.chronological.first || new(:title => "No Posts Yet", :content => "There are no blog posts yet.")
166
154
  end
167
155
 
168
- def posted
169
- where "blog_posts.posted_at IS NOT NULL AND blog_posts.posted_at <= ?", Time.now
170
- end
171
-
172
- def unposted
173
- where "blog_posts.posted_at IS NULL OR blog_posts.posted_at > ?", Time.now
174
- end
175
-
176
- def chronological
177
- order "blog_posts.posted_at ASC"
178
- end
179
-
180
- def reversed
181
- order "blog_posts.posted_at DESC"
182
- end
183
-
184
156
  def all_columns
185
157
  select "blog_posts.*"
186
158
  end
187
159
 
188
160
  def current
189
- post = posted.reversed.first
161
+ post = posted.reverse_chronological.first
190
162
  post = new :title => "No Posts Yet", :content => "There are no blog posts yet." unless post
191
163
  post
192
164
  end
193
165
 
194
166
  def preview_current
195
- post = reversed.first
167
+ post = reverse_chronological.first
196
168
  post = new :title => "No Posts Yet", :content => "There are no blog posts yet." unless post
197
169
  post.for_preview = true
198
170
  post
@@ -201,7 +173,7 @@ class BlogPost < ActiveRecord::Base
201
173
  def previous_post(post)
202
174
  context = BlogPost
203
175
  context = posted unless post.for_preview
204
- context.where("blog_posts.posted_at < ?", post.posted_at).reversed.first
176
+ context.where("blog_posts.posted_at < ?", post.posted_at).reverse_chronological.first
205
177
  end
206
178
 
207
179
  def next_post(post)
@@ -224,26 +196,15 @@ class BlogPost < ActiveRecord::Base
224
196
  end
225
197
 
226
198
  def archives
227
- posted.reversed.select([:url_title, :title, :posted_at]).all
228
- end
229
-
230
- def untweeted
231
- posted.where(:tweeted_at => nil).all
199
+ posted.reverse_chronological.select([:url_title, :title, :posted_at]).all
232
200
  end
233
201
 
234
202
  def feed
235
- posted.reversed.take 10
203
+ posted.reverse_chronological.take 10
236
204
  end
237
205
 
238
206
  def sitemap
239
- posted.reversed.all
240
- end
241
-
242
- private
243
- def tweet_message(url_title)
244
- tweet = "New blog post: http://#{Setting[:domain]}/blog/#{url_title}"
245
- tweet = "New blog post: http://#{Setting[:domain]}/blog" if tweet.length > 140
246
- tweet
207
+ posted.reverse_chronological.all
247
208
  end
248
209
  end
249
210
  end
@@ -1,14 +1,19 @@
1
+ <% Cartoonist::Entity.hooks_with(:edit_entity_before_partial).each do |hook| %>
2
+ <%= render :partial => hook.edit_entity_before_partial, :locals => { :entity => @post } %>
3
+ <hr />
4
+ <% end %>
5
+
1
6
  <p>
2
- <a href="/blog_admin/<%= @post.url_title %>/preview">Preview this post</a>
7
+ <a href="/admin/blog/<%= @post.url_title %>/preview">Preview this post</a>
3
8
  </p>
4
9
 
5
10
  <p>
6
- <%= form_tag "/blog_admin/#{@post.id}/#{lock_toggle_target}", :method => :post do %>
11
+ <%= form_tag "/admin/blog/#{@post.id}/#{lock_toggle_target}", :method => :post do %>
7
12
  <input type="submit" value="<%= lock_toggle_target %>" />
8
13
  <% end %>
9
14
  </p>
10
15
 
11
- <%= form_tag "/blog_admin/#{@post.id}", :method => :put do %>
16
+ <%= form_tag "/admin/blog/#{@post.id}", :method => :put do %>
12
17
  <p>
13
18
  <label><input type="checkbox" name="posted" value="true" <%= checked="checked".html_safe if @post.posted_at %> <%= lock_disabled %> />Posted at</label>
14
19
  <input type="text" name="posted_at_date" value="<%= format_posted_at "%Y-%m-%d" %>" <%= lock_disabled %> />
@@ -44,15 +49,6 @@
44
49
  <input type="text" name="author" size="20" value="<%= @post.author %>" <%= lock_disabled %> />
45
50
  </p>
46
51
 
47
- <p>
48
- Tweet:
49
- <% if @post.tweeted_at %>
50
- <em>(sent <%= @post.tweeted_at.strftime "%-m/%-d/%Y %-l:%M %P" %>)</em>
51
- <% end %>
52
- <br />
53
- <textarea name="tweet" rows="2" cols="100" tabindex="5" <%= lock_disabled %>><%= @post.tweet %></textarea>
54
- </p>
55
-
56
52
  <p>
57
53
  <input type="submit" value="Save" <%= lock_disabled %> />
58
54
  <input type="button" value="Preview" class="preview-content" />
@@ -83,7 +79,7 @@
83
79
  $(".preview-content").click(function() {
84
80
  var $this = $(this).attr("disabled", "disabled");
85
81
  $.ajax({
86
- url: "/blog_admin/preview_content",
82
+ url: "/admin/blog/preview_content",
87
83
  type: "post",
88
84
  data: {
89
85
  authenticity_token: $("form input[name='authenticity_token']").val(),
@@ -103,3 +99,8 @@
103
99
  });
104
100
  });
105
101
  <% end %>
102
+
103
+ <% Cartoonist::Entity.hooks_with(:edit_entity_after_partial).each do |hook| %>
104
+ <hr />
105
+ <%= render :partial => hook.edit_entity_after_partial, :locals => { :entity => @post } %>
106
+ <% end %>
@@ -4,8 +4,8 @@
4
4
  <% @unposted.each do |post| %>
5
5
  <li>
6
6
  <%= post.formatted_posted_at "" %>
7
- <a href="/blog_admin/<%= post.id %>/edit"><%= post.title %></a>
8
- (<a href="/blog_admin/<%= post.url_title %>/preview"><%= t "admin.blog.index.preview" %></a>)
7
+ <a href="/admin/blog/<%= post.id %>/edit"><%= post.title %></a>
8
+ (<a href="/admin/blog/<%= post.url_title %>/preview"><%= t "admin.blog.index.preview" %></a>)
9
9
  </li>
10
10
  <% end %>
11
11
  </ul>
@@ -16,8 +16,8 @@
16
16
  <% @posted.each do |post| %>
17
17
  <li>
18
18
  <%= post.formatted_posted_at "" %>
19
- <a href="/blog_admin/<%= post.id %>/edit"><%= post.title %></a>
20
- (<a href="/blog_admin/<%= post.url_title %>/preview"><%= t "admin.blog.index.preview" %></a>)
19
+ <a href="/admin/blog/<%= post.id %>/edit"><%= post.title %></a>
20
+ (<a href="/admin/blog/<%= post.url_title %>/preview"><%= t "admin.blog.index.preview" %></a>)
21
21
  </li>
22
22
  <% end %>
23
23
  </ul>
@@ -1,4 +1,4 @@
1
- <%= form_tag "/blog_admin", :method => :post do %>
1
+ <%= form_tag "/admin/blog", :method => :post do %>
2
2
  <p>
3
3
  Title: <input type="text" name="title" autofocus="autofocus" size="100" /><br />
4
4
  </p>
@@ -25,7 +25,7 @@
25
25
  $(".preview-content").click(function() {
26
26
  var $this = $(this).attr("disabled", "disabled");
27
27
  $.ajax({
28
- url: "/blog_admin/preview_content",
28
+ url: "/admin/blog/preview_content",
29
29
  type: "post",
30
30
  data: {
31
31
  authenticity_token: $("form input[name='authenticity_token']").val(),
@@ -1,8 +1,8 @@
1
1
  <% content_for :subtabs do %>
2
2
  <a class="subtab" href="/blog"><%= t "admin.blog.layout.latest" %></a>
3
- <a class="subtab" href="/blog_admin"><%= t "admin.blog.layout.list" %></a>
4
- <a class="subtab" href="/blog_admin/new"><%= t "admin.blog.layout.new" %></a>
5
- <a class="subtab" href="/blog_admin/preview"><%= t "admin.blog.layout.preview" %></a>
3
+ <a class="subtab" href="/admin/blog"><%= t "admin.blog.layout.list" %></a>
4
+ <a class="subtab" href="/admin/blog/new"><%= t "admin.blog.layout.new" %></a>
5
+ <a class="subtab" href="/admin/blog/preview"><%= t "admin.blog.layout.preview" %></a>
6
6
  <% end %>
7
7
 
8
8
  <% content_for :page_title, t("admin.blog.layout.section") %>
@@ -4,9 +4,9 @@
4
4
 
5
5
  <% content_for :small_buttons do %>
6
6
  <% if @post.real? %>
7
- <a class="facebook" href="https://www.facebook.com/sharer.php?u=<%= u @post.absolute_url %>&t=<%= u t("blog.layout.facebook_text_message", :title => @post.title) %>" title="<%= t "blog.layout.facebook_title" %>"><%= t "blog.layout.facebook" %></a>
8
- <a class="twitter" href="https://twitter.com/intent/tweet?source=<%= u Setting[:domain] %>&text=<%= u t("blog.layout.twitter_text_message", :url => @post.absolute_url) %>" title="<%= t "blog.layout.twitter_title" %>"><%= t "blog.layout.twitter" %></a>
9
- <a class="google-plus" href="https://plus.google.com/share?url=<%= u @post.absolute_url %>" title="<%= t "blog.layout.google_plus_title" %>"><%= t "blog.layout.google_plus" %></a>
7
+ <a class="facebook" href="https://www.facebook.com/sharer.php?u=<%= u @post.entity_absolute_url %>&t=<%= u t("blog.layout.facebook_text_message", :title => @post.title) %>" title="<%= t "blog.layout.facebook_title" %>"><%= t "blog.layout.facebook" %></a>
8
+ <a class="twitter" href="https://twitter.com/intent/tweet?source=<%= u Setting[:domain] %>&text=<%= u t("blog.layout.twitter_text_message", :url => @post.entity_absolute_url) %>" title="<%= t "blog.layout.twitter_title" %>"><%= t "blog.layout.twitter" %></a>
9
+ <a class="google-plus" href="https://plus.google.com/share?url=<%= u @post.entity_absolute_url %>" title="<%= t "blog.layout.google_plus_title" %>"><%= t "blog.layout.google_plus" %></a>
10
10
  <a class="rss" href="<%= rss_path %>" title="<%= rss_title %>"><%= t "blog.layout.rss" %></a>
11
11
  <% end %>
12
12
  <% end %>
@@ -15,6 +15,8 @@ en:
15
15
  tab:
16
16
  blog: Blog
17
17
  cartoonist:
18
+ entity:
19
+ blog: Blog Post
18
20
  layout:
19
21
  navigation:
20
22
  blog: Blog
@@ -6,8 +6,6 @@ class CreateBlogPosts < ActiveRecord::Migration
6
6
  t.string :author, :null => false
7
7
  t.datetime :posted_at
8
8
  t.text :content, :null => false
9
- t.string :tweet, :null => false, :length => 140
10
- t.datetime :tweeted_at
11
9
  t.boolean :locked, :null => false, :default => false
12
10
  t.timestamps
13
11
  end
@@ -1,8 +1,9 @@
1
1
  module CartoonistBlog
2
2
  class Engine < ::Rails::Engine
3
- Cartoonist::Admin::Tab.add :blog, :url => "/blog_admin", :order => 1
3
+ Cartoonist::Entity.add :blog, "BlogPost"
4
+ Cartoonist::Admin::Tab.add :blog, :url => "/admin/blog", :order => 1
4
5
  Cartoonist::RootPath.add :blog, "blog#index"
5
- Cartoonist::Navigation::Link.add :url => "/blog", :preview_url => "/blog_admin/preview", :class => "blog", :label => "cartoonist.layout.navigation.blog", :order => 1
6
+ Cartoonist::Navigation::Link.add :url => "/blog", :preview_url => "/admin/blog/preview", :class => "blog", :label => "cartoonist.layout.navigation.blog", :order => 1
6
7
  Cartoonist::Migration.add_for self
7
8
 
8
9
  Cartoonist::Backup.for :blog_posts do
@@ -32,16 +33,18 @@ module CartoonistBlog
32
33
  end
33
34
  end
34
35
 
35
- resources :blog_admin do
36
- member do
37
- post "lock"
38
- get "preview"
39
- post "unlock"
40
- end
41
-
42
- collection do
43
- get "preview"
44
- post "preview_content"
36
+ namespace :admin do
37
+ resources :blog do
38
+ member do
39
+ post "lock"
40
+ get "preview"
41
+ post "unlock"
42
+ end
43
+
44
+ collection do
45
+ get "preview"
46
+ post "preview_content"
47
+ end
45
48
  end
46
49
  end
47
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cartoonist-blog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,19 +9,19 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-24 00:00:00.000000000 Z
12
+ date: 2012-05-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cartoonist
16
- requirement: &14804380 !ruby/object:Gem::Requirement
16
+ requirement: &15371600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
20
20
  - !ruby/object:Gem::Version
21
- version: 0.0.8
21
+ version: 0.0.9
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *14804380
24
+ version_requirements: *15371600
25
25
  description: This core plugin for Cartoonist adds a simple blog.
26
26
  email: reasonnumber@gmail.com
27
27
  executables: []
@@ -29,20 +29,20 @@ extensions: []
29
29
  extra_rdoc_files: []
30
30
  files:
31
31
  - .gitignore
32
- - app/controllers/blog_admin_controller.rb
32
+ - app/controllers/admin/blog_controller.rb
33
33
  - app/controllers/blog_controller.rb
34
- - app/helpers/blog_admin_helper.rb
34
+ - app/helpers/admin/blog_helper.rb
35
35
  - app/helpers/blog_helper.rb
36
36
  - app/models/blog_feed.rb
37
37
  - app/models/blog_post.rb
38
+ - app/views/admin/blog/edit.html.erb
39
+ - app/views/admin/blog/index.html.erb
40
+ - app/views/admin/blog/new.html.erb
38
41
  - app/views/blog/archives.html.erb
39
42
  - app/views/blog/feed.rss.erb
40
43
  - app/views/blog/show.html.erb
41
- - app/views/blog_admin/edit.html.erb
42
- - app/views/blog_admin/index.html.erb
43
- - app/views/blog_admin/new.html.erb
44
+ - app/views/layouts/admin/blog.html.erb
44
45
  - app/views/layouts/blog.html.erb
45
- - app/views/layouts/blog_admin.html.erb
46
46
  - app/views/layouts/blog_archives.html.erb
47
47
  - cartoonist-blog.gemspec
48
48
  - config/locales/en.yml