NewFolder.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Cms\Controller\Adminhtml\Wysiwyg\Images;
  8. use Magento\Framework\App\Action\HttpPostActionInterface;
  9. use Magento\Framework\App\Filesystem\DirectoryList;
  10. /**
  11. * Creates new folder.
  12. */
  13. class NewFolder extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images implements HttpPostActionInterface
  14. {
  15. /**
  16. * @var \Magento\Framework\Controller\Result\JsonFactory
  17. */
  18. protected $resultJsonFactory;
  19. /**
  20. * @var \Magento\Framework\App\Filesystem\DirectoryResolver
  21. */
  22. private $directoryResolver;
  23. /**
  24. * @param \Magento\Backend\App\Action\Context $context
  25. * @param \Magento\Framework\Registry $coreRegistry
  26. * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
  27. * @param \Magento\Framework\App\Filesystem\DirectoryResolver|null $directoryResolver
  28. */
  29. public function __construct(
  30. \Magento\Backend\App\Action\Context $context,
  31. \Magento\Framework\Registry $coreRegistry,
  32. \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
  33. \Magento\Framework\App\Filesystem\DirectoryResolver $directoryResolver = null
  34. ) {
  35. parent::__construct($context, $coreRegistry);
  36. $this->resultJsonFactory = $resultJsonFactory;
  37. $this->directoryResolver = $directoryResolver
  38. ?: $this->_objectManager->get(\Magento\Framework\App\Filesystem\DirectoryResolver::class);
  39. }
  40. /**
  41. * New folder action.
  42. *
  43. * @return \Magento\Framework\Controller\ResultInterface
  44. * @throws \Magento\Framework\Exception\LocalizedException
  45. */
  46. public function execute()
  47. {
  48. try {
  49. $this->_initAction();
  50. $name = $this->getRequest()->getPost('name');
  51. $path = $this->getStorage()->getSession()->getCurrentPath();
  52. if (!$this->directoryResolver->validatePath($path, DirectoryList::MEDIA)) {
  53. throw new \Magento\Framework\Exception\LocalizedException(
  54. __('Directory %1 is not under storage root path.', $path)
  55. );
  56. }
  57. $result = $this->getStorage()->createDirectory($name, $path);
  58. } catch (\Exception $e) {
  59. $result = ['error' => true, 'message' => $e->getMessage()];
  60. }
  61. /** @var \Magento\Framework\Controller\Result\Json $resultJson */
  62. $resultJson = $this->resultJsonFactory->create();
  63. return $resultJson->setData($result);
  64. }
  65. }