first commit
This commit is contained in:
@@ -0,0 +1,352 @@
|
||||
/*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');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user