public function FileTranslatorUi::buildConfigurationForm

Overrides TranslatorPluginUiBase::buildConfigurationForm

File

translators/tmgmt_file/src/FileTranslatorUi.php, line 19

Class

FileTranslatorUi
File translator UI.

Namespace

Drupal\tmgmt_file

Code

public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
  $form = parent::buildConfigurationForm($form, $form_state);

  /** @var \Drupal\tmgmt\TranslatorInterface $translator */
  $translator = $form_state
    ->getFormObject()
    ->getEntity();
  $form['export_format'] = array(
    '#type' => 'radios',
    '#title' => t('Export to'),
    '#options' => \Drupal::service('plugin.manager.tmgmt_file.format')
      ->getLabels(),
    '#default_value' => $translator
      ->getSetting('export_format'),
    '#description' => t('Please select the format you want to export data.'),
  );
  $xliff_states = [
    '#states' => [
      'visible' => [
        ':input[name="settings[export_format]"]' => [
          'value' => 'xlf',
        ],
      ],
    ],
  ];
  $form['format_configuration']['target'] = [
    '#type' => 'select',
    '#title' => t('Target content'),
    '#options' => [
      'source' => t('Same as source'),
    ],
    '#empty_option' => t('Empty'),
    '#default_value' => $translator
      ->getSetting('format_configuration.target'),
    '#description' => t('Defines what the <target> in the XLIFF file should contain, either empty or the same as the source text.'),
  ] + $xliff_states;
  $form['xliff_cdata'] = [
    '#type' => 'checkbox',
    '#title' => t('XLIFF CDATA'),
    '#description' => t('Check to use CDATA for import/export.'),
    '#default_value' => $translator
      ->getSetting('xliff_cdata'),
  ] + $xliff_states;
  $form['xliff_processing'] = [
    '#type' => 'checkbox',
    '#title' => t('Extended XLIFF processing'),
    '#description' => t('Check to further process content semantics and mask HTML tags instead just escaping it.'),
    '#default_value' => $translator
      ->getSetting('xliff_processing'),
  ] + $xliff_states;
  $form['xliff_message'] = [
    '#type' => 'container',
    '#markup' => t('By selecting CDATA option, XLIFF processing will be ignored.'),
    '#attributes' => [
      'class' => [
        'messages messages--warning',
      ],
    ],
  ] + $xliff_states;
  $form['allow_override'] = array(
    '#type' => 'checkbox',
    '#title' => t('Allow to override the format per job'),
    '#default_value' => $translator
      ->getSetting('allow_override'),
  );

  // Any visible, writeable wrapper can potentially be used for the files
  // directory, including a remote file system that integrates with a CDN.
  foreach (\Drupal::service('stream_wrapper_manager')
    ->getDescriptions(StreamWrapperInterface::WRITE_VISIBLE) as $scheme => $description) {
    $options[$scheme] = Html::escape($description);
  }
  if (!empty($options)) {
    $form['scheme'] = array(
      '#type' => 'radios',
      '#title' => t('Download method'),
      '#default_value' => $translator
        ->getSetting('scheme'),
      '#options' => $options,
      '#description' => t('Choose the location where exported files should be stored. The usage of a protected location (e.g. private://) is recommended to prevent unauthorized access.'),
    );
  }
  return $form;
}