Files
doitinpoland.com/wp-content/plugins/wpml-translation-management/res/js/translation-editor/translation-editor.js
2023-09-12 21:41:04 +02:00

212 lines
7.5 KiB
JavaScript

/*jshint browser:true, devel:true */
/*global _, jQuery, ajaxurl, icl_ajx_url, icl_ajxloaderimg, wpActiveEditor, tinyMCE,
tinymce, iclSaveForm,
tmEditorStrings, WPML_TM.editorFooterView, WPML_TM.editorHeaderView,
WpmlTmEditorMainView,
WpmlTranslationEditorTemplates, WpmlTemplateCompiler */
var WPML_TM = WPML_TM || {};
"use strict";
var tmEditor = {
dontShowAgain: false,
copyLinks: {},
copyLinkViews: [],
footerView: {},
model: {},
view: {},
update_copy_link_visibility: function () {
var self = tmEditor;
self.copyLinks.each(function () {
var type = this.id.replace(/^icl_tm_copy_link_/, '');
var content = self.get_content_for_copy_field(type);
if (content && content.trim() !== "") {
jQuery(this).closest('span').hide();
} else {
jQuery(this).closest('span').show();
}
});
if (self.copyLinks.filter(':visible').length === 1) {
self.copyLinks.closest('span').hide();
} else {
self.copyLinks.find('#icl_tm_copy_link_icl_all_fields').closest('span').show();
}
},
findInputFieldForCheckBox: function (cbName) {
var fieldName = cbName.replace(/finished/, 'data');
var inputField = jQuery('[name="' + fieldName + '"]');
if (inputField.length === 0) {
inputField = false;
}
return inputField;
},
find_custom_editor: function (field_type) {
var custom_editor = false;
var editors;
if (typeof tinyMCE !== 'undefined' && (editors = tinyMCE.editors) !== undefined) {
jQuery.each(
editors, function () {
var item = this;
if (("field-wpcf-" + field_type).toLowerCase() === item.id.toLowerCase()
|| field_type.toLowerCase() === item.id.toLowerCase()) {
custom_editor = item;
}
}
);
}
return custom_editor;
},
get_content_for_copy_field: function (field_type) {
var editor = this.find_custom_editor(field_type);
return editor !== false ? editor.getContent() : jQuery('#' + field_type).val();
},
icl_populate_field: function (field_type, content) {
var custom_editor = tmEditor.find_custom_editor(field_type);
if (custom_editor !== false && !custom_editor.isHidden() && custom_editor.getContent().trim() === "") {
custom_editor.insertContent(content);
} else {
custom_editor = jQuery('#' + field_type);
if ('undefined' !== typeof custom_editor && 'undefined' !== typeof custom_editor.val()) {
custom_editor.val(custom_editor.val().trim() !== "" ? custom_editor.val() : content);
}
}
}
};
jQuery(function () {
var wpml_diff_toggle = jQuery('.wpml_diff_toggle');
wpml_diff_toggle.closest('.wpml_diff_wrapper').find('.wpml_diff').hide();
wpml_diff_toggle.on('click', function (e) {
e.preventDefault();
jQuery(this).closest('.wpml_diff_wrapper').find('.wpml_diff').slideToggle();
return false;
});
jQuery('.tm-learn-more').on('click', function (e) {
e.preventDefault();
var popUpHtml = '<div id="tm-editor-learn-more" title="' + tmEditorStrings.title + '">' + tmEditorStrings.learnMore + '</div>';
jQuery(popUpHtml).dialog();
});
var icl_tm_editor = jQuery('#icl_tm_editor');
icl_tm_editor.find('.handlediv').click(function () {
if (jQuery(this).parent().hasClass('closed')) {
jQuery(this).parent().removeClass('closed');
} else {
jQuery(this).parent().addClass('closed');
}
});
jQuery('.icl_tm_finished').change(function () {
jQuery(this).parent().parent().find('.icl_tm_error').hide();
var field = jQuery(this).attr('name').replace(/finished/, 'data');
var data;
var datatemp = '';
if (field === 'fields[body][data]') {
try {
datatemp = tinyMCE.get('body').getContent();
}
catch (err) {
}
data = jQuery('*[name="' + field + '"]').val() + datatemp;
} else if (jQuery(this).hasClass('icl_tmf_multiple')) {
data = 1;
jQuery('[name*="' + field + '"]').each(function () {
data = data * jQuery(this).val().length;
});
} else {
try {
datatemp = tinyMCE.get(field.replace('fields[', '').replace('][data]', '')).getContent();
}
catch (err) {
}
data = jQuery('[name="' + field + '"]*').val() + datatemp;
data = jQuery('[name="' + field.toLowerCase() + '"]*').val() + datatemp;
}
if (jQuery(this).prop('checked') && !data) {
jQuery(this).closest('.icl_tm_error').show();
jQuery(this).prop('checked', false);
}
});
jQuery('.icl_tmf_term').on('click', function (e) {
var box = jQuery(this);
var inputField = tmEditor.findInputFieldForCheckBox(box.attr('name'));
if (box.prop('checked')) {
box.prop('checked', true);
} else {
if (tmEditor.dontShowAgain === true) {
inputField.attr('disabled', false);
} else {
var popUpHtml = ['<div id="tm-editor-learn-more"><span>',
tmEditorStrings.warning,
'</span><p><input type="checkbox" class="tm-editor-not-show-again"/>',
tmEditorStrings.dontShowAgain,
'</p></div>'].join('');
jQuery(popUpHtml).dialog(
{
width: 'auto',
buttons: [
{
text: "Ok",
click: function () {
jQuery(this).dialog("close");
if (inputField) {
inputField.attr('disabled', false);
box.prop('checked', false);
if (jQuery(this).find('.tm-editor-not-show-again').prop('checked')) {
jQuery(this).dialog("destroy");
tmEditor.dontShowAgain = true;
}
}
}
}, {
text: "Cancel",
click: function () {
jQuery(this).dialog("close");
box.prop('checked', true);
}
}
]
});
}
}
});
var job_id = jQuery('[name="job_id"]').val();
tmEditor.model = new WPML_TM.editorJob(
{
job_id: job_id,
nonce: tmEditorStrings.contentNonce,
is_dirty: false
}
);
tmEditor.copyLinks = jQuery('.icl_tm_copy_link');
tmEditor.view = new WPML_TM.editorMainView({
el: jQuery('.icl-translation-editor'),
model: tmEditor.model
});
tmEditor.view.render();
icl_tm_editor.submit(function () {
return false;
});
tmEditor.update_copy_link_visibility();
jQuery(window).trigger('customEvent');
});