public Rearrange::buildForm(array $form, FormStateInterface $form_state)
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- core/modules/views_ui/src/Form/Ajax/Rearrange.php, line 48
Class
- Rearrange
- Provides a rearrange form for Views handlers.
Namespace
Drupal\views_ui\Form\Ajax
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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | public function buildForm( array $form , FormStateInterface $form_state ) { $view = $form_state ->get( 'view' ); $display_id = $form_state ->get( 'display_id' ); $type = $form_state ->get( 'type' ); $types = ViewExecutable::getHandlerTypes(); $executable = $view ->getExecutable(); if (! $executable ->setDisplay( $display_id )) { $form [ 'markup' ] = array ( '#markup' => $this ->t( 'Invalid display id @display' , array ( '@display' => $display_id ))); return $form ; } $display = & $executable ->displayHandlers->get( $display_id ); $form [ '#title' ] = $this ->t( 'Rearrange @type' , array ( '@type' => $types [ $type ][ 'ltitle' ])); $form [ '#section' ] = $display_id . 'rearrange-item' ; if ( $display ->defaultableSections( $types [ $type ][ 'plural' ])) { $section = $types [ $type ][ 'plural' ]; $form_state ->set( 'section' , $section ); views_ui_standard_display_dropdown( $form , $form_state , $section ); } $count = 0; // Get relationship labels $relationships = array (); foreach ( $display ->getHandlers( 'relationship' ) as $id => $handler ) { $relationships [ $id ] = $handler ->adminLabel(); } $form [ 'fields' ] = array ( '#type' => 'table' , '#header' => array ( '' , $this ->t( 'Weight' ), $this ->t( 'Remove' )), '#empty' => $this ->t( 'No fields available.' ), '#tabledrag' => array ( array ( 'action' => 'order' , 'relationship' => 'sibling' , 'group' => 'weight' , ) ), '#tree' => TRUE, '#prefix' => '<div class="scroll" data-drupal-views-scroll>' , '#suffix' => '</div>' , ); foreach ( $display ->getOption( $types [ $type ][ 'plural' ]) as $id => $field ) { $form [ 'fields' ][ $id ] = array (); $form [ 'fields' ][ $id ][ '#attributes' ] = array ( 'class' => array ( 'draggable' ), 'id' => 'views-row-' . $id ); $handler = $display ->getHandler( $type , $id ); if ( $handler ) { $name = $handler ->adminLabel() . ' ' . $handler ->adminSummary(); if (! empty ( $field [ 'relationship' ]) && ! empty ( $relationships [ $field [ 'relationship' ]])) { $name = '(' . $relationships [ $field [ 'relationship' ]] . ') ' . $name ; } $markup = $name ; } else { $name = $id ; $markup = $this ->t( 'Broken field @id' , array ( '@id' => $id )); } $form [ 'fields' ][ $id ][ 'name' ] = array ( '#markup' => $markup ); $form [ 'fields' ][ $id ][ 'weight' ] = array ( '#type' => 'textfield' , '#default_value' => ++ $count , '#attributes' => array ( 'class' => array ( 'weight' )), '#title' => t( 'Weight for @title' , array ( '@title' => $name )), '#title_display' => 'invisible' , ); $form [ 'fields' ][ $id ][ 'removed' ] = array ( '#type' => 'checkbox' , '#title' => t( 'Remove @title' , array ( '@title' => $name )), '#title_display' => 'invisible' , '#id' => 'views-removed-' . $id , '#attributes' => array ( 'class' => array ( 'views-remove-checkbox' )), '#default_value' => 0, '#suffix' => \Drupal::l(SafeMarkup::format( '<span>@text</span>' , array ( '@text' => $this ->t( 'Remove' ))), Url::fromRoute( '<none>' , array (), array ( 'attributes' => array ( 'id' => 'views-remove-link-' . $id , 'class' => array ( 'views-hidden' , 'views-button-remove' , 'views-remove-link' ), 'alt' => $this ->t( 'Remove this item' ), 'title' => $this ->t( 'Remove this item' )), )) ), ); } $view ->getStandardButtons( $form , $form_state , 'views_ui_rearrange_form' ); return $form ; } |
Please login to continue.