function field_permissions_form_field_config_edit_form_alter in Field Permissions 8.2
Same name and namespace in other branches
- 8 field_permissions.module \field_permissions_form_field_config_edit_form_alter()
Implements hook_form_FORM_ID_alter().
See also
field_permissions_permissions_matrix()
File
- ./
field_permissions.module, line 72 - Contains field_permissions.module.
Code
function field_permissions_form_field_config_edit_form_alter(&$form, FormStateInterface $form_state) {
$account = \Drupal::currentUser();
/** @var \Drupal\field\FieldConfigInterface $field */
$field = $form_state
->getFormObject()
->getEntity();
if (!$account
->hasPermission('administer field permissions')) {
return $form;
}
// Remove on comment field.
if (FieldPermissionsService::isCommentField($field)) {
return $form;
}
$form['fid'] = [
'#type' => 'hidden',
'#value' => $field
->id(),
];
$form['field']['field_permissions'] = [
'#weight' => -10,
];
// Always add the 'not set' option, which isn't implemented as a plugin.
$options = [
FieldPermissionTypeInterface::ACCESS_PUBLIC => t('Not set'),
];
$descriptions = [
FieldPermissionTypeInterface::ACCESS_PUBLIC => [
'#description' => t('Field inherits content permissions.'),
],
];
$definitions = \Drupal::service('plugin.field_permissions.types.manager')
->getDefinitions();
foreach ($definitions as $id => $plugin) {
$options[$id] = $plugin['title'];
$descriptions[$id] = [
'#description' => $plugin['description'],
];
}
$form['field']['field_permissions']['type'] = [
'#title' => t('Field visibility and permissions'),
'#description' => t('<strong>These permissions apply to all instances of this field.</strong>'),
'#type' => 'radios',
'#options' => $options,
'#default_value' => \Drupal::service('field_permissions.permissions_service')
->fieldGetPermissionType($field
->getFieldStorageDefinition()),
];
// Add in the descriptions.
$form['field']['field_permissions']['type'] += $descriptions;
$form['actions']['submit']['#submit'][] = 'field_permission_field_config_edit_form_submit';
$form['#entity_builders'][] = 'field_permissions_field_config_edit_form_builder';
// Allow each plugin to add to or alter the form.
foreach ($definitions as $definition) {
$plugin = \Drupal::service('plugin.field_permissions.types.manager')
->createInstance($definition['id'], [], $field
->getFieldStorageDefinition());
if ($plugin instanceof AdminFormSettingsInterface) {
$plugin
->buildAdminForm($form, $form_state, \Drupal::service('entity_type.manager')
->getStorage('user_role'));
}
}
}