v1.1.0
This commit is contained in:
parent
a157afe625
commit
02cd01e862
20 changed files with 1365 additions and 646 deletions
|
|
@ -30,7 +30,7 @@
|
|||
/**
|
||||
* Calls the REST endpoint to translate the selected fields of the saved post.
|
||||
*
|
||||
* @param {Array<string>} fields Field names to translate ('title', 'content').
|
||||
* @param {Array<string>} fields Field names to translate ('title', 'content', 'excerpt').
|
||||
* @param {string} targetLocale WordPress locale code.
|
||||
* @returns {Promise<Object>} Promise resolving to the translated values.
|
||||
*/
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
} );
|
||||
}
|
||||
|
||||
function resolveFields( wantTitle, wantContent ) {
|
||||
function resolveFields( wantTitle, wantContent, wantExcerpt ) {
|
||||
var fields = [];
|
||||
if ( wantTitle && data.settings.translateTitle ) {
|
||||
fields.push( 'title' );
|
||||
|
|
@ -58,6 +58,9 @@
|
|||
if ( wantContent && data.settings.translateContent ) {
|
||||
fields.push( 'content' );
|
||||
}
|
||||
if ( wantExcerpt && data.settings.translateExcerpt ) {
|
||||
fields.push( 'excerpt' );
|
||||
}
|
||||
return fields;
|
||||
}
|
||||
|
||||
|
|
@ -72,7 +75,7 @@
|
|||
* Applies a translation response using the right method for the current editor.
|
||||
*
|
||||
* In the block editor, uses wp.data dispatch (and wp.blocks.parse for content).
|
||||
* In the classic editor, updates the DOM directly (title input + TinyMCE).
|
||||
* In the classic editor, updates the DOM directly (title input + TinyMCE + excerpt textarea).
|
||||
*
|
||||
* @param {Object} response Translation response.
|
||||
* @param {Document} doc Document where the metabox lives (for classic fallback).
|
||||
|
|
@ -98,6 +101,9 @@
|
|||
wp.data.dispatch( 'core/editor' ).editPost( { content: response.content } );
|
||||
}
|
||||
}
|
||||
if ( response.excerpt !== undefined ) {
|
||||
wp.data.dispatch( 'core/editor' ).editPost( { excerpt: response.excerpt } );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -111,6 +117,12 @@
|
|||
if ( response.content !== undefined ) {
|
||||
applyContentToClassic( response.content, doc );
|
||||
}
|
||||
if ( response.excerpt !== undefined ) {
|
||||
var excerptTextarea = doc.getElementById( 'excerpt' );
|
||||
if ( excerptTextarea ) {
|
||||
excerptTextarea.value = response.excerpt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function applyContentToClassic( content, doc ) {
|
||||
|
|
@ -159,7 +171,11 @@
|
|||
return;
|
||||
}
|
||||
|
||||
var fields = resolveFields( data.settings.translateTitle, data.settings.translateContent );
|
||||
var fields = resolveFields(
|
||||
data.settings.translateTitle,
|
||||
data.settings.translateContent,
|
||||
data.settings.translateExcerpt
|
||||
);
|
||||
if ( fields.length === 0 ) {
|
||||
setStatus( labels.noFields || '', 'warning' );
|
||||
return;
|
||||
|
|
@ -244,6 +260,10 @@
|
|||
var translateContent = contentState[0];
|
||||
var setTranslateContent = contentState[1];
|
||||
|
||||
var excerptState = useState( !! data.settings.translateExcerpt );
|
||||
var translateExcerpt = excerptState[0];
|
||||
var setTranslateExcerpt = excerptState[1];
|
||||
|
||||
var coreEditor = dataStore.select( 'core/editor' );
|
||||
var isDirty = coreEditor && typeof coreEditor.isEditedPostDirty === 'function' ? coreEditor.isEditedPostDirty() : false;
|
||||
|
||||
|
|
@ -253,7 +273,7 @@
|
|||
);
|
||||
}
|
||||
|
||||
if ( ! data.settings.translateTitle && ! data.settings.translateContent ) {
|
||||
if ( ! data.settings.translateTitle && ! data.settings.translateContent && ! data.settings.translateExcerpt ) {
|
||||
return el( 'div', { className: 'ai-translator-sidebar' },
|
||||
el( components.Notice, { status: 'info', isDismissible: false }, labels.noFields || '' )
|
||||
);
|
||||
|
|
@ -270,7 +290,7 @@
|
|||
} );
|
||||
|
||||
function runTranslate() {
|
||||
var fields = resolveFields( translateTitle, translateContent );
|
||||
var fields = resolveFields( translateTitle, translateContent, translateExcerpt );
|
||||
|
||||
if ( fields.length === 0 ) {
|
||||
setNotice( { status: 'warning', message: labels.noFields || '' } );
|
||||
|
|
@ -350,6 +370,17 @@
|
|||
} ) );
|
||||
}
|
||||
|
||||
if ( data.settings.translateExcerpt ) {
|
||||
children.push( el( components.CheckboxControl, {
|
||||
key: 'excerpt',
|
||||
label: labels.translateExcerpt || '',
|
||||
checked: translateExcerpt,
|
||||
onChange: function ( value ) {
|
||||
setTranslateExcerpt( !! value );
|
||||
},
|
||||
} ) );
|
||||
}
|
||||
|
||||
children.push( el( components.Button, {
|
||||
key: 'submit',
|
||||
variant: 'primary',
|
||||
|
|
|
|||
Loading…
Reference in a new issue