352 lines
11 KiB
JavaScript
352 lines
11 KiB
JavaScript
/*globals icl_ajx_url */
|
|
|
|
/**
|
|
* Created by andrea.
|
|
* Date: 23/01/14
|
|
* Time: 17:28
|
|
*/
|
|
|
|
jQuery(function ($) {
|
|
|
|
setupCopyButtons();
|
|
|
|
var postEdit = postEdit || {};
|
|
|
|
postEdit.$connect_translations_dialog = $('#connect_translations_dialog');
|
|
postEdit.$no_posts_found_message = postEdit.$connect_translations_dialog.find('.js-no-posts-found');
|
|
postEdit.$posts_found_container = postEdit.$connect_translations_dialog.find('.js-posts-found');
|
|
postEdit.$ajax_loader = postEdit.$connect_translations_dialog.find('.js-ajax-loader');
|
|
postEdit.$connect_translations_dialog_confirm = $("#connect_translations_dialog_confirm");
|
|
|
|
postEdit.connect_element_translations_open = function(event) {
|
|
|
|
if (typeof(event.preventDefault) !== 'undefined' ) {
|
|
event.preventDefault();
|
|
} else {
|
|
event.returnValue = false;
|
|
}
|
|
|
|
postEdit.$connect_translations_dialog.find('#post_search').val('');
|
|
postEdit.$connect_translations_dialog.find('#assign_to_trid').val('');
|
|
postEdit.$connect_translations_dialog.dialog('open');
|
|
postEdit.connect_element_translations_data();
|
|
|
|
};
|
|
|
|
postEdit.connect_element_translations_data = function() {
|
|
|
|
var $connect_translations_dialog_selector = $('#post_search', postEdit.$connect_translations_dialog );
|
|
|
|
var trid = $('#icl_connect_translations_trid').val();
|
|
var post_type = $('#icl_connect_translations_post_type').val();
|
|
var source_language = $('#icl_connect_translations_language').val();
|
|
var nonce = $('#_icl_nonce_get_orphan_posts').val();
|
|
var data = 'icl_ajx_action=get_orphan_posts&source_language=' + source_language + '&trid=' + trid + '&post_type=' + post_type + '&_icl_nonce=' + nonce;
|
|
|
|
postEdit.$ajax_loader.show();
|
|
|
|
var request = $.ajax({
|
|
type: "POST",
|
|
url: icl_ajx_url,
|
|
dataType: 'json',
|
|
data: data
|
|
});
|
|
|
|
request.done(function( posts ) {
|
|
|
|
var $assignPostButton = $('.js-assign-button');
|
|
|
|
if ( posts.length > 0 ) {
|
|
|
|
postEdit.$posts_found_container.show();
|
|
postEdit.$no_posts_found_message.hide();
|
|
$assignPostButton.prop('disabled', false);
|
|
|
|
$connect_translations_dialog_selector.autocomplete({
|
|
minLength: 0,
|
|
source: posts,
|
|
focus: function (event, ui) {
|
|
$connect_translations_dialog_selector.val(ui.item.label);
|
|
return false;
|
|
},
|
|
select: function (event, ui) {
|
|
$connect_translations_dialog_selector.val(ui.item.label);
|
|
$("#assign_to_trid").val(ui.item.value);
|
|
return false;
|
|
}
|
|
})
|
|
.focus()
|
|
.data("ui-autocomplete")._renderItem = function (ul, item) {
|
|
return $("<li>")
|
|
.append(jQuery("<a></a>").text(item.label))
|
|
.appendTo(ul);
|
|
|
|
};
|
|
} else {
|
|
postEdit.$posts_found_container.hide();
|
|
postEdit.$no_posts_found_message.show();
|
|
$assignPostButton.prop('disabled', true);
|
|
}
|
|
|
|
});
|
|
|
|
request.always(function() {
|
|
postEdit.$ajax_loader.hide(); // Hide ajax loader always, no matter if ajax succeed or not.
|
|
});
|
|
|
|
};
|
|
|
|
postEdit.connect_element_translations_init = function () {
|
|
|
|
postEdit.$connect_translations_dialog.dialog(
|
|
{
|
|
dialogClass : 'wpml-dialog otgs-ui-dialog',
|
|
width : 'auto',
|
|
modal : true,
|
|
autoOpen : false,
|
|
closeOnEscape: true,
|
|
buttons : [
|
|
{
|
|
text : postEdit.$connect_translations_dialog.data('cancel-label'),
|
|
'class': 'button button-secondary alignleft',
|
|
click : function () {
|
|
$(this).dialog("close");
|
|
}
|
|
}, {
|
|
text : postEdit.$connect_translations_dialog.data('ok-label'),
|
|
'class': 'button button-primary js-assign-button',
|
|
click : function () {
|
|
$(this).dialog("close");
|
|
postEdit.connect_element_translations_do();
|
|
}
|
|
}
|
|
]
|
|
}
|
|
);
|
|
|
|
}(); // Auto executable function
|
|
|
|
postEdit.connect_element_translations_do = function() {
|
|
|
|
var trid = $("#assign_to_trid").val();
|
|
var post_type = $('#icl_connect_translations_post_type').val();
|
|
var post_id = $('#icl_connect_translations_post_id').val();
|
|
var nonce = $('#_icl_nonce_get_posts_from_trid').val();
|
|
|
|
var data = 'icl_ajx_action=get_posts_from_trid&trid=' + trid + '&post_type=' + post_type + '&_icl_nonce=' + nonce;
|
|
|
|
var request = $.ajax({
|
|
type: "POST",
|
|
url: icl_ajx_url,
|
|
dataType: 'json',
|
|
data: data
|
|
});
|
|
|
|
request.done(function ( posts ) {
|
|
|
|
if ( posts.length > 0 ) {
|
|
var $list = $('#connect_translations_dialog_confirm_list');
|
|
$list.empty();
|
|
var $ul = $('<ul />').appendTo( $list );
|
|
|
|
var translation_set_has_source_language = false;
|
|
|
|
$.each(posts, function () {
|
|
var $li = $('<li>').append('<span></span>');
|
|
$li.find('span').text('[' + this.language + '] ' + this.title);
|
|
$li.appendTo ( $ul );
|
|
if(this.source_language && !translation_set_has_source_language) {
|
|
translation_set_has_source_language = true;
|
|
}
|
|
});
|
|
|
|
var alert = $('<p>').append(jQuery('<strong></strong>').html(postEdit.$connect_translations_dialog.data('alert-text')));
|
|
alert.appendTo($list);
|
|
|
|
var set_as_source_checkbox = $('<input type="checkbox" value="1" name="set_as_source" />');
|
|
|
|
if(!translation_set_has_source_language) {
|
|
set_as_source_checkbox.prop('checked', true);
|
|
}
|
|
var action = $('<label>').append(set_as_source_checkbox).append(postEdit.$connect_translations_dialog.data('set_as_source-text'));
|
|
action.appendTo($list);
|
|
|
|
postEdit.$connect_translations_dialog_confirm.dialog(
|
|
{
|
|
dialogClass: 'wpml-dialog otgs-ui-dialog',
|
|
resizable : false,
|
|
width : 'auto',
|
|
autoOpen : true,
|
|
modal : true,
|
|
buttons : [
|
|
{
|
|
text : postEdit.$connect_translations_dialog_confirm.data('cancel-label'),
|
|
'class': 'button button-secondary alignleft',
|
|
click : function () {
|
|
$(this).dialog("close");
|
|
postEdit.$connect_translations_dialog.dialog('open');
|
|
}
|
|
}, {
|
|
text : postEdit.$connect_translations_dialog_confirm.data('assign-label'),
|
|
'class': 'button button-primary js-confirm-connect-this-post',
|
|
click : function () {
|
|
|
|
var $confirmButton = $('.js-confirm-connect-this-post');
|
|
$confirmButton.prop('disabled', true).removeClass('button-primary').addClass('button-secondary');
|
|
|
|
$('<span class="spinner" />').appendTo($confirmButton);
|
|
|
|
var nonce = $('#_icl_nonce_connect_translations').val();
|
|
|
|
var data_object = {
|
|
icl_ajx_action: 'connect_translations',
|
|
post_id : post_id,
|
|
post_type : post_type,
|
|
new_trid : trid,
|
|
_icl_nonce : nonce,
|
|
set_as_source : (set_as_source_checkbox.is(':checked') ? 1 : 0)
|
|
};
|
|
|
|
var request = $.ajax(
|
|
{
|
|
type : "POST",
|
|
url : icl_ajx_url,
|
|
dataType: 'json',
|
|
data : data_object
|
|
}
|
|
);
|
|
|
|
request.done(
|
|
function (result) {
|
|
if (result) {
|
|
postEdit.$connect_translations_dialog.dialog("close");
|
|
location.reload();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|
|
]
|
|
}
|
|
);
|
|
}
|
|
}
|
|
);
|
|
};
|
|
|
|
$('#icl_document_connect_translations_dropdown')
|
|
.find('.js-set-post-as-source')
|
|
.on('click', postEdit.connect_element_translations_open );
|
|
|
|
/**
|
|
* HOTFIX DIALOG BOX
|
|
* Remove when WooCommerce does not include jquery-ui smoothness anymore
|
|
**/
|
|
var jQueryUI = $( '#jquery-ui-style-css[href*="smoothness"]' ),
|
|
jQuerySmoothnessHref;
|
|
|
|
// if jquery ui smoothness css is loaded
|
|
if( jQueryUI.length ) {
|
|
// click on Connect with translations
|
|
$( 'body' ).on( 'click', '#icl_document_connect_translations_dropdown .js-set-post-as-source', function() {
|
|
var connectDialog = $( '[aria-describedby="connect_translations_dialog"]'), intervalCheckDialog;
|
|
|
|
// abort if dialog does not exists
|
|
if( ! connectDialog.length ) return false;
|
|
|
|
// backup href of jquery ui smoothness
|
|
jQuerySmoothnessHref = jQueryUI.attr( 'href' );
|
|
|
|
// remove jquery ui smoothness css
|
|
jQueryUI.attr( 'href', '' );
|
|
|
|
// check every 250ms if connect translations dialog is still open
|
|
intervalCheckDialog = setInterval( function() {
|
|
// if dialog is not open anymore
|
|
if( ! connectDialog.is(':visible') ) {
|
|
if( $( '.ui-widget-overlay' ).length == 0 ) {
|
|
// reapply jquery ui smoothness css again
|
|
jQueryUI.attr( 'href', jQuerySmoothnessHref );
|
|
// stop interval
|
|
clearInterval( intervalCheckDialog );
|
|
}
|
|
}
|
|
}, 250 );
|
|
} );
|
|
}
|
|
/* HOTFIX END */
|
|
|
|
var classic_wp_editor_form = $('#post');
|
|
var is_duplicate_post = typeof icl_duplicate_data !== 'undefined' && icl_duplicate_data.duplicate_post;
|
|
var classic_editor_duplicate_post_changed = classic_wp_editor_form.length && is_duplicate_post && icl_duplicate_data.wp_classic_editor_changed;
|
|
|
|
var post_form_callback = function (e) {
|
|
if ( is_duplicate_post || classic_editor_duplicate_post_changed ) {
|
|
e.preventDefault();
|
|
var answer = window.confirm(icl_duplicate_data.icl_duplicate_message);
|
|
var spinner = $('#publishing-action .spinner');
|
|
if (answer) {
|
|
spinner.toggleClass('is-active');
|
|
$.ajax({
|
|
method: "POST",
|
|
url: ajaxurl,
|
|
data: {
|
|
action: 'check_duplicate',
|
|
post_id: icl_duplicate_data.duplicate_post,
|
|
icl_duplciate_nonce: icl_duplicate_data.duplicate_post_nonce
|
|
}
|
|
})
|
|
.success(function (res) {
|
|
spinner.toggleClass('is-active');
|
|
if (res.data) {
|
|
is_duplicate_post = false;
|
|
classic_wp_editor_form.submit();
|
|
} else {
|
|
alert(icl_duplicate_data.icl_duplicate_fail);
|
|
}
|
|
})
|
|
.error(function () {
|
|
spinner.toggleClass('is-active');
|
|
alert(icl_duplicate_data.icl_duplicate_fail);
|
|
});
|
|
}
|
|
}
|
|
};
|
|
|
|
classic_wp_editor_form.on('submit', post_form_callback);
|
|
$(document).on('click', '.editor-post-publish-button', post_form_callback);
|
|
|
|
$(document).on('heartbeat-send', function (event, data) {
|
|
data.icl_post_language = $('#icl_post_language').val();
|
|
data.icl_trid = $('input[name="icl_trid"]').val();
|
|
});
|
|
});
|
|
|
|
function setupCopyButtons() {
|
|
jQuery('#icl_translate_independent').click(function () {
|
|
jQuery(this).attr('disabled', 'disabled').after(icl_ajxloaderimg);
|
|
jQuery.ajax({
|
|
type: "POST", url: icl_ajx_url,
|
|
data: "icl_ajx_action=reset_duplication&post_id=" + jQuery('#post_ID').val() + '&_icl_nonce=' + jQuery('#_icl_nonce_rd').val(),
|
|
success: function (msg) {
|
|
location.reload(true);
|
|
}
|
|
});
|
|
});
|
|
jQuery('#icl_set_duplicate').click(function () {
|
|
if (confirm(jQuery(this).next().html())) {
|
|
jQuery(this).attr('disabled', 'disabled').after(icl_ajxloaderimg);
|
|
var icl_set_duplicate = jQuery('#icl_set_duplicate');
|
|
var wpml_original_post_id = icl_set_duplicate.data('wpml_original_post_id');
|
|
var post_lang = icl_set_duplicate.data('post_lang');
|
|
jQuery.ajax({
|
|
type: "POST", url: icl_ajx_url,
|
|
data: "icl_ajx_action=set_duplication&wpml_original_post_id=" + wpml_original_post_id + '&_icl_nonce=' + jQuery('#_icl_nonce_sd').val() + '&post_lang=' + post_lang,
|
|
success: function (msg) {
|
|
location.replace(
|
|
location.href.replace('post-new.php', 'post.php').replace(/&trid=([0-9]+)/, '') + '&post=' + msg.data.id + '&action=edit');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
} |