diff options
-rw-r--r-- | includes/theme.inc | 4 | ||||
-rw-r--r-- | modules/blog/blog.module | 4 | ||||
-rw-r--r-- | modules/comment/comment.css | 3 | ||||
-rw-r--r-- | modules/comment/comment.module | 27 | ||||
-rw-r--r-- | modules/comment/comment.pages.inc | 2 | ||||
-rw-r--r-- | modules/forum/forum.module | 4 | ||||
-rw-r--r-- | modules/node/node.api.php | 22 | ||||
-rw-r--r-- | modules/node/node.module | 42 | ||||
-rw-r--r-- | modules/node/node.tpl.php | 4 | ||||
-rw-r--r-- | modules/poll/poll.module | 6 | ||||
-rw-r--r-- | modules/poll/poll.pages.inc | 2 | ||||
-rw-r--r-- | modules/search/search.module | 5 | ||||
-rw-r--r-- | modules/search/search.test | 2 | ||||
-rw-r--r-- | themes/bluemarine/node.tpl.php | 1 | ||||
-rw-r--r-- | themes/chameleon/chameleon.theme | 6 | ||||
-rw-r--r-- | themes/garland/node.tpl.php | 3 | ||||
-rw-r--r-- | themes/pushbutton/node.tpl.php | 5 |
17 files changed, 76 insertions, 66 deletions
diff --git a/includes/theme.inc b/includes/theme.inc index 011872842..e23d58cf4 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -1983,6 +1983,7 @@ function template_preprocess_node(&$variables) { $variables['name'] = theme('username', $node); $variables['node_url'] = url('node/' . $node->nid); $variables['title'] = check_plain($node->title); + $variables['page'] = (bool)menu_get_object(); if ($node->build_mode == NODE_BUILD_PREVIEW) { unset($node->content['links']); @@ -1993,6 +1994,9 @@ function template_preprocess_node(&$variables) { // Render all remaining node links. $variables['links'] = !empty($node->content['links']) ? drupal_render($node->content['links']) : ''; + + // Render any comments. + $variables['comments'] = !empty($node->content['comments']) ? drupal_render($node->content['comments']) : ''; // Render the rest of the node into $content. if (!empty($node->content['teaser'])) { diff --git a/modules/blog/blog.module b/modules/blog/blog.module index 0fe3c3190..0fba642f3 100644 --- a/modules/blog/blog.module +++ b/modules/blog/blog.module @@ -84,8 +84,8 @@ function blog_form($node, $form_state) { /** * Implementation of hook_view(). */ -function blog_view($node, $teaser, $page) { - if ($page) { +function blog_view($node, $teaser) { + if ((bool)menu_get_object()) { // Breadcrumb navigation. drupal_set_breadcrumb(array(l(t('Home'), NULL), l(t('Blogs'), 'blog'), l(t("!name's blog", array('!name' => $node->name)), 'blog/' . $node->uid))); } diff --git a/modules/comment/comment.css b/modules/comment/comment.css index 0df1470cb..4cc8f4c42 100644 --- a/modules/comment/comment.css +++ b/modules/comment/comment.css @@ -1,5 +1,8 @@ /* $Id$ */ +#comments { + margin-top: 15px; +} .indented { margin-left: 25px; /* LTR */ } diff --git a/modules/comment/comment.module b/modules/comment/comment.module index 831544c0e..c7f4a7f1c 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -422,7 +422,7 @@ function theme_comment_block() { /** * An implementation of hook_nodeapi_view(). */ -function comment_nodeapi_view($node, $teaser, $page) { +function comment_nodeapi_view($node, $teaser) { $links = array(); if ($node->comment) { @@ -493,6 +493,13 @@ function comment_nodeapi_view($node, $teaser, $page) { '#type' => 'node_links', '#value' => $links, ); + + // Append the list of comments to $node->content for node detail pages. + if ($node->comment && (bool)menu_get_object()) { + $node->content['comments'] = array( + '#markup' => comment_render($node), + ); + } } } @@ -662,6 +669,14 @@ function comment_nodeapi_update_index($node) { } /** + * Implementation of hook_update_index(). + */ +function comment_update_index() { + // Store the maximum possible comments per thread (used for ranking by reply count) + variable_set('node_cron_comments_scale', 1.0 / max(1, db_query('SELECT MAX(comment_count) FROM {node_comment_statistics}')->fetchField())); +} + +/** * Implementation of hook_nodeapi_search_result(). */ function comment_nodeapi_search_result($node) { @@ -740,7 +755,8 @@ function comment_node_url() { */ function comment_save($edit) { global $user; - if (user_access('post comments') && (user_access('administer comments') || node_comment_mode($edit['nid']) == COMMENT_NODE_READ_WRITE)) { + $node = node_load($edit['nid']); + if (user_access('post comments') && (user_access('administer comments') || $node->comment == COMMENT_NODE_READ_WRITE)) { if (!form_get_errors()) { $edit += array( 'mail' => '', @@ -902,7 +918,8 @@ function comment_links($comment, $return = 1) { ); } - if (node_comment_mode($comment->nid) == COMMENT_NODE_READ_WRITE) { + $node = node_load($comment->nid); + if ($node->comment == COMMENT_NODE_READ_WRITE) { if (user_access('administer comments') && user_access('post comments')) { $links['comment_delete'] = array( 'title' => t('delete'), @@ -1118,7 +1135,7 @@ function comment_render($node, $cid = 0) { // If enabled, show new comment form if it's not already being displayed. $reply = arg(0) == 'comment' && arg(1) == 'reply'; - if (user_access('post comments') && node_comment_mode($nid) == COMMENT_NODE_READ_WRITE && (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_SEPARATE_PAGE) == COMMENT_FORM_BELOW) && !$reply) { + if (user_access('post comments') && $node->comment == COMMENT_NODE_READ_WRITE && (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_SEPARATE_PAGE) == COMMENT_FORM_BELOW) && !$reply) { $output .= comment_form_box(array('nid' => $nid), t('Post new comment')); } $output = theme('comment_wrapper', $output, $node); @@ -2158,4 +2175,4 @@ function comment_ranking() { 'arguments' => array(variable_get('node_cron_comments_scale', 0)), ), ); -} +}
\ No newline at end of file diff --git a/modules/comment/comment.pages.inc b/modules/comment/comment.pages.inc index 4b7d08413..a4c94e22a 100644 --- a/modules/comment/comment.pages.inc +++ b/modules/comment/comment.pages.inc @@ -96,7 +96,7 @@ function comment_reply($node, $pid = NULL) { } // Should we show the reply box? - if (node_comment_mode($node->nid) != COMMENT_NODE_READ_WRITE) { + if ($node->comment != COMMENT_NODE_READ_WRITE) { drupal_set_message(t("This discussion is closed: you can't post new comments."), 'error'); drupal_goto("node/$node->nid"); } diff --git a/modules/forum/forum.module b/modules/forum/forum.module index e41280b53..eed4b3c64 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -183,11 +183,11 @@ function _forum_nodeapi_check_node_type($node, $vocabulary) { /** * Implementation of hook_nodeapi_view(). */ -function forum_nodeapi_view($node, $teaser, $page) { +function forum_nodeapi_view($node, $teaser) { $vid = variable_get('forum_nav_vocabulary', ''); $vocabulary = taxonomy_vocabulary_load($vid); if (_forum_nodeapi_check_node_type($node, $vocabulary)) { - if ($page && taxonomy_node_get_terms_by_vocabulary($node, $vid) && $tree = taxonomy_get_tree($vid)) { + if ((bool)menu_get_object() && taxonomy_node_get_terms_by_vocabulary($node, $vid) && $tree = taxonomy_get_tree($vid)) { // Get the forum terms from the (cached) tree foreach ($tree as $term) { $forum_terms[] = $term->tid; diff --git a/modules/node/node.api.php b/modules/node/node.api.php index e29d3aeab..e6a406a04 100644 --- a/modules/node/node.api.php +++ b/modules/node/node.api.php @@ -166,8 +166,6 @@ function hook_node_operations() { * The node the action is being performed on. * @param $teaser * The $teaser parameter from node_view(). - * @param $page - * The $page parameter from node_view(). * @return * None. */ @@ -392,22 +390,21 @@ function hook_nodeapi_validate($node, $form) { * The node content is being assembled before rendering. * * The module may add elements $node->content prior to rendering. This hook - * will be called after hook_view(). The format of $node->content is the - * same as used by Forms API. + * will be called after hook_view(). The structure of $node->content is a renderable + * array as expected by drupal_render(). * * @param $node * The node the action is being performed on. * @param $teaser * The $teaser parameter from node_view(). - * @param $page - * The $page parameter from node_view(). * @return * None. */ -function hook_nodeapi_view($node, $teaser, $page) { +function hook_nodeapi_view($node, $teaser) { $node->content['my_additional_field'] = array( - '#value' => theme('mymodule_my_additional_field', $additional_field), + '#value' => $additional_field, '#weight' => 10, + '#theme' => 'mymodule_my_additional_field', ); } @@ -766,11 +763,6 @@ function hook_validate($node, &$form) { * @param $teaser * Whether we are to generate a "teaser" or summary of the node, rather than * display the whole thing. - * @param $page - * Whether the node is being displayed as a standalone page. If this is - * TRUE, the node title should not be displayed, as it will be printed - * automatically by the theme system. Also, the module may choose to alter - * the default breadcrumb trail in this case. * @return * $node. The passed $node parameter should be modified as necessary and * returned so it can be properly presented. Nodes are prepared for display @@ -785,8 +777,8 @@ function hook_validate($node, &$form) { * * For a detailed usage example, see node_example.module. */ -function hook_view($node, $teaser = FALSE, $page = FALSE) { - if ($page) { +function hook_view($node, $teaser = FALSE) { + if ((bool)menu_get_object()) { $breadcrumb = array(); $breadcrumb[] = array('path' => 'example', 'title' => t('example')); $breadcrumb[] = array('path' => 'example/' . $node->field1, diff --git a/modules/node/node.module b/modules/node/node.module index 11ae9e99b..f2e616f6a 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -1129,20 +1129,18 @@ function node_delete($nid) { * A node array or node object. * @param $teaser * Whether to display the teaser only or the full form. - * @param $page - * Whether the node is being displayed by itself as a page. * @param $links * Whether or not to display node links. Links are omitted for node previews. * * @return * An HTML representation of the themed node. */ -function node_view($node, $teaser = FALSE, $page = FALSE) { +function node_view($node, $teaser = FALSE) { $node = (object)$node; - $node = node_build_content($node, $teaser, $page); + $node = node_build_content($node, $teaser); - return theme('node', $node, $teaser, $page); + return theme('node', $node, $teaser); } /** @@ -1176,14 +1174,12 @@ function node_prepare($node, $teaser = FALSE) { * A node object. * @param $teaser * Whether to display the teaser only, as on the main page. - * @param $page - * Whether the node is being displayed by itself as a page. * * @return * An structured array containing the individual elements * of the node's body. */ -function node_build_content($node, $teaser = FALSE, $page = FALSE) { +function node_build_content($node, $teaser = FALSE) { // The build mode identifies the target for which the node is built. if (!isset($node->build_mode)) { @@ -1196,35 +1192,31 @@ function node_build_content($node, $teaser = FALSE, $page = FALSE) { // The 'view' hook can be implemented to overwrite the default function // to display nodes. if (node_hook($node, 'view')) { - $node = node_invoke($node, 'view', $teaser, $page); + $node = node_invoke($node, 'view', $teaser); } else { $node = node_prepare($node, $teaser); } // Allow modules to make their own additions to the node. - node_invoke_nodeapi($node, 'view', $teaser, $page); + node_invoke_nodeapi($node, 'view', $teaser); // Allow modules to modify the structured node. - drupal_alter('node_view', $node, $teaser, $page); + drupal_alter('node_view', $node, $teaser); return $node; } /** - * Generate a page displaying a single node, along with its comments. + * Generate a page displaying a single node. */ -function node_show($node, $cid, $message = FALSE) { +function node_show($node, $message = FALSE) { if ($message) { drupal_set_title(t('Revision of %title from %date', array('%title' => $node->title, '%date' => format_date($node->revision_timestamp))), PASS_THROUGH); } $output = node_view($node, FALSE, TRUE); - if (function_exists('comment_render') && $node->comment) { - $output .= comment_render($node, $cid); - } - // Update the history table, stating that this user viewed this node. node_tag_new($node->nid); @@ -1514,14 +1506,6 @@ function theme_node_search_admin($form) { } /** - * Retrieve the comment mode for the given node ID (none, read, or read/write). - */ -function node_comment_mode($nid) { - $node = node_load($nid); - return $node->comment; -} - -/** * Implementation of hook_link(). */ function node_link($type, $node = NULL, $teaser = FALSE) { @@ -1720,7 +1704,7 @@ function node_menu() { 'title' => 'Revisions', 'load arguments' => array(3), 'page callback' => 'node_show', - 'page arguments' => array(1, NULL, TRUE), + 'page arguments' => array(1, TRUE), 'access callback' => '_node_revision_access', 'access arguments' => array(1), 'type' => MENU_CALLBACK, @@ -1924,9 +1908,9 @@ function node_page_default() { /** * Menu callback; view a single node. */ -function node_page_view($node, $cid = NULL) { +function node_page_view($node) { drupal_set_title($node->title); - return node_show($node, $cid); + return node_show($node); } /** @@ -1935,8 +1919,6 @@ function node_page_view($node, $cid = NULL) { function node_update_index() { $limit = (int)variable_get('search_cron_limit', 100); - // Store the maximum possible comments per thread (used for ranking by reply count) - variable_set('node_cron_comments_scale', 1.0 / max(1, db_result(db_query('SELECT MAX(comment_count) FROM {node_comment_statistics}')))); variable_set('node_cron_views_scale', 1.0 / max(1, db_result(db_query('SELECT MAX(totalcount) FROM {node_counter}')))); $result = db_query_range("SELECT n.nid FROM {node} n LEFT JOIN {search_dataset} d ON d.type = 'node' AND d.sid = n.nid WHERE d.sid IS NULL OR d.reindex <> 0 ORDER BY d.reindex ASC, n.nid ASC", 0, $limit); diff --git a/modules/node/node.tpl.php b/modules/node/node.tpl.php index 9a92d5a1c..4162a83e1 100644 --- a/modules/node/node.tpl.php +++ b/modules/node/node.tpl.php @@ -8,6 +8,7 @@ * Available variables: * - $title: the (sanitized) title of the node. * - $content: Node body or teaser depending on $teaser flag. + * - $comments: the themed list of comments (if any). * - $picture: The authors picture of the node output from * theme_user_picture(). * - $date: Formatted creation date (use $created to reformat with @@ -70,4 +71,7 @@ </div> <?php print $links; ?> + + <?php print $comments; ?> + </div>
\ No newline at end of file diff --git a/modules/poll/poll.module b/modules/poll/poll.module index 41cffc398..5152687df 100644 --- a/modules/poll/poll.module +++ b/modules/poll/poll.module @@ -524,7 +524,7 @@ function poll_delete($node) { * An extra parameter that adapts the hook to display a block-ready * rendering of the poll. */ -function poll_view($node, $teaser = FALSE, $page = FALSE, $block = FALSE) { +function poll_view($node, $teaser = FALSE, $block = FALSE) { global $user; $output = ''; @@ -549,7 +549,7 @@ function poll_view($node, $teaser = FALSE, $page = FALSE, $block = FALSE) { } else { $node->content['body'] = array( - '#markup' => poll_view_results($node, $teaser, $page, $block), + '#markup' => poll_view_results($node, $teaser, $block), ); } return $node; @@ -665,7 +665,7 @@ function template_preprocess_poll_vote(&$variables) { /** * Generates a graphical representation of the results of a poll. */ -function poll_view_results(&$node, $teaser, $page, $block) { +function poll_view_results(&$node, $teaser, $block) { // Count the votes and find the maximum $total_votes = 0; $max_votes = 0; diff --git a/modules/poll/poll.pages.inc b/modules/poll/poll.pages.inc index 7c2bd0c29..20a9179eb 100644 --- a/modules/poll/poll.pages.inc +++ b/modules/poll/poll.pages.inc @@ -53,5 +53,5 @@ function poll_votes($node) { function poll_results($node) { drupal_set_title($node->title); $node->show_results = TRUE; - return node_show($node, 0); + return node_show($node); } diff --git a/modules/search/search.module b/modules/search/search.module index 6b842d7f0..5c07acb31 100644 --- a/modules/search/search.module +++ b/modules/search/search.module @@ -281,10 +281,7 @@ function search_cron() { register_shutdown_function('search_update_totals'); // Update word index - foreach (module_implements('update_index') as $module) { - $function = $module . '_update_index'; - $function(); - } + module_invoke_all('update_index'); } /** diff --git a/modules/search/search.test b/modules/search/search.test index c7f9ecc77..02bde2f5c 100644 --- a/modules/search/search.test +++ b/modules/search/search.test @@ -300,7 +300,7 @@ class SearchRankingTestCase extends DrupalWebTestCase { } // Update the search index. - node_update_index(); + module_invoke_all('update_index'); search_update_totals(); // Refresh variables after the treatment. diff --git a/themes/bluemarine/node.tpl.php b/themes/bluemarine/node.tpl.php index 4a6e1fabf..f1789e59f 100644 --- a/themes/bluemarine/node.tpl.php +++ b/themes/bluemarine/node.tpl.php @@ -10,4 +10,5 @@ <div class="taxonomy"><?php print $terms?></div> <div class="content"><?php print $content?></div> <?php if ($links) { ?><div class="links">» <?php print $links?></div><?php }; ?> + <?php print $comments; ?> </div> diff --git a/themes/chameleon/chameleon.theme b/themes/chameleon/chameleon.theme index 307407642..74a332b98 100644 --- a/themes/chameleon/chameleon.theme +++ b/themes/chameleon/chameleon.theme @@ -114,7 +114,7 @@ function chameleon_page($content, $show_blocks = TRUE, $show_messages = TRUE) { return $output; } -function chameleon_node($node, $teaser = 0, $page = 0) { +function chameleon_node($node, $teaser = 0) { $output = "<div class=\"node" . ((!$node->status) ? ' node-unpublished' : '') . (($node->sticky) ? ' sticky' : '') . "\">\n"; @@ -153,6 +153,10 @@ function chameleon_node($node, $teaser = 0, $page = 0) { } $output .= "</div>\n"; + + if ($node->content['comments']) { + $output .= drupal_render($node->content['comments']); + } return $output; } diff --git a/themes/garland/node.tpl.php b/themes/garland/node.tpl.php index 595bd6b85..b5fdb12d0 100644 --- a/themes/garland/node.tpl.php +++ b/themes/garland/node.tpl.php @@ -27,6 +27,9 @@ <?php if ($links): ?> <div class="links"><?php print $links; ?></div> <?php endif; ?> + + <?php print $comments; ?> + </div> </div> diff --git a/themes/pushbutton/node.tpl.php b/themes/pushbutton/node.tpl.php index c464011ce..eac32a197 100644 --- a/themes/pushbutton/node.tpl.php +++ b/themes/pushbutton/node.tpl.php @@ -3,7 +3,7 @@ ?> <div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>"> <?php print $picture ?> - <?php if ($page == 0): ?> + <?php if (!$page): ?> <h1 class="title"><a href="<?php print $node_url ?>"><?php print $title ?></a></h1> <?php endif; ?> <span class="submitted"><?php print $submitted ?></span> @@ -11,5 +11,8 @@ <div class="content"><?php print $content ?></div> <?php if ($links): ?> <div class="links">» <?php print $links ?></div> + + <?php print $comments; ?> + <?php endif; ?> </div> |