From f804b42cceb419e33122935da9079e59e36840a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Claes=20Gyllensv=C3=A4rd?= <letharion@gmail.com>
Date: Wed, 29 Aug 2012 20:40:19 +0200
Subject: [PATCH] Issue #967566 by DocuAnt, mariusz.slonina, tsvensson, xjm,
 tim.plunkett, joestewart, oriol_e9g, letharion. Implement
 hook_field_extra_fields() to provide user settings for
 several user settings

---
 core/modules/contact/contact.module |   13 +++++++++++++
 core/modules/locale/locale.module   |   13 +++++++++++++
 core/modules/overlay/overlay.module |   13 +++++++++++++
 core/modules/user/user.module       |   20 ++++++++++++++++++++
 4 files changed, 59 insertions(+)

diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module
index 245c125..12bc15f 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.'),
+    'weight' => 5,
+  );
+
+  return $extra;
+}
\ No newline at end of file
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index f7c22c1..38fc6d9 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -879,3 +879,16 @@ function _locale_rebuild_js($langcode = NULL) {
       return TRUE;
   }
 }
+
+/**
+ * Implements hook_field_extra_fields().
+ */
+function locale_field_extra_fields() {
+  $extra['user']['user']['form']['locale'] = array(
+    'label' => t('Language settings'),
+    'description' => t('Locale module form element.'),
+    'weight' => 1,
+  );
+
+  return $extra;
+}
diff --git a/core/modules/overlay/overlay.module b/core/modules/overlay/overlay.module
index acfcc2c..9e3bda2 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.'),
+    '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 1f72aa6..47c4e4d 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -243,6 +243,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.'),
+        '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.'),
+        'weight' => 1,
+      ),
+    );
+  }
+
   return $return;
 }
 
-- 
1.7.9.5

