--- nodeaccess.module.orig 2008-07-22 01:28:46.000000000 +0200 +++ nodeaccess.module 2008-11-05 09:30:38.000000000 +0100 @@ -162,12 +162,19 @@ function nodeaccess_admin_form(&$form_st foreach ($perms as $perm) { $opts[$perm['gid']] = $perm; } + $perms = variable_get('nodeaccess_'. $type .'_default', array()); + foreach ($perms as $perm) { + $defs[$perm['gid']] = $perm; + } // Set default role permissions for node type. foreach (user_roles() as $id => $role) { $form['nodeaccess'][$type]['roles'][$id]['name'] = array('#value' => $role); $form['nodeaccess'][$type]['roles'][$id]['grant_view'] = array('#type' => 'checkbox', '#default_value' => $opts[$id]['grant_view']); + $form['nodeaccess'][$type]['roles'][$id]['grant_view_default'] = array('#type' => 'checkbox', '#default_value' => $defs[$id]['grant_view_default']); $form['nodeaccess'][$type]['roles'][$id]['grant_update'] = array('#type' => 'checkbox', '#default_value' => $opts[$id]['grant_update']); + $form['nodeaccess'][$type]['roles'][$id]['grant_update_default'] = array('#type' => 'checkbox', '#default_value' => $defs[$id]['grant_update_default']); $form['nodeaccess'][$type]['roles'][$id]['grant_delete'] = array('#type' => 'checkbox', '#default_value' => $opts[$id]['grant_delete']); + $form['nodeaccess'][$type]['roles'][$id]['grant_delete_default'] = array('#type' => 'checkbox', '#default_value' => $defs[$id]['grant_delete_default']); } } $form['submit'] = array('#type' => 'submit', '#value' => t('Save Grants')); @@ -212,6 +219,11 @@ function nodeaccess_admin_form_submit($f $grants[] = array('gid' => $role, 'realm' => 'nodeaccess_rid', 'grant_view' => $val['grant_view'], 'grant_update' => $val['grant_update'], 'grant_delete' => $val['grant_delete']); } variable_set('nodeaccess_' . $type, $grants); + $grants = array(); + foreach ($form_values[$type]['roles'] as $role => $val) { + $grants[] = array('gid' => $role, 'realm' => 'nodeaccess_rid', 'grant_view_default' => $val['grant_view_default'], 'grant_update_default' => $val['grant_update_default'], 'grant_delete_default' => $val['grant_delete_default']); + } + variable_set('nodeaccess_'. $type .'_default', $grants); if ($form_values[$type]['show']) { $allowed_types[$type] = 1; } @@ -247,13 +259,16 @@ function theme_nodeaccess_admin_form_rol function theme_nodeaccess_admin_form_types($form) { $output = drupal_render($form['show']); $roles = element_children($form['roles']); - $header = array(t('Role'), t('View'), t('Edit'), t('Delete')); + $header = array(t('Role'), t('View'), t('View default'), t('Edit'), t('Edit default'), t('Delete'), t('Delete default')); foreach ($roles as $role) { $row = array(); $row[] = drupal_render($form['roles'][$role]['name']); $row[] = drupal_render($form['roles'][$role]['grant_view']); + $row[] = drupal_render($form['roles'][$role]['grant_view_default']); $row[] = drupal_render($form['roles'][$role]['grant_update']); + $row[] = drupal_render($form['roles'][$role]['grant_update_default']); $row[] = drupal_render($form['roles'][$role]['grant_delete']); + $row[] = drupal_render($form['roles'][$role]['grant_delete_default']); $rows[] = $row; } $output .= theme('table', $header, $rows); @@ -604,7 +619,18 @@ function nodeaccess_node_access_records( return; } // Need to find out if node has own grants or whether to use defaults. - $default = variable_get('nodeaccess_' . $node->type, array()); + $default = variable_get('nodeaccess_'. $node->type, array()); + if ($node->is_new) { + // Use the nodeaccess defaults instead of the nodeaccess perms for new nodes. + $default_default = variable_get('nodeaccess_'. $node->type .'_default', array()); + foreach ($default_default as $rid => $roledefault) { + foreach ($roledefault as $key => $value) { + if (substr($key, 0, 6) == 'grant_') { + $default[$rid][substr($key, 0, -8)] = $value; + } + } + } + } // Load priority setting. $priority = variable_get('nodeaccess-priority', 0); $result = db_result(db_query("SELECT count(*) FROM {nodeaccess} WHERE nid = %d", $node->nid));