Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\taxonomy\Functional;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Field\FieldStorageDefinitionInterface;
|
Chris@0
|
6 use Drupal\field\Entity\FieldStorageConfig;
|
Chris@0
|
7 use Drupal\language\Entity\ConfigurableLanguage;
|
Chris@17
|
8 use Drupal\Tests\field\Traits\EntityReferenceTestTrait;
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * Provides common testing base for translated taxonomy terms.
|
Chris@0
|
12 */
|
Chris@0
|
13 trait TaxonomyTranslationTestTrait {
|
Chris@0
|
14
|
Chris@0
|
15 use EntityReferenceTestTrait;
|
Chris@0
|
16
|
Chris@0
|
17 /**
|
Chris@0
|
18 * The vocabulary.
|
Chris@0
|
19 *
|
Chris@17
|
20 * @var \Drupal\taxonomy\Entity\Vocabulary
|
Chris@0
|
21 */
|
Chris@0
|
22 protected $vocabulary;
|
Chris@0
|
23
|
Chris@0
|
24 /**
|
Chris@0
|
25 * The field name for our taxonomy term field.
|
Chris@0
|
26 *
|
Chris@0
|
27 * @var string
|
Chris@0
|
28 */
|
Chris@0
|
29 protected $termFieldName = 'field_tag';
|
Chris@0
|
30
|
Chris@0
|
31 /**
|
Chris@0
|
32 * The langcode of the source language.
|
Chris@0
|
33 *
|
Chris@0
|
34 * @var string
|
Chris@0
|
35 */
|
Chris@0
|
36 protected $baseLangcode = 'en';
|
Chris@0
|
37
|
Chris@0
|
38 /**
|
Chris@0
|
39 * Target langcode for translation.
|
Chris@0
|
40 *
|
Chris@0
|
41 * @var string
|
Chris@0
|
42 */
|
Chris@0
|
43 protected $translateToLangcode = 'hu';
|
Chris@0
|
44
|
Chris@0
|
45 /**
|
Chris@0
|
46 * The node to check the translated value on.
|
Chris@0
|
47 *
|
Chris@0
|
48 * @var \Drupal\node\Entity\Node
|
Chris@0
|
49 */
|
Chris@0
|
50 protected $node;
|
Chris@0
|
51
|
Chris@0
|
52 /**
|
Chris@0
|
53 * Adds additional languages.
|
Chris@0
|
54 */
|
Chris@0
|
55 protected function setupLanguages() {
|
Chris@0
|
56 ConfigurableLanguage::createFromLangcode($this->translateToLangcode)->save();
|
Chris@0
|
57 $this->rebuildContainer();
|
Chris@0
|
58 }
|
Chris@0
|
59
|
Chris@0
|
60 /**
|
Chris@0
|
61 * Enables translations where it needed.
|
Chris@0
|
62 */
|
Chris@0
|
63 protected function enableTranslation() {
|
Chris@0
|
64 // Enable translation for the current entity type and ensure the change is
|
Chris@0
|
65 // picked up.
|
Chris@0
|
66 \Drupal::service('content_translation.manager')->setEnabled('node', 'article', TRUE);
|
Chris@0
|
67 \Drupal::service('content_translation.manager')->setEnabled('taxonomy_term', $this->vocabulary->id(), TRUE);
|
Chris@0
|
68 drupal_static_reset();
|
Chris@0
|
69 \Drupal::service('router.builder')->rebuild();
|
Chris@0
|
70 }
|
Chris@0
|
71
|
Chris@0
|
72 /**
|
Chris@0
|
73 * Adds term reference field for the article content type.
|
Chris@0
|
74 */
|
Chris@0
|
75 protected function setUpTermReferenceField() {
|
Chris@0
|
76 $handler_settings = [
|
Chris@0
|
77 'target_bundles' => [
|
Chris@0
|
78 $this->vocabulary->id() => $this->vocabulary->id(),
|
Chris@0
|
79 ],
|
Chris@0
|
80 'auto_create' => TRUE,
|
Chris@0
|
81 ];
|
Chris@0
|
82 $this->createEntityReferenceField('node', 'article', $this->termFieldName, NULL, 'taxonomy_term', 'default', $handler_settings, FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED);
|
Chris@0
|
83 $field_storage = FieldStorageConfig::loadByName('node', $this->termFieldName);
|
Chris@0
|
84 $field_storage->setTranslatable(FALSE);
|
Chris@0
|
85 $field_storage->save();
|
Chris@0
|
86
|
Chris@0
|
87 entity_get_form_display('node', 'article', 'default')
|
Chris@0
|
88 ->setComponent($this->termFieldName, [
|
Chris@0
|
89 'type' => 'entity_reference_autocomplete_tags',
|
Chris@0
|
90 ])
|
Chris@0
|
91 ->save();
|
Chris@0
|
92 entity_get_display('node', 'article', 'default')
|
Chris@0
|
93 ->setComponent($this->termFieldName, [
|
Chris@0
|
94 'type' => 'entity_reference_label',
|
Chris@0
|
95 ])
|
Chris@0
|
96 ->save();
|
Chris@0
|
97 }
|
Chris@0
|
98
|
Chris@0
|
99 }
|