dimension.module | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/dimension.module b/dimension.module index e9a2a6f..5f8d4d8 100644 --- a/dimension.module +++ b/dimension.module @@ -22,6 +22,8 @@ function dimension_field_info() { 'settings' => _dimension_default_field_instance_settings(), 'default_widget' => 'dimension_widget', 'default_formatter' => 'dimension_formatter', + 'property_type' => 'dimensions', + 'property_callbacks' => array('dimension_field_dimensions_property_callback'), ), ); } @@ -58,6 +60,36 @@ function dimension_field_widget_info() { } /** + * Additional callback to adapt the property info for dimensions fields. + * + * @see entity_metadata_field_entity_property_info() + * @see entity_field_info_alter() + */ +function dimension_field_dimensions_property_callback(&$info, $entity_type, $field, $instance, $field_type) { + $property = &$info[$entity_type]['bundles'][$instance['bundle']]['properties'][$field['field_name']]; + + $property['getter callback'] = 'entity_metadata_field_verbatim_get'; + $property['setter callback'] = 'entity_metadata_field_verbatim_set'; + unset($property['query callback']); + + $property['property info']['length'] = array( + 'type' => 'integer', + 'label' => t('Length'), + 'setter callback' => 'entity_property_verbatim_set', + ); + $property['property info']['width'] = array( + 'type' => 'integer', + 'label' => t('Width'), + 'setter callback' => 'entity_property_verbatim_set', + ); + $property['property info']['height'] = array( + 'type' => 'integer', + 'label' => t('Height'), + 'setter callback' => 'entity_property_verbatim_set', + ); +} + +/** * Implements hook_field_settings_form(). */ function dimension_field_settings_form($field, $instance, $has_data) {