diff --git a/core/modules/content_translation/content_translation.admin.inc b/core/modules/content_translation/content_translation.admin.inc index 006feac..da4a7be 100644 --- a/core/modules/content_translation/content_translation.admin.inc +++ b/core/modules/content_translation/content_translation.admin.inc @@ -33,7 +33,6 @@ function content_translation_field_sync_widget(FieldDefinitionInterface $field) $options[$group] = $info['label']; $default[$group] = !empty($info['translatable']) ? $group : FALSE; } - $settings = array( 'dependent_selectors' => array('instance[settings][translation_sync]' => array('file')), 'translation_sync_options' => array_keys($options), @@ -121,20 +120,24 @@ function _content_translation_form_language_content_settings_form_alter(array &$ '#default_value' => $translatable, ); $column_element = content_translation_field_sync_widget($definition); + if ($column_element) { // Hide column items that are disabled for this field instance. + + $translation_sync = $definition->getSetting('translation_sync'); + + if (is_array($translation_sync)) { + $translation_sync_keys = array_keys($translation_sync); + } + foreach (array_keys($column_element['#options']) as $column_item) { - if (isset($instance->definition['settings'][$column_item])) { - if (!$instance->definition['settings'][$column_item]) { - unset($column_element['#options'][$column_item]); - } - } - else if (isset($instance->definition['settings'][$column_item . '_field'])) { - if (!$instance->definition['settings'][$column_item . '_field']) { + if (isset($translation_sync_keys) && in_array($column_item, $translation_sync_keys)) { + if (array_key_exists($column_item . '_field', $definition->settings) && !$definition->settings[$column_item . '_field']) { unset($column_element['#options'][$column_item]); } } } + $form['settings'][$entity_type_id][$bundle]['columns'][$field_name] = $column_element; // @todo This should not concern only files. @@ -159,7 +162,10 @@ function _content_translation_form_language_content_settings_form_alter(array &$ } } } - $settings = array('dependent_selectors' => $dependent_options_settings); + $settings = array( + 'dependent_selectors' => $dependent_options_settings, + ); + $form['#attached']['js'][] = array('data' => array('contentTranslationDependentOptions' => $settings), 'type' => 'setting'); $form['#validate'][] = 'content_translation_form_language_content_settings_validate'; $form['#submit'][] = 'content_translation_form_language_content_settings_submit'; diff --git a/core/modules/content_translation/content_translation.admin.js b/core/modules/content_translation/content_translation.admin.js index f5f4a8f..52eae9f 100644 --- a/core/modules/content_translation/content_translation.admin.js +++ b/core/modules/content_translation/content_translation.admin.js @@ -126,7 +126,7 @@ // If the setting did not exist try adding _field. $enableCheckbox = $(':input[name="instance[settings][' + element + '_field]"][type="checkbox"]'); } - ; + if ($enableCheckbox.length) { // If the field is not enabled then uncheck and disable the translation // checkbox.