function vppn_form_node_form_alter in View Permission Per Node 7
Implements hook_form_BASE_FORM_ID_alter().
File
- ./
vppn.module, line 54 - Configuration for VPPN.
Code
function vppn_form_node_form_alter(&$form) {
// Make sure it's a valid type.
if (empty($form['type']['#value']) || !variable_get('vppn_node_' . $form['type']['#value'], 0)) {
// Not a VPPN form.
return;
}
// VPPN vertical tab settings.
$form['vppn'] = array(
'#type' => 'fieldset',
'#access' => user_access('use vppn'),
'#title' => t('View Access'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
// Make it a vtab.
'#group' => 'additional_settings',
'#attributes' => array(
'class' => array(
'node-form-vppn',
),
),
// Put just below publishing options et al.
'#weight' => !empty($form['options']['#weight']) ? $form['options']['#weight'] + 1 : 96,
);
// Add a description.
$form['vppn']['description'] = array(
// Consistent spacing is nice.
'#prefix' => '<div class="form-item">',
'#suffix' => '</div>',
'#markup' => t('Select which roles can view this node. Select none for default.'),
);
// Get the default roles.
$default_roles = _vppn_get_node_defaults($form['#node']);
$default_roles = $default_roles ? $default_roles : array();
// Role checkboxes.
$form['vppn']['vppn_roles'] = array(
'#type' => 'checkboxes',
'#title' => t('Select roles'),
'#title_display' => 'invisible',
'#options' => array(),
'#default_value' => $default_roles,
);
// Get all user roles.
$user_roles = user_roles();
// Get users that can bypass access control (skip anon - that would be weird).
$user_roles_bypass = user_roles(TRUE, 'bypass node access');
// Remove the users that can bypass access control.
$user_roles = array_diff_key($user_roles, $user_roles_bypass);
// Each non-bypass role.
foreach ($user_roles as $role_id => $role_name) {
$form['vppn']['vppn_roles']['#options'][$role_id] = $role_name;
}
// Add submission handler.
$form['actions']['submit']['#submit'][] = 'vppn_node_form_submit';
}