Ok, so redirecting back to my original issue, I'm considering 2 solutions: 1. From my hook_menu(), iterate over all existing node/add/$type paths and replace the access parameter with one of my module's choosing. The global $_menu variable doesn't appear to be populated yet at the time hook_menu is called. It sets its menu items after the module_invoke_all('menu',TRUE) gets executed. This, therefore, will not work :( 2. Add another pass to the nodeapi hook for "access" that lets modules restrict access to specific nodes on a situational basis. This could be called from node_access(). I think this would address my needs. Thoughts on another nodeapi operation? -Mark Mark wrote:
Hello drupal-devel,
Lately, I've been working on the Node Relativity module, and I've come up against some issues that I'm having trouble overcoming. The main thing this module does is allow parent/child relationships to exist between nodes. One of the features of this module is the ability to require that a given type of node not exist unless it is a child of an appropriate parent node. This works all well and good from within the module (except for the occasional bug), but when a user goes to the "create content" page (node/add), they see listed before them every type of node that they have permission to create. I want to limit this view and the menu associated with it. This brings me to my question: How do I override what is displayed on the node/add page or override the node_access permissions in general for node types not defined by my module? I know that node.module checks node_list() and calls node_access('create',$node) on each of the node types to see if the current user has rights to create it. I suspect that there's some way that I haven't seen yet that the node is mapped back to the module that defines it. I would like to restrict this view even further such that users can create these nodes, but only under the appropriate circumstances.
Any ideas would be greatly appreciated.
Thanks, Mark Howell (javanaut)