module.js
2.91 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
window.fakerpress = window.fakerpress || {};
( function( $, _, fp ){
'use strict';
fp.selectors = {
moduleGenerator: '.fp-module-generator',
};
fp.log = function ( $element, html, data, attrClass ){
if ( 'undefined' === typeof attrClass ){
attrClass = 'notice is-dismissible';
} else {
attrClass = 'notice is-dismissible ' + attrClass;
}
var noticeContent = _.template( html )( data ),
templateVars = {
'attrClass': attrClass,
'html': noticeContent
},
noticeHtml = _.template( '<div class="<%= attrClass %>"><p><%= html %></p><button type="button" class="notice-dismiss"></button></div>' )( templateVars ),
$notice = $( noticeHtml );
$notice.on( 'click.wp-dismiss-notice', '.notice-dismiss', function( event ) {
event.preventDefault();
$notice.fadeTo( 100 , 0, function() {
$(this).slideUp( 100, function() {
$(this).remove();
});
});
});
return $element.append( $notice );
};
fp.moduleGenerate = ( $form, _POST ) => {
if ( 'undefined' === typeof _POST ){
_POST = Qs.parse( $form.serialize() );
}
// Always Hard set the Action
_POST.action = 'fakerpress.module_generate';
var $submit_container = $form.find( '.fp-submit' ),
$spinner = $submit_container.find( '.spinner' ),
$button = $submit_container.find( '.button-primary' ),
$response = $submit_container.find( '.fp-response' );
if ( $spinner.hasClass( 'is-active' ) ){
return;
}
$spinner.addClass( 'is-active' );
$button.prop( 'disabled', true );
$.ajax({
dataType: 'json',
type: 'POST',
url: window.ajaxurl,
data: _POST,
complete: function( jqXHR, status ){
if ( 'success' !== status ){
$spinner.removeClass( 'is-active' );
$button.prop( 'disabled', false );
fp.log( $response, '<%= message %>', { message: jqXHR.responseText }, 'notice-error' );
}
},
success: function( data, textStatus, jqXHR ) {
$spinner.removeClass( 'is-active' );
if ( null === data ) {
$button.prop( 'disabled', false );
fp.log( $response, '<%= message %>', { message: jqXHR.responseText }, 'notice-error' );
} else if ( data.status ){
if ( data.is_capped && data.offset < data.total ){
_POST.offset = data.offset;
_POST.total = data.total;
fp.moduleGenerate( $form, _POST );
} else {
$button.prop( 'disabled', false );
}
fp.log( $response, 'Faked <%= total %>: <%= message %>', { message: data.message, total: data.results.length }, 'notice-success' );
} else {
$button.prop( 'disabled', false );
fp.log( $response, '<%= message %>', data, 'notice-error' );
}
}
});
};
// Document Ready Actions
$( document ).ready( () => {
const $forms = $( fp.selectors.moduleGenerator ).each( function() {
const $form = $( this );
$form.on( 'submit', function ( event ) {
fp.moduleGenerate( $form );
event.preventDefault();
return;
} );
} );
} );
}( jQuery, _, window.fakerpress ) );