class LingotekMetadataEditForm in Lingotek Translation 3.7.x
Same name and namespace in other branches
- 8 src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 8.2 src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 4.0.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 3.0.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 3.1.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 3.2.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 3.3.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 3.4.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 3.5.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 3.6.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
- 3.8.x src/Form/LingotekMetadataEditForm.php \Drupal\lingotek\Form\LingotekMetadataEditForm
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait
- class \Drupal\Core\Entity\EntityForm implements EntityFormInterface
- class \Drupal\Core\Entity\ContentEntityForm implements ContentEntityFormInterface
- class \Drupal\lingotek\Form\LingotekMetadataEditForm uses LingotekSetupTrait
- class \Drupal\Core\Entity\ContentEntityForm implements ContentEntityFormInterface
- class \Drupal\Core\Entity\EntityForm implements EntityFormInterface
Expanded class hierarchy of LingotekMetadataEditForm
File
- src/
Form/ LingotekMetadataEditForm.php, line 20
Namespace
Drupal\lingotek\FormView source
class LingotekMetadataEditForm extends ContentEntityForm {
use LingotekSetupTrait;
/**
* The language-locale mapper.
*
* @var \Drupal\lingotek\LanguageLocaleMapperInterface
*/
protected $languageLocaleMapper;
/**
* The language manager.
*
* @var \Drupal\Core\Language\LanguageManagerInterface
*/
protected $languageManager;
/**
* The Lingotek content translation service.
*
* @var \Drupal\lingotek\LingotekContentTranslationServiceInterface
*/
protected $translationService;
/**
* The entity type id.
*
* @var string
*/
protected $entityTypeId;
/**
* Constructs a new LingotekManagementForm object.
*
* @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository
* The entity repository.
* @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $entity_type_bundle_info
* The entity type bundle service.
* @param \Drupal\Component\Datetime\TimeInterface $time
* The time service.
* @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
* The language manager.
* @param \Drupal\lingotek\LanguageLocaleMapperInterface $language_locale_mapper
* The language-locale mapper.
* @param \Drupal\lingotek\LingotekContentTranslationServiceInterface $translation_service
* The Lingotek content translation service.
* @param string $entity_type_id
* The entity type id.
*/
public function __construct(EntityRepositoryInterface $entity_repository, EntityTypeBundleInfoInterface $entity_type_bundle_info, TimeInterface $time, LanguageManagerInterface $language_manager, LanguageLocaleMapperInterface $language_locale_mapper, LingotekContentTranslationServiceInterface $translation_service, ModuleHandlerInterface $module_handler, $entity_type_id) {
parent::__construct($entity_repository, $entity_type_bundle_info, $time);
$this->languageManager = $language_manager;
$this->languageLocaleMapper = $language_locale_mapper;
$this->translationService = $translation_service;
$this->entityTypeId = $entity_type_id;
$this
->setModuleHandler($module_handler);
$this->lingotek = \Drupal::service('lingotek');
$this->operation = 'lingotek_metadata';
$entity = $this
->getEntityFromRouteMatch($this
->getRouteMatch(), $this->entityTypeId);
$this
->setEntity($entity);
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('entity.repository'), $container
->get('entity_type.bundle.info'), $container
->get('datetime.time'), $container
->get('language_manager'), $container
->get('lingotek.language_locale_mapper'), $container
->get('lingotek.content_translation'), $container
->get('module_handler'), \Drupal::routeMatch()
->getParameter('entity_type_id'));
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
if ($redirect = $this
->checkSetup()) {
return $redirect;
}
// $form = parent::buildForm($form, $form_state);
$entity = $this
->getEntity();
/** @var \Drupal\lingotek\Entity\LingotekContentMetadata|NULL $metadata */
$metadata = $entity
->hasField('lingotek_metadata') ? $entity->lingotek_metadata->entity : NULL;
$lingotek_document_id = $this->translationService
->getDocumentId($entity);
$source_status = $this->translationService
->getSourceStatus($entity);
$form['metadata']['notice'] = [
'#markup' => $this
->t('Editing the metadata manually can cause diverse errors. If you find yourself using it often, please contact the module maintainers because you may have hit a bug.'),
'#prefix' => '<span class="warning">',
'#suffix' => '</span',
];
$form['metadata']['lingotek_document_id'] = [
'#type' => 'textfield',
'#title' => $this
->t('Lingotek Document ID'),
'#default_value' => $lingotek_document_id,
];
$form['metadata']['lingotek_source_status'] = [
'#type' => 'select',
'#title' => $this
->t('Lingotek Source Status'),
'#default_value' => $source_status,
'#options' => $this
->getLingotekStatusesOptions(),
];
$languages = $this->languageManager
->getLanguages();
foreach ($languages as $langcode => $language) {
$form['metadata']['lingotek_target_status'][$langcode] = [
'#type' => 'select',
'#title' => $this
->t('Lingotek Target Status: %language', [
'%language' => $language
->getName(),
]),
'#default_value' => $this->translationService
->getTargetStatus($entity, $langcode),
'#options' => $this
->getLingotekStatusesOptions(),
];
}
$form['metadata']['lingotek_job_id'] = [
'#type' => 'textfield',
'#title' => $this
->t('Lingotek Job ID'),
'#default_value' => $metadata ? $metadata
->getJobId() : '',
];
$encodedMetadata = 'NULL';
if ($metadata) {
$encodedMetadata = json_encode($metadata
->toArray(), JSON_PRETTY_PRINT);
}
$form['metadata']['verbatim_area'] = [
'#type' => 'details',
'#title' => $this
->t('Lingotek Verbatim Metadata'),
"#collapsible" => TRUE,
"#collapsed" => TRUE,
'#tree' => TRUE,
'#weight' => 50,
];
$form['metadata']['verbatim_area']['verbatim'] = [
'#type' => 'textarea',
'#title' => $this
->t('Lingotek Verbatim Metadata'),
'#title_display' => 'invisible',
'#readonly' => TRUE,
'#cols' => '80',
'#rows' => '20',
'#default_value' => $encodedMetadata,
'#attributes' => [
'readonly' => TRUE,
],
];
$form['actions'] = [];
$form['actions']['save_metadata'] = [
'#type' => 'submit',
'#value' => t('Save metadata'),
'#button_type' => 'primary',
'#limit_validation_errors' => [],
'#submit' => [
[
$this,
'saveMetadata',
],
],
];
return $form;
}
/**
* Submit handler that saves the metadata of this content entity.
*
* @param array $form
* An associative array containing the structure of the form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
*/
public function saveMetadata(array &$form, FormStateInterface $form_state) {
$entity = $this
->getEntity();
/** @var \Drupal\lingotek\LingotekConfigurationServiceInterface $lingotek_config */
$lingotek_config = \Drupal::service('lingotek.configuration');
if ($lingotek_config
->isEnabled($entity
->getEntityTypeId(), $entity
->bundle())) {
$input = $form_state
->getUserInput();
$lingotek_document_id = $input['lingotek_document_id'];
$source_status = $input['lingotek_source_status'];
$profile = $input['lingotek_source_status'];
$this->translationService
->setDocumentId($entity, $lingotek_document_id);
$this->translationService
->setSourceStatus($entity, $source_status);
foreach ($this->languageManager
->getLanguages() as $langcode => $language) {
$this->translationService
->setTargetStatus($entity, $langcode, $input[$langcode]);
}
/** @var \Drupal\lingotek\Entity\LingotekContentMetadata|NULL $metadata */
$metadata = $entity
->hasField('lingotek_metadata') ? $entity->lingotek_metadata->entity : NULL;
if ($metadata !== NULL) {
$metadata
->setProfile($input['lingotek_translation_management']['lingotek_translation_profile']);
$metadata
->setJobId($input['lingotek_job_id']);
$metadata
->save();
}
$this
->messenger()
->addStatus($this
->t('Metadata saved successfully'));
}
else {
$this
->messenger()
->addError($this
->t('This entity cannot be managed in Lingotek. Please check your configuration.'));
}
}
/**
* {@inheritdoc}
*/
public function getBaseFormId() {
return 'lingotek_metadata_entity_form';
}
/**
* {@inheritdoc}
*/
public function getFormId() {
$form_id = $this->entityTypeId;
$form_id .= '_' . $this
->getBaseFormId();
return $form_id;
}
public function getLingotekStatusesOptions() {
return [
Lingotek::STATUS_CURRENT => $this
->t('Current'),
Lingotek::STATUS_EDITED => $this
->t('Edited'),
Lingotek::STATUS_IMPORTING => $this
->t('Importing'),
Lingotek::STATUS_PENDING => $this
->t('Pending'),
Lingotek::STATUS_READY => $this
->t('Ready'),
Lingotek::STATUS_REQUEST => $this
->t('Request'),
Lingotek::STATUS_UNTRACKED => $this
->t('Untracked'),
Lingotek::STATUS_CANCELLED => $this
->t('Cancelled'),
];
}
/**
* Form submission handler.
*
* @param array $form
* An associative array containing the structure of the form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
// Not needed, we have our own handler.
}
protected function getEditedFieldNames(FormStateInterface $form_state) {
return [];
}
protected function copyFormValuesToEntity(EntityInterface $entity, array $form, FormStateInterface $form_state) {
// Do nothing. We don't want to alter the entity.
}
protected function flagViolations(EntityConstraintViolationListInterface $violations, array $form, FormStateInterface $form_state) {
// ToDo
// We ignore violations.
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ContentEntityForm:: |
protected | property |
The entity being used by this form. Overrides EntityForm:: |
9 |
ContentEntityForm:: |
protected | property | The entity repository service. | |
ContentEntityForm:: |
protected | property | The entity type bundle info service. | |
ContentEntityForm:: |
protected | property | The time service. | |
ContentEntityForm:: |
protected | function | Add revision form fields if the entity enabled the UI. | |
ContentEntityForm:: |
public | function |
Builds an updated entity object based upon the submitted form values. Overrides EntityForm:: |
4 |
ContentEntityForm:: |
public | function |
Gets the actual form array to be built. Overrides EntityForm:: |
13 |
ContentEntityForm:: |
protected | function | Returns the bundle entity of the entity, or NULL if there is none. | |
ContentEntityForm:: |
public | function |
Gets the form display. Overrides ContentEntityFormInterface:: |
|
ContentEntityForm:: |
public | function |
Gets the code identifying the active form language. Overrides ContentEntityFormInterface:: |
|
ContentEntityForm:: |
protected | function | Should new revisions created on default. | |
ContentEntityForm:: |
protected | function |
Initializes the form state and the entity before the first form build. Overrides EntityForm:: |
1 |
ContentEntityForm:: |
protected | function | Initializes form language code values. | |
ContentEntityForm:: |
public | function |
Checks whether the current form language matches the entity one. Overrides ContentEntityFormInterface:: |
|
ContentEntityForm:: |
protected | function |
Prepares the entity object before the form is built first. Overrides EntityForm:: |
1 |
ContentEntityForm:: |
public | function |
Sets the form display. Overrides ContentEntityFormInterface:: |
|
ContentEntityForm:: |
protected | function | Checks whether the revision form fields should be added to the form. | |
ContentEntityForm:: |
public | function | Updates the changed time of the entity. | |
ContentEntityForm:: |
public | function | Updates the form language to reflect any change to the entity language. | |
ContentEntityForm:: |
public | function |
Button-level validation handlers are highly discouraged for entity forms,
as they will prevent entity validation from running. If the entity is going
to be saved during the form submission, this method should be manually
invoked from the button-level… Overrides FormBase:: |
3 |
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | 2 | |
DependencySerializationTrait:: |
public | function | 2 | |
EntityForm:: |
protected | property | The entity type manager. | 3 |
EntityForm:: |
protected | property | The module handler service. | |
EntityForm:: |
protected | property | The name of the current operation. | |
EntityForm:: |
protected | function | Returns an array of supported actions for the current entity form. | 35 |
EntityForm:: |
protected | function | Returns the action form element for the current entity form. | |
EntityForm:: |
public | function | Form element #after_build callback: Updates the entity with submitted data. | |
EntityForm:: |
public | function |
Gets the form entity. Overrides EntityFormInterface:: |
|
EntityForm:: |
public | function |
Determines which entity will be used by this form from a RouteMatch object. Overrides EntityFormInterface:: |
3 |
EntityForm:: |
public | function |
Gets the operation identifying the form. Overrides EntityFormInterface:: |
|
EntityForm:: |
protected | function | Invokes the specified prepare hook variant. | |
EntityForm:: |
public | function | Process callback: assigns weights and hides extra fields. | |
EntityForm:: |
public | function |
Form submission handler for the 'save' action. Overrides EntityFormInterface:: |
47 |
EntityForm:: |
public | function |
Sets the form entity. Overrides EntityFormInterface:: |
|
EntityForm:: |
public | function |
Sets the entity type manager for this form. Overrides EntityFormInterface:: |
|
EntityForm:: |
public | function |
Sets the module handler for this form. Overrides EntityFormInterface:: |
|
EntityForm:: |
public | function |
Sets the operation for this form. Overrides EntityFormInterface:: |
|
FormBase:: |
protected | property | The config factory. | 3 |
FormBase:: |
protected | property | The request stack. | 1 |
FormBase:: |
protected | property | The route match. | |
FormBase:: |
protected | function | Retrieves a configuration object. | |
FormBase:: |
protected | function | Gets the config factory for this form. | 3 |
FormBase:: |
private | function | Returns the service container. | |
FormBase:: |
protected | function | Gets the current user. | |
FormBase:: |
protected | function | Gets the request object. | |
FormBase:: |
protected | function | Gets the route match. | |
FormBase:: |
protected | function | Gets the logger for a specific channel. | |
FormBase:: |
protected | function | Returns a redirect response object for the specified route. | |
FormBase:: |
public | function | Resets the configuration factory. | |
FormBase:: |
public | function | Sets the config factory for this form. | |
FormBase:: |
public | function | Sets the request stack object to use. | |
LingotekMetadataEditForm:: |
protected | property | The entity type id. | |
LingotekMetadataEditForm:: |
protected | property | The language-locale mapper. | |
LingotekMetadataEditForm:: |
protected | property | The language manager. | |
LingotekMetadataEditForm:: |
protected | property | The Lingotek content translation service. | |
LingotekMetadataEditForm:: |
public | function |
Form constructor. Overrides EntityForm:: |
|
LingotekMetadataEditForm:: |
protected | function |
Copies top-level form values to entity properties. Overrides ContentEntityForm:: |
|
LingotekMetadataEditForm:: |
public static | function |
Instantiates a new instance of this class. Overrides ContentEntityForm:: |
|
LingotekMetadataEditForm:: |
protected | function |
Flags violations for the current form. Overrides ContentEntityForm:: |
|
LingotekMetadataEditForm:: |
public | function |
Returns a string identifying the base form. Overrides EntityForm:: |
|
LingotekMetadataEditForm:: |
protected | function |
Gets the names of all fields edited in the form. Overrides ContentEntityForm:: |
|
LingotekMetadataEditForm:: |
public | function |
Returns a unique string identifying the form. Overrides EntityForm:: |
|
LingotekMetadataEditForm:: |
public | function | ||
LingotekMetadataEditForm:: |
public | function | Submit handler that saves the metadata of this content entity. | |
LingotekMetadataEditForm:: |
public | function |
Form submission handler. Overrides ContentEntityForm:: |
|
LingotekMetadataEditForm:: |
public | function |
Constructs a new LingotekManagementForm object. Overrides ContentEntityForm:: |
|
LingotekSetupTrait:: |
protected | property | A lingotek connector object | |
LingotekSetupTrait:: |
protected | function | Verify the Lingotek Translation module has been properly initialized. | |
LingotekSetupTrait:: |
public | function | Checks if Lingotek module is completely set up. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
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. |