diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index 2934d41..06480c8 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -1121,41 +1121,36 @@ function language_content_settings_form(array $form, array $form_state, array $s } /** - * Theming function for an administration settings table. - * - * @param array $variables - * An associative array containing: - * - element: A render element representing an entity type and its bundles. - * Properties used: #bundle_label. - * - * @ingroup themable + * Adds a render element representing the bundle language settings table. */ -function theme_language_content_settings_table(array $variables) { +function template_preprocess_language_content_settings_table(&$variables) { $element = $variables['element']; $header = array( array( 'data' => $element['#bundle_label'], - 'class' => array('bundle') + 'class' => array('bundle'), ), array( 'data' => t('Configuration'), - 'class' => array('operations') + 'class' => array('operations'), ), ); - $rows = array(); + $rows = array(); foreach (element_children($element) as $bundle) { - $bundle_label = check_plain($element[$bundle]['settings']['#label']); - - $rows[] = array( + $rows[$bundle] = array( 'data' => array( array( - 'data' => '', + 'data' => array( + '#prefix' => '', + '#markup' => check_plain($element[$bundle]['settings']['#label']), + ), 'class' => array('bundle'), ), array( - 'data' => drupal_render($element[$bundle]['settings']), + 'data' => $element[$bundle]['settings'], 'class' => array('operations'), ), ), @@ -1163,9 +1158,25 @@ function theme_language_content_settings_table(array $variables) { ); } - $output = theme('table', array('header' => $header, 'rows' => $rows)); - $output .= drupal_render_children($element); - return $output; + $variables['build'] = array( + '#header' => $header, + '#rows' => $rows, + '#theme' => 'table', + ); +} + +/** + * Theming function for an administration settings table. + * + * @param array $variables + * An associative array containing: + * - build: A render element representing a table of bundle content language + * settings for a particular entity type. + * + * @ingroup themable + */ +function theme_language_content_settings_table($variables) { + return drupal_render($variables['build']); } /** diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 41f85dc..c293031 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -54,7 +54,7 @@ function language_help($path, $arg) { break; case 'admin/config/regional/content-language': - return t('Enable language support for content types, taxonomy vocabularies, accounts, or any other translatable element on your site.'); + return t('Enable language support for content types, taxonomy vocabularies, user profiles, or any other supported element on your site.'); } } diff --git a/core/modules/translation_entity/translation_entity.admin.inc b/core/modules/translation_entity/translation_entity.admin.inc index e3ec2fb..26924d0 100644 --- a/core/modules/translation_entity/translation_entity.admin.inc +++ b/core/modules/translation_entity/translation_entity.admin.inc @@ -25,9 +25,6 @@ function _translation_entity_form_language_content_settings_form_alter(array &$f $form['#attached']['js'][] = $path . '/translation_entity.admin.js'; foreach ($form['#labels'] as $entity_type => $label) { - // Override the default theming. - $form['settings'][$entity_type]['#theme'] = 'translation_entity_admin_settings_table'; - foreach (entity_get_bundles($entity_type) as $bundle) { $form['settings'][$entity_type][$bundle]['translatable'] = array( '#type' => 'checkbox', @@ -57,87 +54,6 @@ function _translation_entity_form_language_content_settings_form_alter(array &$f } /** - * Theming function for an administration settings table. - * - * @param array $variables - * An associative array containing: - * - element: A render element representing an entity type and its bundles. - * Properties used: #bundle_label. - * - * @ingroup themable - */ -function theme_translation_entity_admin_settings_table($variables) { - $element = $variables['element']; - - $header = array( - array( - 'data' => t('Translatable'), - 'class' => array('translatable'), - ), - array( - 'data' => $element['#bundle_label'], - 'class' => array('bundle'), - ), - array( - 'data' => t('Configuration'), - 'class' => array('operations'), - ), - ); - - $rows = array(); - - foreach (element_children($element) as $bundle) { - $field_names = !empty($element[$bundle]['fields']) ? element_children($element[$bundle]['fields']) : array(); - $bundle_label = check_plain($element[$bundle]['settings']['#label']); - $checkbox_id = $element[$bundle]['translatable']['#id']; - - $rows[] = array( - 'data' => array( - array( - 'data' => drupal_render($element[$bundle]['translatable']), - 'class' => array('translatable'), - ), - array( - 'data' => '', - 'class' => array('bundle'), - ), - array( - 'data' => drupal_render($element[$bundle]['settings']), - 'class' => array('operations'), - ), - ), - 'class' => array('bundle-settings'), - ); - - foreach ($field_names as $field_name) { - $field = &$element[$bundle]['fields'][$field_name]; - $checkbox_id = $field['#id']; - - $rows[] = array( - 'data' => array( - array( - 'data' => drupal_render($field), - 'class' => array('translatable'), - ), - array( - 'data' => '', - 'class' => array('field'), - ), - array( - 'data' => '', - 'class' => array('operations'), - ), - ), - 'class' => array('field-settings'), - ); - } - } - - $output = theme('table', array('header' => $header, 'rows' => $rows)); - $output .= drupal_render_children($element); - return $output; -} -/** * Form validation handler for translation_entity_admin_settings_form(). * * @see translation_entity_admin_settings_form_submit() diff --git a/core/modules/translation_entity/translation_entity.admin.js b/core/modules/translation_entity/translation_entity.admin.js index 8793345..97c3679 100644 --- a/core/modules/translation_entity/translation_entity.admin.js +++ b/core/modules/translation_entity/translation_entity.admin.js @@ -8,14 +8,15 @@ Drupal.behaviors.translationEntity = { attach: function (context) { // Initially hide all field rows for non translatable bundles. - $('table .bundle-settings .translatable :input:not(:checked)').once('translation-entity-admin-hide', function() { + var $input = $('table .bundle-settings .translatable :input', context); + $input.filter(':not(:checked)').once('translation-entity-admin-hide', function() { $(this).closest('.bundle-settings').nextUntil('.bundle-settings').hide(); }); // When a bundle is made translatable all of its field instances should // inherit this setting. Instead when it is made non translatable its field // instances are hidden, since their translatability no longer matters. - $('table .bundle-settings .translatable :input').once('translation-entity-admin-bind', function() { + $input.once('translation-entity-admin-bind', function() { var $bundleTranslatable = $(this).click(function() { var $bundleSettings = $bundleTranslatable.closest('.bundle-settings'); var $fieldSettings = $bundleSettings.nextUntil('.bundle-settings'); diff --git a/core/modules/translation_entity/translation_entity.module b/core/modules/translation_entity/translation_entity.module index 1728988..f7a35bf 100644 --- a/core/modules/translation_entity/translation_entity.module +++ b/core/modules/translation_entity/translation_entity.module @@ -746,13 +746,51 @@ function translation_entity_save_settings($settings) { } /** - * Implements hook_theme(). + * Alters the 'build' variable injecting the translation settings. */ -function translation_entity_theme() { - return array( - 'translation_entity_admin_settings_table' => array( - 'render element' => 'element', - 'file' => 'translation_entity.admin.inc', - ), - ); +function translation_entity_preprocess_language_content_settings_table(&$variables) { + $element = $variables['element']; + $build = &$variables['build']; + + array_unshift($build['#header'], array('data' => t('Translatable'), 'class' => array('translatable'))); + $rows = array(); + + foreach (element_children($element) as $bundle) { + $field_names = !empty($element[$bundle]['fields']) ? element_children($element[$bundle]['fields']) : array(); + $checkbox_id = $element[$bundle]['translatable']['#id']; + $rows[$bundle] = $build['#rows'][$bundle]; + + $translatable = array( + 'data' => $element[$bundle]['translatable'], + 'class' => array('translatable'), + ); + array_unshift($rows[$bundle]['data'], $translatable); + + $rows[$bundle]['data'][1]['data']['#prefix'] = '