infopark_reactor 1.9.0.beta2 → 1.9.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 432173125e16982290bf5e7eb40370e0f37585d5
|
4
|
+
data.tar.gz: 2d7268785b33578ddee8890d8a2ac92deb3b1b91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00ffdd16e4a53f1246861515d148ccf7031e4aa1a2b6cbf2f5e809ed806269357db74c467d031e7c1abcd80bcb00f80a5df5bcfde862035eb1acf2d3a1681bbe
|
7
|
+
data.tar.gz: 7b1bfb1775ed0df349f555d0971beee2e323520c27a5c022ce490a50d7f86b29ea10ed32c97d518c5192504f2b71ea8ab91d88b9dfa8e07323ce8c6d6b6ecb11
|
@@ -20,22 +20,40 @@ module Reactor
|
|
20
20
|
Array.instance_methods(false).each do |meth|
|
21
21
|
old = instance_method(meth)
|
22
22
|
define_method(meth) do |*args, &block|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end if meth.to_sym != :size
|
23
|
+
detect_modification do
|
24
|
+
old.bind(self).call(*args, &block)
|
25
|
+
end
|
26
|
+
end if meth.to_sym != :map
|
28
27
|
end
|
29
28
|
|
30
29
|
def changed?
|
31
|
-
@changed == true
|
30
|
+
@changed == true || temporary_links_present?
|
32
31
|
end
|
33
32
|
|
34
|
-
|
35
|
-
def size_changed(old_size, size)
|
33
|
+
def change!
|
36
34
|
@changed = true
|
37
35
|
end
|
38
36
|
|
37
|
+
def original_link_ids
|
38
|
+
@original_link_ids ||= link_ids
|
39
|
+
end
|
40
|
+
|
41
|
+
protected
|
42
|
+
def link_ids
|
43
|
+
self.map(&:id).compact
|
44
|
+
end
|
45
|
+
|
46
|
+
def temporary_links_present?
|
47
|
+
self.any? {|l| l.kind_of? Reactor::Link::TemporaryLink }
|
48
|
+
end
|
49
|
+
|
50
|
+
def detect_modification(&block)
|
51
|
+
original_link_ids
|
52
|
+
yield.tap do
|
53
|
+
@changed = @changed || original_link_ids != link_ids
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
39
57
|
def transform_into_link(link_data)
|
40
58
|
if (link_data.respond_to?(:external?) && link_data.respond_to?(:internal?))
|
41
59
|
link_data
|
data/lib/reactor/permission.rb
CHANGED
@@ -125,12 +125,12 @@ module Reactor
|
|
125
125
|
|
126
126
|
# Returns true if given user (or current user, if none given) has 'read' permission
|
127
127
|
def read?(user = nil)
|
128
|
-
granted?(user, :read)
|
128
|
+
granted?(user, :root) || granted?(user, :read)
|
129
129
|
end
|
130
130
|
|
131
131
|
# Returns true if given user (or current user, if none given) has 'write' permission
|
132
132
|
def write?(user = nil)
|
133
|
-
granted?(user, :write)
|
133
|
+
granted?(user, :root) || granted?(user, :write)
|
134
134
|
end
|
135
135
|
|
136
136
|
# Returns true if given user (or current user, if none given) has 'root' permission
|
@@ -140,7 +140,7 @@ module Reactor
|
|
140
140
|
|
141
141
|
# Returns true if given user (or current user, if none given) has 'create_children' permission
|
142
142
|
def create_children?(user = nil)
|
143
|
-
granted?(user, :create_children)
|
143
|
+
granted?(user, :root) || granted?(user, :create_children)
|
144
144
|
end
|
145
145
|
|
146
146
|
# @see #root?
|
@@ -167,6 +167,7 @@ module Reactor
|
|
167
167
|
# permissions depend on the state of the object)
|
168
168
|
def release?(user = nil)
|
169
169
|
(has_workflow? && root?(user)) || (!has_workflow? && write?(user))
|
170
|
+
write?(user) || root?(user)
|
170
171
|
end
|
171
172
|
|
172
173
|
# Setter to overwrite the current groups for the given +permission+ with the
|
data/lib/reactor/persistence.rb
CHANGED
@@ -177,23 +177,25 @@ module Reactor
|
|
177
177
|
# any other reload methods (neither from RailsConnector nor from ActiveRecord)
|
178
178
|
# but tries to mimmic their behaviour.
|
179
179
|
def reload(options = nil)
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
180
|
+
Obj.uncached do
|
181
|
+
#super # Throws RecordNotFound when changing obj_class
|
182
|
+
# AR reload
|
183
|
+
clear_aggregation_cache
|
184
|
+
clear_association_cache
|
185
|
+
fresh_object = Obj.find(self.id, options)
|
186
|
+
@attributes = fresh_object.instance_variable_get('@attributes')
|
187
|
+
@attributes_cache = {}
|
188
|
+
# RC reload
|
189
|
+
@attr_values = nil
|
190
|
+
@attr_defs = nil
|
191
|
+
@attr_dict = nil
|
192
|
+
@obj_class_definition = nil
|
193
|
+
@object_with_meta_data = nil
|
194
|
+
# meta reload
|
195
|
+
@editor = nil
|
196
|
+
@object_with_meta_data = nil
|
197
|
+
self
|
198
|
+
end
|
197
199
|
end
|
198
200
|
|
199
201
|
# Resolves references in any of the html fields. Returns true on success,
|
@@ -248,6 +250,7 @@ module Reactor
|
|
248
250
|
end
|
249
251
|
|
250
252
|
|
253
|
+
=begin
|
251
254
|
# @see [ActiveRecord::Persistence#update_attributes]
|
252
255
|
def update_attributes(attributes, options={})
|
253
256
|
attributes.each do |attr, value|
|
@@ -263,6 +266,7 @@ module Reactor
|
|
263
266
|
end
|
264
267
|
self.save!
|
265
268
|
end
|
269
|
+
=end
|
266
270
|
|
267
271
|
# Equivalent to Obj#edited?
|
268
272
|
def really_edited?
|
@@ -275,14 +279,6 @@ module Reactor
|
|
275
279
|
end
|
276
280
|
|
277
281
|
protected
|
278
|
-
def requires_resolve_refs?(field)
|
279
|
-
force_resolve_refs?|| field == :blob || attribute_type(field.to_s) == :html
|
280
|
-
end
|
281
|
-
|
282
|
-
def force_resolve_refs
|
283
|
-
@force_resolve_refs = true
|
284
|
-
end
|
285
|
-
|
286
282
|
def prevent_resolve_refs
|
287
283
|
@prevent_resolve_refs = true
|
288
284
|
end
|
@@ -291,10 +287,6 @@ module Reactor
|
|
291
287
|
@prevent_resolve_refs == true
|
292
288
|
end
|
293
289
|
|
294
|
-
def force_resolve_refs?
|
295
|
-
@force_resolve_refs == true
|
296
|
-
end
|
297
|
-
|
298
290
|
def sanitize_name
|
299
291
|
self.name = self.class.send(:sanitize_name, self.name)
|
300
292
|
end
|
@@ -313,28 +305,11 @@ module Reactor
|
|
313
305
|
end
|
314
306
|
end
|
315
307
|
|
316
|
-
# Returns all values that will be set for crul interface
|
317
308
|
def crul_attributes
|
318
309
|
@__crul_attributes || {}
|
319
310
|
end
|
320
311
|
|
321
|
-
# Takes cached values and sets the values for crul interface.
|
322
|
-
# Does not store them, only forwards them to underlying class.
|
323
|
-
def forward_crul_attributes
|
324
|
-
crul_attributes.each do |field, (value, options)|
|
325
|
-
options ||= {}
|
326
|
-
crul_obj.set(field, value, options) unless self.send(:attribute_type, field) == :linklist
|
327
|
-
end
|
328
|
-
end
|
329
|
-
|
330
|
-
def prepare_crul_links
|
331
|
-
changed_linklists.each do |link|
|
332
|
-
crul_set(link, self.send(:[], link.to_sym), {})
|
333
|
-
end
|
334
|
-
end
|
335
|
-
|
336
312
|
def crul_obj
|
337
|
-
#@crul_obj ||= Reactor::Cm::Obj.get(obj_id)
|
338
313
|
@crul_obj ||= Reactor::Cm::Obj.load(obj_id)
|
339
314
|
end
|
340
315
|
|
@@ -343,30 +318,63 @@ module Reactor
|
|
343
318
|
end
|
344
319
|
|
345
320
|
def crul_obj_save
|
346
|
-
|
347
|
-
|
348
|
-
take
|
349
|
-
edit
|
321
|
+
attrs, _ = crul_attributes.partition do |field, (value, options)|
|
322
|
+
self.send(:attribute_type, field) != :linklist
|
350
323
|
end
|
324
|
+
linklists = changed_linklists
|
351
325
|
|
352
|
-
|
326
|
+
new_links = {}.tap do |result|
|
327
|
+
linklists.map do |field|
|
328
|
+
result[field] = self.__read_link(field).map do |l|
|
329
|
+
{:link_id => l.id, :title => l.title, :destination_url => (l.internal? ? l.destination_object.path : l.url)}
|
330
|
+
end
|
331
|
+
end
|
332
|
+
end
|
353
333
|
|
354
|
-
|
355
|
-
self.id = crul_obj.obj_id
|
334
|
+
links_modified = !linklists.empty?
|
356
335
|
|
357
|
-
|
336
|
+
crul_obj.composite_save(attrs, [], [], [], links_modified) do |attrs, links_to_add, links_to_remove, links_to_set|
|
358
337
|
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
338
|
+
links_to_add.clear
|
339
|
+
links_to_remove.clear
|
340
|
+
links_to_set.clear
|
341
|
+
|
342
|
+
copy = Obj.find(self.id)
|
343
|
+
|
344
|
+
linklists.each do |linklist|
|
345
|
+
original_link_ids = copy.__read_link(linklist).original_link_ids
|
346
|
+
i = 0
|
347
|
+
common = [original_link_ids.length,
|
348
|
+
new_links[linklist].length].min
|
366
349
|
|
367
|
-
|
350
|
+
# replace existing links
|
351
|
+
while i < common
|
352
|
+
link = new_links[linklist][i]
|
353
|
+
link[:link_id] = link_id = original_link_ids[i]
|
368
354
|
|
369
|
-
|
355
|
+
links_to_set << [link_id, link]
|
356
|
+
i += 1
|
357
|
+
end
|
358
|
+
|
359
|
+
# add appended links
|
360
|
+
while i < new_links[linklist].length
|
361
|
+
link = new_links[linklist][i]
|
362
|
+
|
363
|
+
links_to_add << [linklist, link]
|
364
|
+
i += 1
|
365
|
+
end
|
366
|
+
|
367
|
+
# remove trailing links
|
368
|
+
while i < original_link_ids.length
|
369
|
+
links_to_remove << original_link_ids[i]
|
370
|
+
i += 1
|
371
|
+
end
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
def __read_link(name)
|
377
|
+
self[name.to_sym] || RailsConnector::LinkList.new([])
|
370
378
|
end
|
371
379
|
|
372
380
|
private
|
@@ -391,32 +399,14 @@ module Reactor
|
|
391
399
|
@crul_obj = Reactor::Cm::Obj.create(name, parent, klass)
|
392
400
|
end
|
393
401
|
|
394
|
-
def crul_store_links
|
395
|
-
crul_attributes.each do |field, (value, options)|
|
396
|
-
if self.send(:attribute_type, field) == :linklist then
|
397
|
-
crul_store_links_for_attribute(field, value)
|
398
|
-
end
|
399
|
-
end
|
400
|
-
# self.class.send(:instance_variable_get, '@_o_allowed_attrs').each do |attr|
|
401
|
-
# if self.send(:attribute_type, attr) == :linklist #&& self.send(attr).try(:changed?) then
|
402
|
-
# crul_store_links_for_attribute(attr, self.send(attr))
|
403
|
-
# end
|
404
|
-
# end
|
405
|
-
end
|
406
|
-
|
407
|
-
def crul_store_links_for_attribute(attr, links)
|
408
|
-
# FIXME: l.link_id ??
|
409
|
-
crul_obj.set_links(attr, links.map {|l| {:link_id => l.id, :title => l.title, :destination_url => (l.internal? ? l.destination_object.path : l.url)} })
|
410
|
-
end
|
411
|
-
|
412
402
|
def create
|
413
403
|
run_callbacks(:create) do
|
414
404
|
c_name = self.name
|
415
405
|
c_parent= self.class.path_from_anything(self.parent_obj_id)
|
416
406
|
c_objcl = self.obj_class
|
417
407
|
crul_obj_create(c_name, c_parent, c_objcl)
|
418
|
-
crul_obj_save if crul_attributes_set? || crul_links_changed?
|
419
408
|
self.id = @crul_obj.obj_id
|
409
|
+
crul_obj_save if crul_attributes_set? || crul_links_changed?
|
420
410
|
self.reload # ?
|
421
411
|
self.id
|
422
412
|
end
|
@@ -544,7 +534,6 @@ module Reactor
|
|
544
534
|
end
|
545
535
|
|
546
536
|
protected
|
547
|
-
# TODO: TESTME!!!!
|
548
537
|
def attribute_methods_overriden?
|
549
538
|
self.name != 'RailsConnector::AbstractObj'
|
550
539
|
end
|
data/lib/reactor/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infopark_reactor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomasz Przedmojski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -149,9 +149,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
149
|
version: '0'
|
150
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
|
-
- - '
|
152
|
+
- - '>='
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
154
|
+
version: '0'
|
155
155
|
requirements: []
|
156
156
|
rubyforge_project:
|
157
157
|
rubygems_version: 2.0.14
|