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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/fiona7_ui.js +96 -50
  3. data/app/assets/javascripts/scrivito_patches/models/blob.js +21 -0
  4. data/app/assets/javascripts/scrivito_patches/models/obj.js +1 -1
  5. data/app/controllers/fiona7/release_controller.rb +6 -2
  6. data/app/controllers/fiona7/sessions_controller.rb +3 -0
  7. data/app/controllers/fiona7/workflow_controller.rb +46 -0
  8. data/app/helpers/fiona7_login_helper.rb +16 -0
  9. data/app/helpers/fiona7_override_helper.rb +1 -1
  10. data/config/delayed_routes.rb +1 -0
  11. data/config/precedence_routes.rb +92 -0
  12. data/infopark_fiona7.gemspec +2 -2
  13. data/lib/fiona7/blob_id_generator.rb +13 -0
  14. data/lib/fiona7/builder/indirect_blob_builder.rb +71 -0
  15. data/lib/fiona7/builder/lazy_blob_copier.rb +207 -0
  16. data/lib/fiona7/builder/obj_builder.rb +29 -50
  17. data/lib/fiona7/builder/obj_class_builder.rb +20 -0
  18. data/lib/fiona7/controllers/rest_api/blob_controller.rb +19 -0
  19. data/lib/fiona7/controllers/rest_api/obj_controller.rb +8 -4
  20. data/lib/fiona7/controllers/rest_api/workspace_controller.rb +2 -1
  21. data/lib/fiona7/engine.rb +56 -2
  22. data/lib/fiona7/json/obj_decorator.rb +4 -1
  23. data/lib/fiona7/link_converter/fiona_to_scrivito.rb +3 -1
  24. data/lib/fiona7/link_converter/scrivito_to_fiona.rb +12 -1
  25. data/lib/fiona7/mode_switch/cms_routes/scrivito_sdk.rb +1 -71
  26. data/lib/fiona7/mode_switch/cms_routes/scrivito_sdk_slave.rb +1 -71
  27. data/lib/fiona7/recursive_object_finder.rb +32 -8
  28. data/lib/fiona7/routers/rest_api.rb +6 -7
  29. data/lib/fiona7/scrivito_patches/attribute_content.rb +1 -1
  30. data/lib/fiona7/scrivito_patches/attribute_serializer.rb +22 -1
  31. data/lib/fiona7/scrivito_patches/basic_obj.rb +27 -5
  32. data/lib/fiona7/scrivito_patches/cms_backend.rb +3 -22
  33. data/lib/fiona7/scrivito_patches/cms_rest_api.rb +2 -1
  34. data/lib/fiona7/scrivito_patches/cms_routing.rb +2 -2
  35. data/lib/fiona7/scrivito_patches/model_library.rb +3 -3
  36. data/lib/fiona7/scrivito_patches/page_config.rb +21 -1
  37. data/lib/fiona7/scrivito_patches/preset_routes.rb +15 -2
  38. data/lib/fiona7/scrivito_patches/routing_extensions.rb +33 -20
  39. data/lib/fiona7/scrivito_patches/workspace.rb +3 -1
  40. data/lib/fiona7/super_object_finder.rb +63 -0
  41. data/lib/fiona7/type_register.rb +35 -9
  42. data/lib/fiona7/verity_search_engine.rb +1 -1
  43. data/lib/fiona7/version.rb +1 -1
  44. metadata +13 -7
  45. data/config/routes.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f157ab2c9327bc25c25a102610afd55d62cd58a1
4
- data.tar.gz: e72a68bf50020c0ff5601cafe79abb25ed78914f
3
+ metadata.gz: 5390d8274e0e6c0929da925705786a07b297d912
4
+ data.tar.gz: 13969d1b7aa62d32be9679bd08b576bae5cb471a
5
5
  SHA512:
6
- metadata.gz: 039eb2f418d793ad1cf654a0dfcde66401b84ecdf9c6ac7a4173c774c3399cb228be72dbb2dc1b34f16de7821e2cb8c68c76c8626f3e8a54037b0ac3a3fe5865
7
- data.tar.gz: ac03a8ce8184097ec663ad18e6710cb8a4e002641c0b78be89e5fb4b9acc8fd9284acf219ff1f1eb2b9cc17b4e7aa1f156a0e12f68e83dfcc5b85e5b8ce41cf2
6
+ metadata.gz: a752b07549ac28002aede720ea199a2d299898e5d6e325365dabee926cca3a58d5a67f2352fcfc367fe19876b154bc9b4ed0add07c2b5e372300a3d8aa1f02b9
7
+ data.tar.gz: 6aa69f7e831a3d9fdc9fecb5028bbfbf3b935a29655895f5fa24aed5d8a67b70fed900bdbf2e40246a0ec33f96de671c7034921cd2f6ec03ae09471a56c3f67b
@@ -104,6 +104,13 @@
104
104
  'commands.release_obj.dialog.confirm': 'Freigeben',
105
105
  'commands.release_obj.failed': 'Freigabe fehlgeschlagen',
106
106
 
107
+ 'commands.edit_obj.title': 'Seite bearbeiten',
108
+ 'commands.edit_obj.dialog.title': 'Seite bearbeiten?',
109
+ 'commands.edit_obj.dialog.description': 'Es wird eine neue Arbeitsversion erstellt.',
110
+ 'commands.edit_obj.dialog.placeholder': 'Bitte Kommentar eintragen',
111
+ 'commands.edit_obj.dialog.confirm': 'Bearbeiten',
112
+ 'commands.edit_obj.failed': 'Bearbeitung fehlgeschlagen',
113
+
107
114
  'commands.forward_obj.title': 'Seite weiterleiten',
108
115
  'commands.forward_obj.dialog.title': 'Seite weiterleiten?',
109
116
  'commands.forward_obj.dialog.description': 'Die Arbeitsversion wird an einen weiteren Bearbeiter weitergeleitet. Dieser Vorgang kann nicht rückgängig gemacht werden.',
@@ -137,7 +144,10 @@
137
144
  'commands.take_obj.dialog.description': 'Die Arbeitsversion wird übernommen. Dieser Vorgang kann nicht rückgängig gemacht werden.',
138
145
  'commands.take_obj.dialog.placeholder': 'Bitte Kommentar eintragen',
139
146
  'commands.take_obj.dialog.confirm': 'Übernehmen',
140
- 'commands.take_obj.failed': 'Übernahme fehlgeschlagen'
147
+ 'commands.take_obj.failed': 'Übernahme fehlgeschlagen',
148
+
149
+ 'editing_disabled.workflow': 'Die Datei unterliegt einem Workflow und kann nicht direkt bearbeitet werden.',
150
+ 'editing_disabled.permissions': 'Ihnen fehlen die Rechte um die Datei zu bearbeiten'
141
151
  }, 'de');
142
152
 
143
153
  $.i18n().load({
@@ -149,6 +159,13 @@
149
159
  'commands.release_obj.dialog.confirm': 'Release',
150
160
  'commands.release_obj.failed': 'Release failed',
151
161
 
162
+ 'commands.edit_obj.title': 'Edit page',
163
+ 'commands.edit_obj.dialog.title': 'Edit this page?',
164
+ 'commands.edit_obj.dialog.description': 'A new version of this page will be created.',
165
+ 'commands.edit_obj.dialog.placeholder': 'Comment',
166
+ 'commands.edit_obj.dialog.confirm': 'Edit',
167
+ 'commands.edit_obj.failed': 'Edit failed',
168
+
152
169
  'commands.forward_obj.title': 'Forward page',
153
170
  'commands.forward_obj.dialog.title': 'Forward this page?',
154
171
  'commands.forward_obj.dialog.description': 'Forward and edited page is final. This operation cannot be reverted.',
@@ -158,14 +175,14 @@
158
175
 
159
176
  'commands.reject_obj.title': 'Reject page',
160
177
  'commands.reject_obj.dialog.title': 'Reject this page?',
161
- 'commands.reject_obj.dialog.description': 'Die Arbeitsversion wird abgelehnt. Dieser Vorgang kann nicht rückgängig gemacht werden.',
178
+ 'commands.reject_obj.dialog.description': 'Current page will be rejected. This operation cannot be reverted.',
162
179
  'commands.reject_obj.dialog.placeholder': 'Comment',
163
180
  'commands.reject_obj.dialog.confirm': 'Reject',
164
181
  'commands.reject_obj.failed': 'Reject failed',
165
182
 
166
183
  'commands.sign_obj.title': 'Sign page',
167
184
  'commands.sign_obj.dialog.title': 'Sign this page?',
168
- 'commands.sign_obj.dialog.description': 'Die eingereichte Version wird abgezeichnet. Dieser Vorgang kann nicht rückgängig gemacht werden.',
185
+ 'commands.sign_obj.dialog.description': 'Committed page will be signed. This operation cannot be reverted.',
169
186
  'commands.sign_obj.dialog.placeholder': 'Comment',
170
187
  'commands.sign_obj.dialog.confirm': 'Sign',
171
188
  'commands.sign_obj.failed': 'Signing failed',
@@ -182,19 +199,24 @@
182
199
  'commands.take_obj.dialog.description': 'Die Arbeitsversion wird übernommen. Dieser Vorgang kann nicht rückgängig gemacht werden.',
183
200
  'commands.take_obj.dialog.placeholder': 'Comment',
184
201
  'commands.take_obj.dialog.confirm': 'Take',
185
- 'commands.take_obj.failed': 'Take failed'
202
+ 'commands.take_obj.failed': 'Take failed',
203
+
204
+ 'editing_disabled.workflow': 'The current page belongs to a workflow and cannot be edited directly.',
205
+ 'editing_disabled.permissions': 'You do not have the permissions required to edit this page.'
186
206
  }, 'en');
187
207
 
188
208
  var dialog_icons = {
209
+ "edit": "",
189
210
  "forward": "",
190
211
  "reject": "",
191
- "commit": "&#xcheck;",
212
+ "commit": "",
192
213
  "sign": "",
193
214
  "take": "",
194
215
  "release": ""
195
216
  };
196
217
 
197
218
  var icons = {
219
+ "edit": "pen",
198
220
  "forward": "check",
199
221
  "reject": "cross",
200
222
  "commit": "check",
@@ -202,69 +224,93 @@
202
224
  "take": "exclamation",
203
225
  "release": "globe"
204
226
  };
205
- var actions = ["forward", "reject","commit", "sign", "take", "release"];
206
- actions = ["release"];
227
+ var actions = ["edit", "forward", "reject","commit", "sign", "take"];
207
228
 
208
229
  scrivito.gui.on('document', function(cms_document) {
209
- //console.log('adding release button');
210
- var obj = cms_document.page();
230
+ var page_config = (cms_document.page_config() || {})['current_page'] || {};
231
+ var obj = cms_document.page();
232
+ var buttons = page_config['buttons'] || [];
233
+ var workflow_enabled = page_config['workflow'];
234
+
235
+ if (cms_document.browser_window().name !== 'scrivito_application') {
236
+ // TODO: add special handling for scrivito_details_dialog and scrivito_inspector
237
+ return;
238
+ }
239
+
240
+ /* release button */
241
+ scrivito.page_menu(cms_document).add('fiona7.idx'+99+'.release_obj', {
242
+ title: scrivito.t('commands.release_obj.title'),
243
+ icon: icons['release'],
244
+
245
+ present: function() {
246
+ return scrivito.editing_context.selected_workspace.is_editable() && obj && (!workflow_enabled || (buttons.indexOf('release') !== -1));
247
+ },
211
248
 
212
- _.each(actions, function(action,idx) {
249
+ disabled: function() {
250
+ if (!obj.modification()) {
251
+ return scrivito.t('commands.release_obj.not_modified_obj');
252
+ }
253
+ if (obj.has_restriction()) {
254
+ return obj.restriction_messages().join("; ");
255
+ }
256
+ },
257
+
258
+ update: function() {
259
+ return obj.reload();
260
+ },
261
+
262
+ execute: function() {
263
+ open_release_dialog(obj.id()).done(function(objIds, comment) {
264
+ scrivito.with_saving_overlay(scrivito.ajax('PUT', 'objs/release', {data: {objs: objIds, comment: comment}}).then(function() {
265
+ scrivito.reload();
266
+ }));
267
+ });
268
+ }
269
+ });
270
+ /* TODO: enforce permissions */
271
+
272
+ /* TODO: better sorting */
273
+
274
+ /* disable editing */
275
+ setTimeout(function (){
276
+ if (page_config['editing_disabled']) {
277
+ scrivito.editing_mode.disable(scrivito.t('editing_disabled.workflow'));
278
+ } else {
279
+ scrivito.editing_mode.enable();
280
+ }
281
+ }, 0);
282
+
283
+ /* add workflow buttons */
284
+ $.each(actions, function(idx, action) {
213
285
  scrivito.page_menu(cms_document).add('fiona7.idx'+idx+'.'+action+'_obj', {
214
286
  title: scrivito.t('commands.'+action+'_obj.title'),
215
287
  icon: icons[action],
216
288
 
217
289
  present: function() {
218
- return scrivito.editing_context.selected_workspace.is_editable() && obj;// && !obj.is_deleted() && scrivito.user_permissions.can(action + '_obj');
219
- },
220
-
221
- disabled: function() {
222
- if (action == 'release' && !obj.modification()) {
223
- return scrivito.t('commands.release_obj.not_modified_obj');
224
- }
225
- if (action == 'release' && obj.has_restriction()) {
226
- return obj.restriction_messages().join("; ");
227
-
228
- }
229
- },
230
-
231
- update: function() {
232
- return obj.reload();
290
+ return buttons.indexOf(action) !== -1;
233
291
  },
234
292
 
235
293
  execute: function() {
236
- open_release_dialog(obj.id()).done(function(objIds, comment) {
237
- scrivito.with_saving_overlay(scrivito.ajax('PUT', 'objs/release', {data: {objs: objIds, comment: comment}}).then(function() {
238
- scrivito.reload();
294
+ open_confirmation_dialog(action, dialog_icons[action]).done(function(comment) {
295
+ scrivito.with_saving_overlay(scrivito.ajax('PUT', 'objs/workflow/'+action, {data: {id: obj.id(), comment: comment}}).then(function() {
296
+ if (action == 'edit' || action == 'take') {
297
+
298
+ if (!scrivito.editing_context.is_editing_mode()) {
299
+ return scrivito.with_saving_overlay(
300
+ scrivito.change_editing_context({display_mode: 'editing', workspace_id: 'rtc'}));
301
+ } else {
302
+ return scrivito.with_saving_overlay(scrivito.reload());
303
+ }
304
+ } else {
305
+ return scrivito.with_saving_overlay(scrivito.reload());
306
+ }
239
307
  }));
240
308
  });
241
309
  }
242
310
  });
243
311
  });
244
312
 
245
-
246
- //var menu = cms_document.menu();
247
- //menu.push(scrivito.command_separator.create_instance({id: 'fiona7.zz_sparator'}));
248
- //cms_document.set_menu(menu);
249
-
250
- //scrivito.configure_menu_order(['fiona7.*', '*']);
251
313
  });
252
314
 
253
315
  return;
254
-
255
- /* enforce permissions */
256
- var originalGuiStart = scrivito.gui.start;
257
- scrivito.gui.start = function () {
258
- originalGuiStart.call(this, arguments);
259
- if (scrivito.in_editable_view()) {
260
- if (!scrivito.user_permissions.can('write_obj')) {
261
- $('.switch_to_view_mode').click();
262
- }
263
- } else {
264
- if (!scrivito.user_permissions.can('write_obj')) {
265
- $('.scrivito_viewmode_editing').remove();
266
- }
267
- }
268
- };
269
-
270
316
  }());
@@ -22,8 +22,29 @@
22
22
  params.filename = params.filename.replace(/[^\w\-_\.$]/g, '-');
23
23
 
24
24
  return $.extend(params, {is_uploaded_binary: true});
25
+ },
26
+
27
+ copy_binary: function(id, obj_id, attr_name, params) {
28
+ assert_valid_params(params);
29
+
30
+ return _.extend({
31
+ is_copied_binary: true,
32
+ id_to_copy: id,
33
+ obj_id: obj_id,
34
+ attr_name: attr_name
35
+ }, params);
25
36
  }
26
37
  }
27
38
  });
28
39
 
40
+
41
+ var assert_valid_params = function(params) {
42
+ if (_.has(params, 'filename') && !params.filename) {
43
+ $.error('filename cannot be blank');
44
+ }
45
+
46
+ if (_.has(params, 'content_type') && !params.content_type) {
47
+ $.error('content_type cannot be blank');
48
+ }
49
+ };
29
50
  }());
@@ -201,7 +201,7 @@
201
201
  var current_page = scrivito.application_document().page();
202
202
  var path = (typeof current_page.provided_path === 'function') && current_page.provided_path();
203
203
  params = {};
204
- params['_path'] = path;
204
+ params['parent_path'] = path;
205
205
  }
206
206
  return scrivito.obj.fetch_class_selection('objs/page_class_selection', params);
207
207
  },
@@ -46,8 +46,12 @@ module Fiona7
46
46
  end
47
47
 
48
48
  def carefully_release(errors, obj, comment=nil)
49
- obj.take
50
- obj.release!(comment) if obj.really_edited?
49
+ if obj.really_edited?
50
+ # we don't care much if this fails
51
+ obj.take
52
+ obj.release!(comment)
53
+ ::Fiona7.run_callbacks(:release_obj, obj.id)
54
+ end
51
55
 
52
56
  complex_object = Fiona7::ComplexObject.new(obj)
53
57
  complex_object.widgets.each do |widget_obj|
@@ -42,6 +42,9 @@ module Fiona7
42
42
  Reactor::Sudo.su(Fiona7.root) do
43
43
  Reactor::Cm::User.new(login).has_password?(password)
44
44
  end
45
+ rescue Reactor::Cm::XmlRequestError => e
46
+ Rails.logger.error("Error logging in: #{e.message}")
47
+ false
45
48
  end
46
49
  end
47
50
  end
@@ -0,0 +1,46 @@
1
+ module Fiona7
2
+ class WorkflowController < ActionController::Base
3
+ def edit
4
+ workflow_action('edit')
5
+ end
6
+
7
+ def take
8
+ workflow_action('take')
9
+ end
10
+
11
+ def forward
12
+ workflow_action('forward')
13
+ end
14
+
15
+ def commit
16
+ workflow_action('commit')
17
+ end
18
+
19
+ def sign
20
+ workflow_action('sign')
21
+ end
22
+
23
+ def reject
24
+ workflow_action('reject')
25
+ end
26
+
27
+ protected
28
+ def workflow_action(action)
29
+ @obj = WriteObj.find(params[:id])
30
+ @comment = params[:comment]
31
+
32
+ if action == 'edit'
33
+ # TODO: this should be implemented in reactor.
34
+ @obj.edit!(@comment)
35
+ else
36
+ @obj.workflow.send(:"#{action}!", @comment)
37
+ end
38
+
39
+ render json: {}
40
+ rescue => e
41
+ Rails.logger.error("Error #{e.inspect} when executing workflow operation on #{@obj.id} with comment=#{@comment}")
42
+ render json: {message: e.message, message_for_editor: e.message}, status: 412
43
+ end
44
+
45
+ end
46
+ end
@@ -1,4 +1,20 @@
1
1
  module Fiona7LoginHelper
2
+ def fiona7_login_path
3
+ fiona7_engine.fiona7_login_path
4
+ end
5
+
6
+ def fiona7_login_url
7
+ fiona7_engine.fiona7_login_url
8
+ end
9
+
10
+ def fiona7_logout_path
11
+ fiona7_engine.fiona7_logout_path
12
+ end
13
+
14
+ def fiona7_logout_url
15
+ fiona7_engine.fiona7_logout_url
16
+ end
17
+
2
18
  def fiona7_logged_in?
3
19
  rsession.user?
4
20
  end
@@ -31,7 +31,7 @@ module Fiona7OverrideHelper
31
31
  raise "This method can only be used in legacy mode" unless Fiona7.mode == :legacy
32
32
 
33
33
  obj_or_widget = obj_or_widget.kind_of?(RailsConnector::BasicObj) ? obj_or_widget.scrivito_obj : obj_or_widget
34
- scrivito_tag(tag_name, obj_or_widget, field_name, html_options, editing_options = {}, &block)
34
+ scrivito_tag(tag_name, obj_or_widget, field_name, html_options, editing_options, &block)
35
35
  end
36
36
 
37
37
  def fiona7_tag_list(tag_name, obj, field_name, options = {}, &block)
@@ -0,0 +1 @@
1
+ Scrivito::PresetRoutes.install_delayed
@@ -0,0 +1,92 @@
1
+ Rails.application.routes.draw do
2
+ mount Fiona7::Engine, at: '/', as: :fiona7_engine
3
+ mount Scrivito::SdkEngine, at: '/', as: :scrivito_engine
4
+ end
5
+
6
+ Fiona7::Engine.routes.draw do
7
+ get '/_b/:id(/:name)' => 'fiona7/blobs#show', as: :fiona7_blob
8
+
9
+ match '/_b/:id(/:name)' => 'fiona7/blobs#query', as: :fiona7_blob_meta, via: [:head]
10
+
11
+ post '/_f7/login', to: 'fiona7/sessions#create', as: :fiona7_login
12
+
13
+ delete '/_f7/logout', to: 'fiona7/sessions#destroy', as: :fiona7_logout
14
+
15
+ put '/__scrivito/objs/release(.:format)', to: 'fiona7/release#release', as: :fiona7_release
16
+
17
+ put '/__scrivito/objs/workflow/edit(.:format)', to: 'fiona7/workflow#edit', as: :fiona7_workflow_edit
18
+ put '/__scrivito/objs/workflow/take(.:format)', to: 'fiona7/workflow#take', as: :fiona7_workflow_take
19
+ put '/__scrivito/objs/workflow/forward(.:format)', to: 'fiona7/workflow#forward', as: :fiona7_workflow_forward
20
+ put '/__scrivito/objs/workflow/commit(.:format)', to: 'fiona7/workflow#commit', as: :fiona7_workflow_commit
21
+ put '/__scrivito/objs/workflow/sign(.:format)', to: 'fiona7/workflow#sign', as: :fiona7_workflow_sign
22
+ put '/__scrivito/objs/workflow/reject(.:format)', to: 'fiona7/workflow#reject', as: :fiona7_workflow_reject
23
+
24
+
25
+ get '/__scrivito/objs/:id/release/preview(.:format)', to: 'fiona7/release#preview', as: :fiona7_release_preview
26
+ end
27
+
28
+ Scrivito::SdkEngine.routes.draw do
29
+ get 'scrivito', to: 'scrivito/ui#index'
30
+ get 'scrivito/*application_path', to: 'scrivito/ui#index', format: false
31
+
32
+ scope '__scrivito', module: 'scrivito' do
33
+ get ':id', to: 'cms_dispatch#index', as: :base_id, constraints: {id: /\h{4,}/}
34
+
35
+ resources :objs, controller: 'objs', only: [:show, :create, :update, :destroy],
36
+ defaults: {format: :json} do
37
+ collection do
38
+ get :page_class_selection
39
+ get :search
40
+ end
41
+
42
+ member do
43
+ get :widget
44
+ get :widget_class_selection
45
+ get :widget_modification
46
+ get :conflicting_workspaces
47
+ get :is_outdated
48
+ get :binary_no_cache
49
+
50
+ post :copy
51
+ post :duplicate
52
+
53
+ put :revert
54
+ put :restore
55
+ put :mark_resolved
56
+ put :revert_widget
57
+ put :restore_widget
58
+ put :transfer_modifications
59
+ end
60
+ end
61
+
62
+ resources :tasks, controller: 'tasks', only: [:show], defaults: {format: :json}
63
+
64
+ get 'blobs/upload_permission' => 'blobs#upload_permission', defaults: {format: :json}
65
+ put 'blobs/activate_upload' => 'blobs#activate_upload', defaults: {format: :json}
66
+ put 'blobs/copy' => 'blobs#copy', defaults: {format: :json}
67
+
68
+ resources :workspaces,
69
+ controller: 'workspaces',
70
+ only: [:index, :show, :create, :destroy],
71
+ defaults: {format: :json} do
72
+ member do
73
+ put :rename
74
+ put :memberships
75
+ put :rebase
76
+ put :publish
77
+ get :check
78
+ end
79
+ end
80
+
81
+ get 'users/suggest' => 'users#suggest', defaults: {format: :json}
82
+ get 'suggest_completion' => 'completion#suggest', defaults: {format: :json}
83
+
84
+ get 'render_widget/:id/show_widget/:widget_id' => 'cms_dispatch#show_widget'
85
+ get 'render_widget/:id/widget_details/:widget_id' => 'cms_dispatch#widget_details'
86
+
87
+ get 'page_details/:id' => 'cms_dispatch#page_details'
88
+ get 'resource_details/:resource_id', to: 'ui#index'
89
+
90
+ get 'to_binary' => 'binary_redirect#to_binary', as: :binary
91
+ end
92
+ end