- Accidentically committed two patches at once. Rolled back one of them. Sorry.

merge-requests/26/head
Dries Buytaert 2009-08-02 11:25:18 +00:00
parent 065346b366
commit eaf21849a1
2 changed files with 94 additions and 48 deletions

View File

@ -822,56 +822,9 @@ function comment_build_content($comment, $build_mode = 'full') {
$comment->content += field_attach_view('comment', $comment, $build_mode);
if (empty($comment->in_preview)) {
$links = array();
$node = node_load($comment->nid);
if ($node->comment == COMMENT_NODE_OPEN) {
if (user_access('administer comments') && user_access('post comments')) {
$links['comment_delete'] = array(
'title' => t('delete'),
'href' => "comment/delete/$comment->cid",
'html' => TRUE,
);
$links['comment_edit'] = array(
'title' => t('edit'),
'href' => "comment/edit/$comment->cid",
'html' => TRUE,
);
$links['comment_reply'] = array(
'title' => t('reply'),
'href' => "comment/reply/$comment->nid/$comment->cid",
'html' => TRUE,
);
if ($comment->status == COMMENT_NOT_PUBLISHED) {
$links['comment_approve'] = array(
'title' => t('approve'),
'href' => "comment/approve/$comment->cid",
'html' => TRUE,
);
}
}
elseif (user_access('post comments')) {
if (comment_access('edit', $comment)) {
$links['comment_edit'] = array(
'title' => t('edit'),
'href' => "comment/edit/$comment->cid",
'html' => TRUE,
);
}
$links['comment_reply'] = array(
'title' => t('reply'),
'href' => "comment/reply/$comment->nid/$comment->cid",
'html' => TRUE,
);
}
else {
$links['comment_forbidden']['title'] = theme('comment_post_forbidden', $node);
$links['comment_forbidden']['html'] = TRUE;
}
}
$comment->content['links']['comment'] = array(
'#theme' => 'links',
'#links' => $links,
'#links' => comment_links($comment),
'#attributes' => array('class' => 'links inline'),
);
}
@ -1370,6 +1323,80 @@ function comment_delete_multiple($cids) {
}
}
/**
* Implement hook_link().
*/
function comment_link($type, $object, $build_mode) {
if ($type == 'comment') {
$links = comment_links($object, FALSE);
return $links;
}
}
/**
* Build command links for a comment (e.g.\ edit, reply, delete) with respect to the current user's access permissions.
*
* @param $comment
* The comment to which the links will be related.
* @return
* An associative array containing the links.
*/
function comment_links(&$comment) {
global $user;
$links = array();
$node = node_load($comment->nid);
if ($node->comment == COMMENT_NODE_OPEN) {
if (user_access('administer comments') && user_access('post comments')) {
$links['comment_delete'] = array(
'title' => t('delete'),
'href' => "comment/delete/$comment->cid",
'html' => TRUE,
);
$links['comment_edit'] = array(
'title' => t('edit'),
'href' => "comment/edit/$comment->cid",
'html' => TRUE,
);
$links['comment_reply'] = array(
'title' => t('reply'),
'href' => "comment/reply/$comment->nid/$comment->cid",
'html' => TRUE,
);
if ($comment->status == COMMENT_NOT_PUBLISHED) {
$links['comment_approve'] = array(
'title' => t('approve'),
'href' => "comment/approve/$comment->cid",
'html' => TRUE,
);
}
}
elseif (user_access('post comments')) {
if (comment_access('edit', $comment)) {
$links['comment_edit'] = array(
'title' => t('edit'),
'href' => "comment/edit/$comment->cid",
'html' => TRUE,
);
}
$links['comment_reply'] = array(
'title' => t('reply'),
'href' => "comment/reply/$comment->nid/$comment->cid",
'html' => TRUE,
);
}
else {
$node = node_load($comment->nid);
$links['comment_forbidden']['title'] = theme('comment_post_forbidden', $node);
$links['comment_forbidden']['html'] = TRUE;
}
}
return $links;
}
/**
* Comment operations. Offer different update operations depending on
* which comment administration page is being viewed.

View File

@ -557,6 +557,25 @@ function hook_link($type, $object, $build_mode) {
return $links;
}
/**
* Perform alterations before links on a comment are rendered. One popular use of
* this hook is to modify/remove links from other modules. If you want to add a link
* to the links section of a node, use hook_link instead.
*
* @param $links
* Nested array of links for the node keyed by providing module.
* @param $node
* A node object that contains the links.
*/
function hook_link_alter(array &$links, $node) {
foreach ($links as $module => $link) {
if (strpos($module, 'taxonomy_term') !== FALSE) {
// Link back to the forum and not the taxonomy term page
$links[$module]['href'] = str_replace('taxonomy/term', 'forum', $link['href']);
}
}
}
/**
* Perform alterations profile items before they are rendered. You may omit/add/re-sort/re-categorize, etc.
*