content_translation_field_sync_widget(FieldDefinitionInterface $field, $element_name = 'third_party_settings[content_translation][translation_sync]')
Returns a form element to configure field synchronization.
Parameters
\Drupal\Core\Field\FieldDefinitionInterface $field: A field definition object.
string $element_name: (optional) The element name, which is added to drupalSettings so that javascript can manipulate the form element.
Return value
array A form element to configure field synchronization.
File
- core/modules/content_translation/content_translation.admin.inc, line 29
- 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 | function content_translation_field_sync_widget(FieldDefinitionInterface $field , $element_name = 'third_party_settings[content_translation][translation_sync]' ) { // No way to store field sync information on this field. if (!( $field instanceof ThirdPartySettingsInterface)) { return array (); } $element = array (); $definition = \Drupal::service( 'plugin.manager.field.field_type' )->getDefinition( $field -> getType ()); $column_groups = $definition [ 'column_groups' ]; if (! empty ( $column_groups ) && count ( $column_groups ) > 1) { $options = []; $default = []; $require_all_groups_for_translation = []; foreach ( $column_groups as $group => $info ) { $options [ $group ] = $info [ 'label' ]; $default [ $group ] = ! empty ( $info [ 'translatable' ]) ? $group : FALSE; if (! empty ( $info [ 'require_all_groups_for_translation' ])) { $require_all_groups_for_translation [] = $group ; } } $default = $field ->getThirdPartySetting( 'content_translation' , 'translation_sync' , $default ); $element = array ( '#type' => 'checkboxes' , '#title' => t( 'Translatable elements' ), '#options' => $options , '#default_value' => $default , ); if ( $require_all_groups_for_translation ) { // The actual checkboxes are sometimes rendered separately and the parent // element is ignored. Attach to the first option to ensure that this // does not get lost. $element [key( $options )][ '#attached' ][ 'drupalSettings' ][ 'contentTranslationDependentOptions' ] = [ 'dependent_selectors' => [ $element_name => $require_all_groups_for_translation ], ]; $element [key( $options )][ '#attached' ][ 'library' ][] = 'content_translation/drupal.content_translation.admin' ; } } return $element ; } |
Please login to continue.