js.phtml 3.6 KB

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