You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

102 line
3.2 KiB

  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
  7. ?>
  8. <?php $scriptString = <<<script
  9. require([
  10. 'jquery',
  11. "uiRegistry",
  12. 'Magento_Ui/js/modal/alert',
  13. 'prototype'
  14. ], function(jQuery, registry, alert) {
  15. //<![CDATA[
  16. function refreshCouponCodesGrid(grid, gridMassAction, transport) {
  17. grid.reload();
  18. gridMassAction.unselectAll();
  19. }
  20. function generateCouponCodes(idPrefix, generateUrl, grid) {
  21. $(idPrefix + 'information_fieldset').removeClassName('ignore-validate');
  22. var listInvalidElement = [];
  23. var validationResult = $(idPrefix + 'information_fieldset').select('input',
  24. 'select', 'textarea').collect( function(elm) {
  25. var validateOneElementResult = jQuery.validator.validateSingleElement(elm);
  26. if (!validateOneElementResult) {
  27. listInvalidElement.push(elm);
  28. }
  29. return validateOneElementResult;
  30. }).all();
  31. if (listInvalidElement.length) {
  32. listInvalidElement[0].focus();
  33. }
  34. $(idPrefix + 'information_fieldset').addClassName('ignore-validate');
  35. if (!validationResult) {
  36. return;
  37. }
  38. var elements = $(idPrefix + 'information_fieldset').select('input', 'select', 'textarea');
  39. elements = elements.concat(
  40. \$$('#rule_uses_per_coupon'),
  41. \$$('#rule_uses_per_customer'),
  42. \$$('#rule_to_date')
  43. );
  44. var params = Form.serializeElements(elements, true);
  45. params.form_key = FORM_KEY;
  46. if (\$$('#'+idPrefix + 'information_fieldset .messages')) {
  47. \$$('#'+idPrefix + 'information_fieldset .messages')[0].update();
  48. }
  49. if ($('messages')) {
  50. $('messages').update();
  51. }
  52. var couponCodesGrid = eval(grid);
  53. new Ajax.Request(generateUrl, {
  54. parameters :params,
  55. method :'post',
  56. onComplete : function (transport, param){
  57. var response = false;
  58. if (transport && transport.responseText) {
  59. try {
  60. response = JSON.parse(transport.responseText);
  61. } catch (e) {
  62. console.warn('An error occurred while parsing response');
  63. }
  64. }
  65. if (couponCodesGrid) {
  66. couponCodesGrid.reload();
  67. }
  68. if (response && response.messages) {
  69. if (\$$('#'+idPrefix + 'information_fieldset .messages')) {
  70. \$$('#'+idPrefix + 'information_fieldset .messages')[0].update(response.messages);
  71. } else if ($('messages')) {
  72. $('messages').update(response.messages);
  73. }
  74. }
  75. if (response && response.error) {
  76. alert({
  77. content: response.error
  78. });
  79. }
  80. }
  81. });
  82. }
  83. function validateCouponGenerate(elm) {
  84. jQuery.validator.validateSingleElement(elm);
  85. }
  86. window.validateCouponGenerate = validateCouponGenerate;
  87. window.generateCouponCodes = generateCouponCodes;
  88. window.refreshCouponCodesGrid = refreshCouponCodesGrid;
  89. });
  90. script;
  91. ?>
  92. <?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>