DefaultConfigProvider.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Cms\Model\Wysiwyg\Gallery;
  8. class DefaultConfigProvider implements \Magento\Framework\Data\Wysiwyg\ConfigProviderInterface
  9. {
  10. /**
  11. * @var \Magento\Backend\Model\UrlInterface
  12. */
  13. private $backendUrl;
  14. /**
  15. * @var \Magento\Cms\Helper\Wysiwyg\Images
  16. */
  17. private $imagesHelper;
  18. /**
  19. * @var array
  20. */
  21. private $windowSize;
  22. /**
  23. * @var string|null
  24. */
  25. private $currentTreePath;
  26. /**
  27. * @param \Magento\Backend\Model\UrlInterface $backendUrl
  28. * @param \Magento\Cms\Helper\Wysiwyg\Images $imagesHelper
  29. * @param array $windowSize
  30. * @param string|null $currentTreePath
  31. */
  32. public function __construct(
  33. \Magento\Backend\Model\UrlInterface $backendUrl,
  34. \Magento\Cms\Helper\Wysiwyg\Images $imagesHelper,
  35. array $windowSize = [],
  36. $currentTreePath = null
  37. ) {
  38. $this->backendUrl = $backendUrl;
  39. $this->imagesHelper = $imagesHelper;
  40. $this->windowSize = $windowSize;
  41. $this->currentTreePath = $currentTreePath;
  42. }
  43. /**
  44. * {@inheritdoc}
  45. */
  46. public function getConfig(\Magento\Framework\DataObject $config) : \Magento\Framework\DataObject
  47. {
  48. $pluginData = (array) $config->getData('plugins');
  49. $imageData = [
  50. [
  51. 'name' => 'image',
  52. ]
  53. ];
  54. $fileBrowserUrlParams = [];
  55. if (is_string($this->currentTreePath)) {
  56. $fileBrowserUrlParams = [
  57. 'current_tree_path' => $this->imagesHelper->idEncode($this->currentTreePath),
  58. ];
  59. }
  60. return $config->addData(
  61. [
  62. 'add_images' => true,
  63. 'files_browser_window_url' => $this->backendUrl->getUrl(
  64. 'cms/wysiwyg_images/index',
  65. $fileBrowserUrlParams
  66. ),
  67. 'files_browser_window_width' => $this->windowSize['width'],
  68. 'files_browser_window_height' => $this->windowSize['height'],
  69. 'plugins' => array_merge($pluginData, $imageData)
  70. ]
  71. );
  72. }
  73. }