1 comment.module | comment_node_view(Node $node, $view_mode) |
Implements hook_node_view().
File
- core/
modules/ comment/ comment.module, line 638 - Enables users to comment on published content.
Code
function comment_node_view(Node $node, $view_mode) {
$links = array();
if ($node->comment != COMMENT_NODE_HIDDEN) {
$node_type = node_type_get_type($node->type);
if ($view_mode == 'rss') {
// Add a comments RSS element which is a URL to the comments of this node.
$node->rss_elements[] = array(
'key' => 'comments',
'value' => url('node/' . $node->nid, array('fragment' => 'comments', 'absolute' => TRUE))
);
}
elseif ($view_mode == 'teaser') {
// Teaser view: display the number of comments that have been posted,
// or a link to add new comments if the user has permission, the node
// is open to new comments, and there currently are none.
if (user_access('access comments')) {
if (!empty($node->comment_count)) {
$links['comment-comments'] = array(
'title' => format_plural($node->comment_count, '1 comment', '@count comments'),
'href' => "node/$node->nid",
'attributes' => array('title' => t('Jump to the first comment of this posting.')),
'fragment' => 'comments',
'html' => TRUE,
);
// Show a link to the first new comment.
if ($new = comment_num_new($node->nid)) {
$links['comment-new-comments'] = array(
'title' => format_plural($new, '1 new comment', '@count new comments'),
'href' => "node/$node->nid",
'query' => comment_new_page_count($node->comment_count, $new, $node),
'attributes' => array('title' => t('Jump to the first new comment of this posting.')),
'fragment' => 'new',
'html' => TRUE,
);
}
}
}
if ($node->comment == COMMENT_NODE_OPEN) {
$comment_form_location = $node_type->settings['comment_form_location'];
if (Comment::createAccess()) {
$links['comment-add'] = array(
'title' => t('Add comment'),
'href' => "node/$node->nid",
'attributes' => array('title' => t('Add a new comment to this page.')),
'fragment' => 'comment-form',
);
if ($comment_form_location == COMMENT_FORM_SEPARATE_PAGE) {
$links['comment-add']['href'] = "comment/reply/$node->nid";
}
}
else {
$links['comment-forbidden'] = array(
'title' => theme('comment_post_forbidden', array('node' => $node)),
'html' => TRUE,
);
}
}
}
elseif ($view_mode != 'search_index' && $view_mode != 'search_result') {
// Node in other display modes: add a "post comment" link if the user is
// allowed to post comments and if this node is allowing new comments.
// But we don't want this link if we're building the node for search
// indexing or constructing a search result excerpt.
if ($node->comment == COMMENT_NODE_OPEN) {
$comment_form_location = $node_type->settings['comment_form_location'];
if (Comment::createAccess()) {
// Show the "post comment" link if the form is on another page, or
// if there are existing comments that the link will skip past.
if ($comment_form_location == COMMENT_FORM_SEPARATE_PAGE || (!empty($node->comment_count) && user_access('access comments'))) {
$links['comment-add'] = array(
'title' => t('Add comment'),
'attributes' => array('title' => t('Share your thoughts and opinions related to this posting.')),
'href' => "node/$node->nid",
'fragment' => 'comment-form',
);
if ($comment_form_location == COMMENT_FORM_SEPARATE_PAGE) {
$links['comment-add']['href'] = "comment/reply/$node->nid";
}
}
}
else {
$links['comment-forbidden'] = array(
'title' => theme('comment_post_forbidden', array('node' => $node)),
'html' => TRUE,
);
}
}
}
$node->content['links']['comment'] = array(
'#theme' => 'links__node__comment',
'#links' => $links,
'#attributes' => array('class' => array('links', 'inline')),
);
}
}