protected NodeForm::actions(array $form, FormStateInterface $form_state)
Returns an array of supported actions for the current entity form.
@todo Consider introducing a 'preview' action here, since it is used by many entity types.
Overrides EntityForm::actions
File
- core/modules/node/src/NodeForm.php, line 232
Class
- NodeForm
- Form handler for the node edit forms.
Namespace
Drupal\node
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | protected function actions( array $form , FormStateInterface $form_state ) { $element = parent::actions( $form , $form_state ); $node = $this ->entity; $preview_mode = $node ->type->entity->getPreviewMode(); $element [ 'submit' ][ '#access' ] = $preview_mode != DRUPAL_REQUIRED || $this ->hasBeenPreviewed; // If saving is an option, privileged users get dedicated form submit // buttons to adjust the publishing status while saving in one go. // @todo This adjustment makes it close to impossible for contributed // modules to integrate with "the Save operation" of this form. Modules // need a way to plug themselves into 1) the ::submit() step, and // 2) the ::save() step, both decoupled from the pressed form button. if ( $element [ 'submit' ][ '#access' ] && \Drupal::currentUser()->hasPermission( 'administer nodes' )) { // isNew | prev status » default & publish label & unpublish label // 1 | 1 » publish & Save and publish & Save as unpublished // 1 | 0 » unpublish & Save and publish & Save as unpublished // 0 | 1 » publish & Save and keep published & Save and unpublish // 0 | 0 » unpublish & Save and keep unpublished & Save and publish // Add a "Publish" button. $element [ 'publish' ] = $element [ 'submit' ]; // If the "Publish" button is clicked, we want to update the status to "published". $element [ 'publish' ][ '#published_status' ] = TRUE; $element [ 'publish' ][ '#dropbutton' ] = 'save' ; if ( $node ->isNew()) { $element [ 'publish' ][ '#value' ] = t( 'Save and publish' ); } else { $element [ 'publish' ][ '#value' ] = $node ->isPublished() ? t( 'Save and keep published' ) : t( 'Save and publish' ); } $element [ 'publish' ][ '#weight' ] = 0; // Add a "Unpublish" button. $element [ 'unpublish' ] = $element [ 'submit' ]; // If the "Unpublish" button is clicked, we want to update the status to "unpublished". $element [ 'unpublish' ][ '#published_status' ] = FALSE; $element [ 'unpublish' ][ '#dropbutton' ] = 'save' ; if ( $node ->isNew()) { $element [ 'unpublish' ][ '#value' ] = t( 'Save as unpublished' ); } else { $element [ 'unpublish' ][ '#value' ] = ! $node ->isPublished() ? t( 'Save and keep unpublished' ) : t( 'Save and unpublish' ); } $element [ 'unpublish' ][ '#weight' ] = 10; // If already published, the 'publish' button is primary. if ( $node ->isPublished()) { unset( $element [ 'unpublish' ][ '#button_type' ]); } // Otherwise, the 'unpublish' button is primary and should come first. else { unset( $element [ 'publish' ][ '#button_type' ]); $element [ 'unpublish' ][ '#weight' ] = -10; } // Remove the "Save" button. $element [ 'submit' ][ '#access' ] = FALSE; } $element [ 'preview' ] = array ( '#type' => 'submit' , '#access' => $preview_mode != DRUPAL_DISABLED && ( $node ->access( 'create' ) || $node ->access( 'update' )), '#value' => t( 'Preview' ), '#weight' => 20, '#submit' => array ( '::submitForm' , '::preview' ), ); $element [ 'delete' ][ '#access' ] = $node ->access( 'delete' ); $element [ 'delete' ][ '#weight' ] = 100; return $element ; } |
Please login to continue.