UrlKeyRenderer.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CatalogUrlRewrite\Block;
  7. use Magento\Store\Model\ScopeInterface;
  8. /**
  9. * Renderer for URL key input
  10. * Allows to manage and overwrite URL Rewrites History save settings
  11. */
  12. class UrlKeyRenderer extends \Magento\Catalog\Block\Adminhtml\Form\Renderer\Fieldset\Element
  13. {
  14. const XML_PATH_SEO_SAVE_HISTORY = 'catalog/seo/save_rewrites_history';
  15. /**
  16. * @var \Magento\Framework\Data\Form\Element\Factory
  17. */
  18. protected $_elementFactory;
  19. /**
  20. * @param \Magento\Backend\Block\Template\Context $context
  21. * @param \Magento\Framework\Data\Form\Element\Factory $elementFactory
  22. * @param array $data
  23. */
  24. public function __construct(
  25. \Magento\Backend\Block\Template\Context $context,
  26. \Magento\Framework\Data\Form\Element\Factory $elementFactory,
  27. array $data = []
  28. ) {
  29. $this->_elementFactory = $elementFactory;
  30. parent::__construct($context, $data);
  31. }
  32. /**
  33. * @return string
  34. */
  35. public function getElementHtml()
  36. {
  37. /** @var \Magento\Framework\Data\Form\Element\AbstractElement $element */
  38. $element = $this->getElement();
  39. if (!$element->getValue()) {
  40. return parent::getElementHtml();
  41. }
  42. $element->setOnkeyup("onUrlkeyChanged('" . $element->getHtmlId() . "')");
  43. $element->setOnchange("onUrlkeyChanged('" . $element->getHtmlId() . "')");
  44. $data = ['name' => $element->getData('name') . '_create_redirect', 'disabled' => true];
  45. /** @var \Magento\Framework\Data\Form\Element\Hidden $hidden */
  46. $hidden = $this->_elementFactory->create('hidden', ['data' => $data]);
  47. $hidden->setForm($element->getForm());
  48. $storeId = $element->getForm()->getDataObject()->getStoreId();
  49. $data['html_id'] = $element->getHtmlId() . '_create_redirect';
  50. $data['label'] = __('Create Permanent Redirect for old URL');
  51. $data['value'] = $element->getValue();
  52. $data['checked'] = $this->_scopeConfig->isSetFlag(
  53. self::XML_PATH_SEO_SAVE_HISTORY,
  54. ScopeInterface::SCOPE_STORE,
  55. $storeId
  56. );
  57. /** @var \Magento\Framework\Data\Form\Element\Checkbox $checkbox */
  58. $checkbox = $this->_elementFactory->create('checkbox', ['data' => $data]);
  59. $checkbox->setForm($element->getForm());
  60. return parent::getElementHtml() . '<br/>' . $hidden->getElementHtml() . $checkbox->getElementHtml()
  61. . $checkbox->getLabelHtml();
  62. }
  63. }