102 lines
3.3 KiB
JavaScript
102 lines
3.3 KiB
JavaScript
(function (GravityFlowInbox, $) {
|
|
|
|
$(document).ready(function () {
|
|
|
|
$('.gravityflow-actions-unlock').click( function() {
|
|
var $this = $(this),
|
|
$lock = $this.siblings('.gravityflow-actions-lock'),
|
|
$noteContainer = $this.siblings('.gravityflow-actions-note-field-container'),
|
|
$actionButtons = $this.siblings('.gravityflow-actions');
|
|
$this.hide();
|
|
$lock.show();
|
|
$noteContainer.hide();
|
|
$actionButtons.hide();
|
|
$this.parent('.gravityflow-actions').addClass( 'gravityflow-actions-locked' );
|
|
});
|
|
|
|
$('.gravityflow-action').click( function() {
|
|
var $this = $(this),
|
|
$unlock = $this.siblings('.gravityflow-actions-unlock'),
|
|
$lock = $this.siblings('.gravityflow-actions-lock'),
|
|
$noteContainer = $this.siblings('.gravityflow-actions-note-field-container'),
|
|
$noteField = $noteContainer.find('textarea'),
|
|
showNoteField = $this.data('note_field');
|
|
|
|
|
|
if ( $this.hasClass( 'gravityflow-action-processed' ) ) {
|
|
return;
|
|
}
|
|
|
|
if ( $this.parent('.gravityflow-actions').hasClass( 'gravityflow-actions-locked' ) ) {
|
|
$this.parent('.gravityflow-actions').removeClass( 'gravityflow-actions-locked' );
|
|
$lock.hide();
|
|
$unlock.show();
|
|
|
|
if ( showNoteField ) {
|
|
$noteContainer.show();
|
|
$noteField.focus();
|
|
$(document).keyup(function(e) {
|
|
var KEYCODE_ESC = 27;
|
|
if (e.keyCode == KEYCODE_ESC) {
|
|
$unlock.click();
|
|
}
|
|
});
|
|
} else {
|
|
setTimeout(function () {
|
|
if ( ! $this.hasClass( 'gravityflow-action-processing' ) && ! $this.hasClass( 'gravityflow-action-processed' ) ) {
|
|
$this.parent('.gravityflow-actions').addClass( 'gravityflow-actions-locked' );
|
|
$lock.show();
|
|
$unlock.hide();
|
|
}
|
|
}, 2000);
|
|
}
|
|
return;
|
|
}
|
|
|
|
var entryId = parseInt($this.data('entry_id')),
|
|
restBase = $this.data('rest_base'),
|
|
action = $this.data('action'),
|
|
url = gravityflow_inbox_strings.restUrl,
|
|
nonce = gravityflow_inbox_strings.nonce,
|
|
$spinner = $this.siblings('.gravityflow-actions-spinner');
|
|
|
|
$.ajax({
|
|
method: "POST",
|
|
url: url + 'gf/v2/entries/' + entryId + '/workflow/' + restBase,
|
|
data: { 'action' : action, 'gravityflow_note' : $noteField.val() },
|
|
beforeSend: function ( xhr ) {
|
|
xhr.setRequestHeader( 'X-WP-Nonce', nonce );
|
|
$this.siblings().andSelf().hide();
|
|
$this.addClass('gravityflow-action-processing');
|
|
$spinner.show();
|
|
},
|
|
success : function( response ) {
|
|
$spinner.hide();
|
|
$this.removeClass('gravityflow-action-processing');
|
|
if ( response.status == 'success' ) {
|
|
$this.addClass('gravityflow-action-processed');
|
|
$this.prop('title', response.feedback);
|
|
$this.show();
|
|
$this.parent('.gravityflow-actions').removeClass( 'gravityflow-actions-locked' );
|
|
} else {
|
|
$this.parent('.gravityflow-actions').addClass( 'gravityflow-actions-locked' );
|
|
$this.siblings('.gravityflow-action').andSelf().show();
|
|
$lock.show();
|
|
alert( response.feedback );
|
|
}
|
|
},
|
|
fail : function( response ) {
|
|
$spinner.hide();
|
|
$unlock.hide();
|
|
$lock.show();
|
|
$this.removeClass('gravityflow-action-processing');
|
|
$this.siblings('.gravityflow-actions').andSelf().show();
|
|
alert( response );
|
|
}
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
}(window.GravityFlowInbox = window.GravityFlowInbox || {}, jQuery));
|