scrivito_sdk 0.70.2 → 0.71.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/scrivito/binary_redirect_controller.rb +12 -9
  3. data/app/controllers/scrivito/blobs_controller.rb +1 -2
  4. data/app/controllers/scrivito/objs_controller.rb +16 -0
  5. data/app/helpers/scrivito_helper.rb +6 -2
  6. data/app/views/cms/index.html.erb +1 -1
  7. data/app/views/scrivito/blobs/activate_upload.json.jbuilder +1 -0
  8. data/app/views/scrivito/objs/obj.json.jbuilder +1 -1
  9. data/app/views/scrivito/objs/transfer_modifications.json.jbuilder +6 -0
  10. data/config/ca-bundle.crt +128 -81
  11. data/config/precedence_routes.rb +1 -0
  12. data/lib/assets/images/scrivito/source_invalid.png +0 -0
  13. data/lib/assets/images/scrivito/source_too_large.png +0 -0
  14. data/lib/assets/images/scrivito/source_type_invalid.png +0 -0
  15. data/lib/assets/javascripts/scrivito_ui.js +1043 -645
  16. data/lib/assets/stylesheets/scrivito.css +1 -1
  17. data/lib/assets/stylesheets/scrivito_ui.css +1 -1
  18. data/lib/generators/scrivito/page/templates/thumbnail.html.erb +1 -1
  19. data/lib/scrivito/attribute_content.rb +54 -17
  20. data/lib/scrivito/attribute_deserializer.rb +1 -1
  21. data/lib/scrivito/attribute_serializer.rb +6 -4
  22. data/lib/scrivito/backend/obj_query.rb +11 -2
  23. data/lib/scrivito/base_widget_tag.rb +77 -0
  24. data/lib/scrivito/basic_obj.rb +67 -67
  25. data/lib/scrivito/basic_widget.rb +11 -6
  26. data/lib/scrivito/binary.rb +50 -5
  27. data/lib/scrivito/binary_param_verifier.rb +4 -5
  28. data/lib/scrivito/client_attribute_serializer.rb +3 -3
  29. data/lib/scrivito/cms_backend.rb +12 -0
  30. data/lib/scrivito/cms_field_tag.rb +8 -6
  31. data/lib/scrivito/cms_rest_api.rb +28 -8
  32. data/lib/scrivito/cms_rest_api/rate_limit.rb +1 -0
  33. data/lib/scrivito/cms_routing.rb +7 -1
  34. data/lib/scrivito/configuration.rb +1 -1
  35. data/lib/scrivito/controller_actions.rb +38 -35
  36. data/lib/scrivito/date_attribute.rb +3 -7
  37. data/lib/scrivito/editing_context.rb +3 -3
  38. data/lib/scrivito/editing_context_middleware.rb +3 -3
  39. data/lib/scrivito/errored_widget_tag.rb +34 -0
  40. data/lib/scrivito/errors.rb +6 -0
  41. data/lib/scrivito/future_binary.rb +23 -0
  42. data/lib/scrivito/link_parser.rb +12 -1
  43. data/lib/scrivito/membership_collection.rb +8 -8
  44. data/lib/scrivito/obj_collection.rb +2 -2
  45. data/lib/scrivito/obj_create_params_parser.rb +2 -2
  46. data/lib/scrivito/obj_params_parser.rb +5 -1
  47. data/lib/scrivito/obj_search_builder.rb +2 -12
  48. data/lib/scrivito/obj_search_enumerator.rb +48 -43
  49. data/lib/scrivito/page_config.rb +2 -1
  50. data/lib/scrivito/type_computer.rb +6 -6
  51. data/lib/scrivito/user.rb +9 -10
  52. data/lib/scrivito/user_definition.rb +2 -2
  53. data/lib/scrivito/warning.rb +17 -0
  54. data/lib/scrivito/widget_garbage_collection.rb +1 -1
  55. data/lib/scrivito/widget_tag.rb +28 -53
  56. data/lib/scrivito/workspace.rb +32 -23
  57. metadata +10 -6
  58. data/app/views/scrivito/objs/copy_widget.html.erb +0 -1
  59. data/app/views/scrivito/objs/create_widget.html.erb +0 -1
@@ -2,7 +2,7 @@ module Scrivito
2
2
 
3
3
  # Adds support for string columns which contain ISO dates
4
4
  module DateAttribute
5
- def self.deserialize_from_backend(iso_date_time)
5
+ def self.parse(iso_date_time)
6
6
  return nil unless iso_date_time
7
7
 
8
8
  if iso_date_time.to_s =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/
@@ -12,7 +12,7 @@ module Scrivito
12
12
  end
13
13
  end
14
14
 
15
- def self.deserialize_from_client(iso8601_date_time)
15
+ def self.parse_iso8601(iso8601_date_time)
16
16
  return unless iso8601_date_time
17
17
 
18
18
  DateTime.iso8601(iso8601_date_time).in_time_zone
@@ -20,17 +20,13 @@ module Scrivito
20
20
  raise "The value is not a valid ISO 8601 date time: #{iso8601_date_time.inspect}"
21
21
  end
22
22
 
23
- def self.serialize_for_backend(attribute_value)
23
+ def self.serialize(attribute_value)
24
24
  attribute_value = case attribute_value
25
25
  when Date then attribute_value.to_time
26
26
  when Time then attribute_value.to_time.utc
27
27
  end
28
28
  attribute_value.strftime('%Y%m%d%H%M%S') if attribute_value
29
29
  end
30
-
31
- def self.serialize_for_client(attribute_value)
32
- attribute_value.utc.iso8601
33
- end
34
30
  end
35
31
 
36
32
  end
@@ -50,13 +50,13 @@ class EditingContext
50
50
  end
51
51
 
52
52
  # defaults to "published" if no workspace with `selected_workspace_id` can be found.
53
- # @return [Workspace]
53
+ # @return [Scrivito::Workspace]
54
54
  def selected_workspace
55
55
  @selected_workspace ||= find_selected_workspace
56
56
  end
57
57
 
58
58
  # when authenticated_editor? return selected_workspace, otherwise published workspace.
59
- # @return [Workspace]
59
+ # @return [Scrivito::Workspace]
60
60
  def visible_workspace
61
61
  @visible_workspace ||= find_visible_workspace
62
62
  end
@@ -118,7 +118,7 @@ class EditingContext
118
118
  Workspace.published
119
119
  end
120
120
 
121
- # @return [Revision] or +nil+
121
+ # @return [Scrivito::Revision] or +nil+
122
122
  def compare_revision
123
123
  case display_mode
124
124
  when 'added'
@@ -48,13 +48,13 @@ class EditingContextMiddleware
48
48
  if editing_auth_callback = Configuration.editing_auth_callback
49
49
  -> { editing_auth_callback.call(env) }
50
50
  else
51
- Rails.logger.warn(%{
52
- WARNING!
51
+ Warning.warn <<-EOS
53
52
 
54
53
  Application is running in "#{Rails.env}" environment, but authentication is not configured.
55
54
  For security reasons the in-place editing is disabled.
56
55
  Please see https://scrivito.com/permissions for details.
57
- })
56
+
57
+ EOS
58
58
  nil
59
59
  end
60
60
  end
@@ -0,0 +1,34 @@
1
+ module Scrivito
2
+ class ErroredWidgetTag < BaseWidgetTag
3
+ attr_reader :error
4
+
5
+ def initialize(view, widget, options)
6
+ @error = options.fetch(:error)
7
+ super
8
+ end
9
+
10
+ def content
11
+ if view.controller.respond_to?(:on_scrivito_widget_error, true)
12
+ view.controller.__send__(:on_scrivito_widget_error, widget, error)
13
+ else
14
+ handle_render_error(widget, error)
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def description_for_editor
21
+ "Error in #{widget.class.description_for_editor}"
22
+ end
23
+
24
+ def handle_render_error(widget, error)
25
+ message = "Rendering widget with ID #{widget.id} and obj_class #{widget.obj_class} for "\
26
+ "obj with ID #{widget.obj.id} failed"
27
+ Warning.error(message, error)
28
+
29
+ "We're sorry, but something went wrong. "\
30
+ "If you are the application owner check the logs for more information."
31
+ end
32
+ end
33
+
34
+ end
@@ -38,4 +38,10 @@ end
38
38
  class TransferModificationsError < ScrivitoError
39
39
  end
40
40
 
41
+ class TransferModificationsModifiedError < TransferModificationsError
42
+ end
43
+
44
+ class TransferModificationsConflictError < TransferModificationsError
45
+ end
46
+
41
47
  end # module Scrivito
@@ -0,0 +1,23 @@
1
+ module Scrivito
2
+
3
+ # @api public
4
+ # The FutureBinary class represents the data to be stored in a binary field.
5
+ # See {Scrivito::Binary.upload} and {Scrivito::Binary#copy} for details.
6
+ class FutureBinary
7
+ attr_reader :filename, :content_type, :id_to_be_copied, :file_to_be_uploaded
8
+
9
+ def initialize(filename:, content_type:, id_to_be_copied: nil, file_to_be_uploaded: nil)
10
+ @filename = filename
11
+ @content_type = content_type || content_type_of_filename(filename)
12
+ @id_to_be_copied = id_to_be_copied
13
+ @file_to_be_uploaded = file_to_be_uploaded
14
+ end
15
+
16
+ private
17
+
18
+ def content_type_of_filename(filename)
19
+ MIME::Types.type_for(filename).first.try(:content_type)
20
+ end
21
+ end
22
+
23
+ end
@@ -40,7 +40,18 @@ module Scrivito
40
40
  private
41
41
 
42
42
  def application_uri?(uri)
43
- uri.absolute? && internal_uri?(uri) || uri.relative? && uri.path.present?
43
+ absolute_uri?(uri) && internal_uri?(uri) || relative_uri?(uri) && uri.path.present?
44
+ end
45
+
46
+ def absolute_uri?(uri)
47
+ # Ruby's URI parser assumes URLs without a scheme as relativ, while a browser assumes a
48
+ # schemeless "//scrivito.com" as absolute. Since the URLs are for the browser, we cannot use
49
+ # Ruby's URI here.
50
+ uri.to_s =~ /\A([a-z][a-z\d\-+\.]*:|\/\/).*/i
51
+ end
52
+
53
+ def relative_uri?(uri)
54
+ !absolute_uri?(uri)
44
55
  end
45
56
 
46
57
  def internal_uri?(uri)
@@ -1,7 +1,7 @@
1
1
  module Scrivito
2
2
  # @api public
3
- # The MembershipCollection includes all members of a given {Workspace}.
4
- # You can access it using the {Workspace#memberships} method.
3
+ # The Scrivito::MembershipCollection includes all members of a given {Scrivito::Workspace}.
4
+ # You can access it using the {Scrivito::Workspace#memberships} method.
5
5
  class MembershipCollection
6
6
  extend Forwardable
7
7
  include Enumerable
@@ -10,10 +10,10 @@ module Scrivito
10
10
 
11
11
  # @api public
12
12
  # @!method each
13
- # Iterate over all {Membership Memberships} of a specific {Workspace}. Allows
14
- # you to use all the methods defined by Ruby's Enumerable module.
13
+ # Iterate over all {Scrivito::Membership Memberships} of a specific {Scrivito::Workspace}.
14
+ # Allows you to use all the methods defined by Ruby's Enumerable module.
15
15
  #
16
- # @yield [Membership]
16
+ # @yield [Scrivito::Membership]
17
17
  #
18
18
  # @return [Enumerator] if no block is given, an Enumerator is returned
19
19
  #
@@ -41,7 +41,7 @@ module Scrivito
41
41
 
42
42
  # @api public
43
43
  # Returns a hash where the keys are +user_id+s and the values are Membership instances.
44
- # @return [Hash<String, Membership>]
44
+ # @return [Hash<String, Scrivito::Membership>]
45
45
  def to_h
46
46
  memberships.inject(HashWithIndifferentAccess.new) do |hash, membership|
47
47
  hash[membership.user_id] = membership
@@ -52,8 +52,8 @@ module Scrivito
52
52
  # @api public
53
53
  # Returns the membership of a user or nil.
54
54
  #
55
- # @param [User, String] id_or_user
56
- # @return [Membership, nil]
55
+ # @param [Scrivito::User, String] id_or_user
56
+ # @return [Scrivito::Membership, nil]
57
57
  def [](id_or_user)
58
58
  id = if id_or_user.respond_to?(:id)
59
59
  id_or_user.id
@@ -32,7 +32,7 @@ module Scrivito
32
32
  # Find the {BasicObj Obj} that has the given path.
33
33
  # Returns +nil+ if no matching object exists.
34
34
  # @param [String] path Path of the {BasicObj Obj}.
35
- # @return [Obj]
35
+ # @return [Obj,NilClass]
36
36
  # @api public
37
37
  def find_by_path(path)
38
38
  find_by(:path, [path]).first.first
@@ -40,7 +40,7 @@ module Scrivito
40
40
 
41
41
  # Returns the {BasicObj Obj} that has the given permalink, or +nil+ if no matching object exists.
42
42
  # @param [String] permalink The permalink of the {BasicObj Obj}.
43
- # @return [Obj]
43
+ # @return [Obj,NilClass]
44
44
  # @api public
45
45
  def find_by_permalink(permalink)
46
46
  find_by(:permalink, [permalink]).first.first
@@ -3,8 +3,8 @@ module Scrivito
3
3
  private
4
4
 
5
5
  def convert_params(params)
6
- if obj_class_name = params['_obj_class']
7
- obj_class = Obj.type_computer.compute_type_without_fallback(obj_class_name)
6
+ if obj_class = params['_obj_class']
7
+ obj_class = Obj.type_computer.compute_type_without_fallback(obj_class)
8
8
  convert_field_params(params, obj_class.attribute_definitions)
9
9
  else
10
10
  raise ArgumentError, 'Missing "_obj_class" param'
@@ -19,7 +19,7 @@ module Scrivito
19
19
  when 'link' then ContentConversion.convert_link(value, host, port)
20
20
  when 'linklist' then ContentConversion.convert_linklist_urls(value, host, port)
21
21
  when 'widgetlist' then parse_widgetlist_params(value)
22
- when 'date' then DateAttribute.deserialize_from_client(value)
22
+ when 'date' then parse_date_params(value)
23
23
  else value
24
24
  end
25
25
  end
@@ -49,5 +49,9 @@ module Scrivito
49
49
  def parse_binary_params(params)
50
50
  UploadedBinary.new(params) if params
51
51
  end
52
+
53
+ def parse_date_params(params)
54
+ DateAttribute.parse_iso8601(params)
55
+ end
52
56
  end
53
57
  end
@@ -26,11 +26,10 @@ class ObjSearchBuilder < Struct.new(:query)
26
26
 
27
27
  def set_predicates
28
28
  query[:predicates].each do |p|
29
- values = deserialize_values(p[:value])
30
29
  if p[:negate]
31
- enumerator.and_not(p[:field], p[:operator], values)
30
+ enumerator.and_not(p[:field], p[:operator], p[:value])
32
31
  else
33
- enumerator.and(p[:field], p[:operator], values, p[:boost])
32
+ enumerator.and(p[:field], p[:operator], p[:value], p[:boost])
34
33
  end
35
34
  end
36
35
  end
@@ -52,15 +51,6 @@ class ObjSearchBuilder < Struct.new(:query)
52
51
  enumerator.include_deleted if query[:include_deleted]
53
52
  end
54
53
 
55
- def deserialize_values(values)
56
- values.map do |(type, value)|
57
- if type == 'date'
58
- DateAttribute.deserialize_from_client(value)
59
- else
60
- value
61
- end
62
- end
63
- end
64
54
  end
65
55
 
66
56
  end
@@ -1,38 +1,40 @@
1
1
  # encoding: UTF-8
2
2
  module Scrivito
3
- # Provides an enumerator for iterating over the results of searches for CMS objects to retrieve instances of these objects.
4
- # This is achieved through the {http://ruby-doc.org/core-2.1.3/Enumerable.html <code>Enumerable</code> mixin},
5
- # which provides methods such as <code>map</code>, <code>select</code> or <code>take</code>.
3
+ # Provides an enumerator for iterating over the results of searches for CMS objects to retrieve
4
+ # instances of these objects. This is achieved through the
5
+ # {http://ruby-doc.org/core-2.1.3/Enumerable.html +Enumerable+ mixin}, which provides methods such
6
+ # as +map+, +select+ or +take+.
6
7
  #
7
- # This enumerator is lazy. If, for example, you are looking for {BasicObj Obj}s whose object class is "Publication",
8
- # and there are 93 objects in total, then <code>enum.take(10)</code> fetches the first 10 objects only,
9
- # ignoring the other 83.
10
- # This implies that repeatedly iterating over this enumerator causes the search results and the objects to be fetched again and again.
11
- # If you want to get all objects at once, use <code>enum.to_a</code>.
8
+ # This enumerator is lazy. If, for example, you are looking for {Scrivito::BasicObj Obj}s whose
9
+ # object class is +Publication+, and there are 93 objects in total, then +enum.take(10)+ fetches
10
+ # the first 10 objects only, ignoring the other 83.
11
+ # This implies that repeatedly iterating over this enumerator causes the search results and the
12
+ # objects to be fetched again and again. If you want to get all objects at once, use +enum.to_a+.
12
13
  #
13
- # To start searching, use one of the {BasicObj Obj} methods that return an {ObjSearchEnumerator}. The preferred way is to start with {BasicObj.where Obj.where}.
14
+ # To start searching, use one of the {Scrivito::BasicObj Obj} methods that return an
15
+ # {Scrivito::ObjSearchEnumerator}. The preferred way is to start with
16
+ # {Scrivito::BasicObj.where Obj.where}.
14
17
  #
15
18
  # == Currently available fields and their values
16
19
  #
17
20
  # [+:*+] Searches all fields.
18
21
  # This is only possible with the +contains+ and +starts_with+ operators.
19
- # [+:id+] Id of an {BasicObj Obj}. This is a +string+ field.
20
- # [+:_path+] Path of an {BasicObj Obj}. This is a +string+ field.
21
- # [+:_name+] Name of an {BasicObj Obj}. This is a +string+ field.
22
- # [+:title+] Title of an {BasicObj Obj}. This is a +string+ field.
23
- # [+:body+] Body of an {BasicObj Obj}. This is an +html+ field. Thus, only the +contains+ and
24
- # +contains_prefix+ operators can be applied to this field.
25
- # [+:_obj_class+] Object class of an {BasicObj Obj}. This is a +string+ field.
26
- # [+:_permalink+] Permalink of an {BasicObj Obj}. This is a +string+ field.
27
- # [+:_last_changed+] Date of last change of an {BasicObj Obj}.
28
- # [every <em><code>:custom_attribute</code></em>] Custom attribute of an {BasicObj Obj}. Note that
29
- # depending on the attribute type (e.g. an
30
- # +html+ field), some operators cannot be applied.
22
+ # [+:id+] Id of an {Scrivito::BasicObj Obj}. This is a +string+ field.
23
+ # [+:_path+] Path of an {Scrivito::BasicObj Obj}. This is a +string+ field.
24
+ # [+:_name+] Name of an {Scrivito::BasicObj Obj}. This is a +string+ field.
25
+ # [+:title+] Title of an {Scrivito::BasicObj Obj}. This is a +string+ field.
26
+ # [+:body+] Body of an {Scrivito::BasicObj Obj}. This is an +html+ field. Thus, only the
27
+ # +contains+ and +contains_prefix+ operators can be applied to this field.
28
+ # [+:_obj_class+] Object class of an {Scrivito::BasicObj Obj}. This is a +string+ field.
29
+ # [+:_permalink+] Permalink of an {Scrivito::BasicObj Obj}. This is a +string+ field.
30
+ # [+:_last_changed+] Date of last change of an {Scrivito::BasicObj Obj}.
31
+ # [every +_:custom_attribute_+] Custom attribute of an {Scrivito::BasicObj Obj}. Note that depending on the attribute type (e.g. an +html+ field), some operators cannot be applied.
31
32
  #
32
33
  # All values are stored as strings.
33
34
  #
34
- # Date values are stored in the format YYYYMMDDHHMMSS in UTC. For example, 2000-01-01 00:00:00 UTC is stored as "<code>20000101000000</code>".
35
- # This is relevant for string comparisons in which the +is_less_than+ and +is_greater_than+ operators are used.
35
+ # Date values are stored in the format +YYYYMMDDHHMMSS+ in UTC. For example, 2000-01-01 00:00:00
36
+ # UTC is stored as "+20000101000000+". This is relevant for string comparisons in which the
37
+ # +is_less_than+ and +is_greater_than+ operators are used.
36
38
  #
37
39
  # == Currently available operators
38
40
  #
@@ -118,7 +120,7 @@ module Scrivito
118
120
 
119
121
  # @group Chainable methods
120
122
 
121
- # Adds the given AND subquery to this {ObjSearchEnumerator}.
123
+ # Adds the given AND subquery to this {Scrivito::ObjSearchEnumerator}.
122
124
  #
123
125
  # Compares the +field(s)+ with the +value(s)+ using the +operator+ of this subquery.
124
126
  # All CMS objects to which this criterion applies remain in the result set.
@@ -126,12 +128,13 @@ module Scrivito
126
128
  # @param [Symbol, String, Array<Symbol, String>] field Name(s) of the field(s) to be searched.
127
129
  # For arrays, the subquery matches if one or more of these fields meet this criterion.
128
130
  # @param [Symbol, String] operator See "Currently available operators" above.
129
- # @param [String, Array<String>] value The value(s) to compare with the field value(s) using the +operator+ of this subquery.
130
- # For arrays, the subquery matches if the condition is met for one or more of the array elements.
131
- # @param [Hash] boost A hash where the keys are field names and their values are boosting factors.
132
- # Boosting factors must be in the range from 1 to 10.
133
- # Boosting can only be applied to subqueries in which the +contains+ or +contains_prefix+ operator is used.
134
- # @return [ObjSearchEnumerator]
131
+ # @param [String, Array<String>] value The value(s) to compare with the field value(s) using the
132
+ # +operator+ of this subquery. For arrays, the subquery matches if the condition is met for
133
+ # one or more of the array elements.
134
+ # @param [Hash] boost A hash where the keys are field names and their values are boosting
135
+ # factors. Boosting factors must be in the range from 1 to 10. Boosting can only be applied to
136
+ # subqueries in which the +contains+ or +contains_prefix+ operator is used.
137
+ # @return [Scrivito::ObjSearchEnumerator]
135
138
  # @api public
136
139
  def and(field, operator, value, boost = nil)
137
140
  real_operator = operator_mapping(operator)
@@ -151,7 +154,7 @@ module Scrivito
151
154
  self
152
155
  end
153
156
 
154
- # Adds the given negated AND subquery to this {ObjSearchEnumerator}.
157
+ # Adds the given negated AND subquery to this {Scrivito::ObjSearchEnumerator}.
155
158
  #
156
159
  # Compares the +field(s)+ with the +value(s)+ using the negated +operator+ of this subquery.
157
160
  # All CMS objects to which this criterion applies are removed from the result set.
@@ -161,9 +164,10 @@ module Scrivito
161
164
  # @param [Symbol, String] operator Only applicable to subqueries in which the +equals+,
162
165
  # +starts_with+, +is_greater_than+ or +is_less_than+ operator is used.
163
166
  # (See "Currently available operators" above).
164
- # @param [String, Array<String>] value The value(s) to compare with the field value(s) using the +operator+ of this subquery.
165
- # For arrays, the subquery matches if the condition is met for one or more of the array elements.
166
- # @return [ObjSearchEnumerator]
167
+ # @param [String, Array<String>] value The value(s) to compare with the field value(s) using the
168
+ # +operator+ of this subquery. For arrays, the subquery matches if the condition is met for
169
+ # one or more of the array elements.
170
+ # @return [Scrivito::ObjSearchEnumerator]
167
171
  # @api public
168
172
  def and_not(field, operator, value)
169
173
  real_operator = operator_mapping(operator)
@@ -180,8 +184,9 @@ module Scrivito
180
184
  end
181
185
 
182
186
  # Orders the results by +field_name+.
183
- # @param [Symbol, String] field_name This parameter specifies the field by which the hits are sorted (e.g. +:_path+).
184
- # @return [ObjSearchEnumerator]
187
+ # @param [Symbol, String] field_name This parameter specifies the field by which the hits are
188
+ # sorted (e.g. +:_path+).
189
+ # @return [Scrivito::ObjSearchEnumerator]
185
190
  # @api public
186
191
  def order(field_name)
187
192
  options[:sort_by] = field_name
@@ -190,7 +195,7 @@ module Scrivito
190
195
  end
191
196
 
192
197
  # Reverses the order of the results. Requires {#order} to be applied before.
193
- # @return [ObjSearchEnumerator]
198
+ # @return [Scrivito::ObjSearchEnumerator]
194
199
  # @api public
195
200
  def reverse_order
196
201
  options[:sort_by].present? or raise "A search order has to be specified"\
@@ -203,7 +208,7 @@ module Scrivito
203
208
  # Number of search results to be returned by each of the internal search requests.
204
209
  # The default is +10+. The server may reduce large batches to a reasonable size.
205
210
  # @param [Integer] size A value in the range from +1+ to +100+.
206
- # @return [ObjSearchEnumerator]
211
+ # @return [Scrivito::ObjSearchEnumerator]
207
212
  # @api public
208
213
  def batch_size(size)
209
214
  options[:size] = size
@@ -212,9 +217,9 @@ module Scrivito
212
217
  end
213
218
 
214
219
 
215
- # Omits the first +amount+ of {BasicObj Obj}s from the results. The default is +0+.
220
+ # Omits the first +amount+ of {Scrivito::BasicObj Obj}s from the results. The default is +0+.
216
221
  # @param [Integer] amount
217
- # @return [ObjSearchEnumerator]
222
+ # @return [Scrivito::ObjSearchEnumerator]
218
223
  # @api public
219
224
  def offset(amount)
220
225
  options[:offset] ||= 0
@@ -231,7 +236,7 @@ module Scrivito
231
236
 
232
237
  # @!endgroup
233
238
 
234
- # Iterates over the search result, yielding {BasicObj Obj}.
239
+ # Iterates over the search result, yielding {Scrivito::BasicObj Obj}.
235
240
  # @yield [Obj]
236
241
  # @return [void]
237
242
  # @api public
@@ -273,7 +278,7 @@ module Scrivito
273
278
  end
274
279
 
275
280
  # Loads a single batch of search results from the backend.
276
- # @return [Array] of {BasicObj Obj}.
281
+ # @return [Array] of {Scrivito::BasicObj Obj}.
277
282
  # Usually returns +batch_size+ results if available,
278
283
  # but may occasionally return fewer than +batch_size+ results (due to rate limit, for example).
279
284
  # @api public
@@ -303,7 +308,7 @@ module Scrivito
303
308
 
304
309
  def convert_single_value(value)
305
310
  if value.is_a?(Time) || value.is_a?(Date)
306
- DateAttribute.serialize_for_backend(value)
311
+ DateAttribute.serialize(value)
307
312
  else
308
313
  value.to_s
309
314
  end