Class: Scrivito::ObjClass Deprecated

Inherits:
Object
  • Object
show all
Defined in:
lib/scrivito/obj_class.rb

Overview

Deprecated.

This class represents a CMS obj class. Obj classes can be created, updated and all properties can be read. The class also provides methods to find obj classes. The attributes of an obj class are defined by Attribute instances.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#attributesScrivito::AttributeCollection (readonly)

Deprecated.

Returns the attributes of this obj class.

Examples:

Find an attribute named “locale” for the obj class “Homepage”.

ObjClass.find('Homepage').attributes['locale']

Add a new string attribute named “headline” to the “Homepage” obj class by providing an attribute property hash.

ObjClass.find('Homepage').attributes.add(name: 'headline', type: :string)

Add a new enum attribute named “category” to the “Homepage” obj class by providing an attribute instance.

attribute = Attribute.new(name: 'category', type: :enum, values: %w(tech social))
ObjClass.find('Homepage').attributes.add(attribute)

Iterate over the list of attributes from the obj class “Homepage” and print their name and type.

ObjClass.find('Homepage').attributes.each do |attribute|
  puts "#{attribute.name}:#{attribute.type}"
end

Returns:



203
204
205
# File 'lib/scrivito/obj_class.rb', line 203

def attributes
  @attributes
end

#idString (readonly)

Deprecated.

Returns unique identifier of this obj class.

Returns:

  • (String)

    unique identifier of this obj class



166
# File 'lib/scrivito/obj_class.rb', line 166

delegate :id, :name, :is_active, to: :obj_class_data

#is_activeBoolean (readonly) Also known as: active?

Deprecated.

Returns whether instances can be created with this obj class.

Returns:

  • (Boolean)

    whether instances can be created with this obj class



166
# File 'lib/scrivito/obj_class.rb', line 166

delegate :id, :name, :is_active, to: :obj_class_data

#nameString (readonly)

Deprecated.

Returns the name of this obj class.

Returns:

  • (String)

    the name of this obj class



166
# File 'lib/scrivito/obj_class.rb', line 166

delegate :id, :name, :is_active, to: :obj_class_data

Class Method Details

.allObject

Deprecated.

Returns all obj classes.

Returns:

  • Scrivito::ObjClassCollection



39
40
41
# File 'lib/scrivito/obj_class.rb', line 39

def all
  Workspace.current.obj_classes
end

.create(properties) ⇒ Scrivito::ObjClass

Deprecated.
Note:

the is_binary option is deprecated

Creates a new obj class and persists it in the CMS.

This allows you to set the different properties of an obj class by providing a hash with the property names as keys and the values you want to set as values. Attributes can be either given as Attribute instances or as an attribute property hash.

Examples:

Create a obj class

ObjClass.create(name: 'Homepage', attributes: [
  { name: 'title', type: :string },
  { name: 'body', type: :widget }
])

Create a binary obj class.

ObjClass.create(name: 'Image', attributes: [
  { name: 'blob', type: :binary }
])

Create an obj class with attributes passed in as an Array of attribute property hashes.

ObjClass.create(name: 'Blog', attributes: [
  { name: 'headline', type: :string },
  { name: 'category', type: :enum, values: %w(tech social) },
])

Create an obj class with attributes passed in as an Array of Attribute instances.

ObjClass.create(name: 'Blog', attributes: [
  Attribute.new(name: 'headline', type: :string),
  Attribute.new(name: 'category', type: :enum, values: %w(tech social)),
])

Parameters:

  • properties (Hash)

Options Hash (properties):

  • :name (String)

    The name of the obj class.

  • :is_active (Boolean)

    Is it possible to create instances of this obj class?

  • :attributes (Array<Scrivito::Attribute>, Array<Hash>)

    A list of attributes for this obj class. Can be either a list of attribute instances or attribute property hashes.

Returns:



107
108
109
# File 'lib/scrivito/obj_class.rb', line 107

def create(properties)
  Scrivito.raise_obj_class_deprecated_error
end

.find(name) ⇒ Scrivito::ObjClass

Deprecated.

Finds an obj class by its name.

Examples:

Find the obj class named “Homepage” in the current Workspace.

ObjClass.find('Homepage')

Parameters:

  • name (String)

    The name of the obj class.

Returns:

Raises:



54
55
56
57
58
59
60
61
62
# File 'lib/scrivito/obj_class.rb', line 54

def find(name)
  obj_class = Workspace.current.obj_classes[name]

  unless obj_class
    raise ResourceNotFound, "Could not find '#{ObjClass}' with name '#{name}'."
  end

  obj_class
end

.removeObject

Remove all obj classes.

This method removes all classes in the corresponding workspace. By doing that it migrates the contents of the workspace. The migrated workspace will not use Scrivito::ObjClass, Attribute etc. anymore to determine which attributes an Obj has, but will use attributes defined in model with AttributeContent::ClassMethods#attribute. The id of the current workspace must be “rtc”. For detailed migration instructions please visit scrivito.com/obj-class-migration.

Raises:

  • (ScrivitoError)

    if the id of the corresponding workspace is not “rtc”

See Also:



26
27
28
29
30
31
32
# File 'lib/scrivito/obj_class.rb', line 26

def remove
  if Workspace.current.rtc?
    Workspace.current.api_request(:delete, '/obj_classes')
  else
    raise ScrivitoError, 'Scrivito::ObjClass.remove is only allowed in the "rtc" workspace.'
  end
end

Instance Method Details

#is_binaryBoolean Also known as: binary?

Deprecated.

Returns whether instances of this class are binary, e.g. images or PDFs.

Returns:

  • (Boolean)

    whether instances of this class are binary, e.g. images or PDFs

Raises:

  • (ScrivitoError)

    if the method is called on a non-legacy-type ObjClass



173
174
175
176
177
178
179
180
# File 'lib/scrivito/obj_class.rb', line 173

def is_binary
  if legacy_type?
    obj_class_data.is_binary
  else
    raise ScrivitoError,
      %(`is_binary' and `binary?' can only be called on ObjClasses with a legacy_type.)
  end
end

#legacy_type?Boolean

Deprecated.

Returns true if this ObjClass was created with a is_binary option. Creating ObjClass with this option is deprecated and will be removed.

Returns:

  • (Boolean)


150
151
152
# File 'lib/scrivito/obj_class.rb', line 150

def legacy_type?
  !!obj_class_data.type
end

#update(properties) ⇒ nil

Deprecated.

Updates this obj class and persists the changes in the CMS. It is not possible to update the name.

See create for a detailed overview of what properties are allowed and how to set them.

The is_binary option can only be removed. By passing nil for the is_binary option to update, you can convert legacy objects. This conversion removes the fields title, body (if is_binary was false) or blob (if is_binary was true). If you add the fields in the same request the values will be kept for all objs.

Examples:

Removing is_binary but keeping the previously predefined fields

ObjClass.find('Homepage').update(is_binary: nil, attributes: [
  {name: 'title', type: 'string'},
  {name: 'body',  type: 'html'}
])

# Binary ObjClass
ObjClass.find('Image').update(is_binary: nil, attributes: [
  {name: 'title', type: 'string'},
  {name: 'blob',  type: 'binary'}
])

Parameters:

  • properties (Hash)

Returns:

  • (nil)

Raises:

  • (ScrivitoError)

    Raised when trying to change name or is_binary.



236
237
238
# File 'lib/scrivito/obj_class.rb', line 236

def update(properties)
  Scrivito.raise_obj_class_deprecated_error
end