scrivito_sdk 0.66.0 → 0.70.0.rc1

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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/scrivito/blobs_controller.rb +5 -0
  3. data/app/controllers/scrivito/objs_controller.rb +2 -1
  4. data/app/controllers/scrivito/ui_controller.rb +33 -3
  5. data/app/helpers/scrivito_helper.rb +14 -20
  6. data/app/views/scrivito/objs/update.json.jbuilder +1 -1
  7. data/app/views/scrivito/ui/index.html.erb +1 -1
  8. data/app/views/scrivito/webservice/_workspace.json.jbuilder +2 -1
  9. data/config/ca-bundle.crt +1 -1
  10. data/config/precedence_routes.rb +3 -2
  11. data/lib/assets/javascripts/scrivito.js +46 -0
  12. data/lib/assets/javascripts/scrivito_ui.js +931 -501
  13. data/lib/assets/stylesheets/scrivito.css +1 -0
  14. data/lib/assets/stylesheets/scrivito_ui.css +1 -1
  15. data/lib/generators/scrivito/install/templates/app/views/page/index.html.erb +3 -3
  16. data/lib/generators/scrivito/page/page_generator.rb +3 -0
  17. data/lib/generators/scrivito/page/templates/model.erb +3 -0
  18. data/lib/generators/scrivito/widget/templates/model.erb +3 -0
  19. data/lib/generators/scrivito/widget/widget_generator.rb +3 -0
  20. data/lib/scrivito/attribute_content.rb +93 -60
  21. data/lib/scrivito/attribute_definition.rb +3 -3
  22. data/lib/scrivito/attribute_serializer.rb +2 -2
  23. data/lib/scrivito/backend/obj_data_cache.rb +22 -9
  24. data/lib/scrivito/basic_obj.rb +238 -130
  25. data/lib/scrivito/basic_widget.rb +32 -20
  26. data/lib/scrivito/binary.rb +74 -45
  27. data/lib/scrivito/binary_routing.rb +52 -0
  28. data/lib/scrivito/cache_middleware.rb +0 -5
  29. data/lib/scrivito/client_attribute_serializer.rb +134 -0
  30. data/lib/scrivito/cms_backend.rb +51 -33
  31. data/lib/scrivito/cms_data_cache.rb +1 -0
  32. data/lib/scrivito/cms_dispatch_controller.rb +1 -1
  33. data/lib/scrivito/cms_env.rb +1 -11
  34. data/lib/scrivito/cms_field_tag.rb +10 -7
  35. data/lib/scrivito/cms_rest_api/rate_limit.rb +5 -5
  36. data/lib/scrivito/cms_rest_api/request_timer.rb +27 -0
  37. data/lib/scrivito/cms_rest_api/widget_extractor.rb +8 -6
  38. data/lib/scrivito/cms_rest_api.rb +107 -54
  39. data/lib/scrivito/cms_routing.rb +13 -25
  40. data/lib/scrivito/configuration.rb +5 -2
  41. data/lib/scrivito/controller_actions.rb +68 -7
  42. data/lib/scrivito/controller_runtime.rb +8 -0
  43. data/lib/scrivito/date_attribute.rb +8 -0
  44. data/lib/scrivito/errors.rb +6 -3
  45. data/lib/scrivito/generator_helper.rb +13 -0
  46. data/lib/scrivito/image_tag.rb +24 -30
  47. data/lib/scrivito/layout_tags.rb +12 -6
  48. data/lib/scrivito/link.rb +46 -30
  49. data/lib/scrivito/log_subscriber.rb +15 -0
  50. data/lib/scrivito/membership.rb +3 -3
  51. data/lib/scrivito/membership_collection.rb +10 -10
  52. data/lib/scrivito/meta_data_collection.rb +22 -0
  53. data/lib/scrivito/model_library.rb +7 -1
  54. data/lib/scrivito/obj_collection.rb +18 -16
  55. data/lib/scrivito/obj_params_parser.rb +1 -1
  56. data/lib/scrivito/obj_search_enumerator.rb +35 -35
  57. data/lib/scrivito/page_config.rb +55 -0
  58. data/lib/scrivito/request_homepage.rb +23 -0
  59. data/lib/scrivito/routing_helper.rb +8 -8
  60. data/lib/scrivito/sdk_engine.rb +2 -3
  61. data/lib/scrivito/ui_config.rb +85 -0
  62. data/lib/scrivito/user.rb +30 -23
  63. data/lib/scrivito/user_definition.rb +48 -47
  64. data/lib/scrivito/widget_tag.rb +11 -0
  65. data/lib/scrivito/workspace.rb +93 -35
  66. data/lib/scrivito/workspace_selection_middleware.rb +8 -1
  67. data/lib/scrivito_sdk.rb +24 -24
  68. metadata +24 -33
  69. data/lib/assets/javascripts/scrivito_sdk.js +0 -57
  70. data/lib/assets/stylesheets/scrivito_sdk.css +0 -1
  71. data/lib/scrivito/client_config.rb +0 -113
  72. data/lib/scrivito/editing_context_helper.rb +0 -19
  73. data/lib/scrivito/named_link.rb +0 -39
@@ -1,113 +0,0 @@
1
- module Scrivito
2
-
3
- class ClientConfig < Struct.new(:obj, :editing_context, :lookup_context, :resource, :return_to)
4
- def initialize(obj, editing_context, lookup_context, options = {})
5
- super(obj, editing_context, lookup_context, *options.values_at(:resource, :return_to))
6
- end
7
-
8
- def to_json
9
- config = {}
10
- config[:current_page] = current_page_config
11
- config[:editing_context] = editing_context_config
12
- config[:i18n] = i18n_config
13
- config[:resource_dialog] = resource_dialog_config
14
- config[:user] = user_config
15
- config[:user_permissions] = user_permissions_config
16
- config[:is_development_mode] = Rails.env.development?
17
- config.to_json
18
- end
19
-
20
- private
21
-
22
- def editing_context_config
23
- {
24
- display_mode: editing_context.display_mode,
25
-
26
- selected_workspace: {
27
- id: selected_workspace.id,
28
- title: selected_workspace.title,
29
- outdated: selected_workspace.outdated?
30
- },
31
-
32
- visible_workspace: {
33
- id: visible_workspace.id,
34
- title: visible_workspace.title
35
- }
36
- }
37
- end
38
-
39
- def i18n_config
40
- {locale: Scrivito::Configuration.ui_locale || I18n.locale}
41
- end
42
-
43
- def current_page_config
44
- if obj
45
- {
46
- id: obj.id,
47
- obj_class_name: obj.obj_class_name,
48
- has_children: obj.children.any?,
49
- has_conflict: obj.has_conflict?,
50
- has_details_view: obj_has_details_view?,
51
- modification: modification(obj),
52
- restriction_messages: editor.restriction_messages_for(obj),
53
- }
54
- else
55
- {}
56
- end
57
- end
58
-
59
- def obj_has_details_view?
60
- lookup_context.find(obj.details_view_path).present?
61
- rescue ActionView::MissingTemplate
62
- false
63
- end
64
-
65
- def resource_dialog_config
66
- if resource
67
- {
68
- obj: Configuration.obj_formats.fetch('_default').call(resource, editor),
69
- return_to: return_to,
70
- }
71
- else
72
- {}
73
- end
74
- end
75
-
76
- def user_permissions_config
77
- {
78
- create_workspace: editor.can?(:create, :workspace),
79
- publish_workspace: editor.can?(:publish, selected_workspace),
80
- }
81
- end
82
-
83
- def user_config
84
- {
85
- current: {
86
- id: editor.id
87
- }
88
- }
89
- end
90
-
91
- def modification(obj_or_resource)
92
- comparison = editing_context.comparison
93
- if comparison.active?
94
- comparison.modification(obj_or_resource)
95
- else
96
- obj_or_resource.modification
97
- end
98
- end
99
-
100
- def editor
101
- editing_context.editor
102
- end
103
-
104
- def selected_workspace
105
- editing_context.selected_workspace
106
- end
107
-
108
- def visible_workspace
109
- editing_context.visible_workspace
110
- end
111
- end
112
-
113
- end
@@ -1,19 +0,0 @@
1
- module Scrivito
2
-
3
- class EditingContextHelper < Struct.new(:request)
4
- def scrivito_user
5
- editing_context.editor
6
- end
7
-
8
- def in_editable_view?
9
- editing_context.editable_display_mode?
10
- end
11
-
12
- private
13
-
14
- def editing_context
15
- Scrivito::EditingContextMiddleware.from_request(request)
16
- end
17
- end
18
-
19
- end
@@ -1,39 +0,0 @@
1
- module Scrivito
2
-
3
- # This class provides methods used to retrieve objects from CMS based an entry
4
- # in CMS of the obj_class <tt>NamedLink</tt>.
5
- # @api public
6
- class NamedLink
7
-
8
- # @api public
9
- class NotFound < StandardError
10
- end
11
-
12
- # This method will be called to retrieve the NamedLink {BasicObj Obj}.
13
- # By default it will look for the Obj at the path "_named_links".
14
- # Override this method only if you know what you are doing.
15
- # @api public
16
- def self.find_named_link_obj
17
- BasicObj.find_by_path("/_named_links")
18
- end
19
-
20
- # Returns the CMS object mapped to the given title or nil.
21
- # The title can be a string of symbol.
22
- # @api public
23
- def self.get_object(title, options = {})
24
- link = named_links.find { |link| link.title == title.to_s }
25
- raise NotFound, "The NamedLink '#{title.to_s}' does not exist" unless link
26
- link.obj
27
- end
28
-
29
- def self.named_links
30
- named_link_obj = find_named_link_obj
31
-
32
- if named_link_obj
33
- named_link_obj.related_links
34
- else
35
- raise NotFound, "Couldn't find NamedLink CMS Object!"
36
- end
37
- end
38
- end
39
- end