public ViewUI::submitItemAdd($form, FormStateInterface $form_state)
Submit handler for adding new item(s) to a view.
File
- core/modules/views_ui/src/ViewUI.php, line 425
Class
- ViewUI
- Stores UI related temporary settings.
Namespace
Drupal\views_ui
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 | public function submitItemAdd( $form , FormStateInterface $form_state ) { $type = $form_state ->get( 'type' ); $types = ViewExecutable::getHandlerTypes(); $section = $types [ $type ][ 'plural' ]; $display_id = $form_state ->get( 'display_id' ); // Handle the override select. list( $was_defaulted , $is_defaulted ) = $this ->getOverrideValues( $form , $form_state ); if ( $was_defaulted && ! $is_defaulted ) { // We were using the default display's values, but we're now overriding // the default display and saving values specific to this display. $display = & $this ->getExecutable()->displayHandlers->get( $display_id ); // setOverride toggles the override of this section. $display ->setOverride( $section ); } elseif (! $was_defaulted && $is_defaulted ) { // We used to have an override for this display, but the user now wants // to go back to the default display. // Overwrite the default display with the current form values, and make // the current display use the new default values. $display = & $this ->getExecutable()->displayHandlers->get( $display_id ); // optionsOverride toggles the override of this section. $display ->setOverride( $section ); } if (! $form_state ->isValueEmpty( 'name' ) && is_array ( $form_state ->getValue( 'name' ))) { // Loop through each of the items that were checked and add them to the view. foreach ( array_keys ( array_filter ( $form_state ->getValue( 'name' ))) as $field ) { list( $table , $field ) = explode ( '.' , $field , 2); if ( $cut = strpos ( $field , '$' )) { $field = substr ( $field , 0, $cut ); } $id = $this ->getExecutable()->addHandler( $display_id , $type , $table , $field ); // check to see if we have group by settings $key = $type ; // Footer,header and empty text have a different internal handler type(area). if (isset( $types [ $type ][ 'type' ])) { $key = $types [ $type ][ 'type' ]; } $item = array ( 'table' => $table , 'field' => $field , ); $handler = Views::handlerManager( $key )->getHandler( $item ); if ( $this ->getExecutable()->displayHandlers->get( 'default' )->useGroupBy() && $handler ->usesGroupBy()) { $this ->addFormToStack( 'handler-group' , $display_id , $type , $id ); } // check to see if this type has settings, if so add the settings form first if ( $handler && $handler ->hasExtraOptions()) { $this ->addFormToStack( 'handler-extra' , $display_id , $type , $id ); } // Then add the form to the stack $this ->addFormToStack( 'handler' , $display_id , $type , $id ); } } if (isset( $this ->form_cache)) { unset( $this ->form_cache); } // Store in cache $this ->cacheSet(); } |
Please login to continue.