protected NegotiationConfigureForm::configureFormTable(array &$form, $type)
Builds a language negotiation method configuration table.
Parameters
array $form: The language negotiation configuration form.
string $type: The language type to generate the table for.
File
- core/modules/language/src/Form/NegotiationConfigureForm.php, line 216
Class
- NegotiationConfigureForm
- Configure the selected language negotiation method for this site.
Namespace
Drupal\language\Form
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 95 96 97 98 99 100 101 | protected function configureFormTable( array & $form , $type ) { $info = $form [ '#language_types_info' ][ $type ]; $table_form = array ( '#title' => $this ->t( '@type language detection' , array ( '@type' => $info [ 'name' ])), '#tree' => TRUE, '#description' => $info [ 'description' ], '#language_negotiation_info' => array (), '#show_operations' => FALSE, 'weight' => array ( '#tree' => TRUE), ); // Only show configurability checkbox for the unlocked language types. if ( empty ( $info [ 'locked' ])) { $configurable = $this ->languageTypes->get( 'configurable' ); $table_form [ 'configurable' ] = array ( '#type' => 'checkbox' , '#title' => $this ->t( 'Customize %language_name language detection to differ from Interface text language detection settings' , array ( '%language_name' => $info [ 'name' ])), '#default_value' => in_array( $type , $configurable ), '#attributes' => array ( 'class' => array ( 'language-customization-checkbox' )), '#attached' => array ( 'library' => array ( 'language/drupal.language.admin' ), ), ); } $negotiation_info = $form [ '#language_negotiation_info' ]; $enabled_methods = $this ->languageTypes->get( 'negotiation.' . $type . '.enabled' ) ? : array (); $methods_weight = $this ->languageTypes->get( 'negotiation.' . $type . '.method_weights' ) ? : array (); // Add missing data to the methods lists. foreach ( $negotiation_info as $method_id => $method ) { if (!isset( $methods_weight [ $method_id ])) { $methods_weight [ $method_id ] = isset( $method [ 'weight' ]) ? $method [ 'weight' ] : 0; } } // Order methods list by weight. asort( $methods_weight ); foreach ( $methods_weight as $method_id => $weight ) { // A language method might be no more available if the defining module has // been disabled after the last configuration saving. if (!isset( $negotiation_info [ $method_id ])) { continue ; } $enabled = isset( $enabled_methods [ $method_id ]); $method = $negotiation_info [ $method_id ]; // List the method only if the current type is defined in its 'types' key. // If it is not defined default to all the configurable language types. $types = array_flip (isset( $method [ 'types' ]) ? $method [ 'types' ] : $form [ '#language_types' ]); if (isset( $types [ $type ])) { $table_form [ '#language_negotiation_info' ][ $method_id ] = $method ; $method_name = $method [ 'name' ]; $table_form [ 'weight' ][ $method_id ] = array ( '#type' => 'weight' , '#title' => $this ->t( 'Weight for @title language detection method' , array ( '@title' => Unicode:: strtolower ( $method_name ))), '#title_display' => 'invisible' , '#default_value' => $weight , '#attributes' => array ( 'class' => array ( "language-method-weight-$type" )), '#delta' => 20, ); $table_form [ 'title' ][ $method_id ] = array ( '#plain_text' => $method_name ); $table_form [ 'enabled' ][ $method_id ] = array ( '#type' => 'checkbox' , '#title' => $this ->t( 'Enable @title language detection method' , array ( '@title' => Unicode:: strtolower ( $method_name ))), '#title_display' => 'invisible' , '#default_value' => $enabled , ); if ( $method_id === LanguageNegotiationSelected::METHOD_ID) { $table_form [ 'enabled' ][ $method_id ][ '#default_value' ] = TRUE; $table_form [ 'enabled' ][ $method_id ][ '#attributes' ] = array ( 'disabled' => 'disabled' ); } $table_form [ 'description' ][ $method_id ] = array ( '#markup' => $method [ 'description' ]); $config_op = array (); if (isset( $method [ 'config_route_name' ])) { $config_op [ 'configure' ] = array ( 'title' => $this ->t( 'Configure' ), 'url' => Url::fromRoute( $method [ 'config_route_name' ]), ); // If there is at least one operation enabled show the operation // column. $table_form [ '#show_operations' ] = TRUE; } $table_form [ 'operation' ][ $method_id ] = array ( '#type' => 'operations' , '#links' => $config_op , ); } } $form [ $type ] = $table_form ; } |
Please login to continue.