I am using entity_translation module for translating node titles. And with this Translate tab appears on node view like in screenshot.
I am trying to override titles and access permissions for this menu tab and found that its coded in /sites/all/modules/entity_translation/entity_translation.node.inc like below:
/**
* Node-specific menu alterations.
*/
function entity_translation_node_menu_alter(&$items, $backup) {
if (isset($backup['node'])) {
$item = $backup['node'];
// Preserve the menu router item defined by other modules.
$callback['page callback'] = $item['page callback'];
$callback['file'] = $item['file'];
$callback['module'] = $item['module'];
$access_arguments = array_merge(array(1, $item['access callback']), $item['access arguments']);
}
else {
$callback = FALSE;
$access_arguments = array(1);
}
$items['node/%node/translate']['page callback'] = 'entity_translation_overview';
$items['node/%node/translate']['page arguments'] = array('node', 1, $callback);
$items['node/%node/translate']['access arguments'] = $access_arguments;
$items['node/%node/translate']['access callback'] = 'entity_translation_node_tab_access';
$items['node/%node/translate']['file'] = 'entity_translation.admin.inc';
$items['node/%node/translate']['module'] = 'entity_translation';
}
In my custom module I tried overriding like this:
function my_module_node_menu_alter(&$items, $backup) {
$items['node/%node/translate']['title'] = "My New Title";
$items['node/%node/translate']['access callback'] = 'my_module_transaltion_access';
}
function my_module_transaltion_access(){
// code for my permissions according to user roles.
}
But I am not able to alter this menu item. Please suggest what is right way to do this ?
UPDATE:
function my_module_menu_alter(&$menu,&$items) {
$items['node/%node/translate']['access callback'] = "my_module_transaltion_access";
}
function my_module_implements_alter(&$implementations, $hook) {
switch ($hook) {
case 'menu_alter':
// Move some of our hook implementations to the end of the list.
$group = $implementations['my_module'];
unset($implementations['my_module']);
$implementations['my_module'] = $group;
break;
}
}
Thanks!