cartoonist-blog 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,8 +37,7 @@ class BlogAdminController < CartoonistController
37
37
  end
38
38
 
39
39
  def create
40
- url_title = BlogPost.url_titlize params[:title]
41
- post = BlogPost.create :title => params[:title], :url_title => url_title, :content => params[:content], :author => current_user.name, :tweet => tweet_message(url_title), :locked => true
40
+ post = BlogPost.create_post current_user, params
42
41
  redirect_to "/blog_admin/#{post.id}/edit"
43
42
  end
44
43
 
@@ -49,54 +48,19 @@ class BlogAdminController < CartoonistController
49
48
  end
50
49
 
51
50
  def update
52
- post = BlogPost.find params[:id].to_i
53
- raise "Cannot update locked post!" if post.locked
54
- original_tweet = post.tweet
55
- original_url_title = post.url_title
56
- post.title = params[:title]
57
- post.url_title = BlogPost.url_titlize params[:title]
58
- post.author = params[:author]
59
- post.tweet = params[:tweet]
60
- post.content = params[:content]
61
- post.locked = true
62
-
63
- if original_tweet == post.tweet && original_url_title != post.url_title && !post.tweeted?
64
- post.tweet = tweet_message post.url_title
65
- end
66
-
67
- if params[:posted] && params[:posted_at_date].present?
68
- time = "#{params[:posted_at_date]} #{params[:posted_at_hour]}:#{params[:posted_at_minute]} #{params[:posted_at_meridiem]}"
69
- time = DateTime.parse time
70
- time = Time.local time.year, time.month, time.day, time.hour, time.min
71
- post.posted_at = time
72
- elsif params[:posted]
73
- post.posted_at = 1.hour.from_now
74
- else
75
- post.posted_at = nil
76
- end
77
-
78
- post.save!
51
+ post = BlogPost.update_post params
79
52
  redirect_to "/blog_admin/#{post.id}/edit"
80
53
  end
81
54
 
82
55
  def lock
83
56
  post = BlogPost.find params[:id].to_i
84
- post.locked = true
85
- post.save!
57
+ post.lock!
86
58
  redirect_to "/blog_admin/#{post.id}/edit"
87
59
  end
88
60
 
89
61
  def unlock
90
62
  post = BlogPost.find params[:id].to_i
91
- post.locked = false
92
- post.save!
63
+ post.unlock!
93
64
  redirect_to "/blog_admin/#{post.id}/edit"
94
65
  end
95
-
96
- private
97
- def tweet_message(url_title)
98
- tweet = "New blog post: http://#{Setting[:domain]}/blog/#{url_title}"
99
- tweet = "New blog post: http://#{Setting[:domain]}/blog" if tweet.length > 140
100
- tweet
101
- end
102
66
  end
@@ -13,6 +13,12 @@ module BlogAdminHelper
13
13
  end
14
14
  end
15
15
 
16
+ def post_lock_disabled
17
+ if @post.locked || @post.posted?
18
+ 'disabled="disabled"'.html_safe
19
+ end
20
+ end
21
+
16
22
  def format_posted_at(fmt)
17
23
  if @post && @post.posted_at
18
24
  @post.posted_at.localtime.strftime fmt
@@ -3,6 +3,20 @@ class BlogPost < ActiveRecord::Base
3
3
  attr_accessor :for_preview
4
4
  attr_accessible :title, :url_title, :author, :posted_at, :content, :tweet, :tweeted_at, :locked
5
5
 
6
+ def lock!
7
+ self.locked = true
8
+ save!
9
+ end
10
+
11
+ def unlock!
12
+ self.locked = false
13
+ save!
14
+ end
15
+
16
+ def posted?
17
+ posted_at && posted_at <= Time.now
18
+ end
19
+
6
20
  def expected_tweet_time
7
21
  posted_at
8
22
  end
@@ -95,6 +109,46 @@ class BlogPost < ActiveRecord::Base
95
109
  end
96
110
 
97
111
  class << self
112
+ def create_post(current_user, params)
113
+ 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
115
+ end
116
+
117
+ def update_post(params)
118
+ post = find params[:id].to_i
119
+ raise "Cannot update locked post!" if post.locked
120
+ original_tweet = post.tweet
121
+ original_url_title = post.url_title
122
+ post.title = params[:title]
123
+ post.url_title = url_titlize params[:title]
124
+ post.author = params[:author]
125
+ post.tweet = params[:tweet]
126
+ post.content = params[:content]
127
+ post.locked = true
128
+
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
+ if params[:post_now].present? && !post.posted?
134
+ post.posted_at = Time.now
135
+ elsif params[:post_in_hour].present? && !post.posted?
136
+ post.posted_at = 1.hour.from_now
137
+ elsif params[:posted] && params[:posted_at_date].present?
138
+ time = "#{params[:posted_at_date]} #{params[:posted_at_hour]}:#{params[:posted_at_minute]} #{params[:posted_at_meridiem]}"
139
+ time = DateTime.parse time
140
+ time = Time.local time.year, time.month, time.day, time.hour, time.min
141
+ post.posted_at = time
142
+ elsif params[:posted]
143
+ post.posted_at = 1.hour.from_now
144
+ else
145
+ post.posted_at = nil
146
+ end
147
+
148
+ post.save!
149
+ post
150
+ end
151
+
98
152
  def url_titlize(title)
99
153
  title.downcase.gsub(" ", "-").gsub(/[^-_a-z0-9]/, "")
100
154
  end
@@ -184,5 +238,12 @@ class BlogPost < ActiveRecord::Base
184
238
  def sitemap
185
239
  posted.reversed.all
186
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
247
+ end
187
248
  end
188
249
  end
@@ -26,6 +26,8 @@
26
26
  <option value="am" <%= selected "am", format_posted_at("%P") %>>am</option>
27
27
  <option value="pm" <%= selected "pm", format_posted_at("%P") %>>pm</option>
28
28
  </select>
29
+ <input type="submit" name="post_now" value="Post Now" <%= post_lock_disabled %> />
30
+ <input type="submit" name="post_in_hour" value="Post in an Hour" <%= post_lock_disabled %> />
29
31
  </p>
30
32
 
31
33
  <p>
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.7
4
+ version: 0.0.8
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-19 00:00:00.000000000 Z
12
+ date: 2012-04-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cartoonist
16
- requirement: &15495680 !ruby/object:Gem::Requirement
16
+ requirement: &14804380 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
20
20
  - !ruby/object:Gem::Version
21
- version: 0.0.7
21
+ version: 0.0.8
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *15495680
24
+ version_requirements: *14804380
25
25
  description: This core plugin for Cartoonist adds a simple blog.
26
26
  email: reasonnumber@gmail.com
27
27
  executables: []