=== modified file 'includes/common.inc' --- includes/common.inc 2010-01-18 03:28:13 +0000 +++ includes/common.inc 2010-01-20 15:40:22 +0000 @@ -5707,9 +5707,6 @@ function drupal_common_theme() { 'form_element_label' => array( 'render element' => 'element', ), - 'text_format_wrapper' => array( - 'render element' => 'element', - ), 'vertical_tabs' => array( 'render element' => 'element', ), === modified file 'includes/form.inc' --- includes/form.inc 2010-01-08 06:36:34 +0000 +++ includes/form.inc 2010-01-20 15:40:22 +0000 @@ -1442,7 +1442,15 @@ function _form_builder_handle_input_elem } } } - form_set_value($element, $element['#value'], $form_state); + // Set the element's value in $form_state['values'], but only, if its key + // does not exist yet (a #value_callback may have already populated it). + $values = $form_state['values']; + foreach ($element['#parents'] as $key) { + $values = (isset($values[$key]) ? $values[$key] : NULL); + } + if (!isset($values)) { + form_set_value($element, $element['#value'], $form_state); + } } /** @@ -2210,110 +2218,6 @@ function form_process_radios($element) { } /** - * Add text format selector to text elements with the #text_format property. - * - * The #text_format property should be the ID of an text format, found in - * {filter_format}.format, which gets passed to filter_form(). - * - * If the property #text_format is set, the form element will be expanded into - * two separate form elements, one holding the content of the element, and the - * other holding the text format selector. The original element is shifted into - * a child element, but is otherwise unaltered, so that the format selector is - * at the same level as the text field which it affects. - * - * For example: - * @code - * // A simple textarea, such as a node body. - * $form['body'] = array( - * '#type' => 'textarea', - * '#title' => t('Body'), - * '#text_format' => isset($node->format) ? $node->format : filter_default_format(), - * ); - * @endcode - * - * Becomes: - * @code - * $form['body'] = array( - * // Type switches to 'markup', as we're only interested in submitting the child elements. - * '#type' => 'markup', - * // 'value' holds the original element. - * 'value' => array( - * '#type' => 'textarea', - * '#title' => t('Body'), - * '#parents' => array('body'), - * ), - * // 'format' holds the text format selector. - * 'format' => array( - * '#parents' => array('body_format'), - * ... - * ), - * ); - * @endcode - * - * And would result in: - * @code - * // Original, unaltered form element value. - * $form_state['values']['body'] = 'Example content'; - * // Chosen text format. - * $form_state['values']['body_format'] = 1; - * @endcode - * - * @see system_element_info(), filter_form() - */ -function form_process_text_format($element) { - if (isset($element['#text_format'])) { - // Determine the form element parents and element name to use for the input - // format widget. This simulates the 'element' and 'element_format' pair of - // parents that filter_form() expects. - $element_parents = $element['#parents']; - $element_name = array_pop($element_parents); - $element_parents[] = $element_name . '_format'; - - // We need to break references, otherwise form_builder recurses infinitely. - $element['value'] = (array)$element; - $element['value']['#weight'] = 0; - unset($element['value']['#description']); - $element['#type'] = 'markup'; - $element['#theme'] = NULL; - $element['#theme_wrappers'] = array('text_format_wrapper'); - $element['format'] = filter_form($element['#text_format'], 1, $element_parents); - - // We need to clear the #text_format from the new child otherwise we - // would get into an infinite loop. - unset($element['value']['#text_format']); - } - return $element; -} - -/** - * Theme a text format form element. - * - * @param $variables - * An associative array containing: - * - element: An associative array containing the properties of the element. - * Properties used: #children, #description - * - * @return - * A string representing the form element. - * - * @ingroup themeable - */ -function theme_text_format_wrapper($variables) { - $element = $variables['element']; - $output = '
' . "\n"; - - $output .= $element['#children'] . "\n"; - - if (!empty($element['#description'])) { - $output .= '
' . $element['#description'] . "
\n"; - } - - $output .= "
\n"; - - return $output; -} - -/** * Theme a checkbox form element. * * @param $variables === modified file 'misc/form.js' --- misc/form.js 2009-12-05 15:04:33 +0000 +++ misc/form.js 2010-01-20 15:40:22 +0000 @@ -59,23 +59,6 @@ Drupal.behaviors.formUpdated = { }; /** - * Automatically display the guidelines of the selected text format. - */ -Drupal.behaviors.filterGuidelines = { - attach: function (context) { - $('.filter-guidelines', context).once('filter-guidelines') - .find('label').hide() - .parents('.filter-wrapper').find('select.filter-list') - .bind('change', function () { - $(this).parents('.filter-wrapper') - .find('.filter-guidelines-item').hide() - .siblings('#filter-guidelines-' + this.value).show(); - }) - .change(); - } -}; - -/** * Prepopulate form fields with information from the visitor cookie. */ Drupal.behaviors.fillUserInfoFromCookie = { === modified file 'modules/block/block.admin.inc' --- modules/block/block.admin.inc 2010-01-15 10:59:21 +0000 +++ modules/block/block.admin.inc 2010-01-20 15:40:22 +0000 @@ -443,7 +443,7 @@ function block_add_block_form_submit($fo ->fields(array( 'body' => $form_state['values']['body'], 'info' => $form_state['values']['info'], - 'format' => $form_state['values']['body_format'], + 'format' => $form_state['values']['format'], )) ->execute(); === modified file 'modules/block/block.module' --- modules/block/block.module 2010-01-13 05:40:03 +0000 +++ modules/block/block.module 2010-01-20 15:40:22 +0000 @@ -420,10 +420,10 @@ function block_custom_block_form($edit = ); $form['body_field']['#weight'] = -17; $form['body_field']['body'] = array( - '#type' => 'textarea', + '#type' => 'filter_format', '#title' => t('Block body'), '#default_value' => $edit['body'], - '#text_format' => isset($edit['format']) ? $edit['format'] : filter_default_format(), + '#format' => isset($edit['format']) ? $edit['format'] : NULL, '#rows' => 15, '#description' => t('The content of the block as shown to the user.'), '#required' => TRUE, @@ -452,7 +452,7 @@ function block_custom_block_save($edit, ->fields(array( 'body' => $edit['body'], 'info' => $edit['info'], - 'format' => $edit['body_format'], + 'format' => $edit['format'], )) ->condition('bid', $delta) ->execute(); === modified file 'modules/block/block.test' --- modules/block/block.test 2010-01-09 23:03:21 +0000 +++ modules/block/block.test 2010-01-20 15:40:22 +0000 @@ -41,7 +41,7 @@ class BlockTestCase extends DrupalWebTes $custom_block = array(); $custom_block['info'] = $this->randomName(8); $custom_block['title'] = $this->randomName(8); - $custom_block['body'] = $this->randomName(32); + $custom_block['body[value]'] = $this->randomName(32); $this->drupalPost('admin/structure/block/add', $custom_block, t('Save block')); // Confirm that the custom block has been created, and then query the created bid. @@ -78,8 +78,8 @@ class BlockTestCase extends DrupalWebTes $custom_block = array(); $custom_block['info'] = $this->randomName(8); $custom_block['title'] = $this->randomName(8); - $custom_block['body'] = '

Full HTML

'; - $custom_block['body_format'] = 2; + $custom_block['body[value]'] = '

Full HTML

'; + $custom_block['body[format]'] = 2; $this->drupalPost('admin/structure/block/add', $custom_block, t('Save block')); // Set the created custom block to a specific region. @@ -119,7 +119,7 @@ class BlockTestCase extends DrupalWebTes $custom_block = array(); $custom_block['info'] = $this->randomName(8); $custom_block['title'] = $title; - $custom_block['body'] = $this->randomName(32); + $custom_block['body[value]'] = $this->randomName(32); $this->drupalPost('admin/structure/block/add', $custom_block, t('Save block')); $bid = db_query("SELECT bid FROM {block_custom} WHERE info = :info", array(':info' => $custom_block['info']))->fetchField(); === modified file 'modules/comment/comment.module' --- modules/comment/comment.module 2010-01-14 02:00:08 +0000 +++ modules/comment/comment.module 2010-01-20 15:40:22 +0000 @@ -1919,7 +1919,6 @@ function comment_preview($comment) { $node = node_load($comment->nid); if (!form_get_errors()) { - $comment->format = $comment->comment_body[LANGUAGE_NONE][0]['format']; // Attach the user and time information. if (!empty($comment->name)) { $account = user_load_by_name($comment->name); @@ -2046,8 +2045,7 @@ function comment_submit($comment) { // 1) Filter it into HTML // 2) Strip out all HTML tags // 3) Convert entities back to plain-text. - - $comment['subject'] = truncate_utf8(trim(decode_entities(strip_tags(check_markup($comment['comment_body'][LANGUAGE_NONE][0]['value'], $comment['comment_body'][LANGUAGE_NONE][0]['format'])))), 29, TRUE); + $comment['subject'] = truncate_utf8(trim(decode_entities(strip_tags(check_markup($comment['comment_body'][LANGUAGE_NONE][0]['value']['value'], $comment['comment_body'][LANGUAGE_NONE][0]['value']['format'])))), 29, TRUE); // Edge cases where the comment body is populated only by HTML tags will // require a default subject. if ($comment['subject'] == '') { === modified file 'modules/comment/comment.test' --- modules/comment/comment.test 2010-01-11 16:25:15 +0000 +++ modules/comment/comment.test 2010-01-20 15:40:22 +0000 @@ -571,7 +571,7 @@ class CommentAnonymous extends CommentHe $this->drupalGet('comment/reply/' . $this->node->nid); $this->assertText('You are not authorized to view comments', t('Error attempting to post comment.')); $this->assertNoFieldByName('subject', '', t('Subject field not found.')); - $this->assertNoFieldByName('comment', '', t('Comment field not found.')); + $this->assertNoFieldByName('comment[value]', '', t('Comment field not found.')); user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array( 'access comments' => TRUE, === modified file 'modules/field/modules/text/text.module' --- modules/field/modules/text/text.module 2009-12-21 13:47:31 +0000 +++ modules/field/modules/text/text.module 2010-01-20 16:32:40 +0000 @@ -512,6 +512,8 @@ function text_field_widget_settings_form */ function text_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $base) { $element = $base; + $summary = array(); + $textarea = array(); switch ($instance['widget']['type']) { case 'text_textfield': @@ -526,7 +528,7 @@ function text_field_widget_form(&$form, case 'text_textarea_with_summary': $display = !empty($items[$delta]['summary']) || !empty($instance['settings']['display_summary']); - $element['summary'] = array( + $summary = array( '#type' => $display ? 'textarea' : 'value', '#default_value' => isset($items[$delta]['summary']) ? $items[$delta]['summary'] : NULL, '#title' => t('Summary'), @@ -543,7 +545,7 @@ function text_field_widget_form(&$form, // Fall through to the next case. case 'text_textarea': - $element['value'] = $base + array( + $textarea = $base + array( '#type' => 'textarea', '#default_value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : NULL, '#rows' => $instance['widget']['settings']['rows'], @@ -553,11 +555,17 @@ function text_field_widget_form(&$form, break; } + // Conditionally alter the form element's type if text processing is enabled. if ($instance['settings']['text_processing']) { - $element['value']['#text_format'] = isset($items[$delta]['format']) ? $items[$delta]['format'] : filter_default_format(); - $element['#type'] = 'markup'; - $element['#input'] = TRUE; - $element['#value_callback'] = 'text_field_widget_formatted_text_value'; + $element = $textarea; + $element['#type'] = 'filter_format'; + $element['#format'] = isset($items[$delta]['format']) ? $items[$delta]['format'] : NULL; + } + elseif ($textarea) { + $element['value'] = $textarea; + } + if ($summary) { + $element['summary'] = $summary; } return $element; @@ -580,19 +588,3 @@ function text_field_widget_error($elemen form_error($error_element, $error['message']); } -/** - * Form element #value_callback to re-assign text format value for a formatted text widget. - * - * #text_format puts the format into 'value_format', while we need it in - * 'format'. - */ -function text_field_widget_formatted_text_value($element, $edit = FALSE, &$form_state) { - if ($edit !== FALSE) { - // The format selector uses #access = FALSE if only one format is - // available. In this case, we don't receive its value, and need to - // manually set it. - $edit['format'] = !empty($edit['value_format']) ? $edit['value_format'] : filter_default_format(); - unset($edit['value_format']); - return $edit; - } -} === modified file 'modules/field/modules/text/text.test' --- modules/field/modules/text/text.test 2009-12-13 09:04:55 +0000 +++ modules/field/modules/text/text.test 2010-01-20 15:40:22 +0000 @@ -102,7 +102,7 @@ class TextFieldTestCase extends DrupalWe // Display creation form. $this->drupalGet('test-entity/add/test-bundle'); $this->assertFieldByName("{$this->field_name}[$langcode][0][value]", '', t('Widget is displayed')); - $this->assertNoFieldByName("{$this->field_name}[$langcode][0][format]", '1', t('Format selector is not displayed')); + $this->assertNoFieldByName("{$this->field_name}[$langcode][0][value][format]", '1', t('Format selector is not displayed')); // Submit with some value. $value = $this->randomName(); @@ -166,7 +166,7 @@ class TextFieldTestCase extends DrupalWe // no format selector will be displayed. $this->drupalGet('test-entity/add/test-bundle'); $this->assertFieldByName("{$this->field_name}[$langcode][0][value]", '', t('Widget is displayed')); - $this->assertNoFieldByName("{$this->field_name}[$langcode][0][value_format]", '', t('Format selector is not displayed')); + $this->assertNoFieldByName("{$this->field_name}[$langcode][0][value][format]", '', t('Format selector is not displayed')); // Submit with data that should be filtered. $value = '' . $this->randomName() . ''; @@ -202,11 +202,11 @@ class TextFieldTestCase extends DrupalWe // We should now have a 'text format' selector. $this->drupalGet('test-entity/' . $id . '/edit'); $this->assertFieldByName("{$this->field_name}[$langcode][0][value]", '', t('Widget is displayed')); - $this->assertFieldByName("{$this->field_name}[$langcode][0][value_format]", '', t('Format selector is displayed')); + $this->assertFieldByName("{$this->field_name}[$langcode][0][value][format]", '', t('Format selector is displayed')); // Edit and change the text format to the new one that was created. $edit = array( - "{$this->field_name}[$langcode][0][value_format]" => $format_id, + "{$this->field_name}[$langcode][0][value][format]" => $format_id, ); $this->drupalPost(NULL, $edit, t('Save')); $this->assertRaw(t('test_entity @id has been updated.', array('@id' => $id)), t('Entity was updated')); === modified file 'modules/filter/filter.css' --- modules/filter/filter.css 2009-12-14 13:32:53 +0000 +++ modules/filter/filter.css 2010-01-20 15:40:22 +0000 @@ -11,7 +11,6 @@ } .filter-wrapper .form-item { float: left; - margin: 0; padding: 0 0 0.5em 1.5em; } .filter-wrapper .form-item label { === added file 'modules/filter/filter.js' --- modules/filter/filter.js 1970-01-01 00:00:00 +0000 +++ modules/filter/filter.js 2010-01-20 15:07:34 +0000 @@ -0,0 +1,21 @@ +// $Id: form.js,v 1.12 2009/10/16 16:37:00 dries Exp $ +(function ($) { + +/** + * Automatically display the guidelines of the selected text format. + */ +Drupal.behaviors.filterGuidelines = { + attach: function (context) { + $('.filter-guidelines', context).once('filter-guidelines') + .find('label').hide() + .parents('.filter-wrapper').find('select.filter-list') + .bind('change', function () { + $(this).parents('.filter-wrapper') + .find('.filter-guidelines-item').hide() + .siblings('#filter-guidelines-' + this.value).show(); + }) + .change(); + } +}; + +})(jQuery); === modified file 'modules/filter/filter.module' --- modules/filter/filter.module 2009-12-28 21:52:13 +0000 +++ modules/filter/filter.module 2010-01-20 17:23:57 +0000 @@ -54,6 +54,9 @@ function filter_theme() { 'variables' => array('tips' => NULL, 'long' => FALSE), 'file' => 'filter.pages.inc', ), + 'filter_format_wrapper' => array( + 'render element' => 'element', + ), 'filter_tips_more_info' => array( 'variables' => array(), ), @@ -64,6 +67,20 @@ function filter_theme() { } /** + * Implements hook_element_info(). + * + * @see filter_process_format() + */ +function filter_element_info() { + $type['filter_format'] = array( + '#process' => array('filter_process_format'), + '#base_type' => 'textarea', + '#theme_wrappers' => array('filter_format_wrapper'), + ); + return $type; +} + +/** * Implements hook_menu(). */ function filter_menu() { @@ -653,71 +670,180 @@ function check_markup($text, $format_id } /** - * Generates a selector for choosing a format in a form. + * Expands an element into a base element with text format selector attached. * - * @param $selected_format - * The ID of the format that is currently selected; uses the default format - * for the current user if not provided. - * @param $weight - * The weight of the form element within the form. - * @param $parents - * The parents array of the element. Required when defining multiple text - * formats on a single form or having a different parent than 'format'. + * The form element will be expanded into two separate form elements, one + * holding the original element, and the other holding the text format selector: + * - value: Holds the original element, having its #type changed to the value of + * #base_type or 'textarea' by default. + * - format: Holds the text format fieldset and the text format selection, using + * the text format id specified in #format or the user's default format by + * default, if NULL. + * + * Since most modules expect the value of the new 'format' element *next* to the + * original element, filter_process_format() applies a #value_callback to both + * the 'value' and the 'format' element by default to let the submitted form + * values appear as if they were located on the same level. + * For example, considering the input values: + * @code + * $form_state['input']['body']['value'] = 'foo'; + * $form_state['input']['body']['format'] = 'foo'; + * @endcode + * The value callbacks will process them into: + * @code + * $form_state['values']['body'] = 'foo'; + * $form_state['values']['format'] = 'foo'; + * @endcode + * + * If multiple text format-enabled elements are required on the same level of + * the form structure, modules can set custom #parents on the original element. + * Alternatively, the #value_callback properties may be unset through a + * subsequent #process callback. If no custom processing occurs, then the + * submitted form values will appear like in the $form_state['input'] array + * above. + * + * @see filter_form_value_callback_format() + * + * @param $element + * The form element to process. Properties used: + * - #base_type: The form element #type to use for the 'value' element. + * 'textarea' by default. + * - #format: (optional) The text format id to preselect. If 0, NULL, or not + * set, the default format for the current user will be used. * * @return - * Form API array for the form element. - * - * @ingroup forms + * The expanded element. */ -function filter_form($selected_format = NULL, $weight = NULL, $parents = array('format')) { +function filter_process_format($element) { global $user; - // Use the default format for this user if none was selected. - if (empty($selected_format)) { - $selected_format = filter_default_format($user); + // Ensure that children appear as subkeys of this element. + $element['#tree'] = TRUE; + $blacklist = array( + // Make form_builder() regenerate child properties. + '#parents', + '#id', + '#name', + // Do not copy this #process function to prevent form_builder() from + // recursing infinitely. + '#process', + // Description is handled by theme_filter_format_wrapper(). + '#description', + // Ensure proper ordering of children. + '#weight', + // Unset properties already processed for the parent element. + '#prefix', + '#suffix', + '#attached', + '#processed', + '#theme_wrappers', + ); + // Move this element into sub-element 'value'. + unset($element['value']); + foreach ($element as $key => $value) { + if ($key[0] === '#' && !in_array($key, $blacklist)) { + $element['value'][$key] = $value; + } } - // Get a list of formats that the current user has access to. - $formats = filter_formats($user); - - drupal_add_js('misc/form.js'); - drupal_add_css(drupal_get_path('module', 'filter') . '/filter.css'); - $element_id = drupal_html_id('edit-' . implode('-', $parents)); + $element['value']['#type'] = $element['#base_type']; + $element['value'] += element_info($element['#base_type']); + //$element['value']['#value_callback'] = 'filter_form_value_callback_value'; + + // Turn original element into a text format wrapper. + $path = drupal_get_path('module', 'filter'); + $element['#attached']['js'][] = $path . '/filter.js'; + $element['#attached']['css'][] = $path . '/filter.css'; - $form = array( + // Setup child container for the text format widget. + $element['format'] = array( '#type' => 'fieldset', - '#weight' => $weight, '#attributes' => array('class' => array('filter-wrapper')), ); - $form['format_guidelines'] = array( - '#prefix' => '
', - '#suffix' => '
', - '#weight' => 2, + + // Prepare text format guidelines. + $element['format']['guidelines'] = array( + '#type' => 'container', + '#attributes' => array('class' => array('filter-guidelines')), + '#weight' => 20, ); + // Get a list of formats that the current user has access to. + $formats = filter_formats($user); foreach ($formats as $format) { $options[$format->format] = $format->name; - $form['format_guidelines'][$format->format] = array( - '#markup' => theme('filter_guidelines', array('format' => $format)), + $element['format']['guidelines'][$format->format] = array( + '#theme' => 'filter_guidelines', + '#format' => $format, ); } - $form['format'] = array( + + // Use the default format for this user if none was selected. + if (empty($element['#format'])) { + $element['#format'] = filter_default_format($user); + } + $element['format']['format'] = array( '#type' => 'select', '#title' => t('Text format'), '#options' => $options, - '#default_value' => $selected_format, - '#parents' => $parents, + '#default_value' => $element['#format'], '#access' => count($formats) > 1, - '#id' => $element_id, + '#weight' => 10, '#attributes' => array('class' => array('filter-list')), + '#parents' => array_merge($element['#parents'], array('format')), + '#value_callback' => 'filter_form_value_callback_format', ); - $form['format_help'] = array( - '#prefix' => '
', - '#markup' => theme('filter_tips_more_info'), - '#suffix' => '
', - '#weight' => 1, + + $element['format']['help'] = array( + '#type' => 'container', + '#theme' => 'filter_tips_more_info', + '#attributes' => array('class' => array('filter-help')), + '#weight' => 0, ); + return $element; +} + +/** + * Form element #value_callback for 'format' element in expanded #type 'filter_format'. + */ +function filter_form_value_callback_format($element, $input, &$form_state) { + $parents = $element['#parents']; + array_pop($parents); + $parents[] = 'format'; + if ($input !== FALSE) { + form_set_value(array('#parents' => $parents), $input, $form_state); + return $input; + } + // Return #default_value of original element if #access is FALSE. + else { + $value = (isset($element['#default_value']) ? $element['#default_value'] : ''); + form_set_value(array('#parents' => $parents), $value, $form_state); + return $value; + } +} + +/** + * Render a text format-enabled form element. + * + * @param $variables + * An associative array containing: + * - element: An associative array containing the properties of the element. + * Properties used: #children, #description + * + * @return + * A string representing the form element. + * + * @ingroup themeable + */ +function theme_filter_format_wrapper($variables) { + $element = $variables['element']; + $output = '
'; + $output .= $element['#children']; + if (!empty($element['#description'])) { + $output .= '
' . $element['#description'] . '
'; + } + $output .= "
\n"; - return $form; + return $output; } /** === modified file 'modules/filter/filter.test' --- modules/filter/filter.test 2010-01-10 22:56:51 +0000 +++ modules/filter/filter.test 2010-01-20 15:40:25 +0000 @@ -292,7 +292,7 @@ class FilterAdminTestCase extends Drupal $langcode = LANGUAGE_NONE; $edit["title"] = $this->randomName(); $edit["body[$langcode][0][value]"] = $text; - $edit["body[$langcode][0][value_format]"] = $filtered; + $edit["body[$langcode][0][value][format]"] = $filtered; $this->drupalPost('node/add/page', $edit, t('Save')); $this->assertRaw(t('Basic page %title has been created.', array('%title' => $edit["title"])), t('Filtered node created.')); @@ -304,7 +304,7 @@ class FilterAdminTestCase extends Drupal // Use plain text and see if it escapes all tags, whether allowed or not. $edit = array(); - $edit["body[$langcode][0][value_format]"] = $plain; + $edit["body[$langcode][0][value][format]"] = $plain; $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save')); $this->drupalGet('node/' . $node->nid); $this->assertText(check_plain($text), t('The "Plain text" text format escapes all HTML tags.')); @@ -1178,9 +1178,9 @@ class FilterHooksTestCase extends Drupal $custom_block = array(); $custom_block['info'] = $this->randomName(8); $custom_block['title'] = $this->randomName(8); - $custom_block['body'] = $this->randomName(32); + $custom_block['body[value]'] = $this->randomName(32); // Use the format created. - $custom_block['body_format'] = $format_id; + $custom_block['body[format]'] = $format_id; $this->drupalPost('admin/structure/block/add', $custom_block, t('Save block')); $this->assertText(t('The block has been created.'), t('New block successfully created.')); === modified file 'modules/forum/forum.test' --- modules/forum/forum.test 2010-01-09 23:09:51 +0000 +++ modules/forum/forum.test 2010-01-20 15:40:25 +0000 @@ -149,7 +149,7 @@ class ForumTestCase extends DrupalWebTes $edit = array( 'name' => $title, - 'description' => $description, + 'description[value]' => $description, 'machine_name' => drupal_strtolower(drupal_substr($this->randomName(), 3, 9)), ); @@ -191,7 +191,7 @@ class ForumTestCase extends DrupalWebTes $edit = array( 'name' => $name, - 'description' => $description, + 'description[value]' => $description, 'parent[0]' => $parent, 'weight' => '0', ); === modified file 'modules/php/php.test' --- modules/php/php.test 2010-01-10 22:56:51 +0000 +++ modules/php/php.test 2010-01-20 15:40:25 +0000 @@ -77,7 +77,7 @@ class PHPFilterTestCase extends PHPTestC // Change filter to PHP filter and see that PHP code is evaluated. $edit = array(); $langcode = LANGUAGE_NONE; - $edit["body[$langcode][0][value_format]"] = $this->php_code_format; + $edit["body[$langcode][0][format]"] = $this->php_code_format; $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save')); $this->assertRaw(t('Basic page %title has been updated.', array('%title' => $node->title)), t('PHP code filter turned on.')); === modified file 'modules/search/search.test' --- modules/search/search.test 2010-01-10 22:56:51 +0000 +++ modules/search/search.test 2010-01-20 15:40:25 +0000 @@ -525,7 +525,7 @@ class SearchCommentTestCase extends Drup $edit_comment = array(); $edit_comment['subject'] = $this->randomName(2); $edit_comment['comment_body[' . LANGUAGE_NONE . '][0][value]'] = '

' . $comment_body . '

'; - $edit_comment['comment_body[' . LANGUAGE_NONE . '][0][value_format]'] = 2; + $edit_comment['comment_body[' . LANGUAGE_NONE . '][0][value][format]'] = 2; $this->drupalPost('comment/reply/' . $node->nid, $edit_comment, t('Save')); // Invoke search index update. === modified file 'modules/system/system.module' --- modules/system/system.module 2010-01-18 17:08:20 +0000 +++ modules/system/system.module 2010-01-20 15:40:25 +0000 @@ -353,7 +353,7 @@ function system_element_info() { '#size' => 60, '#maxlength' => 128, '#autocomplete_path' => FALSE, - '#process' => array('form_process_text_format', 'ajax_process_form'), + '#process' => array('ajax_process_form'), '#theme' => 'textfield', '#theme_wrappers' => array('form_element'), ); @@ -375,7 +375,7 @@ function system_element_info() { '#cols' => 60, '#rows' => 5, '#resizable' => TRUE, - '#process' => array('form_process_text_format', 'ajax_process_form'), + '#process' => array('ajax_process_form'), '#theme' => 'textarea', '#theme_wrappers' => array('form_element'), ); === modified file 'modules/taxonomy/taxonomy.admin.inc' --- modules/taxonomy/taxonomy.admin.inc 2010-01-18 03:33:43 +0000 +++ modules/taxonomy/taxonomy.admin.inc 2010-01-20 15:40:25 +0000 @@ -643,12 +643,13 @@ function taxonomy_form_term($form, &$for '#title' => t('Name'), '#default_value' => $edit['name'], '#maxlength' => 255, - '#required' => TRUE); + '#required' => TRUE, + ); $form['description'] = array( - '#type' => 'textarea', + '#type' => 'filter_format', '#title' => t('Description'), '#default_value' => $edit['description'], - '#text_format' => $edit['format'], + '#format' => $edit['format'], ); $form['vocabulary_machine_name'] = array( @@ -777,10 +778,6 @@ function taxonomy_form_term_submit($form return; } - // Massage #text_format. - $form_state['values']['format'] = $form_state['values']['description_format']; - unset($form_state['values']['description_format']); - $term = taxonomy_form_term_submit_builder($form, $form_state); $status = taxonomy_term_save($term); === modified file 'modules/taxonomy/taxonomy.test' --- modules/taxonomy/taxonomy.test 2010-01-10 22:56:51 +0000 +++ modules/taxonomy/taxonomy.test 2010-01-20 15:40:25 +0000 @@ -432,7 +432,7 @@ class TaxonomyTermTestCase extends Taxon function testTermInterface() { $edit = array( 'name' => $this->randomName(12), - 'description' => $this->randomName(100), + 'description[value]' => $this->randomName(100), ); // Explicitly set the parents field to 'root', to ensure that // taxonomy_form_term_submit() handles the invalid term ID correctly. @@ -454,11 +454,11 @@ class TaxonomyTermTestCase extends Taxon $this->clickLink(t('edit')); $this->assertText($edit['name'], t('The randomly generated term name is present.')); - $this->assertText($edit['description'], t('The randomly generated term description is present.')); + $this->assertText($edit['description[value]'], t('The randomly generated term description is present.')); $edit = array( 'name' => $this->randomName(14), - 'description' => $this->randomName(102), + 'description[value]' => $this->randomName(102), ); // Edit the term. @@ -467,7 +467,7 @@ class TaxonomyTermTestCase extends Taxon // View the term and check that it is correct. $this->drupalGet('taxonomy/term/' . $term->tid); $this->assertText($edit['name'], t('The randomly generated term name is present.')); - $this->assertText($edit['description'], t('The randomly generated term description is present.')); + $this->assertText($edit['description[value]'], t('The randomly generated term description is present.')); // Check that term feed page is working $this->drupalGet('taxonomy/term/' . $term->tid . '/feed');