The default behaviour is that a user can't edit a node when they don't have access to its current input format, even if they do have the edit content type permission. I'd like to just hide the body field in those situations. Does anyone know of a contrib that does that? (I'm only interested in the body field, but a more general solution would be cool too.)
You could do it, but it would require some work.
- Use hook_menu_alter to change the access function used for node edits
- Create your own access function that is similar to core's access control, but allow users that doesn't have the filter permission to edit the node.
- Use hook_form_alter to hide the body field if the user can't use the selected filter
- You're done.
You have to be very careful about doing this, as if this isn't done right, it could potentially open for security holes.
Not really an answer, but there is AFAIK no way to change this without hacking core.
The check for this is directly in node_access() and can't be altered.
What you are trying to do is btw how it works in Drupal 7, see the corresponding issue.
In the end I didn't create a custom edit function, I followed googletorp's idea while trying to mitigate against the issues Berdir described. In case anyone's interested there's a module here.