Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

136 строки
3.8 KiB

  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * @var $block \Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tab\Js
  8. * @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer
  9. */
  10. ?>
  11. <?= $block->getFormHtml() ?>
  12. <?php $scriptString = <<<script
  13. require([
  14. "jquery",
  15. "mage/template",
  16. "Magento_Ui/js/modal/alert",
  17. "jquery/file-uploader",
  18. "Magento_Theme/js/sortable",
  19. "mage/translate"
  20. ], function ($, mageTemplate, alert) {
  21. $('#js_files_uploader').fileupload({
  22. dataType: 'json',
  23. replaceFileInput: false,
  24. sequentialUploads: true,
  25. url: '{$block->escapeJs($block->getJsUploadUrl())}',
  26. /**
  27. * Add data
  28. * @param e
  29. * @param data
  30. */
  31. add: function (e, data) {
  32. var progressTmpl = mageTemplate('#js-file-uploader-template'),
  33. fileSize,
  34. tmpl;
  35. $.each(data.files, function (index, file) {
  36. fileSize = typeof file.size == "undefined" ?
  37. $.mage.__('We could not detect a size.') :
  38. byteConvert(file.size);
  39. data.fileId = Math.random().toString(36).substr(2, 9);
  40. tmpl = progressTmpl({
  41. data: {
  42. name: file.name,
  43. size: fileSize,
  44. id: data.fileId
  45. }
  46. });
  47. $(tmpl).appendTo('#js-file-uploader');
  48. });
  49. var uploadButton = $('#js_uploader_button');
  50. uploadButton.prop('disabled', false);
  51. uploadButton.on('click', function () {
  52. $('#messages').html('');
  53. $(this).attr('disabled', 'disabled');
  54. data.submit();
  55. });
  56. },
  57. /**
  58. * On done event
  59. * @param e
  60. * @param data
  61. */
  62. done: function (e, data) {
  63. $('#no-js-files-found').remove();
  64. var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar';
  65. $(progressSelector).css('width', '100%');
  66. $(this).val('');
  67. if (!data.result.error) {
  68. $(progressSelector).removeClass('upload-progress').addClass('upload-success');
  69. $('#' + data.fileId).delay(2000).fadeOut(2000);
  70. $('body').trigger('refreshJsList', {
  71. jsList: data.result.files
  72. });
  73. } else {
  74. $(progressSelector).removeClass('upload-progress').addClass('upload-failure');
  75. }
  76. $('.ui-sortable').sortable('initButtons');
  77. },
  78. /**
  79. * On progress
  80. * @param e
  81. * @param data
  82. */
  83. progress: function (e, data) {
  84. var progress = parseInt(data.loaded / data.total * 100, 10);
  85. var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar';
  86. $(progressSelector).css('width', progress + '%');
  87. },
  88. /**
  89. * Fail event
  90. * @param e
  91. * @param data
  92. */
  93. fail: function (e, data) {
  94. var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar';
  95. $(progressSelector).removeClass('upload-progress').addClass('upload-failure');
  96. $(this).val('');
  97. alert({
  98. content: $.mage.__("We don't recognize this file extension.")
  99. });
  100. }
  101. });
  102. $('#js_files_uploader').on('click', function () {
  103. /** Unbind click event on file change */
  104. $('#js-file-uploader').html('');
  105. $('#js_uploader_button').off('click');
  106. });
  107. });
  108. script;
  109. ?>
  110. <?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>