123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /* global FORM_KEY */
- define([
- 'jquery',
- 'mage/apply/main',
- 'mage/backend/notification',
- 'Magento_Ui/js/lib/knockout/bootstrap',
- 'mage/mage',
- 'mage/translate'
- ], function ($, mage, notification) {
- 'use strict';
- var bootstrap;
- $.ajaxSetup({
- /*
- * @type {string}
- */
- type: 'POST',
- /**
- * Ajax before send callback.
- *
- * @param {Object} jqXHR - The jQuery XMLHttpRequest object returned by $.ajax()
- * @param {Object} settings
- */
- beforeSend: function (jqXHR, settings) {
- var formKey = typeof FORM_KEY !== 'undefined' ? FORM_KEY : null;
- if (!settings.url.match(new RegExp('[?&]isAjax=true',''))) {
- settings.url = settings.url.match(
- new RegExp('\\?', 'g')) ?
- settings.url + '&isAjax=true' :
- settings.url + '?isAjax=true';
- }
- if (!settings.data) {
- settings.data = {
- 'form_key': formKey
- };
- } else if ($.type(settings.data) === 'string' &&
- settings.data.indexOf('form_key=') === -1) {
- settings.data += '&' + $.param({
- 'form_key': formKey
- });
- } else if ($.isPlainObject(settings.data) && !settings.data['form_key']) {
- settings.data['form_key'] = formKey;
- }
- },
- /**
- * Ajax complete callback.
- *
- * @param {Object} jqXHR - The jQuery XMLHttpRequest object returned by $.ajax()
- */
- complete: function (jqXHR) {
- var jsonObject;
- if (jqXHR.readyState === 4) {
- try {
- jsonObject = $.parseJSON(jqXHR.responseText);
- if (jsonObject.ajaxExpired && jsonObject.ajaxRedirect) { //eslint-disable-line max-depth
- window.location.replace(jsonObject.ajaxRedirect);
- }
- } catch (e) {}
- }
- },
- /**
- * Error callback.
- */
- error: function () {
- $('body').notification('clear')
- .notification('add', {
- error: true,
- message: $.mage.__(
- 'A technical problem with the server created an error. ' +
- 'Try again to continue what you were doing. If the problem persists, try again later.'
- ),
- /**
- * @param {String} message
- */
- insertMethod: function (message) {
- var $wrapper = $('<div/>').html(message);
- $('.page-main-actions').after($wrapper);
- }
- });
- }
- });
- /**
- * Bootstrap application.
- */
- bootstrap = function () {
- /**
- * Init all components defined via data-mage-init attribute
- * and subscribe init action on contentUpdated event
- */
- mage.apply();
- /*
- * Initialization of notification widget
- */
- notification({}, $('body'));
- };
- $(bootstrap);
- });
|