acts_as_published 0.0.2.pre

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2012 Roberto Vásquez Angel
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,34 @@
1
+ == Acts as published
2
+
3
+ Gives you a boolean reader/writer for a published_at (timestamp) column.
4
+
5
+ == Installation
6
+
7
+ Add it to your Gemfile:
8
+
9
+ gem 'acts_as_published'
10
+
11
+ Install your bundle:
12
+
13
+ > bundle install
14
+
15
+ == Usage
16
+
17
+ You need a published_at:timestamp column
18
+
19
+ In your model:
20
+
21
+ class Post < ActiveRecord::Base
22
+ # acts as published
23
+ include ActsAsPublished::ActiveRecord
24
+ acts_as_published
25
+
26
+ # ...
27
+ end
28
+
29
+ == Scopes
30
+
31
+ You get following scopes:
32
+
33
+ Post.published
34
+ Post.unpublished
data/Rakefile ADDED
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'ActsAsPublished'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+
24
+
25
+
26
+ Bundler::GemHelper.install_tasks
27
+
28
+ require 'rake/testtask'
29
+
30
+ Rake::TestTask.new(:test) do |t|
31
+ t.libs << 'lib'
32
+ t.libs << 'test'
33
+ t.pattern = 'test/**/*_test.rb'
34
+ t.verbose = false
35
+ end
36
+
37
+
38
+ task :default => :test
@@ -0,0 +1,2 @@
1
+ de:
2
+
@@ -0,0 +1,2 @@
1
+ en:
2
+
@@ -0,0 +1,35 @@
1
+ module ActsAsPublished
2
+ module ActiveAdminHelper
3
+ def acts_as_published_actions
4
+ action_item :only => :show do
5
+ if resource.published?
6
+ link_to I18n.t('acts_as_published.actions.unpublish'), self.send(:"toggle_published_admin_#{resource.class.model_name.underscore.gsub("/", "_")}_path", resource)
7
+ else
8
+ link_to I18n.t('acts_as_published.actions.publish'), self.send(:"toggle_published_admin_#{resource.class.model_name.underscore.gsub("/", "_")}_path", resource)
9
+ end
10
+ end
11
+
12
+ member_action :toggle_published do
13
+ resource.toggle_published!
14
+ if resource.published?
15
+ redirect_to :back, :notice => I18n.t('acts_as_published.notices.published', :name => resource )
16
+ else
17
+ redirect_to :back, :notice => I18n.t('acts_as_published.notices.unpublished', :name => resource )
18
+ end
19
+ end
20
+ end
21
+
22
+ def acts_as_published_columns
23
+ column :published do |resource|
24
+ I18n.t(resource.published.to_s)
25
+ end
26
+ end
27
+
28
+ def acts_as_published_rows
29
+ row :published do |resource|
30
+ I18n.t(resource.published.to_s)
31
+ end
32
+ row :published_at
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,58 @@
1
+ module ActsAsPublished
2
+ module ActiveRecord
3
+ def self.included(klass)
4
+ klass.class_eval do
5
+ extend ClassMethods
6
+ include InstanceMethods
7
+ end
8
+ end
9
+
10
+ module ClassMethods
11
+ def acts_as_published
12
+ attr_accessible :published # , :published_at
13
+
14
+ def published
15
+ t = self.arel_table
16
+ where(t[:published_at].not_eq(nil))
17
+ end
18
+
19
+ def unpublished
20
+ t = self.arel_table
21
+ where(t[:published_at].eq(nil))
22
+ end
23
+ end
24
+ end
25
+
26
+ module InstanceMethods
27
+ def published
28
+ !!self.published_at
29
+ end
30
+ alias :published? :published
31
+
32
+ def published=(published)
33
+ if ::ActiveRecord::ConnectionAdapters::Column.value_to_boolean(published)
34
+ self.published_at = Time.zone.now # .to_date
35
+ # write_attribute(:published_at, Time.zone.now) # .to_date
36
+ else
37
+ self.published_at = nil
38
+ # write_attribute(:published_at, nil)
39
+ end
40
+ end
41
+
42
+ def toggle_published
43
+ if self.published_at.nil?
44
+ self.published_at = Time.zone.now # .to_date
45
+ # write_attribute(:published_at, Time.zone.now) # .to_date
46
+ else
47
+ self.published_at = nil
48
+ # write_attribute(:published_at, nil)
49
+ end
50
+ end
51
+
52
+ def toggle_published!
53
+ toggle_published
54
+ save!
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,3 @@
1
+ module ActsAsPublished
2
+ VERSION = '0.0.2.pre'
3
+ end
@@ -0,0 +1,4 @@
1
+ require 'acts_as_published/active_admin_helper'
2
+ require 'acts_as_published/active_record'
3
+
4
+ ActiveAdmin::ResourceDSL.send(:include, ActsAsPublished::ActiveAdminHelper) if defined?(ActiveAdmin::ResourceDSL)
metadata ADDED
@@ -0,0 +1,279 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_published
3
+ version: !ruby/object:Gem::Version
4
+ hash: 961915980
5
+ prerelease: 6
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ - pre
11
+ version: 0.0.2.pre
12
+ platform: ruby
13
+ authors:
14
+ - Roberto Vasquez Angel
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2012-08-18 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rails
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 1
30
+ segments:
31
+ - 3
32
+ - 2
33
+ - 7
34
+ version: 3.2.7
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: sqlite3
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: thin
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ type: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: yard
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :development
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: sass-rails
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ type: :development
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: coffee-rails
95
+ prerelease: false
96
+ requirement: &id006 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ type: :development
106
+ version_requirements: *id006
107
+ - !ruby/object:Gem::Dependency
108
+ name: capybara
109
+ prerelease: false
110
+ requirement: &id007 !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ hash: 3
116
+ segments:
117
+ - 0
118
+ version: "0"
119
+ type: :development
120
+ version_requirements: *id007
121
+ - !ruby/object:Gem::Dependency
122
+ name: rspec-rails
123
+ prerelease: false
124
+ requirement: &id008 !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ~>
128
+ - !ruby/object:Gem::Version
129
+ hash: 3
130
+ segments:
131
+ - 2
132
+ - 0
133
+ version: "2.0"
134
+ type: :development
135
+ version_requirements: *id008
136
+ - !ruby/object:Gem::Dependency
137
+ name: factory_girl_rails
138
+ prerelease: false
139
+ requirement: &id009 !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ~>
143
+ - !ruby/object:Gem::Version
144
+ hash: 15
145
+ segments:
146
+ - 1
147
+ - 0
148
+ version: "1.0"
149
+ type: :development
150
+ version_requirements: *id009
151
+ - !ruby/object:Gem::Dependency
152
+ name: ffaker
153
+ prerelease: false
154
+ requirement: &id010 !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ hash: 3
160
+ segments:
161
+ - 0
162
+ version: "0"
163
+ type: :development
164
+ version_requirements: *id010
165
+ - !ruby/object:Gem::Dependency
166
+ name: guard-rspec
167
+ prerelease: false
168
+ requirement: &id011 !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ hash: 3
174
+ segments:
175
+ - 0
176
+ version: "0"
177
+ type: :development
178
+ version_requirements: *id011
179
+ - !ruby/object:Gem::Dependency
180
+ name: guard-bundler
181
+ prerelease: false
182
+ requirement: &id012 !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ hash: 3
188
+ segments:
189
+ - 0
190
+ version: "0"
191
+ type: :development
192
+ version_requirements: *id012
193
+ - !ruby/object:Gem::Dependency
194
+ name: shoulda-matchers
195
+ prerelease: false
196
+ requirement: &id013 !ruby/object:Gem::Requirement
197
+ none: false
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ hash: 3
202
+ segments:
203
+ - 0
204
+ version: "0"
205
+ type: :development
206
+ version_requirements: *id013
207
+ - !ruby/object:Gem::Dependency
208
+ name: forgery
209
+ prerelease: false
210
+ requirement: &id014 !ruby/object:Gem::Requirement
211
+ none: false
212
+ requirements:
213
+ - - "="
214
+ - !ruby/object:Gem::Version
215
+ hash: 11
216
+ segments:
217
+ - 0
218
+ - 5
219
+ - 0
220
+ version: 0.5.0
221
+ type: :development
222
+ version_requirements: *id014
223
+ description: Acts as published beahviour for active record models.
224
+ email:
225
+ - roberto@vasquez-angel.de
226
+ executables: []
227
+
228
+ extensions: []
229
+
230
+ extra_rdoc_files: []
231
+
232
+ files:
233
+ - config/locales/acts_as_published.de.yml
234
+ - config/locales/acts_as_published.en.yml
235
+ - lib/acts_as_published/active_admin_helper.rb
236
+ - lib/acts_as_published/version.rb
237
+ - lib/acts_as_published/active_record.rb
238
+ - lib/acts_as_published.rb
239
+ - MIT-LICENSE
240
+ - Rakefile
241
+ - README.rdoc
242
+ homepage: https://github.com/robotex82/acts_as_published
243
+ licenses: []
244
+
245
+ post_install_message:
246
+ rdoc_options: []
247
+
248
+ require_paths:
249
+ - lib
250
+ required_ruby_version: !ruby/object:Gem::Requirement
251
+ none: false
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ hash: 3
256
+ segments:
257
+ - 0
258
+ version: "0"
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ none: false
261
+ requirements:
262
+ - - ">"
263
+ - !ruby/object:Gem::Version
264
+ hash: 25
265
+ segments:
266
+ - 1
267
+ - 3
268
+ - 1
269
+ version: 1.3.1
270
+ requirements: []
271
+
272
+ rubyforge_project:
273
+ rubygems_version: 1.8.24
274
+ signing_key:
275
+ specification_version: 3
276
+ summary: Acts as published beahviour for active record models.
277
+ test_files: []
278
+
279
+ has_rdoc: