12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- namespace Dotdigitalgroup\Email\Block\Adminhtml\Config;
- class Createdatafield extends \Magento\Config\Block\System\Config\Form\Field
- {
- /**
- * Button label.
- *
- * @var string
- */
- public $buttonLabel = 'New Datafield';
- /**
- * @param string $buttonLabel
- *
- * @return $this
- */
- public function setButtonLabel($buttonLabel)
- {
- $this->buttonLabel = $buttonLabel;
- return $this;
- }
- /**
- * @return $this
- */
- protected function _prepareLayout()
- {
- parent::_prepareLayout();
- if (!$this->getTemplate()) {
- $this->setTemplate('system/config/createdatafield.phtml');
- }
- return $this;
- }
- /**
- * Get the button and scripts contents.
- *
- * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
- *
- * @return string
- */
- public function _getElementHtml(
- \Magento\Framework\Data\Form\Element\AbstractElement $element
- ) {
- $originalData = $element->getOriginalData();
- $buttonLabel = !empty($originalData['button_label'])
- ? $originalData['button_label'] : $this->buttonLabel;
- $url = $this->_urlBuilder->getUrl('dotdigitalgroup_email/datafield/save');
- $this->addData(
- [
- 'button_label' => $buttonLabel,
- 'html_id' => $element->getHtmlId(),
- 'ajax_url' => $url,
- ]
- );
- return $this->_toHtml();
- }
- /**
- * Unset some non-related element parameters.
- *
- * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
- *
- * @return string
- */
- public function render(
- \Magento\Framework\Data\Form\Element\AbstractElement $element
- ) {
- $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue();
- return parent::render($element);
- }
- /**
- * @param string $title
- *
- * @return string
- *
- * @throws \Magento\Framework\Exception\LocalizedException
- */
- public function _getAddRowButtonHtml($title)
- {
- return $this->getLayout()->createBlock('adminhtml/widget_button')
- ->setType('button')
- ->setLabel($title)
- ->setOnClick('createDatafield(this.form, this);')
- ->toHtml();
- }
- }
|