--- modules/node/node.module.orig 2008-08-13 20:28:56.000000000 +0200 +++ modules/node/node.module 2008-08-13 20:29:23.000000000 +0200 @@ -2065,10 +2065,6 @@ if (empty($account)) { $account = $user; } - // If the node is in a restricted format, disallow editing. - if ($op == 'update' && !filter_access($node->format)) { - return FALSE; - } if (user_access('administer nodes', $account)) { return TRUE; --- modules/filter/filter.module.orig 2008-08-11 20:01:51.000000000 +0200 +++ modules/filter/filter.module 2008-08-13 20:31:25.000000000 +0200 @@ -142,6 +142,23 @@ } /** + * Implementation of hook_form_alter(). + */ +function filter_form_alter(&$form, $form_state, $form_id) { + if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id && !empty($form['nid']['#value'])) { + foreach (element_children($form) as $key) { + if (isset($form[$key]['format'])) { + if (!filter_access($form['#node']->format)) { + $form[$key]['#access'] = false; + $form['disabled_'. $key]['format'] = array('#type' => 'value', '#value' => $form['#node']->format); + $form['disabled_'. $key]['#markup'] = t('%title has been disabled because you don\'t have the proper permissions to edit this field.', array('%title' => $form[$key]['body']['#title'])); + } + } + } + } +} + +/** * Implementation of hook_perm(). */ function filter_perm() {