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'] = '