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