Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
0355caac
Commit
0355caac
authored
Aug 08, 2009
by
webchick
Browse files
#537654
by catch: Tidy up comment links, and remove hook_link() in favour of hook_page_alter().
parent
1da6ef52
Changes
3
Hide whitespace changes
Inline
Side-by-side
modules/comment/comment.module
View file @
0355caac
...
...
@@ -838,6 +838,66 @@ function comment_build_content($comment, $build_mode = 'full') {
return
$comment
;
}
/**
* Helper function, build links for an individual comment.
*
* Adds reply, edit, delete etc. depending on the current user permissions.
*
* @param $comment
* The comment object.
* @return
* A structured array of links.
*/
function
comment_links
(
$comment
)
{
$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
;
}
}
return
$links
;
}
/**
* Construct a drupal_render() style array from an array of loaded comments.
*
...
...
@@ -1323,80 +1383,6 @@ 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.
...
...
modules/node/node.module
View file @
0355caac
...
...
@@ -1594,27 +1594,6 @@ function theme_node_search_admin($form) {
return
$output
;
}
/**
* Implement hook_link().
*/
function
node_link
(
$type
,
$node
,
$build_mode
)
{
$links
=
array
();
if
(
$type
==
'node'
)
{
if
(
$build_mode
==
'teaser'
)
{
$links
[
'node_read_more'
]
=
array
(
'title'
=>
t
(
'Read more'
),
'href'
=>
"node/
$node->nid
"
,
// The title attribute gets escaped when the links are processed, so
// there is no need to escape here.
'attributes'
=>
array
(
'title'
=>
t
(
'Read the rest of !title.'
,
array
(
'!title'
=>
$node
->
title
)))
);
}
}
return
$links
;
}
function
_node_revision_access
(
$node
,
$op
=
'view'
)
{
static
$access
=
array
();
if
(
!
isset
(
$access
[
$node
->
vid
]))
{
...
...
modules/system/system.api.php
View file @
0355caac
...
...
@@ -511,71 +511,6 @@ function hook_image_toolkits() {
);
}
/**
* Define internal Drupal links.
*
* This hook enables modules to add links to many parts of Drupal. Links
* may be added in the navigation block, for example.
*
* The returned array should be a keyed array of link entries. Each link can
* be in one of two formats.
*
* The first format will use the l() function to render the link:
* - attributes: Optional. See l() for usage.
* - fragment: Optional. See l() for usage.
* - href: Required. The URL of the link.
* - html: Optional. See l() for usage.
* - query: Optional. See l() for usage.
* - title: Required. The name of the link.
*
* The second format can be used for non-links. Leaving out the href index will
* select this format:
* - title: Required. The text or HTML code to display.
* - attributes: Optional. An associative array of HTML attributes to apply to the span tag.
* - html: Optional. If not set to true, check_plain() will be run on the title before it is displayed.
*
* @param $type
* An identifier declaring what kind of link is being requested.
* Possible values:
* - comment: Links to be placed below a comment being viewed.
* @param $object
* A comment object.
* @param $build_mode
* Build mode for the node, e.g. 'full', 'teaser'...
* @return
* An array of the requested links.
*
*/
function
hook_link
(
$type
,
$object
,
$build_mode
)
{
$links
=
array
();
if
(
$type
==
'comment'
)
{
$links
=
comment_links
(
$object
,
FALSE
);
return
$links
;
}
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.
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment