Issue #1953404 by vijaycs85, yched, Gábor Hojtsy: Add config schema to field and instance config entities.

8.0.x
webchick 2013-04-23 00:54:10 -07:00
parent 986bfe364d
commit 6daf6f637d
8 changed files with 293 additions and 4 deletions

View File

@ -13,3 +13,131 @@ field.settings:
purge_batch_size:
type: integer
label: 'Maximum number of field data records to purge'
field.field.*:
type: mapping
label: 'Field'
mapping:
id:
type: string
label: 'Machine name'
uuid:
type: string
label: 'UUID'
status:
type: boolean
label: 'Status'
langcode:
type: string
label: 'Default language'
type:
type: string
label: 'Type'
settings:
type: field.[%parent.type].settings
module:
type: string
label: 'Module'
active:
type: boolean
label: 'Active'
entity_types:
type: sequence
label: 'Allowed entity types'
sequence:
- type: string
label: 'Entity type'
storage:
type: mapping
label: 'Storage'
mapping:
type:
type: string
label: 'Type'
settings:
type: field_storage.[%parent.type].settings
label: 'Settings'
module:
type: string
label: 'Module'
active:
type: boolean
label: 'Active'
locked:
type: boolean
label: 'Locked'
cardinality:
type: integer
label: 'Maximum number of values users can enter'
translatable:
type: boolean
label: 'Translatable'
indexes:
type: sequence
label: 'Indexes'
sequence:
- type: sequence
label: 'Indexes'
sequence:
- type: string
label: 'Column'
field.instance.*.*.*:
type: mapping
label: 'Field instance'
mapping:
id:
type: string
label: 'ID'
uuid:
type: string
label: 'UUID'
status:
type: boolean
label: 'Status'
langcode:
type: string
label: 'Default language'
field_uuid:
type: string
label: 'Field UUID'
entity_type:
type: string
label: 'Allowed entity types'
bundle:
type: string
label: 'Bundle'
label:
type: label
label: 'Label'
description:
type: text
label: 'Help text'
required:
type: boolean
label: 'Required field'
default_value:
type: field.[%parent.field_type].value
default_value_function:
type: string
label: 'Default value funtion'
settings:
type: field.[%parent.field_type].instance_settings
widget:
type: mapping
label: 'Widget'
mapping:
weight:
type: integer
label: 'Weight'
type:
type: string
label: 'Widget type'
settings:
type: field_widget.[%parent.type].settings
module:
type: string
label: 'Module'
field_type:
type: string
label: 'Field type'

View File

@ -350,7 +350,7 @@ function field_update_8003() {
$deleted_fields = $state->get('field.field.deleted') ?: array();
$deleted_instances = $state->get('field.instance.deleted') ?: array();
$field_uuids = array();
$field_data = array();
// Migrate field definitions.
$records = db_query("SELECT * FROM {field_config}")->fetchAll(PDO::FETCH_ASSOC);
@ -411,8 +411,12 @@ function field_update_8003() {
}
}
// Store the UUID with the old field_id so that we can map the instances.
$field_uuids[$record['id']] = $config['uuid'];
// Store the UUID and field type, they will be used when processing
// instances.
$field_data[$record['id']] = array(
'uuid' => $config['uuid'],
'type' => $record['type'],
);
}
// Migrate instance definitions.
@ -423,7 +427,8 @@ function field_update_8003() {
$config = array(
'id' => $record['entity_type'] . '.' . $record['bundle'] . '.' . $record['field_name'],
'uuid' => $uuid->generate(),
'field_uuid' => $field_uuids[$record['field_id']],
'field_uuid' => $field_data[$record['field_id']]['uuid'],
'field_type' => $field_data[$record['field_id']]['type'],
'entity_type' => $record['entity_type'],
'bundle' => $record['bundle'],
'label' => $record['data']['label'],

View File

@ -253,6 +253,10 @@ class FieldInstance extends ConfigEntityBase implements \ArrayAccess, \Serializa
unset($values['field_name']);
$this->field = $field;
// Discard the 'field_type' entry that is added in config records to ease
// schema generation. See getExportProperties().
unset($values['field_type']);
// Check required properties.
if (empty($values['entity_type'])) {
throw new FieldException(format_string('Attempt to create an instance of field @field_id without an entity type.', array('@field_id' => $this->field->id)));
@ -308,6 +312,11 @@ class FieldInstance extends ConfigEntityBase implements \ArrayAccess, \Serializa
foreach ($names as $name) {
$properties[$name] = $this->get($name);
}
// Additionally, include the field type, that is needed to be able to
// generate the field-type-dependant parts of the config schema.
$properties['field_type'] = $this->field->type;
return $properties;
}

View File

@ -17,3 +17,4 @@ widget:
module: text
settings:
size: '60'
field_type: text

View File

@ -18,3 +18,4 @@ widget:
settings:
size: '60'
module: text
field_type: text

View File

@ -0,0 +1,7 @@
# Schema for configuration files of the Field SQL Storage module.
field_storage.field_sql_storage.settings:
type: sequence
label: 'Settings'
sequence:
- type: string

View File

@ -137,6 +137,7 @@ class FieldUpgradePathTest extends UpgradePathTestBase {
$this->assertEqual($config, array(
'id' => "node.$node_type.body",
'field_uuid' => $field_uuid,
'field_type' => 'text_with_summary',
'entity_type' => 'node',
'bundle' => $node_type,
'label' => 'Body',

View File

@ -7,3 +7,140 @@ text.settings:
default_summary_length:
type: integer
label: 'Default summary length'
field.text.settings:
type: mapping
label: 'Text settings'
mapping:
max_length:
type: integer
label: 'Maximum length'
field.text.instance_settings:
type: mapping
label: 'Text settings'
mapping:
text_processing:
type: string
label: 'Text processing'
user_register_form:
type: boolean
label: 'Display on user registration form.'
field.text.value:
type: sequence
label: 'Default value'
sequence:
- type: mapping
label: 'Default'
mapping:
value:
type: label
label: 'Value'
format:
type: string
label: 'Text format'
field.text_long.settings:
type: sequence
label: 'Settings'
sequence:
- type: string
field.text_long.instance_settings:
type: mapping
label: 'Long text settings'
mapping:
text_processing:
type: string
label: 'Text processing'
user_register_form:
type: boolean
label: 'Display on user registration form.'
field.text_long.value:
type: sequence
label: 'Default value'
sequence:
- type: mapping
label: 'Default'
mapping:
value:
type: text
label: 'Value'
format:
type: string
label: 'Text format'
field.text_with_summary.settings:
type: sequence
label: 'Default'
sequence:
- type: string
field.text_with_summary.instance_settings:
type: mapping
label: 'Text area with a summary'
mapping:
text_processing:
type: boolean
label: 'Text processing'
display_summary:
type: boolean
label: 'Summary input'
user_register_form:
type: boolean
label: 'Display on user registration form.'
field.text_with_summary.value:
type: sequence
label: 'Default value'
sequence:
- type: mapping
label: 'Default'
mapping:
value:
type: text
label: 'Body'
summary:
type: string
label: 'Summary'
format:
type: string
label: 'Text format'
field_widget.text_textfield.settings:
type: mapping
label: 'Text field widget settings'
mapping:
size:
type: integer
label: 'Size of textfield'
placeholder:
type: label
label: 'Placeholder'
field_widget.text_textarea.settings:
type: mapping
label: 'Long text widget settings'
mapping:
rows:
type: integer
label: 'Rows'
placeholder:
type: label
label: 'Placeholder'
field_widget.text_textarea_with_summary.settings:
type: mapping
label: 'Text area widget settings'
mapping:
rows:
type: integer
label: 'Rows'
summary_rows:
type: integer
label: 'Summary rows'
placeholder:
type: label
label: 'Placeholder'