You are here

private function SalesforceMappingFieldsForm::getRow in Salesforce Suite 8.4

Same name and namespace in other branches
  1. 5.0.x modules/salesforce_mapping_ui/src/Form/SalesforceMappingFieldsForm.php \Drupal\salesforce_mapping_ui\Form\SalesforceMappingFieldsForm::getRow()

Helper function to return an empty row for the field mapping form.

1 call to SalesforceMappingFieldsForm::getRow()
SalesforceMappingFieldsForm::buildForm in modules/salesforce_mapping_ui/src/Form/SalesforceMappingFieldsForm.php
Form constructor.

File

modules/salesforce_mapping_ui/src/Form/SalesforceMappingFieldsForm.php, line 169

Class

SalesforceMappingFieldsForm
Salesforce Mapping Fields Form.

Namespace

Drupal\salesforce_mapping_ui\Form

Code

private function getRow($form, FormStateInterface $form_state, FieldPluginInterface $field_plugin = NULL) {
  $values =& $form_state
    ->getValues();
  if ($field_plugin == NULL) {
    $field_type = NestedArray::getValue($values, [
      'buttons',
      'new_field',
    ]);
    $field_plugin_definition = $this
      ->getFieldPlugin($field_type);
    $configuration = [
      'mapping' => $this->entity,
      'id' => count(Element::children($form['field_mappings_wrapper']['field_mappings'])),
      'drupal_field_type' => $field_type,
    ];

    /** @var \Drupal\salesforce_mapping\SalesforceMappingFieldPluginInterface $field_plugin */
    $field_plugin = $this->mappingFieldPluginManager
      ->createInstance($field_plugin_definition['id'], $configuration);
    $field_mapping_plugins = $this->entity
      ->getFieldMappings();
    $config = [];
    foreach ($field_mapping_plugins as $plugin) {
      $config[] = $plugin
        ->getConfiguration();
    }
    $config[] = $field_plugin
      ->getConfiguration();
    $this->entity
      ->set('field_mappings', $config);
  }
  $row['config'] = $field_plugin
    ->buildConfigurationForm($form, $form_state);
  $row['config']['id'] = [
    '#type' => 'value',
    '#value' => $field_plugin
      ->config('id'),
  ];

  // @TODO implement "lock/unlock" logic here:
  // @TODO convert these to AJAX operations
  $operations = [
    'delete' => $this
      ->t('Delete'),
  ];
  $defaults = [];
  $row['ops'] = [
    '#title' => $this
      ->t('Operations'),
    '#type' => 'checkboxes',
    '#options' => $operations,
    '#default_value' => $defaults,
    '#attributes' => [
      'class' => [
        'narrow',
      ],
    ],
  ];
  $row['drupal_field_type'] = [
    '#type' => 'hidden',
    '#value' => $field_plugin
      ->getPluginId(),
  ];
  $row['#type'] = 'container';
  $row['#attributes'] = [
    'class' => [
      'field_mapping_field',
      'row',
      $field_plugin
        ->config('id') % 2 ? 'odd' : 'even',
    ],
  ];
  return $row;
}