function hide_revision_field_form_alter in Hide Revision Field 8
Same name and namespace in other branches
- 8.2 hide_revision_field.module \hide_revision_field_form_alter()
Implements hook_form_alter().
Alter entity bundle forms to add checkbox to control visibility of revision information fields per bundle. Also alter entity create/edit forms to disable the visibility of revision information field if it is disabled for the bundle.
File
- ./
hide_revision_field.module, line 20 - hide_revision_field.module Manages hiding revision information fields on revisionable entities (ie Node or Media) edit/create forms.
Code
function hide_revision_field_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if (in_array($form_id, [
'node_type_edit_form',
'media_bundle_edit_form',
])) {
$entity = $form_state
->getFormObject()
->getEntity();
$form['workflow']['hide_revision_fieldset'] = [
'#type' => 'fieldset',
'#title' => t('Revision Field Visibility'),
'hide_revision_field' => [
'#type' => 'checkbox',
'#title' => t('Hide'),
'#default_value' => $entity
->getThirdPartySetting('hide_revision_field', 'hide', 0),
],
'hide_revision_field_personalizable' => [
'#type' => 'checkbox',
'#title' => t('Allow Per User Settings'),
'#default_value' => $entity
->getThirdPartySetting('hide_revision_field', 'personalizable', TRUE),
],
];
$form['#entity_builders'][] = 'hide_revision_field_bundle_builder';
}
$info = $form_state
->getBuildInfo();
if (isset($info['base_form_id']) && in_array($info['base_form_id'], [
'node_form',
'media_form',
])) {
// Check the user has permissions to view revision fields.
if (!\Drupal::currentUser()
->hasPermission('view revision field')) {
$form['revision_information']['#access'] = FALSE;
return;
}
switch ($info['base_form_id']) {
case 'node_form':
$type = 'node_type';
break;
case 'media_form':
$type = 'media_bundle';
break;
}
$bundle = entity_load($type, $form_state
->getFormObject()
->getEntity()
->bundle());
if ($user_id = \Drupal::currentUser()
->id() && $bundle
->getThirdPartySetting('hide_revision_field', 'personalizable', TRUE)) {
$personalization = $bundle
->getThirdPartySetting('hide_revision_field', 'personalization');
if (isset($personalization[$user_id])) {
if ($personalization[$user_id]['hide']) {
$form['revision_information']['#access'] = FALSE;
}
return;
}
}
if ($bundle
->getThirdPartySetting('hide_revision_field', 'hide')) {
$form['revision_information']['#access'] = FALSE;
}
}
}