You are here

protected function LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings in Lingotek Translation 3.6.x

Same name and namespace in other branches
  1. 8.2 tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  2. 4.0.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  3. 3.0.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  4. 3.1.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  5. 3.2.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  6. 3.3.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  7. 3.4.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  8. 3.5.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  9. 3.7.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
  10. 3.8.x tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php \Drupal\Tests\lingotek\FunctionalJavascript\LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()

Save Lingotek content translation settings.

Example:

$this
  ->saveLingotekContentTranslationSettings([
  'node' => [
    'article' => [
      'profiles' => 'automatic',
      'fields' => [
        'title' => 1,
        'body' => 1,
      ],
      'moderation' => [
        'upload_status' => 'draft',
        'download_transition' => 'request_review',
      ],
    ],
  ],
  'paragraph' => [
    'image_text' => [
      'fields' => [
        'field_image_demo' => [
          'title',
          'alt',
        ],
        'field_text_demo' => 1,
      ],
    ],
  ],
]);

Parameters

array $settings: The settings we want to save.

4 calls to LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettings()
LingotekFunctionalJavascriptTestBase::saveLingotekContentTranslationSettingsForNodeTypes in tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php
Save Lingotek translation settings for node types.
LingotekNodeParagraphsTranslationTest::setUp in tests/src/FunctionalJavascript/LingotekNodeParagraphsTranslationTest.php
LingotekSettingsContentSingleFormTest::testWhenDisabledAndEnabledBackNodeArticleFieldsAreKept in tests/src/FunctionalJavascript/LingotekSettingsContentSingleFormTest.php
LingotekSettingsTabContentFormTest::testWhenDisabledAndEnabledBackNodeArticleFieldsAreKept in tests/src/FunctionalJavascript/LingotekSettingsTabContentFormTest.php

File

tests/src/FunctionalJavascript/LingotekFunctionalJavascriptTestBase.php, line 222

Class

LingotekFunctionalJavascriptTestBase

Namespace

Drupal\Tests\lingotek\FunctionalJavascript

Code

protected function saveLingotekContentTranslationSettings($settings) {
  $this
    ->drupalGet('/admin/lingotek/settings');
  $page = $this
    ->getSession()
    ->getPage();
  $contentTabDetails = $page
    ->find('css', '#edit-parent-details');
  $contentTabDetails
    ->click();
  foreach ($settings as $entity_type => $entity_type_settings) {
    $entityTabDetails = $page
      ->find('css', '#edit-entity-' . str_replace('_', '-', $entity_type));
    $entityTabDetails
      ->click();
    foreach ($entity_type_settings as $bundle_id => $bundle_settings) {

      /** @var \Drupal\Core\Field\FieldDefinitionInterface[] $field_definitions */
      $field_definitions = \Drupal::service('entity_field.manager')
        ->getFieldDefinitions($entity_type, $bundle_id);
      $fieldEnabled = $page
        ->find('css', '#edit-' . str_replace('_', '-', $entity_type) . '-' . str_replace('_', '-', $bundle_id) . '-enabled');
      $fieldEnabled
        ->click();
      $this
        ->assertSession()
        ->assertWaitOnAjaxRequest();
      if (isset($bundle_settings['profiles']) && $bundle_settings['profiles'] !== NULL) {
        $page
          ->selectFieldOption('edit-' . str_replace('_', '-', $entity_type) . '-' . str_replace('_', '-', $bundle_id) . '-profiles', $bundle_settings['profiles']);
      }
      $fieldsCheckboxes = $page
        ->findAll('css', '#container-' . str_replace('_', '-', $entity_type) . '-' . str_replace('_', '-', $bundle_id) . ' input[type="checkbox"]');
      $propertiesCheckboxes = $page
        ->findAll('css', 'input[type="checkbox"] .field-property-checkbox');

      /** @var \Behat\Mink\Element\NodeElement $fieldCheckbox */
      foreach ($fieldsCheckboxes as $fieldCheckbox) {
        if ($fieldCheckbox
          ->isChecked()) {
          $fieldCheckbox
            ->click();
        }
      }
      foreach ($propertiesCheckboxes as $propertyCheckbox) {
        if ($propertyCheckbox
          ->isChecked()) {
          $propertyCheckbox
            ->click();
        }
      }
      foreach ($bundle_settings['fields'] as $field_id => $field_properties) {
        $field_definition = $field_definitions[$field_id];
        $field_type_definition = \Drupal::service('plugin.manager.field.field_type')
          ->getDefinition($field_definition
          ->getType());
        $fieldElementId = 'edit-' . str_replace('_', '-', $entity_type) . '-' . str_replace('_', '-', $bundle_id) . '-fields-' . str_replace('_', '-', $field_id);
        $fieldCheckbox = $page
          ->find('css', '#' . $fieldElementId);
        $fieldCheckbox
          ->click();
        if (is_array($field_properties)) {
          $column_groups = $field_type_definition['column_groups'];
          $properties = [];
          foreach ($column_groups as $property_id => $property) {
            if (isset($property['translatable']) && $property['translatable']) {
              $property_definitions = $field_type_definition['class']::propertyDefinitions($field_definition
                ->getFieldStorageDefinition());
              if (isset($property_definitions[$property_id])) {
                $properties[$property_id] = $property_id;
              }
            }
          }

          // Disable all properties.
          foreach ($properties as $field_property) {
            $propertyElementId = 'edit-' . str_replace('_', '-', $entity_type) . '-' . str_replace('_', '-', $bundle_id) . '-fields-' . str_replace('_', '-', $field_id) . 'properties-' . str_replace('_', '-', $field_property);
            $propertyCheckbox = $page
              ->find('css', '#' . $propertyElementId);
            if ($propertyCheckbox
              ->isChecked()) {
              $propertyCheckbox
                ->click();
            }
          }
          foreach ($field_properties as $field_property) {
            $propertyElementId = 'edit-' . str_replace('_', '-', $entity_type) . '-' . str_replace('_', '-', $bundle_id) . '-fields-' . str_replace('_', '-', $field_id) . 'properties-' . str_replace('_', '-', $field_property);
            $propertyCheckbox = $page
              ->find('css', '#' . $propertyElementId);
            if (!$propertyCheckbox
              ->isChecked()) {
              $propertyCheckbox
                ->click();
            }
          }
        }
      }
      if (isset($bundle_settings['moderation']) && $bundle_settings['moderation'] !== NULL) {
        $page
          ->selectFieldOption('edit-' . str_replace('_', '-', $entity_type) . '-' . str_replace('_', '-', $bundle_id) . '-moderation-upload-status', $bundle_settings['moderation']['upload_status']);
        $page
          ->selectFieldOption('edit-' . str_replace('_', '-', $entity_type) . '-' . str_replace('_', '-', $bundle_id) . '-moderation-download-transition', $bundle_settings['moderation']['download_transition']);
      }
    }
  }
  $this
    ->drupalPostForm(NULL, [], 'Save', [], 'lingoteksettings-tab-content-form');
}