notification.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. /**
  6. * @api
  7. */
  8. define([
  9. 'jquery',
  10. 'mage/template',
  11. 'jquery/ui',
  12. 'Magento_Ui/js/modal/modal'
  13. ], function ($, mageTemplate) {
  14. 'use strict';
  15. $.widget('mage.systemMessageDialog', $.mage.modal, {
  16. options: {
  17. modalClass: 'modal-system-messages',
  18. systemMessageTemplate:
  19. '<% _.each(data.items, function(item) { %>' +
  20. '<li class="message message-warning' +
  21. '<% if (item.severity == 1) { %>error<% } else { %>warning<% } %>">' +
  22. '<%= item.text %>' +
  23. '</li>' +
  24. '<% }); %>'
  25. },
  26. /** @inheritdoc */
  27. _create: function () {
  28. this.options.title = $('#message-system-all').attr('title');
  29. this._super();
  30. },
  31. /** @inheritdoc */
  32. openModal: function (severity) {
  33. var superMethod = $.proxy(this._super, this);
  34. $.ajax({
  35. url: this.options.ajaxUrl,
  36. type: 'GET',
  37. data: {
  38. severity: severity
  39. }
  40. }).done($.proxy(function (data) {
  41. var tmpl = mageTemplate(this.options.systemMessageTemplate, {
  42. data: {
  43. items: data
  44. }
  45. });
  46. tmpl = $(tmpl);
  47. this.element.html(
  48. $('<ul />', {
  49. 'class': 'message-system-list'
  50. }).append(tmpl)
  51. ).trigger('contentUpdated');
  52. superMethod();
  53. }, this));
  54. return this;
  55. },
  56. /** @inheritdoc */
  57. closeModal: function () {
  58. this._super();
  59. }
  60. });
  61. $(document).ready(function () {
  62. $('#system_messages .message-system-short .error').on('click', function () {
  63. $('#message-system-all').systemMessageDialog('openModal', 1);
  64. });
  65. $('#system_messages .message-system-short .warning').on('click', function () {
  66. $('#message-system-all').systemMessageDialog('openModal', 2);
  67. });
  68. });
  69. return $.mage.systemMessageDialog;
  70. });