infopark_fiona7 0.30.0.2 → 0.70.0.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 +4 -4
- data/app/assets/javascripts/fiona7.js +1 -282
- data/app/assets/javascripts/fiona7_ui.js +335 -0
- data/app/assets/stylesheets/fiona7.css.scss +4 -36
- data/app/assets/stylesheets/fiona7_ui.css.scss +39 -0
- data/app/controllers/fiona7/blobs_controller.rb +13 -23
- data/app/controllers/fiona7/release_controller.rb +1 -0
- data/app/controllers/fiona7/sessions_controller.rb +3 -5
- data/app/helpers/fiona7_override_helper.rb +6 -2
- data/app/models/fiona7/edited_obj.rb +6 -1
- data/app/models/fiona7/released_obj.rb +11 -3
- data/app/models/fiona7/write_obj.rb +18 -3
- data/app/models/fiona7_login_page.rb +3 -0
- data/app/views/scrivito/ui/index.html.erb +16 -0
- data/config/routes.rb +2 -0
- data/infopark_fiona7.gemspec +6 -4
- data/lib/fiona7/builder/batch_widget_writer.rb +7 -3
- data/lib/fiona7/builder/obj_builder.rb +130 -42
- data/lib/fiona7/builder/obj_class_builder.rb +3 -59
- data/lib/fiona7/builder/obj_class_updater.rb +7 -44
- data/lib/fiona7/builder/obj_updater.rb +25 -7
- data/lib/fiona7/builder/widget_builder.rb +24 -0
- data/lib/fiona7/builder/widget_building.rb +2 -7
- data/lib/fiona7/builder/widget_updater.rb +21 -0
- data/lib/fiona7/controllers/content_service/obj_controller.rb +16 -25
- data/lib/fiona7/controllers/rest_api/blob_controller.rb +41 -2
- data/lib/fiona7/controllers/rest_api/obj_controller.rb +19 -7
- data/lib/fiona7/controllers/rest_api/workspace_controller.rb +1 -1
- data/lib/fiona7/engine.rb +58 -7
- data/lib/fiona7/fiona_connector_patches/basic_obj.rb +46 -0
- data/lib/fiona7/initializer.rb +15 -11
- data/lib/fiona7/json/obj_decorator.rb +53 -31
- data/lib/fiona7/json/reverse_obj_decorator.rb +36 -0
- data/lib/fiona7/json/widget_decorator.rb +3 -1
- data/lib/fiona7/link_converter/fiona_to_scrivito.rb +45 -13
- data/lib/fiona7/link_converter/scrivito_to_fiona.rb +1 -1
- data/lib/fiona7/middleware/server_detection_middleware.rb +27 -0
- data/lib/fiona7/middleware/table_switching_middleware.rb +33 -0
- data/lib/fiona7/mode_switch/cms_routes/scrivito_sdk.rb +5 -11
- data/lib/fiona7/mode_switch/composite.rb +2 -4
- data/lib/fiona7/naive_search_engine.rb +66 -16
- data/lib/fiona7/routers/rest_api.rb +50 -45
- data/lib/fiona7/routing_monkey_patch.rb +5 -3
- data/lib/fiona7/scrivito_patches/attribute_content.rb +9 -10
- data/lib/fiona7/scrivito_patches/attribute_serializer.rb +15 -0
- data/lib/fiona7/scrivito_patches/basic_obj.rb +25 -19
- data/lib/fiona7/scrivito_patches/basic_widget.rb +4 -0
- data/lib/fiona7/scrivito_patches/binary.rb +452 -33
- data/lib/fiona7/scrivito_patches/client_config.rb +0 -19
- data/lib/fiona7/scrivito_patches/cms_backend.rb +48 -0
- data/lib/fiona7/scrivito_patches/cms_field_tag.rb +19 -0
- data/lib/fiona7/scrivito_patches/cms_rest_api.rb +20 -3
- data/lib/fiona7/scrivito_patches/cms_routing.rb +20 -34
- data/lib/fiona7/scrivito_patches/controller_actions.rb +0 -8
- data/lib/fiona7/scrivito_patches/migrator.rb +4 -0
- data/lib/fiona7/scrivito_patches/objs_controller.rb +18 -0
- data/lib/fiona7/scrivito_patches/type_computer.rb +12 -12
- data/lib/fiona7/scrivito_patches/webservice_controller.rb +21 -0
- data/lib/fiona7/scrivito_patches/workspace.rb +8 -5
- data/lib/fiona7/shadow_classes.rb +74 -0
- data/lib/fiona7/table_switcher.rb +39 -0
- data/lib/fiona7/type_loader.rb +63 -0
- data/lib/fiona7/type_register.rb +170 -89
- data/lib/fiona7/type_synchronizer.rb +68 -0
- data/lib/fiona7/version.rb +1 -1
- data/lib/fiona7/version_helper.rb +35 -54
- data/lib/fiona7/widget_resolver.rb +1 -1
- data/lib/tasks/fiona7_tasks.rake +0 -8
- metadata +57 -18
- data/lib/fiona7/controllers/rest_api/obj_class_controller.rb +0 -39
- data/lib/fiona7/json/obj_class_decorator.rb +0 -45
- data/lib/fiona7/mode_switch/constants.rb +0 -86
- data/lib/fiona7/type_register_mixin.rb +0 -9
@@ -5,79 +5,60 @@ require 'digest/sha1'
|
|
5
5
|
|
6
6
|
module Fiona7
|
7
7
|
class VersionHelper
|
8
|
+
attr_reader :revision_id, :content_state_id, :base_revision_id, :base_content_state_id
|
8
9
|
def initialize(workspace_id)
|
9
10
|
@workspace_id = workspace_id.to_sym
|
10
|
-
end
|
11
|
-
|
12
|
-
def revision_id
|
13
|
-
if @workspace_id == :published
|
14
|
-
published_revision_id
|
15
|
-
else
|
16
|
-
rtc_revision_id
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def content_state_id
|
21
11
|
if @workspace_id == :published
|
22
|
-
|
12
|
+
@revision_id =
|
13
|
+
@content_state_id =
|
14
|
+
@base_revision_id =
|
15
|
+
@base_content_state_id = published_revision_id
|
23
16
|
else
|
24
|
-
|
17
|
+
@revision_id =
|
18
|
+
@content_state_id = rtc_revision_id
|
19
|
+
@base_revision_id =
|
20
|
+
@base_content_state_id = "f" * 40 #published_revision_id
|
25
21
|
end
|
26
22
|
end
|
27
23
|
|
28
|
-
def base_revision_id
|
29
|
-
published_revision_id
|
30
|
-
end
|
31
|
-
|
32
|
-
def base_content_state_id
|
33
|
-
published_content_state_id
|
34
|
-
end
|
35
|
-
|
36
24
|
protected
|
37
25
|
def published_revision_id
|
26
|
+
return @published_revision_id if @published_revision_id
|
38
27
|
klass = ReleasedObj
|
39
|
-
|
40
|
-
|
28
|
+
# only one query executed
|
29
|
+
query = ReleasedObj.select('max(last_changed), count(*)').to_sql
|
30
|
+
last_changed, obj_count = *ReleasedObj.connection.execute(query).first
|
41
31
|
revision_id = Digest::SHA1.hexdigest("published:#{last_changed}:#{obj_count}").sub(/^./, 'f')
|
42
|
-
|
32
|
+
# tag the revision as published
|
43
33
|
revision_id[0] = 'f'
|
44
|
-
|
34
|
+
|
35
|
+
#begin
|
36
|
+
# raise
|
37
|
+
#rescue => e
|
38
|
+
# Rails.logger.debug(e.backtrace.join("\n"))
|
39
|
+
#end
|
40
|
+
|
41
|
+
@published_revision_id = revision_id
|
45
42
|
end
|
46
43
|
|
47
44
|
def rtc_revision_id
|
45
|
+
return @rtc_revision_id if @rtc_revision_id
|
48
46
|
klass = EditedObj
|
49
|
-
changed = klass.connection.execute("SELECT * from #{klass.table_name} WHERE last_changed = '#{klass.maximum(:last_changed)}' ORDER BY obj_id").to_json
|
50
|
-
obj_count = klass.count
|
51
|
-
revision_id = Digest::SHA1.hexdigest("rtc:#{changed}:#{obj_count}")
|
52
|
-
|
53
|
-
revision_id[0] = 'b'
|
54
|
-
revision_id
|
55
|
-
end
|
56
47
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
48
|
+
first_query = klass.select("obj_id, count(*), last_changed, attr_values").to_sql
|
49
|
+
# NOTE: the hidden assumption here is that no more than 23 object have been changed in the last second
|
50
|
+
second_query= klass.select("obj_id, is_released, last_changed, attr_values").order("last_changed DESC").limit(23).to_sql
|
51
|
+
union_query = "SELECT * FROM ( #{first_query} ) QUERY1 UNION ALL SELECT * FROM ( #{second_query} ) QUERY2"
|
52
|
+
# only one query executed
|
53
|
+
results = EditedObj.connection.execute(union_query).to_a
|
54
|
+
obj_count = results.shift[1]
|
55
|
+
changed = results
|
63
56
|
|
64
|
-
|
65
|
-
obj_class_names = RailsConnector::ObjClass.select([:obj_class_name, :is_enabled]).map {|o| "#{o.name}:#{o.is_enabled}"}.join("|")
|
66
|
-
attribute_names = RailsConnector::Attribute.select(:attribute_name).map(&:name).join("|")
|
67
|
-
attribute_joins = self.obj_class_attrs
|
68
|
-
Digest::SHA1.hexdigest("#{rtc_revision_id}:#{obj_class_names}:#{attribute_names}:#{attribute_joins}")
|
69
|
-
end
|
57
|
+
revision_id = Digest::SHA1.hexdigest("rtc:#{changed}:#{obj_count}")
|
70
58
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
elsif Fiona7.mode == :legacy
|
75
|
-
klass = ReleasedObj
|
76
|
-
table_name = "#{klass.table_name_prefix}obj_class_attrs"
|
77
|
-
klass.connection.execute("SELECT * from #{table_name}").to_a.map {|(id1,id2)| "#{id1}:#{id2}" }.join("|")
|
78
|
-
else
|
79
|
-
raise "Invalid Fiona7.mode = #{Fiona7.mode}"
|
80
|
-
end
|
59
|
+
# tag the revision as edited/rtc
|
60
|
+
revision_id[0] = 'b'
|
61
|
+
@rtc_revision_id = revision_id
|
81
62
|
end
|
82
63
|
|
83
64
|
end
|
@@ -15,7 +15,7 @@ module Fiona7
|
|
15
15
|
|
16
16
|
def preload
|
17
17
|
widget_id_to_object_id_map = Hash[
|
18
|
-
self.value.map {|link| [link
|
18
|
+
self.value.map {|link| [link["title"], link["destination"]] }
|
19
19
|
]
|
20
20
|
object_id_to_widget_instance_map = Hash[
|
21
21
|
self.klass.where(obj_id: widget_id_to_object_id_map.values).map {|obj| [obj.id, obj] }
|
data/lib/tasks/fiona7_tasks.rake
CHANGED
@@ -1,13 +1,5 @@
|
|
1
1
|
namespace :fiona7 do
|
2
2
|
desc "Initialize Fiona7"
|
3
3
|
task :initialize => :environment do
|
4
|
-
require "fiona7/initializer"
|
5
|
-
|
6
|
-
initializer = Fiona7::Initializer.new
|
7
|
-
|
8
|
-
initializer.sanity_check
|
9
|
-
initializer.classes_and_attributes
|
10
|
-
initializer.set_valid_sub_obj_classes
|
11
|
-
initializer.create_login_page
|
12
4
|
end
|
13
5
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infopark_fiona7
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.70.0.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: 2015-
|
11
|
+
date: 2015-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.
|
19
|
+
version: 4.2.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.
|
26
|
+
version: 4.2.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: scrivito
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.70.0.rc1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.70.0.rc1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: scrivito_sdk
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,30 +70,58 @@ dependencies:
|
|
70
70
|
name: infopark_fiona_connector
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 7.0.
|
75
|
+
version: 7.0.1.beta2
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 7.0.
|
82
|
+
version: 7.0.1.beta2
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: infopark_reactor
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.15.0.beta1
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: 1.15.0.beta1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: mini_magick
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: ruby-prof
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
97
125
|
description: scrivito-compatible interface for classic Fiona
|
98
126
|
email:
|
99
127
|
- tomasz.przedmojski@infopark.de
|
@@ -106,8 +134,10 @@ files:
|
|
106
134
|
- app/assets/images/fiona7-logo.png
|
107
135
|
- app/assets/images/fiona7-marker.png
|
108
136
|
- app/assets/javascripts/fiona7.js
|
137
|
+
- app/assets/javascripts/fiona7_ui.js
|
109
138
|
- app/assets/stylesheets/fiona7-login.css.scss
|
110
139
|
- app/assets/stylesheets/fiona7.css.scss
|
140
|
+
- app/assets/stylesheets/fiona7_ui.css.scss
|
111
141
|
- app/controllers/fiona7/blobs_controller.rb
|
112
142
|
- app/controllers/fiona7/default_scrivito_cms_controller.rb
|
113
143
|
- app/controllers/fiona7/release_controller.rb
|
@@ -125,6 +155,7 @@ files:
|
|
125
155
|
- app/models/x_image.rb
|
126
156
|
- app/views/fiona7_login_page/index.html.erb
|
127
157
|
- app/views/layouts/fiona7_login_page_layout.html.erb
|
158
|
+
- app/views/scrivito/ui/index.html.erb
|
128
159
|
- config/locales/login.yml
|
129
160
|
- config/locales/permissions.yml
|
130
161
|
- config/routes.rb
|
@@ -141,18 +172,19 @@ files:
|
|
141
172
|
- lib/fiona7/controllers/content_service/obj_controller.rb
|
142
173
|
- lib/fiona7/controllers/content_service/workspace_controller.rb
|
143
174
|
- lib/fiona7/controllers/rest_api/blob_controller.rb
|
144
|
-
- lib/fiona7/controllers/rest_api/obj_class_controller.rb
|
145
175
|
- lib/fiona7/controllers/rest_api/obj_controller.rb
|
146
176
|
- lib/fiona7/controllers/rest_api/workspace_controller.rb
|
147
177
|
- lib/fiona7/engine.rb
|
148
178
|
- lib/fiona7/fiona_connector_patches/basic_obj.rb
|
149
179
|
- lib/fiona7/initializer.rb
|
150
|
-
- lib/fiona7/json/obj_class_decorator.rb
|
151
180
|
- lib/fiona7/json/obj_decorator.rb
|
181
|
+
- lib/fiona7/json/reverse_obj_decorator.rb
|
152
182
|
- lib/fiona7/json/typeless_obj_decorator.rb
|
153
183
|
- lib/fiona7/json/widget_decorator.rb
|
154
184
|
- lib/fiona7/link_converter/fiona_to_scrivito.rb
|
155
185
|
- lib/fiona7/link_converter/scrivito_to_fiona.rb
|
186
|
+
- lib/fiona7/middleware/server_detection_middleware.rb
|
187
|
+
- lib/fiona7/middleware/table_switching_middleware.rb
|
156
188
|
- lib/fiona7/mode_switch.rb
|
157
189
|
- lib/fiona7/mode_switch/abstract_mode_switch.rb
|
158
190
|
- lib/fiona7/mode_switch/cms_routes.rb
|
@@ -160,7 +192,6 @@ files:
|
|
160
192
|
- lib/fiona7/mode_switch/cms_routes/scrivito_sdk.rb
|
161
193
|
- lib/fiona7/mode_switch/cms_routes/scrivito_sdk_slave.rb
|
162
194
|
- lib/fiona7/mode_switch/composite.rb
|
163
|
-
- lib/fiona7/mode_switch/constants.rb
|
164
195
|
- lib/fiona7/mode_switch/views.rb
|
165
196
|
- lib/fiona7/naive_search_engine.rb
|
166
197
|
- lib/fiona7/recursive_link_resolver.rb
|
@@ -168,23 +199,31 @@ files:
|
|
168
199
|
- lib/fiona7/routers/rest_api.rb
|
169
200
|
- lib/fiona7/routing_monkey_patch.rb
|
170
201
|
- lib/fiona7/scrivito_patches/attribute_content.rb
|
202
|
+
- lib/fiona7/scrivito_patches/attribute_serializer.rb
|
171
203
|
- lib/fiona7/scrivito_patches/basic_obj.rb
|
172
204
|
- lib/fiona7/scrivito_patches/basic_widget.rb
|
173
205
|
- lib/fiona7/scrivito_patches/binary.rb
|
174
206
|
- lib/fiona7/scrivito_patches/client_config.rb
|
207
|
+
- lib/fiona7/scrivito_patches/cms_backend.rb
|
175
208
|
- lib/fiona7/scrivito_patches/cms_dispatch_controller.rb
|
209
|
+
- lib/fiona7/scrivito_patches/cms_field_tag.rb
|
176
210
|
- lib/fiona7/scrivito_patches/cms_rest_api.rb
|
177
211
|
- lib/fiona7/scrivito_patches/cms_routing.rb
|
178
212
|
- lib/fiona7/scrivito_patches/controller_actions.rb
|
179
213
|
- lib/fiona7/scrivito_patches/link_parser.rb
|
180
214
|
- lib/fiona7/scrivito_patches/migrator.rb
|
181
215
|
- lib/fiona7/scrivito_patches/obj_class.rb
|
216
|
+
- lib/fiona7/scrivito_patches/objs_controller.rb
|
182
217
|
- lib/fiona7/scrivito_patches/type_computer.rb
|
218
|
+
- lib/fiona7/scrivito_patches/webservice_controller.rb
|
183
219
|
- lib/fiona7/scrivito_patches/workspace.rb
|
184
220
|
- lib/fiona7/scrivito_user.rb
|
185
221
|
- lib/fiona7/search_engine.rb
|
222
|
+
- lib/fiona7/shadow_classes.rb
|
223
|
+
- lib/fiona7/table_switcher.rb
|
224
|
+
- lib/fiona7/type_loader.rb
|
186
225
|
- lib/fiona7/type_register.rb
|
187
|
-
- lib/fiona7/
|
226
|
+
- lib/fiona7/type_synchronizer.rb
|
188
227
|
- lib/fiona7/version.rb
|
189
228
|
- lib/fiona7/version_helper.rb
|
190
229
|
- lib/fiona7/widget_resolver.rb
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'fiona7/builder/obj_class_builder'
|
2
|
-
require 'fiona7/builder/obj_class_updater'
|
3
|
-
require 'fiona7/json/obj_class_decorator'
|
4
|
-
require 'fiona7/type_register'
|
5
|
-
|
6
|
-
module Fiona7
|
7
|
-
module Controllers
|
8
|
-
module RestAPI
|
9
|
-
class ObjClassController
|
10
|
-
def all
|
11
|
-
# ObjClasses with X_ prefix are hidden, so is Root (temporarily)
|
12
|
-
cms_classes = RailsConnector::ObjClass.all.select {|o| o.name != 'Root' && o.name !~ /\AX_/ }.map {|cms_class| JSON::ObjClassDecorator.new(cms_class) }
|
13
|
-
return ::JSON.parse(::ActiveSupport::JSON.encode({results: cms_classes}))
|
14
|
-
end
|
15
|
-
|
16
|
-
def create(workspace_id, values)
|
17
|
-
raise "Unexpected workspace_id: #{workspace_id}" unless workspace_id.to_s == "rtc"
|
18
|
-
cms_class = JSON::ObjClassDecorator.new(Builder::ObjClassBuilder.new(values[:obj_class].dup).build)
|
19
|
-
return ::JSON.parse(::ActiveSupport::JSON.encode(cms_class))
|
20
|
-
end
|
21
|
-
|
22
|
-
def update(workspace_id, values)
|
23
|
-
raise "Unexpected workspace_id: #{workspace_id}" unless workspace_id.to_s == "rtc"
|
24
|
-
cms_class = JSON::ObjClassDecorator.new(Builder::ObjClassUpdater.new(values[:obj_class].dup).build)
|
25
|
-
# invalidate caches:
|
26
|
-
TypeRegister.instance.invalidate_cached_type(cms_class.name)
|
27
|
-
return ::JSON.parse(::ActiveSupport::JSON.encode(cms_class))
|
28
|
-
end
|
29
|
-
|
30
|
-
def fetch(workspace_id, name)
|
31
|
-
# TODO: assert workspace_id
|
32
|
-
cms_class = JSON::ObjClassDecorator.new(RailsConnector::ObjClass.find_by_obj_class_name(name))
|
33
|
-
return ::JSON.parse(::ActiveSupport::JSON.encode(cms_class))
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'fiona7/type_register_mixin'
|
2
|
-
|
3
|
-
module Fiona7
|
4
|
-
module JSON
|
5
|
-
class ObjClassDecorator
|
6
|
-
include TypeRegisterMixin
|
7
|
-
|
8
|
-
attr_reader :cms_class
|
9
|
-
|
10
|
-
def initialize(cms_class)
|
11
|
-
@cms_class = cms_class
|
12
|
-
end
|
13
|
-
|
14
|
-
def name
|
15
|
-
cms_class.name
|
16
|
-
end
|
17
|
-
|
18
|
-
def as_json(*options)
|
19
|
-
result = {
|
20
|
-
id: cms_class.name,
|
21
|
-
name: cms_class.name,
|
22
|
-
title: cms_class.title(:de),
|
23
|
-
#type: cms_class.obj_type,
|
24
|
-
is_active: cms_class.enabled?,
|
25
|
-
attributes: []
|
26
|
-
}
|
27
|
-
type_register.annotated_attributes(cms_class.name).each do |attribute|
|
28
|
-
virtual_name = attribute.virtual_name
|
29
|
-
virtual_type = attribute.virtual_type
|
30
|
-
|
31
|
-
attr_hash = {
|
32
|
-
name: virtual_name.to_s,
|
33
|
-
type: virtual_type.to_s
|
34
|
-
}
|
35
|
-
|
36
|
-
attr_hash[:values] = attribute.values if attribute.values
|
37
|
-
|
38
|
-
result[:attributes] << attr_hash
|
39
|
-
end
|
40
|
-
|
41
|
-
result.as_json(*options)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,86 +0,0 @@
|
|
1
|
-
require 'fiona7/mode_switch/abstract_mode_switch'
|
2
|
-
|
3
|
-
module Fiona7
|
4
|
-
module ModeSwitch
|
5
|
-
class Constants < AbstractModeSwitch
|
6
|
-
def standalone
|
7
|
-
self.common_const_manipulation
|
8
|
-
self.set_root_obj_to(::Scrivito::Obj)
|
9
|
-
end
|
10
|
-
|
11
|
-
def legacy
|
12
|
-
self.common_const_manipulation
|
13
|
-
self.set_root_obj_to(::RailsConnector::Obj)
|
14
|
-
end
|
15
|
-
|
16
|
-
protected
|
17
|
-
def set_rails_connector_obj
|
18
|
-
if self.obj_defined_in_app?
|
19
|
-
if self.rails_connector_app_obj?
|
20
|
-
::RailsConnector.const_set('Obj', ::Object.const_get('Obj'))
|
21
|
-
else
|
22
|
-
::RailsConnector.const_set('Obj', ::RailsConnector::AbstractObj)
|
23
|
-
end
|
24
|
-
else
|
25
|
-
::RailsConnector.const_set('Obj', ::RailsConnector::AbstractObj)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def set_scrivito_obj
|
30
|
-
if self.obj_defined_in_app?
|
31
|
-
if self.scrivito_app_obj?
|
32
|
-
::Scrivito.const_set('Obj', ::Object.const_get('Obj'))
|
33
|
-
elsif Fiona7.mode == :legacy && self.scrivito_legacy_app_obj?
|
34
|
-
# nop
|
35
|
-
else
|
36
|
-
::Scrivito.const_set('Obj', Class.new(::Scrivito::BasicObj))
|
37
|
-
end
|
38
|
-
else
|
39
|
-
::Scrivito.const_set('Obj', Class.new(::Scrivito::BasicObj))
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def common_const_manipulation
|
44
|
-
self.reset_global_obj
|
45
|
-
|
46
|
-
self.set_rails_connector_obj
|
47
|
-
self.set_scrivito_obj
|
48
|
-
end
|
49
|
-
|
50
|
-
def reset_global_obj
|
51
|
-
return if self.obj_defined_in_app?
|
52
|
-
|
53
|
-
# load global obj
|
54
|
-
::Object.const_get('Obj')
|
55
|
-
# since both want it, nobody gets it. (at first)
|
56
|
-
::Object.send(:remove_const, 'Obj')
|
57
|
-
end
|
58
|
-
|
59
|
-
def set_root_obj_to(klass)
|
60
|
-
return if self.obj_defined_in_app?
|
61
|
-
|
62
|
-
::Object.const_set('Obj', klass)
|
63
|
-
end
|
64
|
-
|
65
|
-
def obj_defined_in_app?
|
66
|
-
# NOTE: this is not bullet-proof but a good-enough heuristic
|
67
|
-
@obj_defined_in_app ||= ::File.exists?(self.app.paths["app/models"].first + "/obj.rb")
|
68
|
-
end
|
69
|
-
|
70
|
-
def rails_connector_app_obj?
|
71
|
-
obj_klass = ::Object.const_get('Obj')
|
72
|
-
obj_klass == ::RailsConnector::BasicObj || obj_klass < ::RailsConnector::BasicObj
|
73
|
-
end
|
74
|
-
|
75
|
-
def scrivito_app_obj?
|
76
|
-
obj_klass = ::Object.const_get('Obj')
|
77
|
-
obj_klass == ::Scrivito::BasicObj || obj_klass < ::Scrivito::BasicObj
|
78
|
-
end
|
79
|
-
|
80
|
-
def scrivito_legacy_app_obj?
|
81
|
-
obj_klass = ::Scrivito::Obj rescue Object
|
82
|
-
obj_klass == ::Scrivito::BasicObj || obj_klass < ::Scrivito::BasicObj
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|