From a6ae1c6cfa0af4fa9a39334625947f7c8c904e1e Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Fri, 13 Nov 2009 10:21:50 +0000 Subject: [PATCH] - Patch #530652 by sun: _user_password_dynamic_validation() should be a #process of password_confirm(). --- install.php | 2 -- modules/field/field.info.inc | 12 +++---- modules/system/system.module | 2 +- modules/user/user.module | 65 ++++++++++++++++++------------------ 4 files changed, 40 insertions(+), 41 deletions(-) diff --git a/install.php b/install.php index 9527d8dcf899..d43485cf4881 100644 --- a/install.php +++ b/install.php @@ -1377,8 +1377,6 @@ function install_configure_form($form, &$form_state, &$install_state) { drupal_set_message(st('All necessary changes to %dir and %file have been made. They have been set to read-only for security.', array('%dir' => $settings_dir, '%file' => $settings_file))); } - // Add JavaScript validation. - _user_password_dynamic_validation(); drupal_add_js(drupal_get_path('module', 'system') . '/system.js'); // Add JavaScript time zone detection. drupal_add_js('misc/timezone.js'); diff --git a/modules/field/field.info.inc b/modules/field/field.info.inc index ef6276415e5b..ea397995581d 100644 --- a/modules/field/field.info.inc +++ b/modules/field/field.info.inc @@ -64,12 +64,12 @@ function _field_info_collate_types($reset = FALSE) { if ($reset) { $info = NULL; - cache_clear_all('field_info_types', 'cache_field'); + cache_clear_all('field_info_types', 'cache_bootstrap'); return; } if (!isset($info)) { - if ($cached = cache_get('field_info_types', 'cache_field')) { + if ($cached = cache_get('field_info_types', 'cache_bootstrap')) { $info = $cached->data; } else { @@ -137,7 +137,7 @@ function _field_info_collate_types($reset = FALSE) { } drupal_alter('field_storage_info', $info['storage types']); - cache_set('field_info_types', $info, 'cache_field'); + cache_set('field_info_types', $info, 'cache_bootstrap'); } } @@ -168,12 +168,12 @@ function _field_info_collate_fields($reset = FALSE) { if ($reset) { $info = NULL; - cache_clear_all('field_info_fields', 'cache_field'); + cache_clear_all('field_info_fields', 'cache_field_bootstrap'); return; } if (!isset($info)) { - if ($cached = cache_get('field_info_fields', 'cache_field')) { + if ($cached = cache_get('field_info_fields', 'cache_bootstrap')) { $definitions = $cached->data; } else { @@ -181,7 +181,7 @@ function _field_info_collate_fields($reset = FALSE) { 'field_ids' => field_read_fields(array(), array('include_deleted' => 1)), 'instances' => field_read_instances(), ); - cache_set('field_info_fields', $definitions, 'cache_field'); + cache_set('field_info_fields', $definitions, 'cache_bootstrap'); } // Populate 'field_ids' with all fields. diff --git a/modules/system/system.module b/modules/system/system.module index e510cb4316c3..228ffd050406 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -368,7 +368,7 @@ function system_element_info() { ); $types['password_confirm'] = array( '#input' => TRUE, - '#process' => array('form_process_password_confirm'), + '#process' => array('form_process_password_confirm', 'user_form_process_password_confirm'), '#theme_wrappers' => array('form_element'), ); $types['textarea'] = array( diff --git a/modules/user/user.module b/modules/user/user.module index 6ca08c5243ee..a136dbde90f9 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -866,7 +866,6 @@ function user_account_form(&$form, &$form_state) { $account = $form['#user']; $register = ($form['#user']->uid > 0 ? FALSE : TRUE); - _user_password_dynamic_validation(); $admin = user_access('administer users'); $form['#validate'][] = 'user_account_form_validate'; @@ -2951,40 +2950,42 @@ function _user_mail_notify($op, $account, $language = NULL) { } /** - * Add javascript and string translations for dynamic password validation - * (strength and confirmation checking). + * Form element process handler for client-side password validation. * - * This is an internal function that makes it easier to manage the translation - * strings that need to be passed to the javascript code. + * This #process handler is automatically invoked for 'password_confirm' form + * elements to add the JavaScript and string translations for dynamic password + * validation. + * + * @see system_element_info() */ -function _user_password_dynamic_validation() { - static $complete = FALSE; +function user_form_process_password_confirm($element) { global $user; - // Only need to do once per page. - if (!$complete) { - drupal_add_js(drupal_get_path('module', 'user') . '/user.js'); - - drupal_add_js(array( - 'password' => array( - 'strengthTitle' => t('Password strength:'), - 'hasWeaknesses' => t('To make your password stronger:'), - 'tooShort' => t('Make it at least 6 characters'), - 'addLowerCase' => t('Add lowercase letters'), - 'addUpperCase' => t('Add uppercase letters'), - 'addNumbers' => t('Add numbers'), - 'addPunctuation' => t('Add punctuation'), - 'sameAsUsername' => t('Make it different from your username'), - 'confirmSuccess' => t('yes'), - 'confirmFailure' => t('no'), - 'weak' => t('Weak'), - 'fair' => t('Fair'), - 'good' => t('Good'), - 'strong' => t('Strong'), - 'confirmTitle' => t('Passwords match:'), - 'username' => (isset($user->name) ? $user->name : ''))), - 'setting'); - $complete = TRUE; - } + + $js_settings = array( + 'password' => array( + 'strengthTitle' => t('Password strength:'), + 'hasWeaknesses' => t('To make your password stronger:'), + 'tooShort' => t('Make it at least 6 characters'), + 'addLowerCase' => t('Add lowercase letters'), + 'addUpperCase' => t('Add uppercase letters'), + 'addNumbers' => t('Add numbers'), + 'addPunctuation' => t('Add punctuation'), + 'sameAsUsername' => t('Make it different from your username'), + 'confirmSuccess' => t('yes'), + 'confirmFailure' => t('no'), + 'weak' => t('Weak'), + 'fair' => t('Fair'), + 'good' => t('Good'), + 'strong' => t('Strong'), + 'confirmTitle' => t('Passwords match:'), + 'username' => (isset($user->name) ? $user->name : ''), + ), + ); + + $element['#attached']['js'][] = drupal_get_path('module', 'user') . '/user.js'; + $element['#attached']['js'][] = array('data' => $js_settings, 'type' => 'setting'); + + return $element; } /** -- GitLab