infopark_reactor 1.6.3 → 1.7.0
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/README.md +39 -4
- data/infopark_reactor.gemspec +1 -1
- data/lib/reactor/permission.rb +1 -0
- data/lib/reactor/persistence.rb +6 -5
- data/lib/reactor/tools/workflow_generator.rb +2 -2
- data/lib/reactor/version.rb +1 -1
- metadata +8 -9
data/README.md
CHANGED
@@ -24,7 +24,7 @@ So, here you have it: REACTOR, writing layer for `RailsConnector`, tightly integ
|
|
24
24
|
not_a_page.release! if not_a_page.valid?(:release)
|
25
25
|
|
26
26
|
All of the above are examples of what can be done with `Persistence`, `Validations`, `Attributes`. There is more:
|
27
|
-
* all standard ActiveModel callbacks +
|
27
|
+
* all standard ActiveModel callbacks + `*_release` callbacks
|
28
28
|
* Validations in three contexts: create, update, release
|
29
29
|
* If something works with ActiveRecord, there is a high chance it works with REACTOR too!
|
30
30
|
* Rails 3 API
|
@@ -79,7 +79,6 @@ Awesome! What is missing/WHAT I NEED TO BE AWARE OF:
|
|
79
79
|
- Therefore link operations are slow.
|
80
80
|
- Link position cannot be directly manipulated (it is implicit through array order)
|
81
81
|
- Validations are implemented completely in Rails, there is no call to CM, so all you TCL validation callbacks aren't executed
|
82
|
-
- There are no validations for `enum`/`multienum` field (but mandatory fields are supported)
|
83
82
|
- You can change the `obj_class` of an obj, but after save you should get yourself a new instance. (it's a bug of `rails_connector_meta`)
|
84
83
|
- You have to save an object before you can upload data (i.e. upload works only on existing objects)
|
85
84
|
|
@@ -91,7 +90,8 @@ HOW TO INSTALL
|
|
91
90
|
3. Add initializer for Reactor if you haven't done so already
|
92
91
|
4. Include modules into your Obj
|
93
92
|
|
94
|
-
|
93
|
+
CONFIGURING CMS ACCESS
|
94
|
+
======================
|
95
95
|
|
96
96
|
**config/initializers/reactor.rb:**
|
97
97
|
|
@@ -104,6 +104,41 @@ Sample code for points 3. and 4.
|
|
104
104
|
:secret => 'password' # instance secret
|
105
105
|
}
|
106
106
|
|
107
|
+
USING WITH THE NEWEST RAILS CONNECTOR
|
108
|
+
=====================================
|
109
|
+
|
110
|
+
Recent versions of Rails Connector deprecated the usage of `ObjExtenions` module. Therefore, you have to create an `Obj` model which inherits the `RailsConnector::BasicObj` class. **For best compatibility do not call that model anything other that `Obj`!
|
111
|
+
|
112
|
+
**app/models/obj.rb:**
|
113
|
+
|
114
|
+
require 'meta'
|
115
|
+
class Obj < RailsConnector::BasicObj
|
116
|
+
include RailsConnector::Meta
|
117
|
+
|
118
|
+
include Reactor::Legacy::Base # core module
|
119
|
+
include Reactor::Attributes::Base # core module
|
120
|
+
include Reactor::Persistence::Base # core module
|
121
|
+
|
122
|
+
include Reactor::Validations::Base # optional module,
|
123
|
+
# enables Rails validations
|
124
|
+
|
125
|
+
include Reactor::Permission::Base # optional module,
|
126
|
+
# enables permission checking
|
127
|
+
|
128
|
+
include Reactor::Workflow::Base # optional module,
|
129
|
+
# enables workflow API
|
130
|
+
|
131
|
+
include Reactor::StreamingUpload::Base
|
132
|
+
# optional module,
|
133
|
+
# enables streaming interface for
|
134
|
+
# uploads (strongly recommended!)
|
135
|
+
end
|
136
|
+
|
137
|
+
USING WITH OLDER RAILS CONNECTOR
|
138
|
+
================================
|
139
|
+
|
140
|
+
Older version of Rails Connector support extensions to the RailsConnector::Obj class through `ObjExtensions` module. Use following code for the best compatibility.
|
141
|
+
|
107
142
|
**lib/obj_extensions.rb:**
|
108
143
|
|
109
144
|
require 'meta'
|
@@ -139,4 +174,4 @@ Core and optional modules are pretty well documented. If you are looking for exa
|
|
139
174
|
|
140
175
|
BUGS, FEATURE REQUESTS?
|
141
176
|
=======================
|
142
|
-
Open issue on github or make a pull request! Don't be shy :)
|
177
|
+
Open issue on github or make a pull request! Don't be shy :)
|
data/infopark_reactor.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
21
|
s.require_paths = ["lib", "lib/tools"]
|
22
22
|
|
23
|
-
s.add_dependency 'rails', '<= 3.
|
23
|
+
s.add_dependency 'rails', '<= 3.3', '>= 3.0.10'
|
24
24
|
s.add_dependency 'infopark_reactor_migrations', '>= 1.2.0'
|
25
25
|
s.add_dependency 'infopark_rails_connector'
|
26
26
|
s.add_dependency 'infopark_rails_connector_meta', '>= 0.0.3'
|
data/lib/reactor/permission.rb
CHANGED
@@ -90,6 +90,7 @@ module Reactor
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def ensure_create_permission_granted(obj_id)
|
93
|
+
raise RuntimeError, "Permission check for object with id=#{obj_id.inspect} which does not exist" unless Obj.exists?(obj_id)
|
93
94
|
raise Reactor::NotPermitted, 'Obj lacks neccessary permissions for creation' unless Obj.find(obj_id).permission.create_children?
|
94
95
|
return true
|
95
96
|
end
|
data/lib/reactor/persistence.rb
CHANGED
@@ -99,11 +99,11 @@ module Reactor
|
|
99
99
|
crul_obj.get('hasSuperLinks') == '1'
|
100
100
|
end
|
101
101
|
|
102
|
-
# Return an array of RailsConnector::
|
102
|
+
# Return an array of RailsConnector::AbstractObj that contain a link
|
103
103
|
# to this file.
|
104
104
|
# @raise [Reactor::Cm::XmlRequestError] generic error occoured
|
105
105
|
def super_objects
|
106
|
-
RailsConnector::
|
106
|
+
RailsConnector::AbstractObj.where(:obj_id => crul_obj.get('superObjects')).to_a
|
107
107
|
end
|
108
108
|
|
109
109
|
# Returns true if this object hasn't been saved yet -- that is, a record
|
@@ -194,7 +194,7 @@ module Reactor
|
|
194
194
|
# It should excactly match ActiveRecord::Base.new in it's behavior
|
195
195
|
# @see ActiveRecord::Base.new
|
196
196
|
def initialize(attributes = nil, &block)
|
197
|
-
if !self.class.send(:attribute_methods_overriden?)
|
197
|
+
if true || !self.class.send(:attribute_methods_overriden?) # FIXME !!!!
|
198
198
|
ignored_attributes = ignore_attributes(attributes)
|
199
199
|
# supress block hijacking!
|
200
200
|
super(attributes) {}
|
@@ -208,7 +208,7 @@ module Reactor
|
|
208
208
|
# It should excactly match ActiveRecord::Base.new in it's behavior
|
209
209
|
# @see ActiveRecord::Base.new
|
210
210
|
def initialize(attributes = nil, options={}, &block)
|
211
|
-
if !self.class.send(:attribute_methods_overriden?)
|
211
|
+
if true || !self.class.send(:attribute_methods_overriden?) #FIXME !!!
|
212
212
|
ignored_attributes = ignore_attributes(attributes)
|
213
213
|
# supress block hijacking!
|
214
214
|
super(attributes, options) {}
|
@@ -465,8 +465,9 @@ module Reactor
|
|
465
465
|
end
|
466
466
|
|
467
467
|
protected
|
468
|
+
# TODO: TESTME!!!!
|
468
469
|
def attribute_methods_overriden?
|
469
|
-
self.name != 'RailsConnector::
|
470
|
+
self.name != 'RailsConnector::AbstractObj'
|
470
471
|
end
|
471
472
|
end
|
472
473
|
end
|
@@ -125,7 +125,7 @@ module Reactor
|
|
125
125
|
|
126
126
|
def set_permissions
|
127
127
|
# get RC object
|
128
|
-
@rc_obj = RailsConnector::
|
128
|
+
@rc_obj = RailsConnector::AbstractObj.find(@obj.obj_id)
|
129
129
|
|
130
130
|
# use nice API to set permissions
|
131
131
|
@groups.each do |group|
|
@@ -145,7 +145,7 @@ module Reactor
|
|
145
145
|
end
|
146
146
|
|
147
147
|
def destroy_objs
|
148
|
-
RailsConnector::
|
148
|
+
RailsConnector::AbstractObj.find_all_by_obj_class(@class_name).each(&:destroy)
|
149
149
|
end
|
150
150
|
|
151
151
|
def destroy_obj_class
|
data/lib/reactor/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infopark_reactor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 7
|
9
|
+
- 0
|
10
|
+
version: 1.7.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tomasz Przedmojski
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-02-
|
18
|
+
date: 2013-02-21 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -26,12 +26,11 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - <=
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 1
|
30
30
|
segments:
|
31
31
|
- 3
|
32
|
-
-
|
33
|
-
|
34
|
-
version: 3.2.12
|
32
|
+
- 3
|
33
|
+
version: "3.3"
|
35
34
|
- - ">="
|
36
35
|
- !ruby/object:Gem::Version
|
37
36
|
hash: 19
|