Createaddressbook.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace Dotdigitalgroup\Email\Block\Adminhtml\Config;
  3. class Createaddressbook extends \Magento\Config\Block\System\Config\Form\Field
  4. {
  5. /**
  6. * Button label.
  7. *
  8. * @var string
  9. */
  10. public $vatButtonLabel = 'New Addressbook';
  11. /**
  12. * @param string $vatButtonLabel
  13. *
  14. * @return $this
  15. */
  16. public function setVatButtonLabel($vatButtonLabel)
  17. {
  18. $this->vatButtonLabel = $vatButtonLabel;
  19. return $this;
  20. }
  21. /**
  22. * @return $this
  23. */
  24. protected function _prepareLayout()
  25. {
  26. parent::_prepareLayout();
  27. if (!$this->getTemplate()) {
  28. $this->setTemplate('system/config/createaddressbook.phtml');
  29. }
  30. return $this;
  31. }
  32. /**
  33. * Unset some non-related element parameters.
  34. *
  35. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  36. *
  37. * @return string
  38. */
  39. public function render(
  40. \Magento\Framework\Data\Form\Element\AbstractElement $element
  41. ) {
  42. $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue();
  43. return parent::render($element);
  44. }
  45. /**
  46. * Get the button and scripts contents.
  47. *
  48. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  49. *
  50. * @return string
  51. */
  52. public function _getElementHtml(
  53. \Magento\Framework\Data\Form\Element\AbstractElement $element
  54. ) {
  55. $originalData = $element->getOriginalData();
  56. $buttonLabel = !empty($originalData['button_label'])
  57. ? $originalData['button_label'] : $this->vatButtonLabel;
  58. $url = $this->_urlBuilder->getUrl(
  59. 'dotdigitalgroup_email/addressbook/save'
  60. );
  61. $this->addData(
  62. [
  63. 'button_label' => $buttonLabel,
  64. 'html_id' => $element->getHtmlId(),
  65. 'ajax_url' => $url,
  66. ]
  67. );
  68. return $this->_toHtml();
  69. }
  70. }