public ContentLanguageSettingsForm::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/language/src/Form/ContentLanguageSettingsForm.php, line 53
Class
- ContentLanguageSettingsForm
- Configure the content language settings 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 | public function buildForm( array $form , FormStateInterface $form_state ) { $entity_types = $this ->entityManager->getDefinitions(); $labels = array (); $default = array (); $bundles = $this ->entityManager->getAllBundleInfo(); $language_configuration = array (); foreach ( $entity_types as $entity_type_id => $entity_type ) { if (! $entity_type instanceof ContentEntityTypeInterface || ! $entity_type ->hasKey( 'langcode' ) || !isset( $bundles [ $entity_type_id ])) { continue ; } $labels [ $entity_type_id ] = $entity_type ->getLabel() ? : $entity_type_id ; $default [ $entity_type_id ] = FALSE; // Check whether we have any custom setting. foreach ( $bundles [ $entity_type_id ] as $bundle => $bundle_info ) { $config = ContentLanguageSettings::loadByEntityTypeBundle( $entity_type_id , $bundle ); if (! $config ->isDefaultConfiguration()) { $default [ $entity_type_id ] = $entity_type_id ; } $language_configuration [ $entity_type_id ][ $bundle ] = $config ; } } asort( $labels ); $form = array ( '#labels' => $labels , '#attached' => array ( 'library' => array ( 'language/drupal.language.admin' , ), ), '#attributes' => array ( 'class' => 'language-content-settings-form' , ), ); $form [ 'entity_types' ] = array ( '#title' => $this ->t( 'Custom language settings' ), '#type' => 'checkboxes' , '#options' => $labels , '#default_value' => $default , ); $form [ 'settings' ] = array ( '#tree' => TRUE); foreach ( $labels as $entity_type_id => $label ) { $entity_type = $entity_types [ $entity_type_id ]; $form [ 'settings' ][ $entity_type_id ] = array ( '#title' => $label , '#type' => 'container' , '#entity_type' => $entity_type_id , '#theme' => 'language_content_settings_table' , '#bundle_label' => $entity_type ->getBundleLabel() ? : $label , '#states' => array ( 'visible' => array ( ':input[name="entity_types[' . $entity_type_id . ']"]' => array ( 'checked' => TRUE), ), ), ); foreach ( $bundles [ $entity_type_id ] as $bundle => $bundle_info ) { $form [ 'settings' ][ $entity_type_id ][ $bundle ][ 'settings' ] = array ( '#type' => 'item' , '#label' => $bundle_info [ 'label' ], 'language' => array ( '#type' => 'language_configuration' , '#entity_information' => array ( 'entity_type' => $entity_type_id , 'bundle' => $bundle , ), '#default_value' => $language_configuration [ $entity_type_id ][ $bundle ], ), ); } } $form [ 'actions' ][ '#type' ] = 'actions' ; $form [ 'actions' ][ 'submit' ] = array ( '#type' => 'submit' , '#value' => $this ->t( 'Save configuration' ), '#button_type' => 'primary' , ); return $form ; } |
Please login to continue.