infopark_reactor 1.6.3 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|