Editable.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Rule\Block;
  7. use Magento\Framework\Data\Form\Element\Renderer\RendererInterface;
  8. use Magento\Framework\View\Element\AbstractBlock;
  9. /**
  10. * Renderer for Editable sales rules
  11. *
  12. * @api
  13. * @since 100.0.2
  14. */
  15. class Editable extends AbstractBlock implements RendererInterface
  16. {
  17. /**
  18. * @var \Magento\Framework\Translate\InlineInterface
  19. */
  20. protected $inlineTranslate;
  21. /**
  22. * @param \Magento\Framework\View\Element\Context $context
  23. * @param \Magento\Framework\Translate\InlineInterface $inlineTranslate
  24. * @param array $data
  25. */
  26. public function __construct(
  27. \Magento\Framework\View\Element\Context $context,
  28. \Magento\Framework\Translate\InlineInterface $inlineTranslate,
  29. array $data = []
  30. ) {
  31. $this->inlineTranslate = $inlineTranslate;
  32. parent::__construct($context, $data);
  33. }
  34. /**
  35. * Render element
  36. *
  37. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  38. * @return string
  39. *
  40. * @see RendererInterface::render()
  41. */
  42. public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
  43. {
  44. $element->addClass('element-value-changer');
  45. $valueName = $element->getValueName();
  46. if ($valueName === '') {
  47. $valueName = '...';
  48. }
  49. if ($element->getShowAsText()) {
  50. $html = ' <input type="hidden" class="hidden" id="' .
  51. $this->escapeHtmlAttr($element->getHtmlId()) .
  52. '" name="' .
  53. $this->escapeHtmlAttr($element->getName()) .
  54. '" value="' .
  55. $element->getValue() .
  56. '" data-form-part="' .
  57. $element->getData('data-form-part') .
  58. '"/> ' .
  59. htmlspecialchars(
  60. $valueName
  61. ) . '&nbsp;';
  62. } else {
  63. $html = ' <span class="rule-param"' .
  64. ($element->getParamId() ? ' id="' .
  65. $element->getParamId() .
  66. '"' : '') .
  67. '>' .
  68. '<a href="javascript:void(0)" class="label">';
  69. if ($this->inlineTranslate->isAllowed()) {
  70. $html .= $this->escapeHtml($valueName);
  71. } else {
  72. $html .= $this->escapeHtml(
  73. $this->filterManager->truncate($valueName, ['length' => 33, 'etc' => '...'])
  74. );
  75. }
  76. $html .= '</a><span class="element"> ' . $element->getElementHtml();
  77. if ($element->getExplicitApply()) {
  78. $html .= ' <a href="javascript:void(0)" class="rule-param-apply"><img src="' . $this->getViewFileUrl(
  79. 'images/rule_component_apply.gif'
  80. ) . '" class="v-middle" alt="' . __(
  81. 'Apply'
  82. ) . '" title="' . __(
  83. 'Apply'
  84. ) . '" /></a> ';
  85. }
  86. $html .= '</span></span>&nbsp;';
  87. }
  88. return $html;
  89. }
  90. }