Module: Scrivito::AttributeContent
- Included in:
- BasicObj, BasicWidget
- Defined in:
- app/cms/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, 'float' => nil, 'html' => '', 'integer' => nil, '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 ⇒ String
Returns the object class name of this CMS object.
-
#obj_class_name ⇒ String
deprecated
Deprecated.
Use #obj_class instead.
-
#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
94 95 96 97 |
# File 'app/cms/scrivito/attribute_content.rb', line 94 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
.
111 112 113 114 |
# File 'app/cms/scrivito/attribute_content.rb', line 111 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.
257 258 259 |
# File 'app/cms/scrivito/attribute_content.rb', line 257 def as_json( = nil) {id: id} end |
#obj_class ⇒ String
Returns the object class name of this CMS object.
199 200 201 |
# File 'app/cms/scrivito/attribute_content.rb', line 199 def obj_class data_from_cms.value_of('_obj_class') end |
#obj_class_name ⇒ String
Use #obj_class instead.
Returns the object class name of this CMS object.
176 177 178 179 180 181 182 |
# File 'app/cms/scrivito/attribute_content.rb', line 176 def obj_class_name Scrivito::Deprecation.warn( 'Scrivito::BasicObj#obj_class_name and Scrivito::BasicWidget#obj_class_name are deprecated'\ ' and will be removed in a future version.'\ ' Please use Scrivito::BasicObj#obj_class and Scrivito::BasicWidget#obj_class instead.') 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.
134 135 |
# File 'app/cms/scrivito/attribute_content.rb', line 134 def (field_name) end |