mirror of
https://github.com/farmOS/farmOS.git
synced 2024-02-23 11:37:38 +01:00
Fix reference prepopulation for area fields.
This commit is contained in:
parent
f641a65631
commit
3fd34b6bfd
1 changed files with 19 additions and 7 deletions
|
@ -33,8 +33,20 @@ function farm_fields_prepopulate_entityreference(&$form, $entity_type, $field_na
|
|||
// Load the field instance definition.
|
||||
$form_entity_type = $form['#entity_type'];
|
||||
$form_entity_bundle = $form['#bundle'];
|
||||
$field_base = field_info_field($field_name);
|
||||
$field_instance = field_info_instance($form_entity_type, $field_name, $form_entity_bundle);
|
||||
|
||||
// Set the field value key based on the field type.
|
||||
$value_key = 'value';
|
||||
switch ($field_base['type']) {
|
||||
case 'entity_reference';
|
||||
$value_key = 'target_id';
|
||||
break;
|
||||
case 'taxonomy_term_reference':
|
||||
$value_key = 'tid';
|
||||
break;
|
||||
}
|
||||
|
||||
// Validate the entity IDs by loading them. Rebuild the list of IDs using
|
||||
// only the entities that loaded.
|
||||
$entities = entity_load($entity_type, $entity_ids);
|
||||
|
@ -71,7 +83,7 @@ function farm_fields_prepopulate_entityreference(&$form, $entity_type, $field_na
|
|||
foreach ($labels as $key => $label) {
|
||||
|
||||
// If the item isn't empty, skip it.
|
||||
if (!empty($form[$field_name][LANGUAGE_NONE][$key]['target_id']['#default_value'])) {
|
||||
if (!empty($form[$field_name][LANGUAGE_NONE][$key][$value_key]['#default_value'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -85,13 +97,13 @@ function farm_fields_prepopulate_entityreference(&$form, $entity_type, $field_na
|
|||
$form[$field_name][LANGUAGE_NONE][$key] = $form[$field_name][LANGUAGE_NONE][0];
|
||||
|
||||
// Set the default, delta, and weight values.
|
||||
$form[$field_name][LANGUAGE_NONE][$key]['target_id']['#default_value'] = $label;
|
||||
$form[$field_name][LANGUAGE_NONE][$key]['target_id']['#delta'] = $key;
|
||||
$form[$field_name][LANGUAGE_NONE][$key]['target_id']['#weight'] = $key;
|
||||
$form[$field_name][LANGUAGE_NONE][$key][$value_key]['#default_value'] = $label;
|
||||
$form[$field_name][LANGUAGE_NONE][$key][$value_key]['#delta'] = $key;
|
||||
$form[$field_name][LANGUAGE_NONE][$key][$value_key]['#weight'] = $key;
|
||||
|
||||
// Only make the first one required.
|
||||
if ($key > 0) {
|
||||
$form[$field_name][LANGUAGE_NONE][$key]['target_id']['#required'] = 0;
|
||||
$form[$field_name][LANGUAGE_NONE][$key][$value_key]['#required'] = 0;
|
||||
}
|
||||
|
||||
$form[$field_name][LANGUAGE_NONE]['#max_delta'] = $key;
|
||||
|
@ -116,12 +128,12 @@ function farm_fields_prepopulate_entityreference(&$form, $entity_type, $field_na
|
|||
foreach ($entities as $id => $entity) {
|
||||
|
||||
// If the item isn't empty, skip it.
|
||||
if (!empty($form[$field_name][LANGUAGE_NONE][$id]['target_id'])) {
|
||||
if (!empty($form[$field_name][LANGUAGE_NONE][$id][$value_key])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Add the checkbox element.
|
||||
$form[$field_name][LANGUAGE_NONE][$id]['target_id'] = array(
|
||||
$form[$field_name][LANGUAGE_NONE][$id][$value_key] = array(
|
||||
'#type' => 'checkbox',
|
||||
'#return_value' => $id,
|
||||
'#value' => $id,
|
||||
|
|
Loading…
Reference in a new issue