You are here

function node_privacy_byrole_rolereference_action_form in node privacy byrole 6

Same name and namespace in other branches
  1. 5 node_privacy_byrole.module \node_privacy_byrole_rolereference_action_form()

File

./node_privacy_byrole.module, line 511
Set node access permissions by role.

Code

function node_privacy_byrole_rolereference_action_form($context) {
  $form = array();
  $form['#node']->node_privacy_byrole = isset($context['node_privacy_byrole']) ? $context['node_privacy_byrole'] : NULL;

  // Avoiding a notice since menu_form_alter assumes if $form['#node'] is set, $form['#node']->type will be also.
  $form['#node']->type = NULL;
  node_privacy_byrole_node_form($form);
  $form['node_privacy_byrole']['#collapsed'] = FALSE;
  unset($form['node_privacy_byrole']['#weight']);
  $form['node_privacy_byrole']['#title'] = t('Default permissions');
  $form['new'] = array(
    '#type' => 'fieldset',
    '#title' => t('New permission'),
    '#description' => t('The new permissions to set that will override the defaults. The value of the field is expected to match a numerical role id.'),
    '#collapsed' => FALSE,
    '#collapsible' => TRUE,
  );
  $fields = content_fields();
  $options = array();
  foreach ($fields as $field) {
    if ($field['type'] == 'rolereference') {
      $options[$field['field_name']] = t($field['widget']['label']) . ' (' . $field['field_name'] . ')';
    }
  }
  if (!count($options)) {
    drupal_set_message(t('This action cannot be applied because there are no rolereference fields currently available.'));
    drupal_goto(referer_uri());
  }
  asort($options, SORT_LOCALE_STRING);
  $form['new']['field'] = array(
    '#title' => t('Field'),
    '#type' => 'select',
    '#options' => $options,
    '#default_value' => isset($context['field']) ? $context['field'] : '',
  );
  unset($fields, $field, $options);
  $form['new']['permissions'] = array(
    '#title' => t('Permissions'),
    '#type' => 'checkboxes',
    '#options' => array(
      'view' => t('view'),
      'edit' => t('edit'),
      'delete' => t('delete'),
    ),
    '#default_value' => isset($context['permissions']) ? $context['permissions'] : array(),
    '#description' => t('Edit permission implies view. Delete permission implies edit.'),
  );
  $form['author'] = array(
    '#type' => 'fieldset',
    '#title' => t('Node Author'),
    '#collapsed' => FALSE,
    '#collapsible' => TRUE,
  );
  $form['author']['node_author'] = array(
    '#type' => 'checkboxes',
    '#options' => array(
      'view' => t('view'),
      'edit' => t('edit'),
      'delete' => t('delete'),
    ),
    '#default_value' => isset($context['node_author']) ? $context['node_author'] : array(),
    '#description' => t('Edit permission implies view. Delete permission implies edit.'),
  );
  return $form;
}