on_the_spot 1.1.2 → 1.1.3
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.
- checksums.yaml +5 -5
- data/README.markdown +27 -1
- data/VERSION +1 -1
- data/lib/on_the_spot/controller_extension.rb +9 -3
- data/on_the_spot.gemspec +4 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 40b5d965c2d82d3af5910189c680a7b78ac758b4faddbcbac8724a173420b1bb
|
4
|
+
data.tar.gz: 9cb9cd5073ed51a6561b5878fda09b764a4c13f55dc7f568da2f7daed09dbc51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0396ab103978dd4f521c3fb477449a686fbef65e3488855b3f7f379e3f29fb73427b88e69ac9c38c2ced75c619faa09d404cfbd5bb0e0a2194d991ca8030af20'
|
7
|
+
data.tar.gz: 07eb52d9787e8ec4860cb62b6636ee3f2b967ca5b032e6efd42c3939c12dfd4df8f5f8f2925f7c30324d3819ecbc46afcd8d7ba594cbb22373afba620e0fa065
|
data/README.markdown
CHANGED
@@ -116,6 +116,11 @@ It should be as simple as that :)
|
|
116
116
|
|
117
117
|
## Detailed options
|
118
118
|
|
119
|
+
The `can_edit_on_the_spot` accepts options:
|
120
|
+
|
121
|
+
* `:is_allowed`: method-name to call to check if the update is allowed to be performed
|
122
|
+
* `:on_success`: method-name that is called when the update was succesfully performed, this could be used for audit-logging a.o.
|
123
|
+
|
119
124
|
The `on_the_spot_edit` also accepts options:
|
120
125
|
|
121
126
|
* `:type` : `:textarea`, `:select` or `:checkbox` (none means default edit)
|
@@ -134,6 +139,7 @@ The `on_the_spot_edit` also accepts options:
|
|
134
139
|
attempt to look up the raw value of the field to edit. This differs from the `:display_text` option, as this will also be called after update.
|
135
140
|
This supersedes the `:display_text` option.
|
136
141
|
* `:raw`: if set to true, evaluate the field value as raw HTML.
|
142
|
+
* `:onblur`: accepts `cancel`, `submit` or `ignore` changes the behavior of the onblur handler accordingly
|
137
143
|
|
138
144
|
|
139
145
|
For the texts: if a text is not specified, the default is taken from the `on_the_spot.en.yml` (or your current language).
|
@@ -178,7 +184,7 @@ When using `on_the_spot` together with `cancan`, you will have to explicitly exc
|
|
178
184
|
like so:
|
179
185
|
|
180
186
|
load_and_authorize_resource :except => [:update_attribute_on_the_spot, :get_attribute_on_the_spot]
|
181
|
-
|
187
|
+
|
182
188
|
The `load_and_authorize_resource` will try to find the object, based on the id in the parameters, but `on_the_spot` uses a different
|
183
189
|
encoding to store the object, field and id in one attribute. So if you exclude that, there will not be a problem.
|
184
190
|
|
@@ -196,6 +202,26 @@ In your controller write:
|
|
196
202
|
end
|
197
203
|
|
198
204
|
|
205
|
+
Note, there are two identical ways to add this: either you use the _old format_ : `can_edit_on_the_spot :method_name` or
|
206
|
+
you could use the new format: `can_edit_on_the_spot is_allowed: :check_access`. Both are identical
|
207
|
+
|
208
|
+
|
209
|
+
## Performing an action upon succesful update
|
210
|
+
|
211
|
+
If you want to perform some action upon succesfully updating a field,
|
212
|
+
you can specify a method to do just that.
|
213
|
+
|
214
|
+
|
215
|
+
In your controller write:
|
216
|
+
|
217
|
+
can_edit_on_the_spot on_success: :log_changes
|
218
|
+
|
219
|
+
protected
|
220
|
+
|
221
|
+
def log_changes(updated_object, field, value)
|
222
|
+
Rails.logger.debug("We updated #{updated_object.name} and set #{field} to #{value}")
|
223
|
+
end
|
224
|
+
|
199
225
|
|
200
226
|
## Example project
|
201
227
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.3
|
@@ -8,7 +8,10 @@ module OnTheSpot
|
|
8
8
|
# if this method is called inside a controller, the edit-on-the-spot
|
9
9
|
# controller action is added that will allow to edit fields in place
|
10
10
|
module ClassMethods
|
11
|
-
def can_edit_on_the_spot(
|
11
|
+
def can_edit_on_the_spot(options_or_check_access_method=nil)
|
12
|
+
check_access_method = options_or_check_access_method.is_a?(Hash) ? options_or_check_access_method[:is_allowed] : options_or_check_access_method
|
13
|
+
on_success_method = options_or_check_access_method.is_a?(Hash) ? options_or_check_access_method[:on_success] : nil
|
14
|
+
|
12
15
|
define_method :update_attribute_on_the_spot do
|
13
16
|
klass_name, field, id = params[:id].split('__')
|
14
17
|
select_data = params[:select_array]
|
@@ -17,7 +20,7 @@ module OnTheSpot
|
|
17
20
|
klass = klass_name.camelize.constantize
|
18
21
|
object = klass.find(id)
|
19
22
|
|
20
|
-
is_allowed =
|
23
|
+
is_allowed = check_access_method.present? ? self.send(check_access_method, object, field) : true
|
21
24
|
|
22
25
|
if is_allowed
|
23
26
|
saved = if klass.attribute_names.include?(field)
|
@@ -28,6 +31,9 @@ module OnTheSpot
|
|
28
31
|
object.save
|
29
32
|
end
|
30
33
|
if saved
|
34
|
+
if on_success_method.present?
|
35
|
+
self.send(on_success_method, object, field, params[:value])
|
36
|
+
end
|
31
37
|
if select_data.nil?
|
32
38
|
field_or_method = if display_method.present?
|
33
39
|
object.send(display_method)
|
@@ -53,7 +59,7 @@ module OnTheSpot
|
|
53
59
|
|
54
60
|
object = klass_name.camelize.constantize.find(id)
|
55
61
|
|
56
|
-
is_allowed =
|
62
|
+
is_allowed = check_access_method.present? ? self.send(check_access_method, object, field) : true
|
57
63
|
|
58
64
|
if is_allowed
|
59
65
|
render :plain => object.send(field)
|
data/on_the_spot.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: on_the_spot 1.1.
|
5
|
+
# stub: on_the_spot 1.1.3 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "on_the_spot".freeze
|
9
|
-
s.version = "1.1.
|
9
|
+
s.version = "1.1.3"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Nathan Van der Auwera".freeze]
|
14
|
-
s.date = "
|
14
|
+
s.date = "2019-10-21"
|
15
15
|
s.description = "Unobtrusive in place editing, using jEditable; only works in Rails 3".freeze
|
16
16
|
s.email = "nathan@dixis.com".freeze
|
17
17
|
s.extra_rdoc_files = [
|
@@ -84,7 +84,7 @@ Gem::Specification.new do |s|
|
|
84
84
|
]
|
85
85
|
s.homepage = "http://github.com/nathanvda/on_the_spot".freeze
|
86
86
|
s.licenses = ["MIT".freeze]
|
87
|
-
s.rubygems_version = "2.
|
87
|
+
s.rubygems_version = "2.7.10".freeze
|
88
88
|
s.summary = "unobtrusive in place editing".freeze
|
89
89
|
|
90
90
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: on_the_spot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Van der Auwera
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
142
|
version: '0'
|
143
143
|
requirements: []
|
144
144
|
rubyforge_project:
|
145
|
-
rubygems_version: 2.
|
145
|
+
rubygems_version: 2.7.10
|
146
146
|
signing_key:
|
147
147
|
specification_version: 4
|
148
148
|
summary: unobtrusive in place editing
|