Content.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Theme\Block\Adminhtml\Wysiwyg\Files;
  7. /**
  8. * Files content block
  9. *
  10. * @api
  11. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  12. * @since 100.0.2
  13. */
  14. class Content extends \Magento\Backend\Block\Widget\Container
  15. {
  16. /**
  17. * @var \Magento\Theme\Helper\Storage
  18. */
  19. protected $_storageHelper;
  20. /**
  21. * @var \Magento\Framework\Json\Helper\Data
  22. */
  23. protected $jsonHelper;
  24. /**
  25. * @param \Magento\Backend\Block\Widget\Context $context
  26. * @param \Magento\Theme\Helper\Storage $storageHelper
  27. * @param \Magento\Framework\Json\Helper\Data $jsonHelper
  28. * @param array $data
  29. */
  30. public function __construct(
  31. \Magento\Backend\Block\Widget\Context $context,
  32. \Magento\Theme\Helper\Storage $storageHelper,
  33. \Magento\Framework\Json\Helper\Data $jsonHelper,
  34. array $data = []
  35. ) {
  36. $this->jsonHelper = $jsonHelper;
  37. $this->_storageHelper = $storageHelper;
  38. parent::__construct($context, $data);
  39. }
  40. /**
  41. * Block construction
  42. *
  43. * @return void
  44. */
  45. protected function _construct()
  46. {
  47. parent::_construct();
  48. $this->_headerText = __('Media Storage');
  49. $this->buttonList->remove('back');
  50. $this->buttonList->remove('edit');
  51. $this->buttonList->add(
  52. 'newfolder',
  53. [
  54. 'class' => 'save',
  55. 'label' => __('Create Folder'),
  56. 'type' => 'button',
  57. 'onclick' => 'MediabrowserInstance.newFolder();'
  58. ]
  59. );
  60. $this->buttonList->add(
  61. 'delete_folder',
  62. [
  63. 'class' => 'delete no-display',
  64. 'label' => __('Delete Folder'),
  65. 'type' => 'button',
  66. 'onclick' => 'MediabrowserInstance.deleteFolder();',
  67. 'id' => 'button_delete_folder'
  68. ]
  69. );
  70. $this->buttonList->add(
  71. 'delete_files',
  72. [
  73. 'class' => 'delete no-display',
  74. 'label' => __('Delete File'),
  75. 'type' => 'button',
  76. 'onclick' => 'MediabrowserInstance.deleteFiles();',
  77. 'id' => 'button_delete_files'
  78. ]
  79. );
  80. $this->buttonList->add(
  81. 'insert_files',
  82. [
  83. 'class' => 'save no-display',
  84. 'label' => __('Insert File'),
  85. 'type' => 'button',
  86. 'onclick' => 'MediabrowserInstance.insert();',
  87. 'id' => 'button_insert_files'
  88. ]
  89. );
  90. }
  91. /**
  92. * Files action source URL
  93. *
  94. * @return string
  95. */
  96. public function getContentsUrl()
  97. {
  98. return $this->getUrl(
  99. 'adminhtml/*/contents',
  100. ['type' => $this->getRequest()->getParam('type')] + $this->_storageHelper->getRequestParams()
  101. );
  102. }
  103. /**
  104. * Javascript setup object for filebrowser instance
  105. *
  106. * @return string
  107. */
  108. public function getFilebrowserSetupObject()
  109. {
  110. $setupObject = new \Magento\Framework\DataObject();
  111. $setupObject->setData(
  112. [
  113. 'newFolderPrompt' => __('New Folder Name:'),
  114. 'deleteFolderConfirmationMessage' => __('Are you sure you want to delete this folder?'),
  115. 'deleteFileConfirmationMessage' => __('Are you sure you want to delete this file?'),
  116. 'targetElementId' => $this->getTargetElementId(),
  117. 'contentsUrl' => $this->getContentsUrl(),
  118. 'onInsertUrl' => $this->getOnInsertUrl(),
  119. 'newFolderUrl' => $this->getNewfolderUrl(),
  120. 'deleteFolderUrl' => $this->getDeletefolderUrl(),
  121. 'deleteFilesUrl' => $this->getDeleteFilesUrl(),
  122. 'headerText' => $this->getHeaderText(),
  123. 'showBreadcrumbs' => true,
  124. ]
  125. );
  126. return $this->jsonHelper->jsonEncode($setupObject);
  127. }
  128. /**
  129. * New directory action target URL
  130. *
  131. * @return string
  132. */
  133. public function getNewfolderUrl()
  134. {
  135. return $this->getUrl('adminhtml/*/newFolder', $this->_storageHelper->getRequestParams());
  136. }
  137. /**
  138. * Delete directory action target URL
  139. *
  140. * @return string
  141. */
  142. protected function getDeletefolderUrl()
  143. {
  144. return $this->getUrl('adminhtml/*/deleteFolder', $this->_storageHelper->getRequestParams());
  145. }
  146. /**
  147. * Delete files action target URL
  148. *
  149. * @return string
  150. */
  151. public function getDeleteFilesUrl()
  152. {
  153. return $this->getUrl('adminhtml/*/deleteFiles', $this->_storageHelper->getRequestParams());
  154. }
  155. /**
  156. * Insert file action target URL
  157. *
  158. * @return string
  159. */
  160. public function getOnInsertUrl()
  161. {
  162. return $this->getUrl('adminhtml/*/onInsert', $this->_storageHelper->getRequestParams());
  163. }
  164. /**
  165. * Target element ID getter
  166. *
  167. * @return string
  168. */
  169. public function getTargetElementId()
  170. {
  171. return $this->getRequest()->getParam('target_element_id');
  172. }
  173. }