- public static function processActions($element, FormStateInterface $form_state, array &$form) {
-
- // We'll steal most of the button configuration from the default submit
- // button. However, NodeForm also hides that button for admins (as it adds
- // its own, too), so we have to restore it.
- $default_button = $form['actions']['submit'];
- $default_button['#access'] = TRUE;
-
- // Add a custom button for each transition we're allowing. The #dropbutton
- // property tells FAPI to cluster them all together into a single widget.
- $options = $element['#options'];
-
- $entity = $form_state->getFormObject()->getEntity();
- $translatable = !$entity->isNew() && $entity->isTranslatable();
- foreach ($options as $id => $label) {
- $button = [
- '#dropbutton' => 'save',
- '#moderation_state' => $id,
- '#weight' => -10,
- ];
-
- $button['#value'] = $translatable
- ? t('Save and @transition (this translation)', ['@transition' => $label])
- : t('Save and @transition', ['@transition' => $label]);
-
- $form['actions']['moderation_state_' . $id] = $button + $default_button;
- }
-
- // Hide the default buttons, including the specialty ones added by
- // NodeForm.
- foreach (['publish', 'unpublish', 'submit'] as $key) {
- $form['actions'][$key]['#access'] = FALSE;
- unset($form['actions'][$key]['#dropbutton']);
- }
-
- // Setup a callback to translate the button selection back into field
- // widget, so that it will get saved properly.
- $form['#entity_builders']['update_moderation_state'] = [get_called_class(), 'updateStatus'];
- return $element;