infopark_fiona7 1.2.0.2.3 → 1.5.2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +33 -0
  3. data/app/assets/javascripts/fiona7_ui.js +82 -23
  4. data/app/assets/javascripts/scrivito_patches/ajax.js +222 -0
  5. data/app/assets/javascripts/scrivito_patches/ajax_error_handling.js +24 -0
  6. data/app/assets/javascripts/scrivito_patches/attribute_serializer.js +259 -0
  7. data/app/assets/javascripts/scrivito_patches/base_obj_path.js +17 -0
  8. data/app/assets/javascripts/scrivito_patches/binary_utils.js +33 -0
  9. data/app/assets/javascripts/scrivito_patches/cms_rest_api.js +490 -0
  10. data/app/assets/javascripts/scrivito_patches/models/api/basic_obj.js +650 -0
  11. data/app/assets/javascripts/scrivito_patches/models/binary_field_element.js +53 -0
  12. data/app/assets/javascripts/scrivito_patches/models/obj.js +74 -239
  13. data/app/assets/javascripts/scrivito_patches/obj_serializer.js +91 -0
  14. data/app/assets/stylesheets/fiona7.css.scss +12 -0
  15. data/app/assets/stylesheets/fiona7_ui.css.scss +18 -0
  16. data/app/controllers/fiona7/api_controller.rb +20 -0
  17. data/app/controllers/fiona7/sessions_controller.rb +2 -10
  18. data/app/controllers/fiona7_login_page_controller.rb +0 -3
  19. data/app/controllers/scrivito/obj_class_controller.rb +58 -0
  20. data/app/controllers/scrivito/objs_controller.rb +2 -38
  21. data/app/helpers/fiona7_override_helper.rb +25 -0
  22. data/app/views/fiona7/release/preview.html.erb +1 -1
  23. data/app/views/fiona7_login_page/index.html.erb +0 -6
  24. data/app/views/scrivito/ui/index.html.erb +2 -1
  25. data/app/views/scrivito/webservice/_workspace.json.jbuilder +8 -0
  26. data/config/locales/errors.yml +18 -0
  27. data/config/locales/workflow.yml +24 -0
  28. data/config/precedence_routes.rb +7 -14
  29. data/infopark_fiona7.gemspec +6 -4
  30. data/lib/fiona7/assert.rb +2 -2
  31. data/lib/fiona7/attribute_readers/factory.rb +4 -0
  32. data/lib/fiona7/attribute_type_mapper.rb +4 -1
  33. data/lib/fiona7/attribute_writers/binary_as_binary.rb +2 -2
  34. data/lib/fiona7/attribute_writers/binary_as_linklist.rb +2 -2
  35. data/lib/fiona7/attribute_writers/factory.rb +4 -0
  36. data/lib/fiona7/builder/indirect_blob_builder.rb +2 -2
  37. data/lib/fiona7/builder/lazy_blob_copier.rb +1 -1
  38. data/lib/fiona7/builder/obj_builder.rb +45 -12
  39. data/lib/fiona7/controllers/rest_api/error_handler.rb +49 -0
  40. data/lib/fiona7/controllers/rest_api/obj_controller.rb +34 -20
  41. data/lib/fiona7/controllers/rest_api/session_controller.rb +13 -0
  42. data/lib/fiona7/engine.rb +7 -10
  43. data/lib/fiona7/facet_builder.rb +5 -1
  44. data/lib/fiona7/naive_search_engine.rb +9 -0
  45. data/lib/fiona7/routers/rest_api.rb +17 -0
  46. data/lib/fiona7/scrivito_patches/attribute_content.rb +28 -0
  47. data/lib/fiona7/scrivito_patches/cms_routing.rb +14 -31
  48. data/lib/fiona7/scrivito_patches/page_config.rb +1 -0
  49. data/lib/fiona7/scrivito_user.rb +3 -2
  50. data/lib/fiona7/type_register.rb +4 -0
  51. data/lib/fiona7/verity_search_engine.rb +6 -17
  52. data/lib/fiona7/version.rb +1 -1
  53. data/lib/fiona7/workspace.rb +2 -0
  54. metadata +28 -14
  55. data/app/assets/javascripts/scrivito_patches/models/ajax.js +0 -99
  56. data/app/assets/javascripts/scrivito_patches/models/blob.js +0 -50
@@ -0,0 +1,13 @@
1
+ module Fiona7
2
+ module Controllers
3
+ module RestAPI
4
+ class SessionController
5
+ def update(id, payload)
6
+ # NO OP
7
+ new_session = payload[:session].merge(id: id, maxage: 2_000_000 ).stringify_keys
8
+ return new_session
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
data/lib/fiona7/engine.rb CHANGED
@@ -157,21 +157,16 @@ module Fiona7
157
157
  config.editing_auth do |env|
158
158
  request = ActionDispatch::Request.new(env)
159
159
  session = request.session
160
- rsession = Reactor::SessionHelper::RsessionHelper.from_session(session)
160
+ rsession = session[:rsession]
161
161
  if rsession && rsession.user?
162
162
  Fiona7::ScrivitoUser.define(rsession.user)
163
163
  end
164
164
  end
165
165
 
166
166
  config.find_user do |user_id|
167
- begin
168
- user = Reactor::Cache::User.instance.get(user_id)
169
- Fiona7::ScrivitoUser.define(user)
170
- rescue Reactor::Cm::XmlSingleRequestError => e
171
- # this is the error code for entry (possibly user) not found
172
- # other errors we want to pass on (unauthorized, etc)
173
- raise e unless e.message =~ /060001/
174
- end
167
+ user = Reactor::Cache::User.instance.get(user_id)
168
+
169
+ Fiona7::ScrivitoUser.define(user)
175
170
  end
176
171
  end
177
172
  end
@@ -181,6 +176,8 @@ module Fiona7
181
176
  end
182
177
 
183
178
  RailsConnector::Configuration.instance_name = config.instance
179
+
180
+ Scrivito::Configuration.tenant = config.instance
184
181
  end
185
182
  end
186
183
 
@@ -242,7 +239,7 @@ module Fiona7
242
239
  # for the current user (root most likely), which is not
243
240
  # really a thing that we want - being root by default
244
241
  # should only happen in the root mode
245
- if !rsession.user?
242
+ if !session[:rsession]
246
243
  rsession.destroy
247
244
  end
248
245
  end
@@ -8,7 +8,7 @@ module Fiona7
8
8
 
9
9
  @attribute = facet_params[:attribute]
10
10
 
11
- @limit = [facet_params[:limit] || 20, 100].min # default = 20, limit <= 100
11
+ @limit = [facet_params[:limit] || 10, 100].min # default = 10, limit <= 100
12
12
  @fake_limit = 100
13
13
  @include_objs = facet_params[:include_objs] || false
14
14
 
@@ -47,6 +47,10 @@ module Fiona7
47
47
  # this gives a true total!
48
48
  facet[:total] = search.total
49
49
  end
50
+ else
51
+ @facets.each do |facet|
52
+ facet[:results] = []
53
+ end
50
54
  end
51
55
 
52
56
  @facets
@@ -118,6 +118,15 @@ module Fiona7
118
118
  else
119
119
  @all = @all.where(:path => value)
120
120
  end
121
+ elsif field == :_permalink
122
+ value = [value] unless value.is_a?(Array)
123
+ if (@all.is_a?(Array))
124
+ @all = @all.select do |o|
125
+ value.include?(o.permalink)
126
+ end
127
+ else
128
+ @all = @all.where(:permalink => value)
129
+ end
121
130
  elsif field == :_parent_path
122
131
  parent_obj = @klass.where(path: value).first
123
132
  if parent_obj
@@ -1,6 +1,9 @@
1
1
  require "fiona7/controllers/rest_api/obj_controller"
2
2
  require "fiona7/controllers/rest_api/blob_controller"
3
3
  require "fiona7/controllers/rest_api/workspace_controller"
4
+ require "fiona7/controllers/rest_api/session_controller"
5
+
6
+ require "fiona7/controllers/rest_api/error_handler"
4
7
 
5
8
  class Scrivito::CmsRestApi
6
9
  class << self
@@ -52,6 +55,9 @@ class Scrivito::CmsRestApi
52
55
  when /\A\/?workspaces\/[a-zA-Z0-9_-]+\/changes\Z/
53
56
  _, _, workspace_id,_ = *resource_path.split("/")
54
57
  Fiona7::Controllers::RestAPI::WorkspaceController.new.changes(workspace_id)
58
+ when /\A\/?workspaces\/[a-zA-Z0-9_-]+\/objs\/mget+\Z/
59
+ _, _, workspace_id, _, _ = *resource_path.split("/")
60
+ Fiona7::Controllers::RestAPI::ObjController.new.fetch_multiple2(workspace_id, payload)
55
61
  when /\A\/?workspaces\/[a-zA-Z0-9_-]+\/objs\/[a-zA-Z0-9_-]+\Z/
56
62
  _, _, workspace_id, _, obj_id = *resource_path.split("/")
57
63
  Fiona7::Controllers::RestAPI::ObjController.new.fetch_by_id(workspace_id, obj_id)
@@ -71,6 +77,8 @@ class Scrivito::CmsRestApi
71
77
  original_get(resource_path, payload, options||{})
72
78
  end
73
79
  end
80
+ rescue *Fiona7::ErrorHandler::HANDLED_ERRORS => e
81
+ raise Fiona7::ErrorHandler.new(e).sdk_error
74
82
  end
75
83
 
76
84
  alias_method :original_delete, :delete
@@ -94,6 +102,8 @@ class Scrivito::CmsRestApi
94
102
  else
95
103
  original_delete(resource_path, payload, options||{})
96
104
  end
105
+ rescue *Fiona7::ErrorHandler::HANDLED_ERRORS => e
106
+ raise Fiona7::ErrorHandler.new(e).sdk_error
97
107
  end
98
108
 
99
109
  alias_method :original_post, :post
@@ -114,6 +124,8 @@ class Scrivito::CmsRestApi
114
124
  else
115
125
  original_post(resource_path, payload, options||{})
116
126
  end
127
+ rescue *Fiona7::ErrorHandler::HANDLED_ERRORS => e
128
+ raise Fiona7::ErrorHandler.new(e).sdk_error
117
129
  end
118
130
 
119
131
  alias_method :original_put, :put
@@ -143,9 +155,14 @@ class Scrivito::CmsRestApi
143
155
  when /\A\/?blobs\/[a-zA-Z0-9]+\/copy/
144
156
  _, _, blob_id, _ = * resource_path.split("/")
145
157
  Fiona7::Controllers::RestAPI::BlobController.new.copy(blob_id, payload)
158
+ when /\A\/?sessions\/[a-zA-Z0-9]+/
159
+ _, _, session_id = *resource_path.split("/")
160
+ Fiona7::Controllers::RestAPI::SessionController.new.update(session_id, payload)
146
161
  else
147
162
  original_put(resource_path, payload, options||{})
148
163
  end
164
+ rescue *Fiona7::ErrorHandler::HANDLED_ERRORS => e
165
+ raise Fiona7::ErrorHandler.new(e).sdk_error
149
166
  end
150
167
  end
151
168
  end
@@ -20,6 +20,16 @@ module Scrivito
20
20
  to_s.titleize
21
21
  end
22
22
 
23
+ # support shadow classes
24
+ def as_json
25
+ {
26
+ name: to_s,
27
+ descriptionForEditor: description_for_editor,
28
+ attributes: attribute_definitions.map(&:as_json),
29
+ }
30
+ end
31
+
32
+
23
33
  def register_attribute_definitions(obj_class)
24
34
  type_register = Fiona7::TypeRegister.instance
25
35
  self.attribute_definitions.each do |attribute_definition|
@@ -27,6 +37,24 @@ module Scrivito
27
37
  type_register.add_usr_attr(obj_class, attribute_definition.name, attribute_definition.type, attribute_definition.values.presence)
28
38
  end
29
39
  end
40
+
41
+ # support legacy attribute names
42
+ def assert_valid_attribute_name(name)
43
+ if name == 'id'
44
+ raise ScrivitoError, "Invalid attribute name 'id'. 'id' is reserved for the system."
45
+ end
46
+
47
+ if name !~ /\A[A-Za-z][A-Za-z0-9_]*\z/ # <-- PATCH HERE
48
+ raise ScrivitoError, "Invalid attribute name '#{name}'. " \
49
+ "The first character must be an ASCII letter, " \
50
+ "subsequent characters may also be digits or underscores."
51
+ end
52
+
53
+ if name.size > 50
54
+ raise ScrivitoError, "Invalid attribute name '#{name}'. " \
55
+ "Attribute names must not be longer than 50 characters."
56
+ end
57
+ end
30
58
  end
31
59
  end
32
60
  end
@@ -34,7 +34,7 @@ module Scrivito
34
34
  def path_or_url_without_editing_context(target, path_or_url, options)
35
35
  if target.is_a?(Link)
36
36
  path_or_url_for_links(target, path_or_url, options)
37
- elsif target.is_a?(::Scrivito::BasicObj)
37
+ elsif target.is_a?(::Scrivito::BasicObj) # <-- patch here
38
38
  path_or_url_for_objs(target, path_or_url, options)
39
39
  elsif target.respond_to?(:first)
40
40
  if target.first.is_a?(Link)
@@ -50,20 +50,22 @@ module Scrivito
50
50
  end
51
51
  end
52
52
 
53
- # Use fiona connector permalinks in legacy mode
53
+
54
+ # Use fiona connector permalinks and binary urls in legacy mode
54
55
  def path_or_url_for_objs(obj, path_or_url, options)
55
56
  permalink = obj.permalink
56
- if permalink && route_defined?(:permalink) && permalink.split('/').first != 'scrivito'
57
-
57
+ if permalink && (route = find_route(:permalink)) && permalink.split('/').first != 'scrivito'
58
+ # -- patch here --
58
59
  if Fiona7.mode == :legacy
59
60
  context.public_send("cms_permalink_#{path_or_url}", options.merge(:permalink => permalink))
60
61
  else
61
- use_route(:permalink, path_or_url, options.merge(:permalink => permalink))
62
+ route.generate(path_or_url, options.merge(:permalink => permalink))
62
63
  end
63
- elsif homepage?(obj) && route_defined?(:homepage)
64
- use_route(:homepage, path_or_url, options)
64
+ # -- patch ends here --
65
+ elsif homepage?(obj) && route = find_route(:homepage)
66
+ route.generate(path_or_url, options)
65
67
  elsif obj.binary?
66
- # use fiona connector routes when possible
68
+ # -- patch here --
67
69
  if Fiona7.mode == :legacy && self.image_options.blank?
68
70
  if binary = obj.binary
69
71
  params = {
@@ -72,6 +74,7 @@ module Scrivito
72
74
  format: obj.file_extension
73
75
  }
74
76
 
77
+ # use fiona connector routes when possible
75
78
  context.public_send("cms_id_#{path_or_url}", params)
76
79
  else
77
80
  LINK_TO_EMPTY_BLOB
@@ -79,9 +82,10 @@ module Scrivito
79
82
  else
80
83
  binary_obj_url(obj) || LINK_TO_EMPTY_BLOB
81
84
  end
82
- elsif route_defined?(:slug_id)
85
+ # -- patch ends here --
86
+ elsif route = find_route(:slug_id)
83
87
  slug = obj.slug.present? ? obj.slug.sub(/^\//, '') : nil
84
- id_path_or_url_for_objs(obj, path_or_url, options.merge(slug: slug))
88
+ route.generate(path_or_url, options.merge(id: obj.id, slug: slug))
85
89
  else
86
90
  raise ScrivitoError, "The required scrivito route 'slug_id' is not defined. "\
87
91
  "Please add a 'slug_id' definition to your routes.rb. See the documentation"\
@@ -89,27 +93,6 @@ module Scrivito
89
93
  end
90
94
  end
91
95
 
92
- # use fiona connector routes when possible
93
- def id_path_or_url_for_objs(obj, path_or_url, options)
94
- if Fiona7.mode == :standalone
95
- options[:id] = obj.id
96
-
97
- # Options must have the key slug.
98
- # Otherwise Rails will use the slug from current request params.
99
- options[:slug] ||= nil
100
-
101
- use_route(:slug_id, path_or_url, options)
102
- else
103
- options[:id] = obj.id
104
-
105
- # Options must have the key slug.
106
- # Otherwise Rails will use the slug from current request params.
107
- options[:slug] ||= nil
108
-
109
- context.public_send("cms_id_#{path_or_url}", options)
110
- end
111
- end
112
-
113
96
  end
114
97
  end
115
98
 
@@ -9,6 +9,7 @@ module Scrivito
9
9
  id: obj.id,
10
10
  path: obj.path,
11
11
  obj_class: obj.obj_class,
12
+ description_for_editor: obj.description_for_editor,
12
13
  has_children: obj.children.any?,
13
14
  has_conflict: obj.has_conflict?,
14
15
  has_details_view: obj_has_details_view?,
@@ -24,8 +24,9 @@ module Fiona7
24
24
  # whether the user is trying to publish changes made to a particular website
25
25
  # section, here "investor relations", which requires a special permission.
26
26
  #
27
- user_definition.restrict_obj_publish(using: :_path) do |path|
28
- obj = Fiona7::WriteObj.find_by_path(path)
27
+ user_definition.restrict_obj_publish(using: :_id) do |id|
28
+ obj = Fiona7::WriteObj.find(id)
29
+ path = obj.path
29
30
  if !obj || !obj.permission.release?(rsession_user.user_name)
30
31
  I18n.t(:"fiona7.publish_permission_resticted", path: path)
31
32
  elsif obj && !obj.valid?(:release)
@@ -216,6 +216,10 @@ module Fiona7
216
216
  # was initially ad-hoc created, but now
217
217
  # has a proper definition
218
218
  true
219
+ when [:number, :float]
220
+ true
221
+ when [:number, :integer]
222
+ true
219
223
  else
220
224
  message = "Attribute types for #{attr_name} incompatible: CMS uses #{cms_type} but the application provided #{usr_type}"
221
225
  if ::Fiona7.config.dont_yell_at_me_for_abusing_attributes
@@ -86,14 +86,13 @@ module Fiona7
86
86
  conditions = query.map do |q|
87
87
  field = resolve_field_name(q[:field])
88
88
 
89
+ # paths are sadly not in the search index by default.
90
+ next if field == :visiblePath
91
+
89
92
  case q[:operator]
90
93
  when :equal
91
94
  if field == :__dummy__
92
95
  '("edited" <#IN> state)'
93
- elsif field ==:_path
94
- paths = Array(q[:value])
95
- ids = Fiona7::WriteObj.where(path: paths).select(:obj_id).limit(1000).map(&:obj_id).map(&:to_s).presence || ["1000"]
96
- search_in(:objId, ids)
97
96
  else
98
97
  search_in(field, q[:value])
99
98
  end
@@ -114,12 +113,6 @@ module Fiona7
114
113
  values = as_values_array(q[:value])
115
114
  values = values.map {|v| "#{v}*" }
116
115
  full_text_query_string(values)
117
- elsif field == :_path
118
- query = []
119
- paths = Array(q[:value]).map {|p| "#{p}%" }
120
- paths.each { |_| query << " (path LIKE ?) " }
121
- ids = Fiona7::WriteObj.where(query.join(' AND '), paths).select(:obj_id).limit(1000).map(&:obj_id).map(&:to_s).presence || ["1000"]
122
- search_in(:objId, ids)
123
116
  else
124
117
  values = as_values_array(q[:value])
125
118
  values = values.map {|v| "#{v}*" }
@@ -143,7 +136,7 @@ module Fiona7
143
136
 
144
137
  def search_in(field, values)
145
138
  values = [values] unless values.kind_of?(Array)
146
- if [:objClass, :objId, :permalink, :lastChanged, :name].include?(field)
139
+ if [:objClass, :obj_id, :permalink, :lastChanged, :name].include?(field)
147
140
  fields = [field.to_s]
148
141
  else
149
142
  fields = Fiona7::AttributeNamesFromQueries.new(field.to_s, @query).attributes || Fiona7::AttributeNamesFromCms.new(field.to_s).attributes || [field.to_s]
@@ -179,15 +172,11 @@ module Fiona7
179
172
  when :_obj_class
180
173
  :objClass
181
174
  when :_path
182
- :_path
175
+ :visiblePath
183
176
  when :_modification
184
177
  :__dummy__
185
178
  when :id
186
- :objId
187
- when :_id
188
- :objId
189
- when :obj_id
190
- :objId
179
+ :obj_id
191
180
  when :_permalink
192
181
  :permalink
193
182
  when :_last_changed
@@ -1,3 +1,3 @@
1
1
  module Fiona7
2
- VERSION = "1.2.0.2.3"
2
+ VERSION = "1.5.2.0.0"
3
3
  end
@@ -58,6 +58,8 @@ module Fiona7
58
58
  title: self.title,
59
59
  revision_id: self.revision_id,
60
60
  content_state_id: self.content_state_id,
61
+ outdated: false,
62
+ auto_update: (self.id == :rtc),
61
63
  memberships: self.memberships
62
64
  }
63
65
 
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: 1.2.0.2.3
4
+ version: 1.5.2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomasz Przedmojski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-26 00:00:00.000000000 Z
11
+ date: 2016-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2.0
33
+ version: 1.5.2
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: 1.2.0
40
+ version: 1.5.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: scrivito_sdk
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.23.1
89
+ version: 1.22.4
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.23.1
96
+ version: 1.22.4
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: mini_magick
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -109,19 +109,19 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: jquery-ui-rails
112
+ name: scrivito_development
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "<"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 6.0.0
118
- type: :runtime
117
+ version: '0'
118
+ type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "<"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 6.0.0
124
+ version: '0'
125
125
  description: scrivito-compatible interface for classic Fiona
126
126
  email:
127
127
  - tomasz.przedmojski@infopark.de
@@ -135,12 +135,20 @@ files:
135
135
  - app/assets/images/fiona7-marker.png
136
136
  - app/assets/javascripts/fiona7.js
137
137
  - app/assets/javascripts/fiona7_ui.js
138
- - app/assets/javascripts/scrivito_patches/models/ajax.js
139
- - app/assets/javascripts/scrivito_patches/models/blob.js
138
+ - app/assets/javascripts/scrivito_patches/ajax.js
139
+ - app/assets/javascripts/scrivito_patches/ajax_error_handling.js
140
+ - app/assets/javascripts/scrivito_patches/attribute_serializer.js
141
+ - app/assets/javascripts/scrivito_patches/base_obj_path.js
142
+ - app/assets/javascripts/scrivito_patches/binary_utils.js
143
+ - app/assets/javascripts/scrivito_patches/cms_rest_api.js
144
+ - app/assets/javascripts/scrivito_patches/models/api/basic_obj.js
145
+ - app/assets/javascripts/scrivito_patches/models/binary_field_element.js
140
146
  - app/assets/javascripts/scrivito_patches/models/obj.js
147
+ - app/assets/javascripts/scrivito_patches/obj_serializer.js
141
148
  - app/assets/stylesheets/fiona7-login.css.scss
142
149
  - app/assets/stylesheets/fiona7.css.scss
143
150
  - app/assets/stylesheets/fiona7_ui.css.scss
151
+ - app/controllers/fiona7/api_controller.rb
144
152
  - app/controllers/fiona7/blobs_controller.rb
145
153
  - app/controllers/fiona7/default_scrivito_cms_controller.rb
146
154
  - app/controllers/fiona7/release_controller.rb
@@ -148,6 +156,7 @@ files:
148
156
  - app/controllers/fiona7/workflow_controller.rb
149
157
  - app/controllers/fiona7_login_page_controller.rb
150
158
  - app/controllers/scrivito/cms_dispatch_controller.rb
159
+ - app/controllers/scrivito/obj_class_controller.rb
151
160
  - app/controllers/scrivito/objs_controller.rb
152
161
  - app/controllers/scrivito/webservice_controller.rb
153
162
  - app/helpers/fiona7_login_helper.rb
@@ -164,10 +173,13 @@ files:
164
173
  - app/views/fiona7_login_page/index.html.erb
165
174
  - app/views/layouts/fiona7_login_page_layout.html.erb
166
175
  - app/views/scrivito/ui/index.html.erb
176
+ - app/views/scrivito/webservice/_workspace.json.jbuilder
167
177
  - config/delayed_routes.rb
178
+ - config/locales/errors.yml
168
179
  - config/locales/login.yml
169
180
  - config/locales/permissions.yml
170
181
  - config/locales/release.yml
182
+ - config/locales/workflow.yml
171
183
  - config/precedence_routes.rb
172
184
  - infopark_fiona7.gemspec
173
185
  - lib/fiona7/access_permission_check.rb
@@ -232,7 +244,9 @@ files:
232
244
  - lib/fiona7/complex_object.rb
233
245
  - lib/fiona7/controller_helper.rb
234
246
  - lib/fiona7/controllers/rest_api/blob_controller.rb
247
+ - lib/fiona7/controllers/rest_api/error_handler.rb
235
248
  - lib/fiona7/controllers/rest_api/obj_controller.rb
249
+ - lib/fiona7/controllers/rest_api/session_controller.rb
236
250
  - lib/fiona7/controllers/rest_api/workspace_controller.rb
237
251
  - lib/fiona7/current_user_map.rb
238
252
  - lib/fiona7/custom_verity_accessor.rb