acts_as_published 0.0.2.pre

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.
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: