Module: Scrivito::AttributeContent
- Included in:
- BasicObj, BasicWidget
- Defined in:
- lib/scrivito/attribute_content.rb
Overview
This class is for handling attributes: setting and accessing their values, providing default values, restricting the types of widgets that may be added to a widgetlist attribute, plus a couple of convenience methods.
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- DEFAULT_ATTRIBUTE_VALUES =
Default attribute values.
{ 'binary' => nil, 'date' => nil, 'enum' => nil, 'html' => '', 'link' => nil, 'linklist' => [], 'multienum' => [], 'reference' => nil, 'referencelist' => [], 'string' => '', 'stringlist' => [], 'widgetlist' => [], }
Instance Method Summary collapse
-
#[](attribute_name) ⇒ Object
Returns the value of an attribute specified by its name.
-
#as_json(options = nil) ⇒ Hash
Returns a hash to be used for the JSON serialization.
-
#obj_class_name ⇒ String
Returns the object class name of this CMS object.
-
#valid_widget_classes_for(field_name) ⇒ nil, Array<Class>
Hook method that lets you control the widget classes that are made available for adding instances of them to this page or widget.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object
76 77 78 79 |
# File 'lib/scrivito/attribute_content.rb', line 76 def method_missing(method_name, *args) attribute_name = method_name.to_s has_custom_attribute?(attribute_name) ? read_attribute(attribute_name) : super end |
Instance Method Details
#[](attribute_name) ⇒ Object
Returns the value of an attribute specified by its name. Passing an invalid key will not raise an error but return nil.
89 90 91 92 |
# File 'lib/scrivito/attribute_content.rb', line 89 def [](attribute_name) attribute_name = attribute_name.to_s read_attribute(attribute_name) if has_attribute?(attribute_name) end |
#as_json(options = nil) ⇒ Hash
Override it in subclasses to fit your needs.
Returns a hash to be used for the JSON serialization.
215 216 217 |
# File 'lib/scrivito/attribute_content.rb', line 215 def as_json( = nil) {id: id} end |
#obj_class_name ⇒ String
Returns the object class name of this CMS object.
152 153 154 |
# File 'lib/scrivito/attribute_content.rb', line 152 def obj_class_name data_from_cms.value_of('_obj_class') end |
#valid_widget_classes_for(field_name) ⇒ nil, Array<Class>
Hook method that lets you control the widget classes that are made available for adding instances of them to this page or widget. Override it to allow only specific classes or none at all. Must return either NilClass, or Array.
If nil is returned (default), all widget classes will be available for this page or widget.
If an Array is returned, it is expected to include the permitted classes. Their order is preserved as they are offered to the user via the widget browser.
111 112 |
# File 'lib/scrivito/attribute_content.rb', line 111 def (field_name) end |