52 lines
1.8 KiB
JavaScript
Executable File
52 lines
1.8 KiB
JavaScript
Executable File
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
define([
|
|
'jquery',
|
|
'domReady!'
|
|
], function ($) {
|
|
'use strict';
|
|
|
|
/* Form with auto submit feature */
|
|
$('form[data-auto-submit="true"]').trigger('submit');
|
|
|
|
//Add form keys.
|
|
$(document).on(
|
|
'submit',
|
|
'form',
|
|
function (e) {
|
|
var formKeyElement,
|
|
existingFormKeyElement,
|
|
isKeyPresentInForm,
|
|
isActionExternal,
|
|
baseUrl = window.BASE_URL,
|
|
form = $(e.target),
|
|
formKey = $('input[name="form_key"]').val(),
|
|
formMethod = form.prop('method'),
|
|
formAction = form.prop('action');
|
|
|
|
isActionExternal = formAction.indexOf(baseUrl) !== 0;
|
|
|
|
existingFormKeyElement = form.find('input[name="form_key"]');
|
|
isKeyPresentInForm = existingFormKeyElement.length;
|
|
|
|
/* Verifies that existing auto-added form key is a direct form child element,
|
|
protection from a case when one form contains another form. */
|
|
if (isKeyPresentInForm && existingFormKeyElement.attr('auto-added-form-key') === '1') {
|
|
isKeyPresentInForm = form.find('> input[name="form_key"]').length;
|
|
}
|
|
|
|
if (formKey && !isKeyPresentInForm && !isActionExternal && formMethod !== 'get') {
|
|
formKeyElement = document.createElement('input');
|
|
formKeyElement.setAttribute('type', 'hidden');
|
|
formKeyElement.setAttribute('name', 'form_key');
|
|
formKeyElement.setAttribute('value', formKey);
|
|
formKeyElement.setAttribute('auto-added-form-key', '1');
|
|
form.get(0).appendChild(formKeyElement);
|
|
}
|
|
}
|
|
);
|
|
});
|