* The content translation administration forms.
*/
+use Drupal\content_translation\BundleTranslationSettingsInterface;
+use Drupal\content_translation\ContentTranslationManager;
use Drupal\Core\Config\Entity\ThirdPartySettingsInterface;
use Drupal\Core\Entity\ContentEntityTypeInterface;
use Drupal\Core\Entity\EntityTypeInterface;
// does not get lost.
$element[key($options)]['#attached']['drupalSettings']['contentTranslationDependentOptions'] = [
'dependent_selectors' => [
- $element_name => $require_all_groups_for_translation
+ $element_name => $require_all_groups_for_translation,
],
];
$element[key($options)]['#attached']['library'][] = 'content_translation/drupal.content_translation.admin';
return;
}
+ /** @var \Drupal\content_translation\ContentTranslationManagerInterface $content_translation_manager */
$content_translation_manager = \Drupal::service('content_translation.manager');
$default = $form['entity_types']['#default_value'];
foreach ($default as $entity_type_id => $enabled) {
continue;
}
+ // Displayed the "shared fields widgets" toggle.
+ if ($content_translation_manager instanceof BundleTranslationSettingsInterface) {
+ $settings = $content_translation_manager->getBundleTranslationSettings($entity_type_id, $bundle);
+ $force_hidden = ContentTranslationManager::isPendingRevisionSupportEnabled($entity_type_id, $bundle);
+ $form['settings'][$entity_type_id][$bundle]['settings']['content_translation']['untranslatable_fields_hide'] = [
+ '#type' => 'checkbox',
+ '#title' => t('Hide non translatable fields on translation forms'),
+ '#default_value' => $force_hidden || !empty($settings['untranslatable_fields_hide']),
+ '#disabled' => $force_hidden,
+ '#description' => $force_hidden ? t('Moderated content requires non-translatable fields to be edited in the original language form.') : '',
+ '#states' => [
+ 'visible' => [
+ ':input[name="settings[' . $entity_type_id . '][' . $bundle . '][translatable]"]' => [
+ 'checked' => TRUE,
+ ],
+ ],
+ ],
+ ];
+ }
+
$fields = $entity_manager->getFieldDefinitions($entity_type_id, $bundle);
if ($fields) {
foreach ($fields as $field_name => $definition) {
$form['#validate'][] = 'content_translation_form_language_content_settings_validate';
$form['#submit'][] = 'content_translation_form_language_content_settings_submit';
}
+
/**
* Checks whether translatability should be configurable for a field.
*
$rows[] = [
'data' => [
[
- 'data' => drupal_render($field_element),
+ 'data' => \Drupal::service('renderer')->render($field_element),
'class' => ['translatable'],
],
[
$rows[] = [
'data' => [
[
- 'data' => drupal_render($column_element[$key]),
+ 'data' => \Drupal::service('renderer')->render($column_element[$key]),
'class' => ['translatable'],
],
[
* @see content_translation_admin_settings_form_validate()
*/
function content_translation_form_language_content_settings_submit(array $form, FormStateInterface $form_state) {
+ /** @var \Drupal\content_translation\ContentTranslationManagerInterface $content_translation_manager */
+ $content_translation_manager = \Drupal::service('content_translation.manager');
$entity_types = $form_state->getValue('entity_types');
$settings = &$form_state->getValue('settings');
}
if (isset($bundle_settings['translatable'])) {
// Store whether a bundle has translation enabled or not.
- \Drupal::service('content_translation.manager')->setEnabled($entity_type_id, $bundle, $bundle_settings['translatable']);
+ $content_translation_manager->setEnabled($entity_type_id, $bundle, $bundle_settings['translatable']);
+
+ // Store any other bundle settings.
+ if ($content_translation_manager instanceof BundleTranslationSettingsInterface) {
+ $content_translation_manager->setBundleTranslationSettings($entity_type_id, $bundle, $bundle_settings['settings']['content_translation']);
+ }
// Save translation_sync settings.
if (!empty($bundle_settings['columns'])) {
}
}
}
+
// Ensure entity and menu router information are correctly rebuilt.
\Drupal::entityManager()->clearCachedDefinitions();
\Drupal::service('router.builder')->setRebuildNeeded();
-
}