class LingotekFieldConfigEditForm in Lingotek Translation 3.1.x
Same name and namespace in other branches
- 8.2 src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 4.0.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 3.0.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 3.2.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 3.3.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 3.4.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 3.5.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 3.6.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 3.7.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
- 3.8.x src/Form/LingotekFieldConfigEditForm.php \Drupal\lingotek\Form\LingotekFieldConfigEditForm
Allow to configure fields translation with Lingotek in the proper field forms
@package Drupal\lingotek\Form
Hierarchy
- class \Drupal\lingotek\Form\LingotekFieldConfigEditForm uses MessengerTrait, StringTranslationTrait
Expanded class hierarchy of LingotekFieldConfigEditForm
1 string reference to 'LingotekFieldConfigEditForm'
1 service uses LingotekFieldConfigEditForm
File
- src/
Form/ LingotekFieldConfigEditForm.php, line 15
Namespace
Drupal\lingotek\FormView source
class LingotekFieldConfigEditForm {
use StringTranslationTrait;
use MessengerTrait;
/**
* The Lingotek Configuration service.
*
* @var \Drupal\lingotek\LingotekConfigurationServiceInterface
*/
protected $lingotekConfig;
/**
* Constructs a new LingotekConfigurationService object.
*
* @param \Drupal\lingotek\LingotekConfigurationServiceInterface $lingotek_config
* The Lingotek Configuration service.
*/
public function __construct(LingotekConfigurationServiceInterface $lingotek_config) {
$this->lingotekConfig = $lingotek_config;
}
/**
* Adds "Use Lingotek to translate this field" to each field
* for fields with properties, "Use Lingotek to translate the ___ element" is added
*
* @param array $form
* The form definition array for the language content settings.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
*/
public function form(array &$form, FormStateInterface $form_state) {
$field = $form_state
->getFormObject()
->getEntity();
$entity_id = $field
->getTargetEntityTypeId();
$bundle_id = $field
->getTargetBundle();
$field_id = $field
->getName();
// Add the option to translate the field with Lingotek
if (!$form['translatable']['#disabled']) {
$form['translatable_for_lingotek'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Use Lingotek to translate this field'),
'#default_value' => $this->lingotekConfig
->isFieldLingotekEnabled($entity_id, $bundle_id, $field_id),
'#weight' => -1,
'#states' => [
'visible' => [
':input[name="translatable"]' => [
'checked' => TRUE,
],
],
],
];
$form['actions']['submit']['#submit'][] = [
$this,
'submitForm',
];
}
if (isset($form['third_party_settings']['content_translation'])) {
if (isset($form['third_party_settings']['content_translation']['translation_sync'])) {
$content_translation_options = $form['third_party_settings']['content_translation']['translation_sync']['#options'];
$properties_checkbox_choice = $this->lingotekConfig
->getFieldPropertiesLingotekEnabled($entity_id, $bundle_id, $field_id);
$form['translatable_for_lingotek_properties'] = [
'#type' => 'item',
'#title' => $this
->t('Lingotek Translation'),
'#weight' => 15,
'#states' => [
'visible' => [
':input[name="translatable_for_lingotek"]' => [
'checked' => TRUE,
],
],
],
];
foreach ($content_translation_options as $content_translation_option_key => $content_translation_option) {
$form['translatable_for_lingotek_properties_' . $content_translation_option_key] = [
'#type' => 'checkbox',
'#title' => $this
->t('Use Lingotek to translate the %content_translation_option element', [
'%content_translation_option' => $content_translation_option,
]),
'#default_value' => $properties_checkbox_choice ? $properties_checkbox_choice[$content_translation_option_key] : FALSE,
'#weight' => 15,
'#states' => [
'visible' => [
':input[name="translatable_for_lingotek"]' => [
'checked' => TRUE,
],
],
],
];
if ($properties_checkbox_choice && $properties_checkbox_choice[$content_translation_option_key]) {
$form['translatable_for_lingotek_properties_' . $content_translation_option_key]['#default_value'] = 1;
}
}
if (!$properties_checkbox_choice) {
$properties_checkbox_choice = [];
}
$field
->setThirdPartySetting('lingotek', 'translation_sync', $properties_checkbox_choice);
}
}
}
/**
* @param array $form
* @param \Drupal\Core\Form\FormStateInterface $form_state
*/
public function submitForm(array $form, FormStateInterface $form_state) {
$field = $form_state
->getFormObject()
->getEntity();
$entity_id = $field
->getTargetEntityTypeId();
$bundle_id = $field
->getTargetBundle();
$field_id = $field
->getName();
$value = $form_state
->getValue([
'third_party_settings',
'content_translation',
'translation_sync',
]);
if (isset($value)) {
$content_translation_field_properties = $form_state
->getValue('third_party_settings')['content_translation']['translation_sync'];
$filtered_field_properties = [];
foreach ($content_translation_field_properties as $content_translation_field_property_key => $content_translation_field_property) {
if ($content_translation_field_property && $form_state
->getValue('translatable_for_lingotek_properties_' . $content_translation_field_property_key)) {
$filtered_field_properties[$content_translation_field_property_key] = $content_translation_field_property;
}
else {
$filtered_field_properties[$content_translation_field_property_key] = 0;
if ($form_state
->getValue('translatable_for_lingotek_properties_' . $content_translation_field_property_key)) {
$this
->messenger()
->addWarning(t('To translate the image properties with Lingotek, you must enable them for translation first.'));
}
}
}
$this->lingotekConfig
->setFieldPropertiesLingotekEnabled($entity_id, $bundle_id, $field_id, $filtered_field_properties);
}
if ($form_state
->getValue('translatable_for_lingotek') && $form_state
->getValue('translatable')) {
if (!$this->lingotekConfig
->isFieldLingotekEnabled($entity_id, $bundle_id, $field_id)) {
$this->lingotekConfig
->setFieldLingotekEnabled($entity_id, $bundle_id, $field_id);
}
}
else {
if ($this->lingotekConfig
->isFieldLingotekEnabled($entity_id, $bundle_id, $field_id)) {
$this->lingotekConfig
->setFieldLingotekEnabled($entity_id, $bundle_id, $field_id, FALSE);
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
LingotekFieldConfigEditForm:: |
protected | property | The Lingotek Configuration service. | |
LingotekFieldConfigEditForm:: |
public | function | Adds "Use Lingotek to translate this field" to each field for fields with properties, "Use Lingotek to translate the ___ element" is added | |
LingotekFieldConfigEditForm:: |
public | function | ||
LingotekFieldConfigEditForm:: |
public | function | Constructs a new LingotekConfigurationService object. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |