jQuery( function($){
var WCML_WPML_Translation_Editor = {
is_wcml_product: false,
field_views: null,
footer_view: null,
save_buttons_tip: null,
init: function(){
$(document).on( 'WPML_TM.editor.before_render', WCML_WPML_Translation_Editor.do_editor_before_render );
$(document).on( 'WPML_TM.editor.ready', WCML_WPML_Translation_Editor.do_editor_ready );
},
show_file_paths_button: function( event, view ) {
if ( view.field.field_type.substr( 0, 8 ) === 'file-url' ) {
view.$el.append(
'
' +
'' +
'
' );
}
},
show_downloadable_files_frame: function( event ){
var downloadable_file_frame;
var file_path_field;
var file_paths;
var el = $(this);
file_path_field = el.closest('.wpml-form-row').find('.translated_value');
file_paths = file_path_field.val();
event.preventDefault();
// If the media frame already exists, reopen it.
if ( downloadable_file_frame ) {
downloadable_file_frame.open();
return;
}
var downloadable_file_states = [
// Main states.
new wp.media.controller.Library({
library: wp.media.query(),
multiple: true,
title: el.data('choose'),
priority: 20,
filterable: 'uploaded'
})
];
// Create the media frame.
downloadable_file_frame = wp.media.frames.downloadable_file = wp.media({
// Set the title of the modal.
title: el.data('choose'),
library: {
type: ''
},
button: {
text: el.data('update')
},
multiple: true,
states: downloadable_file_states
});
// When an image is selected, run a callback.
downloadable_file_frame.on( 'select', function() {
var selection = downloadable_file_frame.state().get('selection');
selection.map( function( attachment ) {
attachment = attachment.toJSON();
if ( attachment.url )
file_paths = attachment.url;
} );
file_path_field.val( file_paths );
});
// Set post to 0 and set our custom type
downloadable_file_frame.on( 'ready', function() {
downloadable_file_frame.uploader.options.uploader.params = {
type: 'downloadable_product'
};
});
// Finally, open the modal.
downloadable_file_frame.open();
},
update_slug: function(){
var title = $('#job_field_title .js-translated-value').val();
var slug_field = $('#job_field_slug .js-translated-value');
if( title != '' && slug_field.val() == '' ){
var job_id = $('#icl_tm_editor input[name=job_id]').val();
slug_field.prop('readonly', 'on');
$.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'json',
data: { action: 'wcml_editor_auto_slug', title: title, job_id: job_id },
success: function(response) {
slug_field.val( response.slug );
slug_field.removeAttr('readonly');
$('#icl_tm_copy_link_slug').prop('disabled', 'on');
}
});
}
},
do_editor_before_render : function( event, job_type ) {
WCML_WPML_Translation_Editor.is_wcml_product = job_type === 'post_product';
if ( WCML_WPML_Translation_Editor.is_wcml_product ) {
$(document).on( 'WPML_TM.editor.field_view_ready', WCML_WPML_Translation_Editor.show_file_paths_button );
$(document).on( 'WPML_TM.editor.field_update_ui', WCML_WPML_Translation_Editor.field_update_ui );
$(document).on( 'click', '.wcml_file_paths_button', WCML_WPML_Translation_Editor.show_downloadable_files_frame );
$(document).on( 'blur', '#job_field_title .js-translated-value', WCML_WPML_Translation_Editor.update_slug );
$(document).on( 'focus', '#job_field_slug .js-translated-value', WCML_WPML_Translation_Editor.update_slug );
$(document).on( 'blur', '#job_field_slug .js-translated-value', WCML_WPML_Translation_Editor.update_slug );
}
},
do_editor_ready : function( event, job_type, field_views, footer_view ) {
if ( WCML_WPML_Translation_Editor.is_wcml_product ) {
WCML_WPML_Translation_Editor.save_buttons_tip = WCML_Tooltip.add_before( '.js-save-and-close', wcml_settings.strings.save_tooltip, 'margin-right: 3px;' );
WCML_WPML_Translation_Editor.field_views = field_views;
WCML_WPML_Translation_Editor.footer_view = footer_view;
WCML_WPML_Translation_Editor.update_save_button_state();
WCML_WPML_Translation_Editor.check_variations_fields();
if( wcml_settings.hide_resign ){
WCML_WPML_Translation_Editor.footer_view.hideResignButton( true );
}else{
WCML_Tooltip.add_after( '.js-resign', wcml_settings.strings.resign_tooltip, 'margin-left:-12px;' );
}
}
},
update_save_button_state: function() {
var one_of_these_fields_is_required = [ 'title', 'product_content', 'product_excerpt' ];
var disable_buttons = true;
_.each( WCML_WPML_Translation_Editor.field_views, function( view ) {
var translation = view.getTranslation();
if ( translation !== '' && jQuery.inArray( view.getFieldType(), one_of_these_fields_is_required ) !== -1 ) {
disable_buttons = false;
if( WCML_WPML_Translation_Editor.save_buttons_tip ){
WCML_WPML_Translation_Editor.save_buttons_tip.hide();
}
}
});
if( disable_buttons ){
WCML_WPML_Translation_Editor.save_buttons_tip.show();
}
WCML_WPML_Translation_Editor.footer_view.disableSaveButtons( disable_buttons );
},
field_update_ui: function( event, view ) {
WCML_WPML_Translation_Editor.update_save_button_state();
},
check_variations_fields: function(){
var elem = false;
jQuery('[id^="job_field_variation_desc"]').closest('.postbox').find('.original_value').each(function(){
if( jQuery(this).val() === '' ) {
elem = jQuery(this);
}else{
return false;
}
});
if( elem ){
elem.closest('.postbox').find('.button-link').click();
}
}
};
WCML_WPML_Translation_Editor.init();
});