diff --git a/hide_revision_field.module b/hide_revision_field.module index db5d6ed..5c0e773 100644 --- a/hide_revision_field.module +++ b/hide_revision_field.module @@ -137,15 +137,20 @@ function hide_revision_field_form_alter(&$form, FormStateInterface $form_state, if ( $field = $entity_type->getRevisionMetadataKey('revision_log_message')) { if (isset($form[$field]['widget'][0]['value']['#type'])) { if ($form[$field]['widget'][0]['value']['#type'] === 'hidden') { - unset($form[$field]['#group']); - if (isset($form['revision'])) { - $form['revision']['#type'] = 'hidden'; + if (isset($form[$field]['widget'][0]['value']['#hide_revision']) && $form[$field]['widget'][0]['value']['#hide_revision'] == 1) { + unset($form[$field]['#group']); + if (isset($form['revision'])) { + $form['revision']['#type'] = 'hidden'; + $form['revision']['#value'] = $form['revision']['#default_value']; + } } } } else { if (isset($form['revision'])) { + unset($form[$field]['#group']); $form['revision']['#type'] = 'hidden'; + $form['revision']['#value'] = $form['revision']['#default_value']; } } } diff --git a/src/Plugin/Field/FieldWidget/RevisionLogWidget.php b/src/Plugin/Field/FieldWidget/RevisionLogWidget.php index 69cbb0e..aeb7c86 100644 --- a/src/Plugin/Field/FieldWidget/RevisionLogWidget.php +++ b/src/Plugin/Field/FieldWidget/RevisionLogWidget.php @@ -82,6 +82,7 @@ class RevisionLogWidget extends StringTextareaWidget implements ContainerFactory 'default' => '', 'permission_based' => FALSE, 'allow_user_settings' => TRUE, + 'hide_revision' => FALSE, ] + parent::defaultSettings(); } @@ -111,6 +112,19 @@ class RevisionLogWidget extends StringTextareaWidget implements ContainerFactory '%perm' => $this->fieldDefinition->getTargetEntityTypeId(), ]), ]; + $element['hide_revision'] = [ + '#type' => 'checkbox', + '#title' => t('Hide whole revision tab'), + '#default_value' => $settings['hide_revision'], + '#description' => $this->t('Hide the whole revision tab, otherwise only the revision log message field is hidden'), + '#states' => [ + 'visible' => [ + [ + ':input[name*="settings][show"]' => ['unchecked' => TRUE] + ] + ] + ] + ]; $element['default'] = [ '#type' => 'textfield', '#title' => t('Default'), @@ -133,6 +147,9 @@ class RevisionLogWidget extends StringTextareaWidget implements ContainerFactory else { $summary[] = $this->t('Hidden by default'); } + if ($settings['hide_revision'] && !$settings['show']) { + $summary[] = $this->t('Hide whole revision tab'); + } if ($settings['default']) { $summary[] = $this->t('Default value: %default', [ '%default' => $settings['default'], @@ -205,6 +222,7 @@ class RevisionLogWidget extends StringTextareaWidget implements ContainerFactory if (!$show) { $element['value']['#type'] = 'hidden'; + $element['value']['#hide_revision'] = $settings['hide_revision']; } return $element; }