$field_info) { if (!empty($field_map[$field_name]['bundles'][$target_type])) { $available_bundles = $field_map[$field_name]['bundles'][$target_type]; // Determine all targeted bundles that use this field. $option_bundles = empty($target_bundles) ? $available_bundles : array_intersect($target_bundles, $available_bundles); if (!empty($option_bundles)) { $field_options[$field_name] = t( '@field_label (@field_name): Available in bundle(s) @bundles', array( '@field_label' => $field_info['label'], '@field_name' => $field_name, '@bundles' => implode(', ', $option_bundles), ) ); } } } $form['overwrite'] = array( '#type' => 'checkbox', '#title' => t('Overwrite existing data'), '#description' => t('Select if you want to overwrite fields that already have values.
NOTE: Disabling this is experimental and might not work 100%. If you experience issues with fields being overridden nonetheless, please report what field type and settings this occurs on in the modules issue queue on drupal.org'), '#default_value' => isset($settings['overwrite']) ? $settings['overwrite'] : 1, ); if (empty($field_options)) { $no_fields_found = t('There are no common fields between this bundle and its referenced entities.'); $usage_instructions = t('To use autofill, you need to add instances of the same fields to its referenced bundles.'); $form['no_fields'] = array( '#markup' => '
' . $no_fields_found . $usage_instructions . '
', '#type' => 'item', ); } else { $form['fields'] = array( '#type' => 'checkboxes', '#title' => t('Fields'), '#options' => $field_options, '#description' => t('Select which fields from the referenced entity you want to load on changing the value of this field.'), '#default_value' => isset($settings['fields']) ? $settings['fields'] : array(), ); } return $form; } /** * Only show handler on supported widget types. */ public function access($field, $instance) { $is_single_value = $field['cardinality'] == 1; $is_supported = $is_single_value && array_key_exists($instance['widget']['type'], _entityreference_autofill_supported_widgets()); return $is_supported; } }