Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 93 |
| ContentLanguageSettingsForm | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
306 | |
0.00% |
0 / 93 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| getFormId | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| buildForm | |
0.00% |
0 / 1 |
132 | |
0.00% |
0 / 75 |
|||
| submitForm | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 10 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\language\Form\ContentLanguageSettingsForm. | |
| */ | |
| namespace Drupal\language\Form; | |
| use Drupal\Core\Entity\ContentEntityTypeInterface; | |
| use Drupal\Core\Entity\EntityManagerInterface; | |
| use Drupal\Core\Form\FormBase; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Drupal\language\Entity\ContentLanguageSettings; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| /** | |
| * Configure the content language settings for this site. | |
| */ | |
| class ContentLanguageSettingsForm extends FormBase { | |
| /** | |
| * The entity manager. | |
| * | |
| * @var \Drupal\Core\Entity\EntityManagerInterface | |
| */ | |
| protected $entityManager; | |
| /** | |
| * Constructs a ContentLanguageSettingsForm object. | |
| * | |
| * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
| * The entity manager. | |
| */ | |
| public function __construct(EntityManagerInterface $entity_manager) { | |
| $this->entityManager = $entity_manager; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container) { | |
| return new static( | |
| $container->get('entity.manager') | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getFormId() { | |
| return 'language_content_settings_form'; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| 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; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function submitForm(array &$form, FormStateInterface $form_state) { | |
| foreach ($form_state->getValue('settings') as $entity_type => $entity_settings) { | |
| foreach ($entity_settings as $bundle => $bundle_settings) { | |
| $config = ContentLanguageSettings::loadByEntityTypeBundle($entity_type, $bundle); | |
| $config->setDefaultLangcode($bundle_settings['settings']['language']['langcode']) | |
| ->setLanguageAlterable($bundle_settings['settings']['language']['language_alterable']) | |
| ->save(); | |
| } | |
| } | |
| drupal_set_message($this->t('Settings successfully updated.')); | |
| } | |
| } |