Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/res/js/translation-feedback/wpml-tf-frontend-script.js
2023-09-12 21:41:04 +02:00

146 lines
3.6 KiB
JavaScript

/*jshint browser:true, devel:true */
/*global jQuery, wp */
(function($){
"use strict";
$(function () {
var form = $('.js-wpml-tf-feedback-form'),
openIcon = $('.js-wpml-tf-feedback-icon'),
ratingInput = form.find('input[name="wpml-tf-rating"]'),
sendButton = form.find('.js-wpml-tf-comment-button'),
documentId = form.find('input[name="document_id"]').val(),
documentType = form.find('input[name="document_type"]').val(),
action = form.find('input[name="action"]').val(),
nonce = form.find('input[name="nonce"]').val(),
noCommentThreshold = 4,
dialogInitialized = false,
feedbackId;
var disableRating = function() {
ratingInput.prop('disabled', true);
};
var enableRating = function() {
if(feedbackId && !form.hasClass('wpml-tf-closing-rating')) {
ratingInput.prop('disabled', false);
}
};
var enableComment = function() {
sendButton.prop('disabled', false);
};
var displayClosingComment = function() {
form.removeClass('wpml-tf-pending-comment').addClass('wpml-tf-closing-comment');
window.setTimeout(destroyDialogAndButton, 3000);
};
var displayPendingComment = function() {
form.addClass('wpml-tf-pending-comment').removeClass('wpml-tf-closing-rating');
enableRating();
};
var displayClosingRating = function() {
form.addClass('wpml-tf-closing-rating').removeClass('wpml-tf-pending-comment');
disableRating();
};
var displayPendingRating = function() {
form.removeClass('wpml-tf-closing-rating').removeClass('wpml-tf-pending-comment');
enableRating();
};
var sendFeedback = function(data) {
var options;
if ( ! itLooksLikeSpam() ) {
disableRating();
form.addClass('wpml-tf-pending-request');
data.nonce = nonce;
data.document_id = documentId;
data.document_type = documentType;
options = {
data: data,
success: function(data) {
feedbackId = data.feedback_id;
form.addClass('wpml-tf-has-feedback-id').removeClass('wpml-tf-pending-request');
enableRating();
enableComment();
}
};
wp.ajax.send(action, options);
}
};
var itLooksLikeSpam = function() {
var more_comment = form.find('textarea[name="more_comment"]');
return ! dialogInitialized || more_comment.val();
};
var openForm = function() {
form.dialog({
dialogClass: 'wpml-tf-feedback-form-dialog otgs-ui-dialog',
closeOnEscape: true,
draggable: true,
modal: false,
title: form.data('dialog-title'),
dragStop: function() {
$(this).parent().height('auto');
}
});
dialogInitialized = true;
// Fix display glitch with bootstrap.js
$('.wpml-tf-feedback-form-dialog').find('.ui-dialog-titlebar-close').addClass('ui-button');
};
var destroyDialogAndButton = function() {
form.dialog( 'destroy' );
openIcon.remove();
};
openIcon.on('click', function(e) {
e.preventDefault();
openForm();
});
ratingInput.on('click', function() {
var data = {
rating: $(this).val()
};
if ( feedbackId ) {
data.feedback_id = feedbackId;
}
sendFeedback(data);
if(data.rating < noCommentThreshold) {
displayPendingComment();
} else {
displayClosingRating();
}
});
form.on('click', '.js-wpml-tf-change-rating', function(e) {
e.preventDefault();
displayPendingRating();
});
sendButton.on('click', function(e) {
e.preventDefault();
var data = {
content: $('textarea[name="wpml-tf-comment"]').val(),
feedback_id: feedbackId
};
sendFeedback(data);
displayClosingComment();
});
});
})(jQuery);