You are here

function yamlform_form_config_translation_add_form_alter in YAML Form 8

Implements hook_form_FORM_ID_alter().

1 call to yamlform_form_config_translation_add_form_alter()
yamlform_form_config_translation_edit_form_alter in includes/yamlform.translation.inc
Implements hook_form_FORM_ID_alter().

File

includes/yamlform.translation.inc, line 17
YAML Form module translation hooks.

Code

function yamlform_form_config_translation_add_form_alter(&$form, FormStateInterface $form_state, $is_new = TRUE) {

  // Manually apply YAML editor to text field that store YAML data.
  foreach ($form['config_names'] as $config_name => &$config_element) {
    if ($config_name == 'yamlform.settings') {
      _yamlform_form_config_translate_add_form_alter_yaml_element($config_element['test']['types']);
      _yamlform_form_config_translate_add_form_alter_yaml_element($config_element['test']['names']);
    }
    elseif (strpos($config_name, 'yamlform.yamlform_options.') === 0) {
      _yamlform_form_config_translate_add_form_alter_yaml_element($config_element['options']);
    }
    elseif (strpos($config_name, 'yamlform.yamlform.') === 0) {
      $yamlform_id = str_replace('yamlform.yamlform.', '', $config_name);
      $yamlform = YamlForm::load($yamlform_id);

      /** @var \Drupal\yamlform\YamlFormTranslationManagerInterface $translation_manager */
      $translation_manager = \Drupal::service('yamlform.translation_manager');
      $translation_langcode = $form_state
        ->get('config_translation_language')
        ->getId();
      $source_elements = $translation_manager
        ->getSourceElements($yamlform);
      $translation_elements = $translation_manager
        ->getTranslationElements($yamlform, $translation_langcode);
      $source_value = trim(Yaml::encode($source_elements));
      $translation_value = trim(Yaml::encode($translation_elements));
      _yamlform_form_config_translate_add_form_alter_yaml_element($config_element['elements'], $source_value, $translation_value);
      $form['inputs'] = [
        '#type' => 'textarea',
        '#parents' => [
          "translation",
          "config_names",
          "yamlform.yamlform.test_translation",
          "description",
        ],
      ];
      $config_element['elements']['translation']['#description'] = t('Please note: Custom properties will be automatically removed.');
      $form_state
        ->set('yamlform_config_name', $config_name);
      $form_state
        ->set('yamlform_source_elements', $source_elements);
      $form['#validate'][] = '_yamlform_form_config_translate_add_form_validate';
    }
  }
}