_content_translation_form_language_content_settings_form_alter(array &$form, FormStateInterface $form_state)
(proxied) Implements hook_form_FORM_ID_alter().
File
- core/modules/content_translation/content_translation.admin.inc, line 79
- The content translation administration forms.
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 | function _content_translation_form_language_content_settings_form_alter( array & $form , FormStateInterface $form_state ) { // Inject into the content language settings the translation settings if the // user has the required permission. if (!\Drupal::currentUser()->hasPermission( 'administer content translation' )) { return ; } $content_translation_manager = \Drupal::service( 'content_translation.manager' ); $default = $form [ 'entity_types' ][ '#default_value' ]; foreach ( $default as $entity_type_id => $enabled ) { $default [ $entity_type_id ] = $enabled || $content_translation_manager ->isEnabled( $entity_type_id ) ? $entity_type_id : FALSE; } $form [ 'entity_types' ][ '#default_value' ] = $default ; $form [ '#attached' ][ 'library' ][] = 'content_translation/drupal.content_translation.admin' ; $entity_manager = Drupal::entityManager(); $bundle_info_service = \Drupal::service( 'entity_type.bundle.info' ); foreach ( $form [ '#labels' ] as $entity_type_id => $label ) { $entity_type = $entity_manager ->getDefinition( $entity_type_id ); $storage_definitions = $entity_type instanceof ContentEntityTypeInterface ? $entity_manager ->getFieldStorageDefinitions( $entity_type_id ) : array (); $entity_type_translatable = $content_translation_manager ->isSupported( $entity_type_id ); foreach ( $bundle_info_service ->getBundleInfo( $entity_type_id ) as $bundle => $bundle_info ) { // Here we do not want the widget to be altered and hold also the "Enable // translation" checkbox, which would be redundant. Hence we add this key // to be able to skip alterations. Alter the title and display the message // about UI integration. $form [ 'settings' ][ $entity_type_id ][ $bundle ][ 'settings' ][ 'language' ][ '#content_translation_skip_alter' ] = TRUE; if (! $entity_type_translatable ) { $form [ 'settings' ][ $entity_type_id ][ '#title' ] = t( '@label (Translation is not supported).' , array ( '@label' => $entity_type ->getLabel())); continue ; } $fields = $entity_manager ->getFieldDefinitions( $entity_type_id , $bundle ); if ( $fields ) { foreach ( $fields as $field_name => $definition ) { if ( $definition ->isComputed() || (! empty ( $storage_definitions [ $field_name ]) && _content_translation_is_field_translatability_configurable( $entity_type , $storage_definitions [ $field_name ]))) { $form [ 'settings' ][ $entity_type_id ][ $bundle ][ 'fields' ][ $field_name ] = array ( '#label' => $definition ->getLabel(), '#type' => 'checkbox' , '#default_value' => $definition ->isTranslatable(), ); // Display the column translatability configuration widget. $column_element = content_translation_field_sync_widget( $definition , "settings[{$entity_type_id}][{$bundle}][columns][{$field_name}]" ); if ( $column_element ) { $form [ 'settings' ][ $entity_type_id ][ $bundle ][ 'columns' ][ $field_name ] = $column_element ; } } } if (! empty ( $form [ 'settings' ][ $entity_type_id ][ $bundle ][ 'fields' ])) { // Only show the checkbox to enable translation if the bundles in the // entity might have fields and if there are fields to translate. $form [ 'settings' ][ $entity_type_id ][ $bundle ][ 'translatable' ] = array ( '#type' => 'checkbox' , '#default_value' => $content_translation_manager ->isEnabled( $entity_type_id , $bundle ), ); } } } } $form [ '#validate' ][] = 'content_translation_form_language_content_settings_validate' ; $form [ '#submit' ][] = 'content_translation_form_language_content_settings_submit' ; } |
Please login to continue.