class TestSource in Translation Management Tool 8
Test source plugin implementation.
Plugin annotation
@SourcePlugin(
id = "test_source",
label = @Translation("Test source"),
description = @Translation("Simple source for testing purposes.")
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\tmgmt\SourcePluginBase implements SourcePluginInterface
- class \Drupal\tmgmt_test\Plugin\tmgmt\Source\TestSource
- class \Drupal\tmgmt\SourcePluginBase implements SourcePluginInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of TestSource
File
- tmgmt_test/
src/ Plugin/ tmgmt/ Source/ TestSource.php, line 20
Namespace
Drupal\tmgmt_test\Plugin\tmgmt\SourceView source
class TestSource extends SourcePluginBase {
/**
* {@inheritdoc}
*/
public function getUrl(JobItemInterface $job_item) {
// Provide logic which allows to test for source which is either accessible
// or not accessible to anonymous user. This is may then be used to test if
// the source url is attached to the job comment sent to a translation
// service.
if ($job_item
->getItemType() == 'test_not_accessible') {
return Url::fromRoute('system.admin');
}
else {
return Url::fromRoute('<front>');
}
}
/**
* {@inheritdoc}
*/
public function getLabel(JobItemInterface $job_item) {
$label = $this->pluginId . ':' . $job_item
->getItemType() . ':' . $job_item
->getItemId();
// We need to test if job and job item labels get properly truncated,
// therefore in case the job item type is "test_with_long_label" we append
// further text to the existing label.
if ($job_item
->getItemType() == 'test_with_long_label') {
$label .= 'Some very long and boring label that definitely exceeds hundred and twenty eight characters which is the maximum character count for the job item label.';
}
return $label;
}
/**
* {@inheritdoc}
*/
public function getData(JobItemInterface $job_item) {
// Allow tests to set custom source data.
$source = \Drupal::state()
->get('tmgmt.test_source_data', array(
'dummy' => array(
'deep_nesting' => array(
'#text' => 'Text for job item with type @type and id @id.',
'#label' => 'Label for job item with type @type and id @id.',
'#translate' => TRUE,
),
),
));
$variables = array(
'@type' => $job_item
->getItemType(),
'@id' => $job_item
->getItemId(),
);
$this
->replacePlaceholders($source, $variables);
return $source;
}
/**
* Will replace placeholders in the #text offsets.
*
* @param array $data
* Data structures where to replace placeholders.
* @param $variables
* Key value pairs.
*/
protected function replacePlaceholders(&$data, $variables) {
foreach (Element::children($data) as $key) {
if (isset($data[$key]['#text'])) {
$data[$key]['#text'] = (string) new FormattableMarkup($data[$key]['#text'], $variables);
}
else {
$this
->replacePlaceholders($data[$key], $variables);
}
}
}
/**
* {@inheritdoc}
*/
public function saveTranslation(JobItemInterface $job_item, $target_langcode) {
// Set a variable that can be checked later for a given job item.
$data = $job_item
->getData();
if (isset($data['dummy']['deep_nesting']['#translation']['#text']) && $data['dummy']['deep_nesting']['#translation']['#text'] == 'Invalid translation that will cause an exception') {
throw new \Exception('The translation cannot be saved.');
}
\Drupal::state()
->set('tmgmt_test_saved_translation_' . $job_item
->getItemType() . '_' . $job_item
->getItemId(), $job_item
->getData());
return TRUE;
}
/**
* {@inheritdoc}
*/
public function getExistingLangCodes(JobItemInterface $job_item) {
return array_keys(\Drupal::languageManager()
->getLanguages());
}
/**
* {@inheritdoc}
*/
public function getSourceLangCode(JobItemInterface $job_item) {
$source_languages = \Drupal::state()
->get('tmgmt.test_source_languages', array());
if (isset($source_languages[$job_item
->id()])) {
return $source_languages[$job_item
->id()];
}
return 'en';
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 92 |
SourcePluginBase:: |
public | function |
Returns the label of a source item type. Overrides SourcePluginInterface:: |
2 |
SourcePluginBase:: |
public | function |
Returns an array of translatable source item types. Overrides SourcePluginInterface:: |
3 |
SourcePluginBase:: |
public | function |
Returns the type of a job item. Overrides SourcePluginInterface:: |
3 |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
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. | |
TestSource:: |
public | function |
Returns an array with the data structured for translation. Overrides SourcePluginInterface:: |
1 |
TestSource:: |
public | function |
Gets existing translation language codes of the job item source. Overrides SourcePluginBase:: |
|
TestSource:: |
public | function |
Return a title for this job item. Overrides SourcePluginBase:: |
|
TestSource:: |
public | function |
Gets language code of the job item source. Overrides SourcePluginInterface:: |
|
TestSource:: |
public | function |
Returns the Uri for this job item. Overrides SourcePluginBase:: |
|
TestSource:: |
protected | function | Will replace placeholders in the #text offsets. | |
TestSource:: |
public | function |
Saves a translation. Overrides SourcePluginInterface:: |