From d99c103df395860574550c7c23f4499378bf3467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claes=20Gyllensv=C3=A4rd?= Date: Thu, 30 Aug 2012 17:41:43 +0200 Subject: [PATCH] Issue #967566 by DocuAnt, mariusz.slonina, tsvensson, xjm, tim.plunkett, joestewart, oriol_e9g, letharion, et al. Implement hook_field_extra_fields() to provide user settings for several core modules --- core/modules/block/block.module | 2 +- core/modules/contact/contact.module | 13 ++++++ core/modules/language/language.module | 13 ++++++ .../Tests/LanguageUserAccountSettingsTest.php | 45 ++++++++++++++++++++ core/modules/overlay/overlay.module | 13 ++++++ core/modules/user/user.module | 20 +++++++++ 6 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 core/modules/language/lib/Drupal/language/Tests/LanguageUserAccountSettingsTest.php diff --git a/core/modules/block/block.module b/core/modules/block/block.module index 2592137..26da636 100644 --- a/core/modules/block/block.module +++ b/core/modules/block/block.module @@ -631,7 +631,7 @@ function block_form_user_profile_form_alter(&$form, &$form_state) { function block_field_extra_fields() { $extra['user']['user']['form']['block'] = array( 'label' => t('Personalize blocks'), - 'description' => t('Block module form element.'), + 'description' => t('Block module form element. This element may not be present on all user account pages.'), 'weight' => 3, ); diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module index 1ba70b9..7c7761b 100644 --- a/core/modules/contact/contact.module +++ b/core/modules/contact/contact.module @@ -270,3 +270,16 @@ function contact_form_user_admin_settings_submit($form, &$form_state) { ->set('user_default_enabled', $form_state['values']['contact_default_status']) ->save(); } + +/** + * Implements hook_field_extra_fields(). + */ +function contact_field_extra_fields() { + $extra['user']['user']['form']['contact'] = array( + 'label' => t('Contact'), + 'description' => t('Contact module form element. This element may not be present on all user account pages.'), + 'weight' => 5, + ); + + return $extra; +} diff --git a/core/modules/language/language.module b/core/modules/language/language.module index f90ef93..67c36aa 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -596,3 +596,16 @@ function language_url_outbound_alter(&$path, &$options, $original_path) { } } } + +/** + * Implements hook_field_extra_fields(). + */ +function language_field_extra_fields() { + $extra['user']['user']['form']['language'] = array( + 'label' => t('Language settings'), + 'description' => t('Language module form element. This element may not be present on all user account pages.'), + 'weight' => 1, + ); + + return $extra; +} diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageUserAccountSettingsTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageUserAccountSettingsTest.php new file mode 100644 index 0000000..a714f8f --- /dev/null +++ b/core/modules/language/lib/Drupal/language/Tests/LanguageUserAccountSettingsTest.php @@ -0,0 +1,45 @@ + 'Personalized language settings', + 'description' => 'Tests the language settings in user accounts.', + 'group' => 'Language', + ); + } + + public function setUp() { + parent::setUp(); + $admin_user = $this->drupalCreateUser(array('administer users')); + $this->drupalLogin($admin_user); + } + + /** + * Tests that the personalized language is shown. + */ + function testAccountSettingsPage() { + $this->drupalGet('admin/config/people/accounts/fields'); + $this->assertText(t('Language settings'), 'Personalized language is present.'); + } +} diff --git a/core/modules/overlay/overlay.module b/core/modules/overlay/overlay.module index 3aaed7d..e4c21d8 100644 --- a/core/modules/overlay/overlay.module +++ b/core/modules/overlay/overlay.module @@ -103,6 +103,19 @@ function overlay_form_user_profile_form_alter(&$form, &$form_state) { } /** + * Implements hook_field_extra_fields(). + */ +function overlay_field_extra_fields() { + $extra['user']['user']['form']['overlay_control'] = array( + 'label' => t('Administrative overlay'), + 'description' => t('Overlay module form element. This element may not be present on all user account pages.'), + 'weight' => 4, + ); + + return $extra; +} + +/** * Implements hook_user_presave(). */ function overlay_user_presave($account) { diff --git a/core/modules/user/user.module b/core/modules/user/user.module index e90c907..a0e9b4a 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -248,6 +248,26 @@ function user_field_extra_fields() { ), ); + if (variable_get('user_pictures', 1) == 1) { + $return['user']['user']['form'] += array( + 'picture' => array( + 'label' => 'User picture', + 'description' => t('User module picture form element. This element may not be present on all user account pages.'), + 'weight' => 2, + ), + ); + } + + if (variable_get('user_signatures', 1) == 1) { + $return['user']['user']['form'] += array( + 'signature_settings' => array( + 'label' => 'User signature', + 'description' => t('User module signature form element. This element may not be present on all user account pages.'), + 'weight' => 1, + ), + ); + } + return $return; } -- 1.7.9.5