Index: modules/comment/comment.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.admin.inc,v retrieving revision 1.31 diff -u -p -r1.31 comment.admin.inc --- modules/comment/comment.admin.inc 25 Aug 2009 10:27:14 -0000 1.31 +++ modules/comment/comment.admin.inc 5 Sep 2009 12:41:23 -0000 @@ -59,7 +59,6 @@ function comment_admin_overview($type = // Load the comments that need to be displayed. $status = ($arg == 'approval') ? COMMENT_NOT_PUBLISHED : COMMENT_PUBLISHED; $header = array( - 'subject' => array('data' => t('Subject'), 'field' => 'subject'), 'author' => array('data' => t('Author'), 'field' => 'name'), 'posted_in' => array('data' => t('Posted in'), 'field' => 'node_title'), 'time' => array('data' => t('Time'), 'field' => 'timestamp', 'sort' => 'desc'), @@ -72,7 +71,7 @@ function comment_admin_overview($type = $query->addField('u', 'name', 'registered_name'); $query->addField('n', 'title', 'node_title'); $result = $query - ->fields('c', array('subject', 'nid', 'cid', 'comment', 'timestamp', 'status', 'name', 'homepage')) + ->fields('c', array('nid', 'cid', 'timestamp', 'status', 'name', 'homepage')) ->fields('u', array('uid')) ->condition('c.status', $status) ->limit(50) @@ -86,9 +85,8 @@ function comment_admin_overview($type = foreach ($result as $comment) { $options[$comment->cid] = array( - 'subject' => l($comment->subject, 'comment/' . $comment->cid, array('attributes' => array('title' => truncate_utf8($comment->comment, 128)), 'fragment' => 'comment-' . $comment->cid)), 'author' => theme('username', $comment), - 'posted_in' => l($comment->node_title, 'node/' . $comment->nid), + 'posted_in' => l($comment->node_title, 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)), 'time' => format_date($comment->timestamp, 'short'), 'operations' => l(t('edit'), 'comment/edit/' . $comment->cid, array('query' => $destination)), ); @@ -140,7 +138,7 @@ function comment_admin_overview_submit($ // Allow modules to respond to the updating of a comment. module_invoke_all('comment_' . $form_state['values']['operation'], $comment); // Add an entry to the watchdog log. - watchdog('content', 'Comment: updated %subject.', array('%subject' => $comment->subject), WATCHDOG_NOTICE, l(t('view'), 'node/' . $comment->nid, array('fragment' => 'comment-' . $comment->cid))); + watchdog('content', 'Comment: updated %cid.', array('%cid' => $comment->cid), WATCHDOG_NOTICE, l(t('view'), 'node/' . $comment->nid, array('fragment' => 'comment-' . $comment->cid))); } } cache_clear_all(); @@ -172,8 +170,7 @@ function comment_multiple_delete_confirm foreach (array_filter($edit['comments']) as $cid => $value) { $comment = comment_load($cid); if (is_object($comment) && is_numeric($comment->cid)) { - $subject = db_query('SELECT subject FROM {comment} WHERE cid = :cid', array(':cid' => $cid))->fetchField(); - $form['comments'][$cid] = array('#type' => 'hidden', '#value' => $cid, '#prefix' => '
  • ', '#suffix' => check_plain($subject) . '
  • '); + $form['comments'][$cid] = array('#type' => 'hidden', '#value' => $cid); $comment_counter++; } } @@ -237,7 +234,7 @@ function comment_confirm_delete(&$form_s $form['#comment'] = $comment; return confirm_form( $form, - t('Are you sure you want to delete the comment %title?', array('%title' => $comment->subject)), + t('Are you sure you want to delete the comment by %name', array('%name' => $comment->name)), 'node/' . $comment->nid, t('Any replies to this comment will be lost. This action cannot be undone.'), t('Delete'), Index: modules/comment/comment.install =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.install,v retrieving revision 1.44 diff -u -p -r1.44 comment.install --- modules/comment/comment.install 9 Aug 2009 02:46:27 -0000 1.44 +++ modules/comment/comment.install 5 Sep 2009 12:41:23 -0000 @@ -21,6 +21,15 @@ function comment_uninstall() { // Remove tables. drupal_uninstall_schema('comment'); + // @TODO do we need to check if any non-comment bundle has these fields + // assigned before deleting? If so, what happens then? + + // Delete comment_body field. + field_delete_field('comment_body'); + + // Delete comment_subject field. + field_delete_field('comment_subject'); + // Remove variables. variable_del('comment_block_count'); $node_types = array_keys(node_type_get_types()); @@ -54,6 +63,24 @@ function comment_enable() { db_insert('node_comment_statistics') ->from($query) ->execute(); + + // Create comment body field. + // @todo this should be doen in comment_install, but causes exceptions + // in simpletest due to dependencies between entity_get_info() and + // taxonomy_install(). + $field = array( + 'field_name' => 'comment_body', + 'type' => 'text_long', + ); + field_create_field($field); + + // Create comment subject field. + $field = array( + 'field_name' => 'comment_subject', + 'type' => 'text', + ); + field_create_field($field); + } /** @@ -160,7 +187,93 @@ function comment_update_7006() { } /** - * @} End of "defgroup updates-6.x-to-7.x" + * Create the comment_body and comment_subject fields. + */ +function comment_update_7007() { + $ret = array(); + // Create comment body field. + $field = array( + 'field_name' => 'comment_body', + 'type' => 'text_long', + ); + field_create_field($field); + + // Create comment_subject field. + $field = array( + 'field_name' => 'comment_subject', + 'type' => 'text', + ); + field_create_field($field); + + // Add the fields to comments for all existing bundles. + $body_instance = array( + 'field_name' => 'comment_body', + 'label' => 'Body', + 'settings' => array('text_processing' => 1), + ); + $subject_instance = array( + 'field_name' => 'comment_subject', + 'label' => 'Subject', + ); + foreach (node_type_get_types() as $info) { + $body_instance['bundle'] = 'comment_node_' . $info->type; + field_create_instance($body_instance); + + // Only create the subject field if it is enabled for this content type. + if (variable_get('comment_subject_field_' . $info->type, TRUE)) { + $subject_instance['bundle'] = 'comment_node_' . $info->type; + field_create_instance($subject_instance); + variable_del('comment_subject_field_' . $info->type); + } + } + + // Migrate data from the comment and subject fields. + $etid = db_query('SELECT etid FROM {field_config_entity_type} WHERE type = :comment', array(':comment' => 'comment'))->fetchField(); + + // Migrate {comment}.comment to field storage. + $query = db_select('comment', 'c'); + $query->innerJoin('node', 'n', 'c.nid = n.nid'); + $query->addField('c', 'cid', 'entity_id'); + $query->addField('n', 'type', 'bundle'); + $query->addExpression($etid, 'etid'); + $query->addExpression('0', 'deleted'); + $query->addExpression("'" . FIELD_LANGUAGE_NONE . "'", 'language'); + $query->addExpression('0', 'delta'); + $query->addField('c', 'comment', 'comment_body_value'); + $query->addField('c', 'format', 'comment_body_format'); + + $comment_body = field_info_field('comment_body'); + $comment_body_table = _field_sql_storage_tablename($comment_body); + + db_insert($comment_body_table) + ->from($query) + ->execute(); + + // Migrate {comment}.subject to field storage. + $query = db_select('comment', 'c'); + $query->innerJoin('node', 'n', 'c.nid = n.nid'); + $query->addField('c', 'cid', 'entity_id'); + $query->addField('n', 'type', 'bundle'); + $query->addExpression($etid, 'etid'); + $query->addExpression('0', 'deleted'); + $query->addExpression("'" . FIELD_LANGUAGE_NONE . "'", 'language'); + $query->addExpression('0', 'delta'); + $query->addField('c', 'subject', 'comment_subject_value'); + + $comment_subject = field_info_field('comment_subject'); + $comment_subject_table = _field_sql_storage_tablename($comment_subject); + + db_insert($comment_subject_table) + ->from($query) + ->execute(); + + db_drop_field($ret, 'comment', 'comment'); + db_drop_field($ret, 'comment', 'subject'); + + return $ret; +} + +/** @} End of "defgroup updates-6.x-to-7.x" * The next series of updates should start at 8000. */ @@ -194,19 +307,6 @@ function comment_schema() { 'default' => 0, 'description' => 'The {users}.uid who authored the comment. If set to 0, this comment was created by an anonymous user.', ), - 'subject' => array( - 'type' => 'varchar', - 'length' => 64, - 'not null' => TRUE, - 'default' => '', - 'description' => 'The comment title.', - ), - 'comment' => array( - 'type' => 'text', - 'not null' => TRUE, - 'size' => 'big', - 'description' => 'The comment body.', - ), 'hostname' => array( 'type' => 'varchar', 'length' => 128, @@ -228,13 +328,6 @@ function comment_schema() { 'size' => 'tiny', 'description' => 'The published status of a comment. (0 = Not Published, 1 = Published)', ), - 'format' => array( - 'type' => 'int', - 'size' => 'small', - 'not null' => TRUE, - 'default' => 0, - 'description' => 'The {filter_format}.format of the comment body.', - ), 'thread' => array( 'type' => 'varchar', 'length' => 255, @@ -321,4 +414,4 @@ function comment_schema() { ); return $schema; -} \ No newline at end of file +} Index: modules/comment/comment.module =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v retrieving revision 1.766 diff -u -p -r1.766 comment.module --- modules/comment/comment.module 5 Sep 2009 06:07:58 -0000 1.766 +++ modules/comment/comment.module 5 Sep 2009 12:41:24 -0000 @@ -223,6 +223,23 @@ function comment_menu() { */ function comment_node_type_insert($info) { field_attach_create_bundle('comment_node_' . $info->type); + + // Attach the body field by default. + $instance = array( + 'field_name' => 'comment_body', + 'label' =>'Body', + 'bundle' => 'comment_node_' . $info->type, + 'settings' => array('text_processing' => 1), + ); + field_create_instance($instance); + + // Attach the subject field by default. + $instance = array( + 'field_name' => 'comment_subject', + 'label' => 'Subject', + 'bundle' => 'comment_node_' . $info->type, + ); + field_create_instance($instance); } /** @@ -244,7 +261,6 @@ function comment_node_type_delete($info) 'comment_default_mode', 'comment_default_per_page', 'comment_anonymous', - 'comment_subject_field', 'comment_preview', 'comment_form_location', ); @@ -380,15 +396,17 @@ function comment_get_recent($number = 10 // and are visible to the current user. $nids = db_query_range("SELECT nc.nid FROM {node_comment_statistics} nc WHERE nc.comment_count > 0 ORDER BY nc.last_comment_timestamp DESC", 0, $number)->fetchCol(); - $comments = array(); if (!empty($nids)) { // Step 2: From among the comments on the nodes selected in the first query, // find the $number of most recent comments. // Using Query Builder here for the IN-Statement. $query = db_select('comment', 'c'); $query->innerJoin('node', 'n', 'n.nid = c.nid'); + $query->innerJoin('users', 'u', 'u.uid = c.uid'); + $query->addField('n', 'title', 'node_title'); + $query->addExpression('IF(c.uid != 0, u.name, c.name)', 'name'); return $query - ->fields('c', array('nid', 'subject', 'cid', 'timestamp')) + ->fields('c', array('nid', 'cid', 'uid', 'timestamp')) ->condition('c.nid', $nids, 'IN') ->condition('c.status', COMMENT_PUBLISHED) ->condition('n.status', 1) @@ -398,7 +416,7 @@ function comment_get_recent($number = 10 ->fetchAll(); } - return $comments; + return array(); } /** @@ -461,8 +479,12 @@ function comment_new_page_count($num_com function theme_comment_block() { $items = array(); $number = variable_get('comment_block_count', 10); + foreach (comment_get_recent($number) as $comment) { - $items[] = l($comment->subject, 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)) . '
    ' . t('@time ago', array('@time' => format_interval(REQUEST_TIME - $comment->timestamp))); + $name = theme('username', $comment); + $comment_permalink = url('comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)); + $time_ago = format_interval(REQUEST_TIME - $comment->timestamp); + $items[] = t('!username on @node_title @time ago', array('!username' => $name, '@comment_permalink' => $comment_permalink, '@node_title' => $comment->node_title, '@time' => $time_ago)); } if ($items) { @@ -821,11 +843,6 @@ function comment_build_content($comment, $comment->content = array(); } - // Build comment body. - $comment->content['comment_body'] = array( - '#markup' => check_markup($comment->comment, $comment->format), - ); - $comment->content += field_attach_view('comment', $comment, $build_mode); if (empty($comment->in_preview)) { @@ -975,11 +992,6 @@ function comment_form_node_type_form_alt $form['comment']['comment_anonymous']['#access'] = FALSE; } - $form['comment']['comment_subject_field'] = array( - '#type' => 'checkbox', - '#title' => t('Allow comment title'), - '#default_value' => variable_get('comment_subject_field_' . $form['#node_type']->type, 1), - ); $form['comment']['comment_form_location'] = array( '#type' => 'checkbox', '#title' => t('Show reply form on the same page as comments'), @@ -1128,17 +1140,12 @@ function comment_node_delete($node) { * Implement hook_node_update_index(). */ function comment_node_update_index($node) { - $text = ''; - if ($node->comment != COMMENT_NODE_HIDDEN) { - $comments = db_query('SELECT subject, comment, format FROM {comment} WHERE nid = :nid AND status = :status', array( - ':nid' => $node->nid, - ':status' => COMMENT_PUBLISHED - )); - foreach ($comments as $comment) { - $text .= '

    ' . check_plain($comment->subject) . '

    ' . check_markup($comment->comment, $comment->format); - } + if ($node->comment && $cids = comment_get_thread($node)) { + $comments = comment_load_multiple($cids); + comment_prepare_thread($comments); + $build = comment_build_multiple($comments); } - return $text; + return drupal_render($build); } /** @@ -1255,9 +1262,6 @@ function comment_save($comment) { ->fields(array( 'status' => $comment->status, 'timestamp' => $comment->timestamp, - 'subject' => $comment->subject, - 'comment' => $comment->comment, - 'format' => $comment->comment_format, 'uid' => $comment->uid, 'name' => $comment->name, 'mail' => $comment->mail, @@ -1269,7 +1273,7 @@ function comment_save($comment) { // Allow modules to respond to the updating of a comment. module_invoke_all('comment_update', $comment); // Add an entry to the watchdog log. - watchdog('content', 'Comment: updated %subject.', array('%subject' => $comment->subject), WATCHDOG_NOTICE, l(t('view'), 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid))); + watchdog('content', 'Comment: updated %cid.', array('%subject' => $comment->cid), WATCHDOG_NOTICE, l(t('view'), 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid))); } else { // Add the comment to database. This next section builds the thread field. @@ -1326,9 +1330,6 @@ function comment_save($comment) { 'nid' => $comment->nid, 'pid' => empty($comment->pid) ? 0 : $comment->pid, 'uid' => $comment->uid, - 'subject' => $comment->subject, - 'comment' => $comment->comment, - 'format' => $comment->comment_format, 'hostname' => ip_address(), 'timestamp' => $comment->timestamp, 'status' => $comment->status, @@ -1482,6 +1483,7 @@ class CommentController extends DrupalDe $comment->node_type = 'comment_node_' . $comment->node_type; $comments[$key] = $comment; } + parent::attachLoad($comments); } } @@ -1785,15 +1787,6 @@ function comment_form(&$form_state, $com ); } - if (variable_get('comment_subject_field_' . $node->type, 1) == 1) { - $form['subject'] = array( - '#type' => 'textfield', - '#title' => t('Subject'), - '#maxlength' => 64, - '#default_value' => !empty($comment->subject) ? $comment->subject : '', - ); - } - if (!empty($comment->comment)) { $default = $comment->comment; } @@ -1801,15 +1794,6 @@ function comment_form(&$form_state, $com $default = ''; } - $form['comment'] = array( - '#type' => 'textarea', - '#title' => t('Comment'), - '#rows' => 15, - '#default_value' => $default, - '#text_format' => isset($comment->format) ? $comment->format : FILTER_FORMAT_DEFAULT, - '#required' => TRUE, - ); - $form['cid'] = array( '#type' => 'value', '#value' => !empty($comment->cid) ? $comment->cid : NULL, @@ -1880,7 +1864,6 @@ function comment_preview($comment) { $node = node_load($comment->nid); if (!form_get_errors()) { - $comment->format = $comment->comment_format; // Attach the user and time information. if (!empty($comment->author)) { @@ -2010,19 +1993,6 @@ function comment_submit($comment) { $comment['name'] = $comment['author']; } - // Validate the comment's subject. If not specified, extract from comment body. - if (trim($comment['subject']) == '') { - // The body may be in any format, so: - // 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'], $comment['comment_format'])))), 29, TRUE); - // Edge cases where the comment body is populated only by HTML tags will - // require a default subject. - if ($comment['subject'] == '') { - $comment['subject'] = t('(No subject)'); - } - } return (object)$comment; } @@ -2059,8 +2029,8 @@ function comment_form_submit($form, &$fo $redirect = array('comment/' . $comment->cid, array(), 'comment-' . $comment->cid); } else { - watchdog('content', 'Comment: unauthorized comment submitted or comment submitted to a closed post %subject.', array('%subject' => $comment->subject), WATCHDOG_WARNING); - drupal_set_message(t('Comment: unauthorized comment submitted or comment submitted to a closed post %subject.', array('%subject' => $comment->subject)), 'error'); + watchdog('content', 'Comment: unauthorized comment submitted or comment submitted to a closed post %title.', array('%title' => $node->title), WATCHDOG_WARNING); + drupal_set_message(t('Comment: unauthorized comment submitted or comment submitted to a closed post %title.', array('%title' => $comment->title)), 'error'); $page = comment_new_page_count($node->comment_count, 1, $node); $redirect = array('node/' . $node->nid, $page); } @@ -2085,7 +2055,7 @@ function template_preprocess_comment(&$v $variables['new'] = !empty($comment->new) ? t('new') : ''; $variables['picture'] = theme_get_setting('toggle_comment_user_picture') ? theme('user_picture', $comment) : ''; $variables['signature'] = $comment->signature; - $variables['title'] = l($comment->subject, 'comment/' . $comment->cid, array('fragment' => "comment-$comment->cid")); + $variables['permalink'] = l('#', 'comment/' . $comment->cid, array('fragment' => "comment->$comment->cid")); $variables['template_files'][] = 'comment-' . $variables['node']->type; // Set status to a string representation of comment->status. if (isset($comment->in_preview)) { @@ -2340,7 +2310,6 @@ function comment_action_info() { function comment_unpublish_action($comment, $context = array()) { if (isset($comment->cid)) { $cid = $comment->cid; - $subject = $comment->subject; } else { $cid = $context['cid']; @@ -2350,7 +2319,7 @@ function comment_unpublish_action($comme ->fields(array('status' => COMMENT_NOT_PUBLISHED)) ->condition('cid', $cid) ->execute(); - watchdog('action', 'Unpublished comment %subject.', array('%subject' => $subject)); + watchdog('action', 'Unpublished comment %cid.', array('%cid' => $cid)); } /** @@ -2390,12 +2359,13 @@ function comment_unpublish_by_keyword_ac */ function comment_unpublish_by_keyword_action($comment, $context) { foreach ($context['keywords'] as $keyword) { - if (strpos($comment->comment, $keyword) !== FALSE || strpos($comment->subject, $keyword) !== FALSE) { + $text = drupal_render($comment); + if (strpos($text, $keyword) !== FALSE) { db_update('comment') ->fields(array('status' => COMMENT_NOT_PUBLISHED)) ->condition('cid', $comment->cid) ->execute(); - watchdog('action', 'Unpublished comment %subject.', array('%subject' => $comment->subject)); + watchdog('action', 'Unpublished comment %cid.', array('%cid' => $comment->cid)); break; } } @@ -2428,14 +2398,3 @@ function comment_menu_alter(&$items) { // Add comments to the description for admin/content. $items['admin/content']['description'] = "View, edit, and delete your site's content and comments."; } - -/** - * Implement hook_filter_format_delete(). - */ -function comment_filter_format_delete($format, $default) { - db_update('comment') - ->fields(array('format' => $default->format)) - ->condition('format', $format->format) - ->execute(); -} - Index: modules/comment/comment.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.pages.inc,v retrieving revision 1.24 diff -u -p -r1.24 comment.pages.inc --- modules/comment/comment.pages.inc 1 Aug 2009 05:58:18 -0000 1.24 +++ modules/comment/comment.pages.inc 5 Sep 2009 12:41:24 -0000 @@ -109,7 +109,6 @@ function comment_approve($cid) { // Load the comment whose cid = $cid if ($comment = comment_load($cid)) { $comment->status = COMMENT_PUBLISHED; - $comment->comment_format = $comment->format; comment_save($comment); drupal_set_message(t('Comment approved.')); Index: modules/comment/comment.test =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.test,v retrieving revision 1.44 diff -u -p -r1.44 comment.test --- modules/comment/comment.test 21 Aug 2009 14:27:44 -0000 1.44 +++ modules/comment/comment.test 5 Sep 2009 12:41:24 -0000 @@ -28,8 +28,8 @@ class CommentHelperCase extends DrupalWe */ function postComment($node, $subject, $comment, $preview = FALSE, $contact = NULL) { $edit = array(); - $edit['subject'] = $subject; - $edit['comment'] = $comment; + $edit['comment_subject[zxx][0][value]'] = $subject; + $edit['comment_body[zxx][0][value]'] = $comment; if ($contact !== NULL && is_array($contact)) { $edit += $contact; @@ -97,16 +97,6 @@ class CommentHelperCase extends DrupalWe } /** - * Set comment subject setting. - * - * @param boolean $enabled - * Subject value. - */ - function setCommentSubject($enabled) { - $this->setCommentSettings('comment_subject_field', ($enabled ? '1' : '0'), 'Comment subject ' . ($enabled ? 'enabled' : 'disabled') . '.'); - } - - /** * Set comment preview setting. * * @param boolean $required @@ -213,21 +203,6 @@ class CommentHelperCase extends DrupalWe $this->assertText(t('The update has been performed.'), t('Operation "' . $operation . '" was performed on comment.')); } } - - /** - * Get the comment ID for an unapproved comment. - * - * @param string $subject - * Comment subject to find. - * @return integer - * Comment id. - */ - function getUnapprovedComment($subject) { - $this->drupalGet('admin/content/comment/approval'); - preg_match('/href="(.*?)#comment-([^"]+)"(.*?)>(' . $subject . ')/', $this->drupalGetContent(), $match); - - return $match[2]; - } } class CommentInterfaceTest extends CommentHelperCase { @@ -247,19 +222,11 @@ class CommentInterfaceTest extends Comme $this->drupalLogin($this->admin_user); $this->setCommentPreview(TRUE); $this->setCommentForm(TRUE); - $this->setCommentSubject(FALSE); $this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.')); - $this->drupalLogout(); - - // Post comment without subject. - $this->drupalLogin($this->web_user); - $this->drupalGet('comment/reply/' . $this->node->nid); - $this->assertNoFieldByName('subject', '', t('Subject field not found.')); // Set comments to have subject and preview to required. $this->drupalLogout(); $this->drupalLogin($this->admin_user); - $this->setCommentSubject(TRUE); $this->setCommentPreview(TRUE); $this->drupalLogout(); @@ -331,7 +298,7 @@ class CommentInterfaceTest extends Comme $this->assertTrue($this->node, t('Article node created.')); $this->drupalGet('comment/reply/' . $this->node->nid); $this->assertNoText('This discussion is closed', t('Posting to node with comments enabled')); - $this->assertField('edit-comment', t('Comment body field found.')); + $this->assertField('edit-comment-body-zxx-0-value', t('Comment body field found.')); // Delete comment and make sure that reply is also removed. $this->drupalLogout(); @@ -381,27 +348,28 @@ class CommentPreviewTest extends Comment $this->drupalLogin($this->admin_user); $this->setCommentPreview(TRUE); $this->setCommentForm(TRUE); - $this->setCommentSubject(TRUE); $this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.')); $this->drupalLogout(); // As web user, fill in node creation form and preview node. $this->drupalLogin($this->web_user); + $subject = $this->randomName(8); + $body = $this->randomName(16); $edit = array(); - $edit['subject'] = $this->randomName(8); - $edit['comment'] = $this->randomName(16); + $edit['comment_subject[zxx][0][value]'] = $subject; + $edit['comment_body[zxx][0][value]'] = $body; $this->drupalPost('node/' . $this->node->nid, $edit, t('Preview')); // Check that the preview is displaying the title and body. $this->assertTitle(t('Preview comment | Drupal'), t('Page title is "Preview comment".')); - $this->assertText($edit['subject'], t('Subject displayed.')); - $this->assertText($edit['comment'], t('Comment displayed.')); + $this->assertText($subject, t('Subject displayed.')); + $this->assertText($body, t('Comment displayed.')); // Check that the title and body fields are displayed with the correct values. - $this->assertFieldByName('subject', $edit['subject'], t('Subject field displayed.')); - $this->assertFieldByName('comment', $edit['comment'], t('Comment field displayed.')); + $this->assertFieldByName('comment_subject[zxx][0][value]', $subject, t('Subject field displayed.')); + $this->assertFieldByName('comment_body[zxx][0][value]', $body, t('Comment field displayed.')); } - + /** * Test comment edit and preview. */ @@ -410,28 +378,30 @@ class CommentPreviewTest extends Comment $this->drupalLogin($this->admin_user); $this->setCommentPreview(TRUE); $this->setCommentForm(TRUE); - $this->setCommentSubject(TRUE); $this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Comment paging changed.')); - + + $subject = $this->randomName(8); + $body = $this->randomName(16); + $edit = array(); - $edit['subject'] = $this->randomName(8); - $edit['comment'] = $this->randomName(16); + $edit['comment_subject[zxx][0][value]'] = $subject; + $edit['comment_body[zxx][0][value]'] = $body; $edit['author'] = $web_user->name; $edit['date'] = '2008-03-02 17:23 +0300'; $expected_date = format_date(strtotime($edit['date'])); - $comment = $this->postComment($this->node, $edit['subject'], $edit['comment'], TRUE); + $comment = $this->postComment($this->node, $subject, $body, TRUE); $this->drupalPost('comment/edit/' . $comment->id, $edit, t('Preview')); - + // Check that the preview is displaying the subject, comment, author and date correctly. $this->assertTitle(t('Preview comment | Drupal'), t('Page title is "Preview comment".')); - $this->assertText($edit['subject'], t('Subject displayed.')); - $this->assertText($edit['comment'], t('Comment displayed.')); + $this->assertText($subject, t('Subject displayed.')); + $this->assertText($body, t('Comment displayed.')); $this->assertText($edit['author'], t('Author displayed.')); $this->assertText($expected_date, t('Date displayed.')); // Check that the title and body fields are displayed with the correct values. - $this->assertFieldByName('subject', $edit['subject'], t('Subject field displayed.')); - $this->assertFieldByName('comment', $edit['comment'], t('Comment field displayed.')); + $this->assertFieldByName('comment_subject[zxx][0][value]', $subject, t('Subject field displayed.')); + $this->assertFieldByName('comment_body[zxx][0][value]', $body, t('Comment field displayed.')); $this->assertFieldByName('author', $edit['author'], t('Author field displayed.')); $this->assertFieldByName('date', $edit['date'], t('Date field displayed.')); } @@ -563,7 +533,6 @@ class CommentPagerTest extends CommentHe // Set comment variables. $this->setCommentForm(TRUE); - $this->setCommentSubject(TRUE); $this->setCommentPreview(FALSE); // Create a node and three comments. @@ -657,7 +626,7 @@ class CommentApprovalTest extends Commen // Get unapproved comment id. $this->drupalLogin($this->admin_user); - $anonymous_comment4 = $this->getUnapprovedComment($subject); + $anonymous_comment4 = db_query('SELECT MAX(cid) FROM {comment} WHERE status = 0')->fetchField(); $anonymous_comment4 = (object) array('id' => $anonymous_comment4, 'subject' => $subject, 'comment' => $body); $this->drupalLogout(); @@ -691,7 +660,7 @@ class CommentApprovalTest extends Commen // Get unapproved comment id. $this->drupalLogin($this->admin_user); - $anonymous_comment4 = $this->getUnapprovedComment($subject); + $anonymous_comment4 = db_query('SELECT MAX(cid) FROM {comment} WHERE status = 0')->fetchField(); $anonymous_comment4 = (object) array('id' => $anonymous_comment4, 'subject' => $subject, 'comment' => $body); $this->drupalLogout(); @@ -756,10 +725,10 @@ class CommentBlockFunctionalTest extends $this->assertText($block['title'], t('Block was found.')); // Test the only the 2 latest comments are shown and in the proper order. - $this->assertNoText($comment1->subject, t('Comment not found in block.')); - $this->assertText($comment2->subject, t('Comment found in block.')); - $this->assertText($comment3->comment, t('Comment found in block.')); - $this->assertTrue(strpos($this->drupalGetContent(), $comment3->comment) < strpos($this->drupalGetContent(), $comment2->subject), t('Comments were ordered correctly in block.')); + $this->assertNoRaw("#comment-$comment1->id", t('Comment not found in block.')); + $this->assertRaw("#comment-$comment2->id", t('Comment found in block.')); + $this->assertRaw("#comment-$comment3->id", t('Comment found in block.')); + $this->assertTrue(strpos($this->drupalGetContent(), "#comment-$comment3->id") < strpos($this->drupalGetContent(), "#comment-$comment2->id"), t('Comments were ordered correctly in block.')); // Set the number of recent comments to show to 10. $this->drupalLogout(); @@ -781,13 +750,14 @@ class CommentBlockFunctionalTest extends // Test that links to comments work when comments are across pages. $this->setCommentsPerPage(1); - $this->drupalGet(''); - $this->clickLink($comment1->subject); + $this->drupalGet('node/' . $this->node->nid); + $this->clickLink($this->node->title, 3); $this->assertText($comment1->subject, t('Comment link goes to correct page.')); - $this->drupalGet(''); - $this->clickLink($comment2->subject); + $this->drupalGet('node/' . $this->node->nid); + $this->clickLink($this->node->title, 2); $this->assertText($comment2->subject, t('Comment link goes to correct page.')); - $this->clickLink($comment4->subject); + $this->drupalGet('node/' . $this->node->nid); + $this->clickLink($this->node->title, 0); $this->assertText($comment4->subject, t('Comment link goes to correct page.')); // Check that when viewing a comment page from a link to the comment, that // rel="canonical" is added to the head of the document. Index: modules/comment/comment.tpl.php =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.tpl.php,v retrieving revision 1.11 diff -u -p -r1.11 comment.tpl.php --- modules/comment/comment.tpl.php 29 Aug 2009 04:16:14 -0000 1.11 +++ modules/comment/comment.tpl.php 5 Sep 2009 12:41:24 -0000 @@ -17,7 +17,6 @@ * - $signature: Authors signature. * - $status: Comment status. Possible values are: * comment-unpublished, comment-published or comment-preview. - * - $title: Linked title. * - $classes: String of classes that can be used to style contextually through * CSS. It can be manipulated through the variable $classes_array from * preprocess functions. The default values can be one or more of the following: @@ -50,8 +49,7 @@ - -

    +
    refreshVariables(); + $langcode = FIELD_LANGUAGE_NONE; + // Add a comment to one of the nodes. - $edit = array('subject' => 'my comment title', 'comment' => 'some random comment'); + $edit = array("comment_subject[$langcode][0][value]" => 'my comment title', "comment_body[$langcode][0][value]" => 'some random comment'); $this->drupalGet('comment/reply/' . $nodes['comments'][1]->nid); $this->drupalPost(NULL, $edit, t('Preview')); $this->drupalPost(NULL, $edit, t('Save')); @@ -490,10 +492,11 @@ class SearchCommentTestCase extends Drup // Create a node. $node = $this->drupalCreateNode(array('type' => 'article')); // Post a comment using 'Full HTML' text format. + $langcode = FIELD_LANGUAGE_NONE; $edit_comment = array( - 'subject' => $this->randomName(2), - 'comment' => '

    ' . $comment_body . '

    ', - 'comment_format' => 2, + "comment_subject[$langcode][0][value]" => $this->randomName(2), + "comment_body[$langcode][0][value]" => '

    ' . $comment_body . '

    ', + "comment_body[$langcode][0][value_format]" => 2, ); $this->drupalPost('comment/reply/' . $node->nid, $edit_comment, t('Save')); @@ -509,10 +512,9 @@ class SearchCommentTestCase extends Drup $this->assertText($node->title, t('Node found in search results.')); // Verify that comment is rendered using proper format. - $this->assertText($edit_comment['subject'], t('Comment subject found in search results.')); $this->assertText($comment_body, t('Comment body text found in search results.')); $this->assertNoRaw(t('n/a'), t('HTML in comment body is not hidden.')); - $this->assertNoRaw(check_plain($edit_comment['comment']), t('HTML in comment body is not escaped.')); + $this->assertNoRaw(check_plain($edit_comment["comment_body[$langcode][0][value]"]), t('HTML in comment body is not escaped.')); // Hide comments. $this->drupalLogin($this->admin_user); Index: modules/tracker/tracker.test =================================================================== RCS file: /cvs/drupal/drupal/modules/tracker/tracker.test,v retrieving revision 1.11 diff -u -p -r1.11 tracker.test --- modules/tracker/tracker.test 31 Aug 2009 06:52:50 -0000 1.11 +++ modules/tracker/tracker.test 5 Sep 2009 12:41:24 -0000 @@ -73,8 +73,8 @@ class TrackerTest extends DrupalWebTestC 'status' => 1, )); $comment = array( - 'subject' => $this->randomName(), - 'comment' => $this->randomName(20), + 'comment_subject[zxx][0][value]' => $this->randomName(), + 'comment_body[zxx][0][value]' => $this->randomName(20), ); $this->drupalPost('comment/reply/' . $other_published_my_comment->nid, $comment, t('Save')); @@ -125,8 +125,8 @@ class TrackerTest extends DrupalWebTestC // Add a comment to the page. $comment = array( - 'subject' => $this->randomName(), - 'comment' => $this->randomName(20), + 'comment_subject[zxx][0][value]' => $this->randomName(), + 'comment_body[zxx][0][value]' => $this->randomName(20), ); $this->drupalPost('comment/reply/' . $node->nid, $comment, t('Save')); // The new comment is automatically viewed by the current user. @@ -137,8 +137,8 @@ class TrackerTest extends DrupalWebTestC // Add another comment as other_user. $comment = array( - 'subject' => $this->randomName(), - 'comment' => $this->randomName(20), + 'comment_subject[zxx][0][value]' => $this->randomName(), + 'comment_body[zxx][0][value]' => $this->randomName(20), ); // If the comment is posted in the same second as the last one then Drupal // can't tell a difference, so wait one second here. @@ -170,8 +170,8 @@ class TrackerTest extends DrupalWebTestC // Add a comment to the last node as other user. $this->drupalLogin($this->other_user); $comment = array( - 'subject' => $this->randomName(), - 'comment' => $this->randomName(20), + 'comment_subject[zxx][0][value]' => $this->randomName(), + 'comment_body[zxx][0][value]' => $this->randomName(20), ); $this->drupalPost('comment/reply/' . $nodes[3]->nid, $comment, t('Save')); Index: themes/garland/comment.tpl.php =================================================================== RCS file: /cvs/drupal/drupal/themes/garland/comment.tpl.php,v retrieving revision 1.15 diff -u -p -r1.15 comment.tpl.php --- themes/garland/comment.tpl.php 29 Aug 2009 04:16:15 -0000 1.15 +++ themes/garland/comment.tpl.php 5 Sep 2009 12:41:24 -0000 @@ -13,7 +13,7 @@ -

    +