infopark_fiona7 1.1.0.0.10 → 1.2.0.0.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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/fiona7_ui.js +96 -50
- data/app/assets/javascripts/scrivito_patches/models/blob.js +21 -0
- data/app/assets/javascripts/scrivito_patches/models/obj.js +1 -1
- data/app/controllers/fiona7/release_controller.rb +6 -2
- data/app/controllers/fiona7/sessions_controller.rb +3 -0
- data/app/controllers/fiona7/workflow_controller.rb +46 -0
- data/app/helpers/fiona7_login_helper.rb +16 -0
- data/app/helpers/fiona7_override_helper.rb +1 -1
- data/config/delayed_routes.rb +1 -0
- data/config/precedence_routes.rb +92 -0
- data/infopark_fiona7.gemspec +2 -2
- data/lib/fiona7/blob_id_generator.rb +13 -0
- data/lib/fiona7/builder/indirect_blob_builder.rb +71 -0
- data/lib/fiona7/builder/lazy_blob_copier.rb +207 -0
- data/lib/fiona7/builder/obj_builder.rb +29 -50
- data/lib/fiona7/builder/obj_class_builder.rb +20 -0
- data/lib/fiona7/controllers/rest_api/blob_controller.rb +19 -0
- data/lib/fiona7/controllers/rest_api/obj_controller.rb +8 -4
- data/lib/fiona7/controllers/rest_api/workspace_controller.rb +2 -1
- data/lib/fiona7/engine.rb +56 -2
- data/lib/fiona7/json/obj_decorator.rb +4 -1
- data/lib/fiona7/link_converter/fiona_to_scrivito.rb +3 -1
- data/lib/fiona7/link_converter/scrivito_to_fiona.rb +12 -1
- data/lib/fiona7/mode_switch/cms_routes/scrivito_sdk.rb +1 -71
- data/lib/fiona7/mode_switch/cms_routes/scrivito_sdk_slave.rb +1 -71
- data/lib/fiona7/recursive_object_finder.rb +32 -8
- data/lib/fiona7/routers/rest_api.rb +6 -7
- data/lib/fiona7/scrivito_patches/attribute_content.rb +1 -1
- data/lib/fiona7/scrivito_patches/attribute_serializer.rb +22 -1
- data/lib/fiona7/scrivito_patches/basic_obj.rb +27 -5
- data/lib/fiona7/scrivito_patches/cms_backend.rb +3 -22
- data/lib/fiona7/scrivito_patches/cms_rest_api.rb +2 -1
- data/lib/fiona7/scrivito_patches/cms_routing.rb +2 -2
- data/lib/fiona7/scrivito_patches/model_library.rb +3 -3
- data/lib/fiona7/scrivito_patches/page_config.rb +21 -1
- data/lib/fiona7/scrivito_patches/preset_routes.rb +15 -2
- data/lib/fiona7/scrivito_patches/routing_extensions.rb +33 -20
- data/lib/fiona7/scrivito_patches/workspace.rb +3 -1
- data/lib/fiona7/super_object_finder.rb +63 -0
- data/lib/fiona7/type_register.rb +35 -9
- data/lib/fiona7/verity_search_engine.rb +1 -1
- data/lib/fiona7/version.rb +1 -1
- metadata +13 -7
- data/config/routes.rb +0 -13
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'fiona7/builder/lazy_blob_copier'
|
2
|
+
|
1
3
|
module Fiona7
|
2
4
|
module Controllers
|
3
5
|
module RestAPI
|
@@ -29,6 +31,7 @@ module Fiona7
|
|
29
31
|
}
|
30
32
|
}
|
31
33
|
end
|
34
|
+
|
32
35
|
def metadata(blob_id)
|
33
36
|
meta_binary = BinaryHandling::MetaBinary.new(blob_id)
|
34
37
|
content_type = meta_binary.mime_type
|
@@ -50,6 +53,22 @@ module Fiona7
|
|
50
53
|
}
|
51
54
|
}
|
52
55
|
end
|
56
|
+
|
57
|
+
def copy(blob_id, params)
|
58
|
+
input = params.symbolize_keys
|
59
|
+
blob_id = blob_id.to_i
|
60
|
+
destination_obj_id = input[:destination_obj_id]
|
61
|
+
filename = input[:filename]
|
62
|
+
content_type = input[:content_type]
|
63
|
+
destination_obj = Fiona7::WriteObj.find(destination_obj_id)
|
64
|
+
|
65
|
+
Fiona7::Builder::LazyBlobCopier.new({
|
66
|
+
destination_obj: destination_obj,
|
67
|
+
source_blob_id: blob_id,
|
68
|
+
filename: filename,
|
69
|
+
content_type: content_type
|
70
|
+
}).call.stringify_keys
|
71
|
+
end
|
53
72
|
end
|
54
73
|
end
|
55
74
|
end
|
@@ -34,6 +34,8 @@ module Fiona7
|
|
34
34
|
|
35
35
|
klass = EditedObj
|
36
36
|
decorated = Fiona7::JSON::ReverseObjDecorator.new(klass, obj)
|
37
|
+
|
38
|
+
::Fiona7.run_callbacks(:create_obj, obj.id)
|
37
39
|
|
38
40
|
return ::JSON.parse(::ActiveSupport::JSON.encode(decorated))
|
39
41
|
end
|
@@ -121,13 +123,13 @@ module Fiona7
|
|
121
123
|
|
122
124
|
query = (params[:query] || []).dup
|
123
125
|
|
124
|
-
|
126
|
+
Rails.logger.debug "Executing search for: #{query.inspect}"
|
125
127
|
if use_naive_search_engine?(query)
|
126
|
-
|
128
|
+
Rails.logger.debug "Using DB-native lookup for search"
|
127
129
|
search = NaiveSearchEngine.new(klass, query, offset, size, sort, order)
|
128
130
|
else
|
129
|
-
|
130
|
-
search =
|
131
|
+
Rails.logger.debug "Using configured search engine: #{::Fiona7.search_engine.name}"
|
132
|
+
search = ::Fiona7.search_engine.new(klass, query, offset, size, sort, order)
|
131
133
|
end
|
132
134
|
result = search.results.map {|o_id| {id: o_id} }
|
133
135
|
total = search.total
|
@@ -168,6 +170,8 @@ module Fiona7
|
|
168
170
|
obj = Builder::ObjUpdater.new(values[:obj].dup.with_indifferent_access).build
|
169
171
|
klass = EditedObj
|
170
172
|
decorated = Fiona7::JSON::ReverseObjDecorator.new(klass, obj)
|
173
|
+
|
174
|
+
::Fiona7.run_callbacks(:update_obj, obj.id)
|
171
175
|
return ::JSON.parse(::ActiveSupport::JSON.encode(decorated))
|
172
176
|
end
|
173
177
|
|
@@ -34,10 +34,11 @@ module Fiona7
|
|
34
34
|
|
35
35
|
def publish(id)
|
36
36
|
raise "Unexpected workspace_id: #{id}" unless id.to_s == "rtc"
|
37
|
-
WriteObj.where(is_edited: 1).each do |obj|
|
37
|
+
WriteObj.where(is_edited: 1).order('path DESC').each do |obj|
|
38
38
|
begin
|
39
39
|
obj.take
|
40
40
|
obj.release!
|
41
|
+
::Fiona7.run_callbacks(:release_obj, obj.id) unless obj.path =~ /\/_widgets\//
|
41
42
|
rescue => e
|
42
43
|
raise "Release impossible of: #{obj.path} because: #{e.message}"
|
43
44
|
end
|
data/lib/fiona7/engine.rb
CHANGED
@@ -55,16 +55,48 @@ require 'fiona7/scrivito_user'
|
|
55
55
|
|
56
56
|
require 'fiona7/type_synchronizer'
|
57
57
|
|
58
|
+
|
59
|
+
require 'fiona7/naive_search_engine'
|
60
|
+
require 'fiona7/verity_search_engine'
|
61
|
+
|
58
62
|
module Fiona7
|
59
63
|
mattr_accessor :mode
|
60
64
|
mattr_accessor :login
|
61
65
|
mattr_accessor :root
|
62
66
|
|
63
|
-
|
67
|
+
mattr_accessor :callbacks
|
68
|
+
self.callbacks = {
|
69
|
+
:create_obj => [],
|
70
|
+
:update_obj => [],
|
71
|
+
:release_obj => []
|
72
|
+
}
|
73
|
+
|
74
|
+
mattr_accessor :search_engine
|
75
|
+
self.search_engine = Fiona7::VeritySearchEngine
|
76
|
+
|
77
|
+
def self.run_callbacks(callback, *params)
|
78
|
+
(self.callbacks[callback] || []).each do |callback_proc|
|
79
|
+
begin
|
80
|
+
callback_proc.call(*params)
|
81
|
+
rescue => e
|
82
|
+
Rails.logger.error("An error occured when running a callback: #{callback} with #{params.inspect}")
|
83
|
+
Rails.logger.error("#{e.class}: #{e.message}")
|
84
|
+
Rails.logger.error(e.backtrace[0,30].join("\n"))
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.workflows_enabled?
|
90
|
+
true
|
91
|
+
end
|
92
|
+
|
93
|
+
class Config < Struct.new("Config", :mode, :instance, :host, :port, :username, :secret, :root_mode, :dont_yell_at_me_for_abusing_attributes)
|
64
94
|
end
|
65
95
|
|
96
|
+
mattr_accessor :config
|
97
|
+
|
66
98
|
def self.configure(&block)
|
67
|
-
Config.new.tap do |config|
|
99
|
+
self.config = Config.new.tap do |config|
|
68
100
|
yield config
|
69
101
|
|
70
102
|
Reactor::Configuration.xml_access = {
|
@@ -116,6 +148,11 @@ module Fiona7
|
|
116
148
|
initializer.initialize_system
|
117
149
|
end
|
118
150
|
|
151
|
+
initializer "fiona7.add_cms_routing_paths", :after => "scrivito.add_cms_routing_paths" do |app|
|
152
|
+
precedence_route = File.expand_path("precedence_routes.rb", paths['config'].to_a.first)
|
153
|
+
app.routes_reloader.paths.unshift(precedence_route)
|
154
|
+
end
|
155
|
+
|
119
156
|
initializer "fiona7.mode_switch" do |app|
|
120
157
|
mode = nil
|
121
158
|
|
@@ -154,6 +191,16 @@ module Fiona7
|
|
154
191
|
ActionController::Base.__send__(:define_method, :rsession_auth) do
|
155
192
|
if !Fiona7.login
|
156
193
|
rsession.user_name = Fiona7.root unless rsession.user_name == Fiona7.root
|
194
|
+
else
|
195
|
+
# This is interessting! We check for an existing rsession
|
196
|
+
# and if we don't find any, we destroy rsession. Why?
|
197
|
+
# Calling rsession.destroy first constructs the session
|
198
|
+
# for the current user (root most likely), which is not
|
199
|
+
# really a thing that we want - being root by default
|
200
|
+
# should only happen in the root mode
|
201
|
+
if !session[:rsession]
|
202
|
+
rsession.destroy
|
203
|
+
end
|
157
204
|
end
|
158
205
|
end
|
159
206
|
end
|
@@ -170,8 +217,15 @@ module Fiona7
|
|
170
217
|
RailsConnector::Meta::EagerLoader.instance.obj_classes.each do |_, obj_class|
|
171
218
|
type_register.read_mangled(obj_class.name)
|
172
219
|
end
|
220
|
+
end
|
221
|
+
|
173
222
|
|
223
|
+
# Installs delayed, low-priority scrivito routes (primarily: permalink route)
|
224
|
+
initializer "fiona7.add_cms_routing_paths", :after => :add_routing_paths do |app|
|
225
|
+
cms_route = File.expand_path("delayed_routes.rb", paths['config'].to_a.first)
|
226
|
+
app.routes_reloader.paths.push(cms_route)
|
174
227
|
end
|
228
|
+
|
175
229
|
# This ensures that reactor is loaded in the app
|
176
230
|
config.after_initialize { Fiona7::WriteObj }
|
177
231
|
|
@@ -9,6 +9,7 @@ require 'fiona7/assert'
|
|
9
9
|
require 'fiona7/link_converter/fiona_to_scrivito'
|
10
10
|
require 'fiona7/json/widget_decorator'
|
11
11
|
require 'fiona7/widget_resolver'
|
12
|
+
require 'fiona7/blob_id_generator'
|
12
13
|
|
13
14
|
module Fiona7
|
14
15
|
module JSON
|
@@ -90,7 +91,7 @@ module Fiona7
|
|
90
91
|
if !Fiona7.mode == :legacy || !@obj.binary?
|
91
92
|
deserialize_binary(@obj.attr_values[real_attribute_name].try(:first))
|
92
93
|
else
|
93
|
-
{id:
|
94
|
+
{id: Fiona7::BlobIdGenerator.new(@obj.id, @obj.last_changed).call}
|
94
95
|
end
|
95
96
|
when :enum, :multienum, :text, :string
|
96
97
|
if real_attribute_name == "suppress_export"
|
@@ -98,6 +99,8 @@ module Fiona7
|
|
98
99
|
else
|
99
100
|
@obj[real_attribute_name]
|
100
101
|
end
|
102
|
+
when :number
|
103
|
+
@obj[real_attribute_name].to_f
|
101
104
|
when :stringlist
|
102
105
|
if Fiona7.mode == :legacy && real_attribute_name == "channels"
|
103
106
|
@obj["channels"] || []
|
@@ -20,10 +20,21 @@ module Fiona7
|
|
20
20
|
end
|
21
21
|
link_expressions.each do |expr|
|
22
22
|
@value.gsub!(expr) do |string|
|
23
|
+
attr = $1
|
23
24
|
target = $2
|
24
25
|
objid = objid_from_target(target)
|
25
26
|
if objid
|
26
|
-
|
27
|
+
# This is a normal objid link
|
28
|
+
"#{attr}=\"#{obj_path(objid)}\""
|
29
|
+
elsif target =~ /^#/
|
30
|
+
# This is a link with anchor only if such link
|
31
|
+
# is placed within a widget it would become
|
32
|
+
# invalid (because it would produce a self-link
|
33
|
+
# in the widget)
|
34
|
+
#
|
35
|
+
# This works around this problem by producing
|
36
|
+
# an external link instead.
|
37
|
+
"#{attr}=\"external:#{target}\""
|
27
38
|
else
|
28
39
|
string
|
29
40
|
end
|
@@ -1,72 +1,2 @@
|
|
1
|
-
Rails.application.routes
|
2
|
-
mount Scrivito::SdkEngine, at: '/', as: :scrivito_engine
|
3
|
-
end
|
4
|
-
|
5
|
-
Scrivito::SdkEngine.routes.draw do
|
6
|
-
get 'scrivito', to: 'scrivito/ui#index'
|
7
|
-
get 'scrivito/*application_path', to: 'scrivito/ui#index', format: false
|
8
|
-
|
9
|
-
scope '__scrivito', module: 'scrivito' do
|
10
|
-
get ':id', to: 'cms_dispatch#index', as: :base_id, constraints: {id: /\h{4,}/}
|
11
|
-
|
12
|
-
resources :objs, controller: 'objs', only: [:show, :create, :update, :destroy],
|
13
|
-
defaults: {format: :json} do
|
14
|
-
collection do
|
15
|
-
get :page_class_selection
|
16
|
-
get :search
|
17
|
-
end
|
18
|
-
|
19
|
-
member do
|
20
|
-
get :widget
|
21
|
-
get :widget_class_selection
|
22
|
-
get :widget_modification
|
23
|
-
get :conflicting_workspaces
|
24
|
-
get :is_outdated
|
25
|
-
get :binary_no_cache
|
26
|
-
|
27
|
-
post :copy
|
28
|
-
post :duplicate
|
29
|
-
|
30
|
-
put :revert
|
31
|
-
put :restore
|
32
|
-
put :mark_resolved
|
33
|
-
put :destroy_widget
|
34
|
-
put :revert_widget
|
35
|
-
put :restore_widget
|
36
|
-
put :transfer_modifications
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
resources :tasks, controller: 'tasks', only: [:show], defaults: {format: :json}
|
41
|
-
|
42
|
-
get 'blobs/upload_permission' => 'blobs#upload_permission', defaults: {format: :json}
|
43
|
-
put 'blobs/activate_upload' => 'blobs#activate_upload', defaults: {format: :json}
|
44
|
-
|
45
|
-
resources :workspaces,
|
46
|
-
controller: 'workspaces',
|
47
|
-
only: [:index, :show, :create, :destroy],
|
48
|
-
defaults: {format: :json} do
|
49
|
-
member do
|
50
|
-
put :rename
|
51
|
-
put :memberships
|
52
|
-
put :rebase
|
53
|
-
put :publish
|
54
|
-
get :check
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
get 'users/suggest' => 'users#suggest', defaults: {format: :json}
|
59
|
-
get 'suggest_completion' => 'completion#suggest', defaults: {format: :json}
|
60
|
-
|
61
|
-
get 'render_widget/:id/show_widget/:widget_id' => 'cms_dispatch#show_widget'
|
62
|
-
get 'render_widget/:id/widget_details/:widget_id' => 'cms_dispatch#widget_details'
|
63
|
-
|
64
|
-
get 'page_details/:id' => 'cms_dispatch#page_details'
|
65
|
-
get 'resource_details/:resource_id', to: 'ui#index'
|
66
|
-
|
67
|
-
get 'to_binary' => 'binary_redirect#to_binary', as: :binary
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
Scrivito::PresetRoutes.install_into(Rails.application.routes)
|
1
|
+
Scrivito::PresetRoutes.install_into(Rails.application.routes, true)
|
72
2
|
|
@@ -1,72 +1,2 @@
|
|
1
|
-
Rails.application.routes
|
2
|
-
mount Scrivito::SdkEngine, at: '/', as: :scrivito_engine
|
3
|
-
end
|
4
|
-
|
5
|
-
Scrivito::SdkEngine.routes.draw do
|
6
|
-
get 'scrivito', to: 'scrivito/ui#index'
|
7
|
-
get 'scrivito/*application_path', to: 'scrivito/ui#index', format: false
|
8
|
-
|
9
|
-
scope '__scrivito', module: 'scrivito' do
|
10
|
-
get ':id', to: 'cms_dispatch#index', as: :base_id, constraints: {id: /\h{4,}/}
|
11
|
-
|
12
|
-
resources :objs, controller: 'objs', only: [:show, :create, :update, :destroy],
|
13
|
-
defaults: {format: :json} do
|
14
|
-
collection do
|
15
|
-
get :page_class_selection
|
16
|
-
get :search
|
17
|
-
end
|
18
|
-
|
19
|
-
member do
|
20
|
-
get :widget
|
21
|
-
get :widget_class_selection
|
22
|
-
get :widget_modification
|
23
|
-
get :conflicting_workspaces
|
24
|
-
get :is_outdated
|
25
|
-
get :binary_no_cache
|
26
|
-
|
27
|
-
post :copy
|
28
|
-
post :duplicate
|
29
|
-
|
30
|
-
put :revert
|
31
|
-
put :restore
|
32
|
-
put :mark_resolved
|
33
|
-
put :destroy_widget
|
34
|
-
put :revert_widget
|
35
|
-
put :restore_widget
|
36
|
-
put :transfer_modifications
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
resources :tasks, controller: 'tasks', only: [:show], defaults: {format: :json}
|
41
|
-
|
42
|
-
get 'blobs/upload_permission' => 'blobs#upload_permission', defaults: {format: :json}
|
43
|
-
put 'blobs/activate_upload' => 'blobs#activate_upload', defaults: {format: :json}
|
44
|
-
|
45
|
-
resources :workspaces,
|
46
|
-
controller: 'workspaces',
|
47
|
-
only: [:index, :show, :create, :destroy],
|
48
|
-
defaults: {format: :json} do
|
49
|
-
member do
|
50
|
-
put :rename
|
51
|
-
put :memberships
|
52
|
-
put :rebase
|
53
|
-
put :publish
|
54
|
-
get :check
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
get 'users/suggest' => 'users#suggest', defaults: {format: :json}
|
59
|
-
get 'suggest_completion' => 'completion#suggest', defaults: {format: :json}
|
60
|
-
|
61
|
-
get 'render_widget/:id/show_widget/:widget_id' => 'cms_dispatch#show_widget'
|
62
|
-
get 'render_widget/:id/widget_details/:widget_id' => 'cms_dispatch#widget_details'
|
63
|
-
|
64
|
-
get 'page_details/:id' => 'cms_dispatch#page_details'
|
65
|
-
get 'resource_details/:resource_id', to: 'ui#index'
|
66
|
-
|
67
|
-
get 'to_binary' => 'binary_redirect#to_binary', as: :binary
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
Scrivito::PresetRoutes.install_slave_into(Rails.application.routes)
|
1
|
+
Scrivito::PresetRoutes.install_slave_into(Rails.application.routes, true)
|
72
2
|
|
@@ -73,10 +73,22 @@ module Fiona7
|
|
73
73
|
|
74
74
|
def find_images(obj)
|
75
75
|
find_selected(obj) do |link, attribute|
|
76
|
-
if
|
77
|
-
|
78
|
-
|
79
|
-
|
76
|
+
if Fiona7.mode == :legacy
|
77
|
+
if link.internal?
|
78
|
+
destination_object = link.destination_object
|
79
|
+
if destination_object && destination_object.image?
|
80
|
+
true
|
81
|
+
end
|
82
|
+
end
|
83
|
+
else
|
84
|
+
if link.internal?
|
85
|
+
destination_object = link.destination_object
|
86
|
+
# now we check whether destination_object links X_Image
|
87
|
+
attribute = Fiona7::AttributeNameMangler.new(:blob, destination_object.obj_class).mangle
|
88
|
+
blob_link = (destination_object[attribute] || []).first
|
89
|
+
if blob_link && blob_link.internal? && blob_link.destination_object.try(:obj_class) == 'X_Image'
|
90
|
+
true
|
91
|
+
end
|
80
92
|
end
|
81
93
|
end
|
82
94
|
end
|
@@ -84,10 +96,22 @@ module Fiona7
|
|
84
96
|
|
85
97
|
def find_downloads(obj)
|
86
98
|
find_selected(obj) do |link, attribute|
|
87
|
-
if
|
88
|
-
|
89
|
-
|
90
|
-
|
99
|
+
if Fiona7.mode == :legacy
|
100
|
+
if link.internal?
|
101
|
+
destination_object = link.destination_object
|
102
|
+
if destination_object && destination_object.generic?
|
103
|
+
true
|
104
|
+
end
|
105
|
+
end
|
106
|
+
else
|
107
|
+
if link.internal?
|
108
|
+
destination_object = link.destination_object
|
109
|
+
# now we check whether destination_object links X_Generic
|
110
|
+
attribute = Fiona7::AttributeNameMangler.new(:blob, destination_object.obj_class).mangle
|
111
|
+
blob_link = (destination_object[attribute] || []).first
|
112
|
+
if blob_link && blob_link.internal? && blob_link.destination_object.try(:obj_class) == 'X_Generic'
|
113
|
+
true
|
114
|
+
end
|
91
115
|
end
|
92
116
|
end
|
93
117
|
end
|
@@ -29,7 +29,7 @@ class Scrivito::CmsRestApi
|
|
29
29
|
resource_path = '/' + resource_path
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
#Rails.logger.debug "F7 REST GET: #{resource_path}"
|
33
33
|
case resource_path
|
34
34
|
when /\A\/?revisions\/[a-zA-Z0-9_-]+\/objs\/mget\Z/
|
35
35
|
_, _, revision_id, _, _ = *resource_path.split("/")
|
@@ -68,7 +68,6 @@ class Scrivito::CmsRestApi
|
|
68
68
|
_, _, blob_id = *resource_path.split("/")
|
69
69
|
Fiona7::Controllers::RestAPI::BlobController.new.metadata(blob_id)
|
70
70
|
else
|
71
|
-
$stdout.puts "GET: #{resource_path}"
|
72
71
|
original_get(resource_path, payload, options||{})
|
73
72
|
end
|
74
73
|
end
|
@@ -93,7 +92,6 @@ class Scrivito::CmsRestApi
|
|
93
92
|
_, _, workspace_id, _, obj_id = *resource_path.split("/")
|
94
93
|
Fiona7::Controllers::RestAPI::ObjController.new.destroy(workspace_id, obj_id)
|
95
94
|
else
|
96
|
-
#$stdout.puts "DELETE: #{resource_path}"
|
97
95
|
original_delete(resource_path, payload, options||{})
|
98
96
|
end
|
99
97
|
end
|
@@ -106,7 +104,7 @@ class Scrivito::CmsRestApi
|
|
106
104
|
resource_path = '/' + resource_path
|
107
105
|
end
|
108
106
|
|
109
|
-
|
107
|
+
#Rails.logger.debug "F7 REST POST: #{resource_path}"
|
110
108
|
case resource_path
|
111
109
|
when /\A\/?workspaces\Z/
|
112
110
|
Fiona7::Controllers::RestAPI::WorkspaceController.new.create(payload)
|
@@ -114,7 +112,6 @@ class Scrivito::CmsRestApi
|
|
114
112
|
_, _, workspace_id = *resource_path.split("/")
|
115
113
|
Fiona7::Controllers::RestAPI::ObjController.new.create(workspace_id, payload)
|
116
114
|
else
|
117
|
-
#$stdout.puts "POST: #{resource_path}"
|
118
115
|
original_post(resource_path, payload, options||{})
|
119
116
|
end
|
120
117
|
end
|
@@ -127,7 +124,7 @@ class Scrivito::CmsRestApi
|
|
127
124
|
resource_path = '/' + resource_path
|
128
125
|
end
|
129
126
|
|
130
|
-
|
127
|
+
#Rails.logger.debug "F7 PUT: #{resource_path}"
|
131
128
|
case resource_path
|
132
129
|
when /\A\/?workspaces\/[a-zA-Z0-9]+\/objs\/[a-zA-Z0-9]+\Z/
|
133
130
|
_, _, workspace_id, _, obj_id = *resource_path.split("/")
|
@@ -143,8 +140,10 @@ class Scrivito::CmsRestApi
|
|
143
140
|
when /\A\/?workspaces\/[a-zA-Z0-9]+/
|
144
141
|
_, _, workspace_id = *resource_path.split("/")
|
145
142
|
Fiona7::Controllers::RestAPI::WorkspaceController.new.update(workspace_id)
|
143
|
+
when /\A\/?blobs\/[a-zA-Z0-9]+\/copy/
|
144
|
+
_, _, blob_id, _ = * resource_path.split("/")
|
145
|
+
Fiona7::Controllers::RestAPI::BlobController.new.copy(blob_id, payload)
|
146
146
|
else
|
147
|
-
#$stdout.puts "PUT: #{resource_path}"
|
148
147
|
original_put(resource_path, payload, options||{})
|
149
148
|
end
|
150
149
|
end
|