1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
define([
'jquery',
'jquery/ui'
], function ($) {
'use strict';
/**
* @api
*/
$.widget('mage.captcha', {
options: {
refreshClass: 'refreshing',
reloadSelector: '.captcha-reload',
imageSelector: '.captcha-img',
imageLoader: ''
},
/**
* Method binds click event to reload image
* @private
*/
_create: function () {
this.element.on('click', this.options.reloadSelector, $.proxy(this.refresh, this));
},
/**
* Method triggers an AJAX request to refresh the CAPTCHA image
*/
refresh: function () {
var imageLoader = this.options.imageLoader;
if (imageLoader) {
this.element.find(this.options.imageSelector).attr('src', imageLoader);
}
this.element.addClass(this.options.refreshClass);
$.ajax({
url: this.options.url,
type: 'post',
async: false,
dataType: 'json',
context: this,
data: {
'formId': this.options.type
},
/**
* @param {Object} response
*/
success: function (response) {
if (response.imgSrc) {
this.element.find(this.options.imageSelector).attr('src', response.imgSrc);
}
},
/** Complete callback. */
complete: function () {
this.element.removeClass(this.options.refreshClass);
}
});
}
});
return $.mage.captcha;
});