protected BlockForm::buildVisibilityInterface(array $form, FormStateInterface $form_state)
Helper function for building the visibility UI form.
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 array with the visibility UI added in.
File
- core/modules/block/src/BlockForm.php, line 226
Class
- BlockForm
- Provides form for block instance forms.
Namespace
Drupal\block
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 | protected function buildVisibilityInterface( array $form , FormStateInterface $form_state ) { $form [ 'visibility_tabs' ] = [ '#type' => 'vertical_tabs' , '#title' => $this ->t( 'Visibility' ), '#parents' => [ 'visibility_tabs' ], '#attached' => [ 'library' => [ 'block/drupal.block' , ], ], ]; // @todo Allow list of conditions to be configured in $visibility = $this ->entity->getVisibility(); foreach ( $this ->manager->getDefinitionsForContexts( $form_state ->getTemporaryValue( 'gathered_contexts' )) as $condition_id => $definition ) { // Don't display the current theme condition. if ( $condition_id == 'current_theme' ) { continue ; } // Don't display the language condition until we have multiple languages. if ( $condition_id == 'language' && ! $this ->language->isMultilingual()) { continue ; } /** @var \Drupal\Core\Condition\ConditionInterface $condition */ $condition = $this ->manager->createInstance( $condition_id , isset( $visibility [ $condition_id ]) ? $visibility [ $condition_id ] : []); $form_state ->set([ 'conditions' , $condition_id ], $condition ); $condition_form = $condition ->buildConfigurationForm([], $form_state ); $condition_form [ '#type' ] = 'details' ; $condition_form [ '#title' ] = $condition ->getPluginDefinition()[ 'label' ]; $condition_form [ '#group' ] = 'visibility_tabs' ; $form [ $condition_id ] = $condition_form ; } if (isset( $form [ 'node_type' ])) { $form [ 'node_type' ][ '#title' ] = $this ->t( 'Content types' ); $form [ 'node_type' ][ 'bundles' ][ '#title' ] = $this ->t( 'Content types' ); $form [ 'node_type' ][ 'negate' ][ '#type' ] = 'value' ; $form [ 'node_type' ][ 'negate' ][ '#title_display' ] = 'invisible' ; $form [ 'node_type' ][ 'negate' ][ '#value' ] = $form [ 'node_type' ][ 'negate' ][ '#default_value' ]; } if (isset( $form [ 'user_role' ])) { $form [ 'user_role' ][ '#title' ] = $this ->t( 'Roles' ); unset( $form [ 'user_role' ][ 'roles' ][ '#description' ]); $form [ 'user_role' ][ 'negate' ][ '#type' ] = 'value' ; $form [ 'user_role' ][ 'negate' ][ '#value' ] = $form [ 'user_role' ][ 'negate' ][ '#default_value' ]; } if (isset( $form [ 'request_path' ])) { $form [ 'request_path' ][ '#title' ] = $this ->t( 'Pages' ); $form [ 'request_path' ][ 'negate' ][ '#type' ] = 'radios' ; $form [ 'request_path' ][ 'negate' ][ '#default_value' ] = (int) $form [ 'request_path' ][ 'negate' ][ '#default_value' ]; $form [ 'request_path' ][ 'negate' ][ '#title_display' ] = 'invisible' ; $form [ 'request_path' ][ 'negate' ][ '#options' ] = [ $this ->t( 'Show for the listed pages' ), $this ->t( 'Hide for the listed pages' ), ]; } if (isset( $form [ 'language' ])) { $form [ 'language' ][ 'negate' ][ '#type' ] = 'value' ; $form [ 'language' ][ 'negate' ][ '#value' ] = $form [ 'language' ][ 'negate' ][ '#default_value' ]; } return $form ; } |
Please login to continue.