i'm looking at the node_access function, and I see that it'll return true regardless of your hook_access if your user has the 'administer nodes' permission, so your form alter will need to be user id independent (i.e., lose that uid = 1). another approach might be to intercept it earlier. Since the list of nodes that you can't edit are fixed after the import, in your hook_menu of the module you could add something like: foreach($imported_node_ids as $nid) { $items[] = array('path' => 'node/'. $nid .'/edit', 'title' => t('edit'), 'callback' => 'node_page_edit', 'callback arguments' => array($node), 'access' => FALSE, 'weight' => 1, 'type' => MENU_LOCAL_TASK); } } But i'm not sure if that would work, or if it should be in the cached or non-cached section (how does drupal negotiate conflicting menu definitions? yes, i should rtfm or at least the code...). - Alan On 9/13/06, Augustin (Beginner) <drupal.beginner@wechange.org> wrote:
On Wednesday 13 September 2006 10:44 pm, Johan Forngren wrote:
I've learned that one should never call die/exit, since some functions will not be executed then (e.g. footer functions etc).
you're right, but this was a quick test, and die() never got executed anyway.
Anyway, the code below still does not work, because it also prevent user #1 to run cron.php which is needed to import the nodes. I'll add another check to see the requested URI to allow cron to do its job.
function demexp_form_alter($form_id, &$form) { global $user; if ($form_id == 'demexp_question_node_form' AND $user->uid == 1) { echo $user->uid; drupal_set_message( t('You may not create or modify a demexp_question node'), 'error'); drupal_goto('<front>'); }
It's not that urgent, so I still have time to look for the best solution.
thanks,
Augustin.
-- http://www.wechange.org/ Because we and the world need to change.
http://www.reuniting.info/ Intimate Relationships, peace and harmony in the couple.
-- Alan Dixon, Web Developer http://alan.g.dixon.googlepages.com/