theme-settings.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. /**
  3. * @file
  4. * Test to ensure theme compatibility with managed files.
  5. */
  6. use Drupal\Core\Form\FormStateInterface;
  7. use Drupal\file\Entity\File;
  8. /**
  9. * Implements hook_form_system_theme_settings_alter().
  10. */
  11. function test_theme_settings_form_system_theme_settings_alter(&$form, FormStateInterface $form_state) {
  12. $form['custom_logo'] = [
  13. '#type' => 'managed_file',
  14. '#title' => t('Secondary logo.'),
  15. '#default_value' => theme_get_setting('custom_logo'),
  16. '#progress_indicator' => 'bar',
  17. '#progress_message' => t('Please wait...'),
  18. '#upload_location' => 'public://test',
  19. '#upload_validators' => [
  20. 'file_validate_extensions' => ['gif png jpg jpeg'],
  21. ],
  22. ];
  23. $form['#submit'][] = 'test_theme_settings_form_system_theme_settings_submit';
  24. }
  25. /**
  26. * Test theme form settings submission handler.
  27. */
  28. function test_theme_settings_form_system_theme_settings_submit(&$form, FormStateInterface $form_state) {
  29. if ($file_id = $form_state->getValue(['custom_logo', '0'])) {
  30. $file = File::load($file_id);
  31. $file->setPermanent();
  32. $file->save();
  33. }
  34. }