Gallery.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Block\Widget\Form\Element;
  7. use Magento\Framework\Data\Form\Element\AbstractElement;
  8. /**
  9. * Backend image gallery item renderer
  10. *
  11. * @author Magento Core Team <core@magentocommerce.com>
  12. */
  13. class Gallery extends \Magento\Backend\Block\Template implements
  14. \Magento\Framework\Data\Form\Element\Renderer\RendererInterface
  15. {
  16. /**
  17. * @var AbstractElement|null
  18. */
  19. protected $_element = null;
  20. /**
  21. * @var string
  22. */
  23. protected $_template = 'Magento_Backend::widget/form/element/gallery.phtml';
  24. /**
  25. * @param AbstractElement $element
  26. * @return string
  27. */
  28. public function render(AbstractElement $element)
  29. {
  30. $this->setElement($element);
  31. return $this->toHtml();
  32. }
  33. /**
  34. * @param AbstractElement $element
  35. * @return $this
  36. */
  37. public function setElement(AbstractElement $element)
  38. {
  39. $this->_element = $element;
  40. return $this;
  41. }
  42. /**
  43. * @return AbstractElement|null
  44. */
  45. public function getElement()
  46. {
  47. return $this->_element;
  48. }
  49. /**
  50. * @return array
  51. */
  52. public function getValues()
  53. {
  54. return $this->getElement()->getValue();
  55. }
  56. /**
  57. * {@inheritdoc}
  58. */
  59. protected function _prepareLayout()
  60. {
  61. $this->addChild(
  62. 'delete_button',
  63. \Magento\Backend\Block\Widget\Button::class,
  64. ['label' => __('Delete'), 'onclick' => "deleteImage(#image#)", 'class' => 'delete']
  65. );
  66. $this->addChild(
  67. 'add_button',
  68. \Magento\Backend\Block\Widget\Button::class,
  69. ['label' => __('Add New Image'), 'onclick' => 'addNewImage()', 'class' => 'add']
  70. );
  71. return parent::_prepareLayout();
  72. }
  73. /**
  74. * @return string
  75. */
  76. public function getAddButtonHtml()
  77. {
  78. return $this->getChildHtml('add_button');
  79. }
  80. /**
  81. * @param string $image
  82. * @return string|string[]
  83. */
  84. public function getDeleteButtonHtml($image)
  85. {
  86. return str_replace('#image#', $image, $this->getChildHtml('delete_button'));
  87. }
  88. }