/**
  * {@inheritdoc}
  */
 public function submitForm(array &$form, FormStateInterface $form_state)
 {
     $bundles = $this->entityManager->getAllBundleInfo();
     $values = $form_state->getValues();
     $entity_values = $values['entity_types'];
     $config = $this->config('xmlsitemap.settings');
     $settings = $form_state->getValue('settings');
     foreach ($entity_values as $key => $value) {
         if ($value) {
             foreach ($bundles[$key] as $bundle_key => $bundle_value) {
                 if (!$values['settings'][$key]['types'][$bundle_key]) {
                     xmlsitemap_link_bundle_delete($key, $bundle_key, TRUE);
                 } else {
                     if (!xmlsitemap_link_bundle_check_enabled($key, $bundle_key)) {
                         xmlsitemap_link_bundle_enable($key, $bundle_key);
                     }
                 }
             }
         } else {
             foreach ($bundles[$key] as $bundle_key => $bundle_value) {
                 xmlsitemap_link_bundle_delete($key, $bundle_key, TRUE);
             }
         }
     }
     parent::submitForm($form, $form_state);
 }
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, array &$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->isTranslatable()) {
             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) {
             $conf = language_get_default_configuration($entity_type_id, $bundle);
             if (!empty($conf['language_show']) || $conf['langcode'] != 'site_default') {
                 $default[$entity_type_id] = $entity_type_id;
             }
             $language_configuration[$entity_type_id][$bundle] = $conf;
         }
     }
     asort($labels);
     $form = array('#labels' => $labels, '#attached' => array('library' => array('language/drupal.language.admin')));
     $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 = parent::buildForm($form, $form_state);
     // @todo Remove this override. There are tests that check for explicitly for
     //   the button label which need to be adapted for that.
     //   https://drupal.org/node/2241727
     $form['actions']['submit']['#value'] = $this->t('Save');
     return $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 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->isTranslatable()) {
             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) {
             $conf = language_get_default_configuration($entity_type_id, $bundle);
             if (!empty($conf['language_show']) || $conf['langcode'] != LanguageInterface::LANGCODE_SITE_DEFAULT) {
                 $default[$entity_type_id] = $entity_type_id;
             }
             $language_configuration[$entity_type_id][$bundle] = $conf;
         }
     }
     asort($labels);
     $form = array('#labels' => $labels, '#attached' => array('library' => array('language/drupal.language.admin')));
     $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 = parent::buildForm($form, $form_state);
     return $form;
 }
 /**
  * {@inheritdoc}
  */
 public function getAllBundleInfo()
 {
     return $this->entityManager->getAllBundleInfo();
 }