diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-10-03 19:16:04 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-10-03 19:16:04 +0000 |
commit | b5447770959e9d447e53e21e63faa98fcc1db329 (patch) | |
tree | 3f38cba8adefd9108019b010cde327e68bec0ebb /includes/form.inc | |
parent | b5199f2297c7cac6d03980bea6be9a02bbdf1738 (diff) | |
download | brdo-b5447770959e9d447e53e21e63faa98fcc1db329.tar.gz brdo-b5447770959e9d447e53e21e63faa98fcc1db329.tar.bz2 |
- Patch #464862 by JohnAlbin, sun, dereine | dvessel, Jacine, Zarabadoo: added drupal_css_class() to clean class names and rename form_clean_id().
Diffstat (limited to 'includes/form.inc')
-rw-r--r-- | includes/form.inc | 52 |
1 files changed, 8 insertions, 44 deletions
diff --git a/includes/form.inc b/includes/form.inc index 3ee8af7b7..82d84b4f8 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -547,12 +547,12 @@ function drupal_process_form($form_id, &$form, &$form_state) { if ($form_state['process_input']) { drupal_validate_form($form_id, $form, $form_state); - // form_clean_id() maintains a cache of element IDs it has seen, + // drupal_css_id() maintains a cache of element IDs it has seen, // so it can prevent duplicates. We want to be sure we reset that // cache when a form is processed, so scenarios that result in // the form being built behind the scenes and again for the // browser don't increment all the element IDs needlessly. - drupal_static_reset('form_clean_id'); + drupal_static_reset('drupal_css_id'); if ($form_state['submitted'] && !form_get_errors() && !$form_state['rebuild']) { // Execute form submit handlers. @@ -636,7 +636,7 @@ function drupal_prepare_form($form_id, &$form, &$form_state) { elseif (isset($user->uid) && $user->uid && !$form_state['programmed']) { $form['#token'] = $form_id; $form['form_token'] = array( - '#id' => form_clean_id('edit-' . $form_id . '-form-token'), + '#id' => drupal_css_id('edit-' . $form_id . '-form-token'), '#type' => 'token', '#default_value' => drupal_get_token($form['#token']), ); @@ -646,11 +646,11 @@ function drupal_prepare_form($form_id, &$form, &$form_state) { $form['form_id'] = array( '#type' => 'hidden', '#value' => $form_id, - '#id' => form_clean_id("edit-$form_id"), + '#id' => drupal_css_id("edit-$form_id"), ); } if (!isset($form['#id'])) { - $form['#id'] = form_clean_id($form_id); + $form['#id'] = drupal_css_id($form_id); } $form += element_info('form'); @@ -1046,7 +1046,7 @@ function form_builder($form_id, $element, &$form_state) { } if (!isset($element['#id'])) { - $element['#id'] = form_clean_id('edit-' . implode('-', $element['#parents'])); + $element['#id'] = drupal_css_id('edit-' . implode('-', $element['#parents'])); } // Handle input elements. if (!empty($element['#input'])) { @@ -1919,7 +1919,7 @@ function form_process_radios($element) { '#default_value' => isset($element['#default_value']) ? $element['#default_value'] : NULL, '#attributes' => $element['#attributes'], '#parents' => $element['#parents'], - '#id' => form_clean_id('edit-' . implode('-', $parents_for_id)), + '#id' => drupal_css_id('edit-' . implode('-', $parents_for_id)), '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, ); } @@ -2235,7 +2235,7 @@ function form_process_tableselect($element) { '#default_value' => ($element['#default_value'] == $key) ? $key : NULL, '#attributes' => $element['#attributes'], '#parents' => $element['#parents'], - '#id' => form_clean_id('edit-' . implode('-', $parents_for_id)), + '#id' => drupal_css_id('edit-' . implode('-', $parents_for_id)), '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, ); } @@ -2684,42 +2684,6 @@ function _form_set_class(&$element, $class = array()) { } /** - * Prepare an HTML ID attribute string for a form item. - * - * Remove invalid characters and guarantee uniqueness. - * - * @param $id - * The ID to clean. - * @param $flush - * If set to TRUE, the function will flush and reset the static array - * which is built to test the uniqueness of element IDs. This is only - * used if a form has completed the validation process. This parameter - * should never be set to TRUE if this function is being called to - * assign an ID to the #ID element. - * @return - * The cleaned ID. - */ -function form_clean_id($id = NULL) { - $seen_ids = &drupal_static(__FUNCTION__, array()); - $id = str_replace(array('][', '_', ' '), '-', $id); - - // Ensure IDs are unique. The first occurrence is held but left alone. - // Subsequent occurrences get a number appended to them. This incrementing - // will almost certainly break code that relies on explicit HTML IDs in - // forms that appear more than once on the page, but the alternative is - // outputting duplicate IDs, which would break JS code and XHTML - // validity anyways. For now, it's an acceptable stopgap solution. - if (isset($seen_ids[$id])) { - $id = $id . '-' . $seen_ids[$id]++; - } - else { - $seen_ids[$id] = 1; - } - - return $id; -} - -/** * @} End of "defgroup form_api". */ |