Skip to content

Commit

Permalink
I18N-1297 - Temporarily block third-party sync for a Text Unit Variant
Browse files Browse the repository at this point in the history
Added a new status to text unit variants and avoid updating them
  • Loading branch information
DarKhaos committed Oct 18, 2024
1 parent 68f9e2f commit d9c188b
Show file tree
Hide file tree
Showing 10 changed files with 81 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,10 @@ public enum Status {

MT_REVIEW,
/** A string that doesn't need any work to be performed on it. */
APPROVED;
APPROVED,

/** It was translated in Mojito, so it won't be updated during third-party sync */
TRANSLATED_IN_MOJITO;
};

@Column(name = "content", length = Integer.MAX_VALUE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,36 +250,41 @@ void importTextUnitsOfLocaleAndAsset(
currentTextUnit.getLocaleId(), currentTextUnit.getTmTextUnitId());
}

User importedBy = auditorAwareImpl.getCurrentAuditor().orElse(null);
AddTMTextUnitCurrentVariantResult addTMTextUnitCurrentVariantResult =
tmService.addTMTextUnitCurrentVariantWithResult(
tmTextUnitCurrentVariant,
asset.getRepository().getTm().getId(),
asset.getId(),
currentTextUnit.getTmTextUnitId(),
locale.getId(),
textUnitForBatchImport.getContent(),
textUnitForBatchImport.getComment(),
textUnitForBatchImport.getStatus(),
textUnitForBatchImport.isIncludedInLocalizedFile(),
importTime,
importedBy);

if (addTMTextUnitCurrentVariantResult.isTmTextUnitCurrentVariantUpdated()) {

Long tmTextUnitVariantId =
addTMTextUnitCurrentVariantResult
.getTmTextUnitCurrentVariant()
.getTmTextUnitVariant()
.getId();

for (TMTextUnitVariantComment tmTextUnitVariantComment :
textUnitForBatchImport.getTmTextUnitVariantComments()) {
tmMTextUnitVariantCommentService.addComment(
tmTextUnitVariantId,
tmTextUnitVariantComment.getType(),
tmTextUnitVariantComment.getSeverity(),
tmTextUnitVariantComment.getContent());
if (tmTextUnitCurrentVariant != null
&& tmTextUnitCurrentVariant.getTmTextUnitVariant() != null
&& tmTextUnitCurrentVariant.getTmTextUnitVariant().getStatus()
!= Status.MANUALLY_TRANSLATED) {
User importedBy = auditorAwareImpl.getCurrentAuditor().orElse(null);
AddTMTextUnitCurrentVariantResult addTMTextUnitCurrentVariantResult =
tmService.addTMTextUnitCurrentVariantWithResult(
tmTextUnitCurrentVariant,
asset.getRepository().getTm().getId(),
asset.getId(),
currentTextUnit.getTmTextUnitId(),
locale.getId(),
textUnitForBatchImport.getContent(),
textUnitForBatchImport.getComment(),
textUnitForBatchImport.getStatus(),
textUnitForBatchImport.isIncludedInLocalizedFile(),
importTime,
importedBy);

if (addTMTextUnitCurrentVariantResult.isTmTextUnitCurrentVariantUpdated()) {

Long tmTextUnitVariantId =
addTMTextUnitCurrentVariantResult
.getTmTextUnitCurrentVariant()
.getTmTextUnitVariant()
.getId();

for (TMTextUnitVariantComment tmTextUnitVariantComment :
textUnitForBatchImport.getTmTextUnitVariantComments()) {
tmMTextUnitVariantCommentService.addComment(
tmTextUnitVariantId,
tmTextUnitVariantComment.getType(),
tmTextUnitVariantComment.getSeverity(),
tmTextUnitVariantComment.getContent());
}
}
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@ public enum StatusFilter {
* TextUnits that are not rejected, ie {@link TMTextUnitVariant#includedInLocalizedFile} is true.
*/
NOT_REJECTED,
/** TextUnits with status ({@link TMTextUnitVariant.Status#TRANSLATED_IN_MOJITO}). */
TRANSLATED_IN_MOJITO,
}
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,11 @@ NativeCriteria getCriteriaForSearch(TextUnitSearcherParameters searchParameters)
"tuv.status", TMTextUnitVariant.Status.TRANSLATION_NEEDED.toString()),
new NativeEqExpFix("tuv.included_in_localized_file", Boolean.FALSE))));
break;
case TRANSLATED_IN_MOJITO:
conjunction.add(
new NativeEqExpFix(
"tuv.status", TMTextUnitVariant.Status.TRANSLATED_IN_MOJITO.toString()));
break;
default:
throw new RuntimeException("Filter type not implemented");
}
Expand Down
6 changes: 6 additions & 0 deletions webapp/src/main/resources/properties/en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,9 @@ search.statusDropdown.needsReview=Needs Review
# Status filter option to search for text units that need to be translated
search.statusDropdown.forTranslation=Needs Translation

# Status filter option to search for text units that are translated in Mojito
search.statusDropdown.translatedInMojito=Translated in Mojito

# Status filter option to search for text units that are rejected (won't be added in localized file)
search.statusDropdown.rejected=Rejected

Expand Down Expand Up @@ -325,6 +328,9 @@ textUnit.reviewModal.rejected=Rejected
# Button label used for primary action "removeReview" on modal dialog
textUnit.reviewModal.accepted=Accepted

# Label for Translated in Mojito button on modal dialog
textUnit.reviewModal.translatedInMojito=Translated in Mojito

# Button label used for the Needs Review button on the textunit review modal
textUnit.reviewModal.needsReview=Needs Review

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ let StatusDropdown = createReactClass({
},

setStateAndCallSearchParamChanged(searchFilterParam, searchFilterParamValue) {

let state = {};

state[searchFilterParam] = searchFilterParamValue;

this.setState(state, function () {
Expand Down Expand Up @@ -170,6 +170,8 @@ let StatusDropdown = createReactClass({
return this.props.intl.formatMessage({ id: "search.statusDropdown.needsReview" });
case SearchParamsStore.STATUS.REJECTED:
return this.props.intl.formatMessage({ id: "search.statusDropdown.rejected" });
case SearchParamsStore.STATUS.TRANSLATED_IN_MOJITO:
return this.props.intl.formatMessage({ id: "search.statusDropdown.translatedInMojito" });
}
},

Expand Down Expand Up @@ -263,6 +265,7 @@ let StatusDropdown = createReactClass({
{this.renderStatusMenuItem(SearchParamsStore.STATUS.FOR_TRANSLATION)}
{this.renderStatusMenuItem(SearchParamsStore.STATUS.REVIEW_NEEDED)}
{this.renderStatusMenuItem(SearchParamsStore.STATUS.REJECTED)}
{this.renderStatusMenuItem(SearchParamsStore.STATUS.TRANSLATED_IN_MOJITO)}

<MenuItem divider />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,10 @@ let TextUnit = createReactClass({
textUnit.setIncludedInLocalizedFile(true);
textUnit.setStatus(TextUnitSDK.STATUS.TRANSLATION_NEEDED);
break;
case "translated_in_mojito":
textUnit.setIncludedInLocalizedFile(true);
textUnit.setStatus(TextUnitSDK.STATUS.TRANSLATED_IN_MOJITO);
break;
}

WorkbenchActions.saveTextUnit(textUnit);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ class TextUnitsreviewModal extends React.Component {
this.REVIEW = "review";
this.REJECT = "reject";
this.ACCEPT = "accept";
this.TRANSLATE = "translate";
this.TRANSLATE = "translate"
this.TRANSLATED_IN_MOJITO = "translated_in_mojito";

this.state = {
"currentReviewState": this.getInitialReviewStateOfTextUnits(),
Expand Down Expand Up @@ -99,6 +100,15 @@ class TextUnitsreviewModal extends React.Component {
);
};

getManuallyTranslatedButton = () => {
return (
<Button active={this.state.currentReviewState === this.TRANSLATED_IN_MOJITO}
onClick={this.optionClicked.bind(this, this.TRANSLATED_IN_MOJITO)}>
<FormattedMessage id="textUnit.reviewModal.manuallyTranslated"/>
</Button>
);
};

/**
* @returns {JSX} The JSX for the translate button with class active set according to the current component state
*/
Expand Down Expand Up @@ -166,6 +176,8 @@ class TextUnitsreviewModal extends React.Component {
currentReviewState = this.REVIEW;
} else if (textUnit.getStatus() === TextUnit.STATUS.TRANSLATION_NEEDED) {
currentReviewState = this.TRANSLATE;
} else if (textUnit.getStatus() === TextUnit.STATUS.TRANSLATED_IN_MOJITO) {
currentReviewState = this.TRANSLATED_IN_MOJITO;
}

}
Expand Down Expand Up @@ -195,7 +207,7 @@ class TextUnitsreviewModal extends React.Component {
return (
<Modal show={this.props.isShowModal} onHide={this.closeModal} onKeyUp={(e) => {
e.stopPropagation()
}}>
}} bsSize="large">
<Modal.Header closeButton>
<Modal.Title><FormattedMessage id="textUnit.reviewModal.title"/></Modal.Title>
</Modal.Header>
Expand All @@ -216,6 +228,7 @@ class TextUnitsreviewModal extends React.Component {
{this.getTranslateButton()}
{this.getReviewButton()}
{this.getAcceptButton()}
{this.getManuallyTranslatedButton()}
</ButtonGroup>
</ButtonToolbar>
</Modal.Body>
Expand Down
3 changes: 2 additions & 1 deletion webapp/src/main/resources/public/js/sdk/TextUnit.js
Original file line number Diff line number Diff line change
Expand Up @@ -308,5 +308,6 @@ TextUnit.STATUS = {
"TRANSLATION_NEEDED": "TRANSLATION_NEEDED",
"REVIEW_NEEDED": "REVIEW_NEEDED",
"APPROVED": "APPROVED",
"REJECTED": "REJECTED"
"REJECTED": "REJECTED",
"TRANSLATED_IN_MOJITO": "TRANSLATED_IN_MOJITO",
};
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,10 @@ SearchParamsStore.STATUS = {
* TextUnits that are not rejected, ie includedInLocalizedFile is true.
*/
"NOT_REJECTED": "NOT_REJECTED",

/**
* TextUnits with status MANUALLY_TRANSLATED.
*/
"MANUALLY_TRANSLATED": "MANUALLY_TRANSLATED",
};

export default alt.createStore(SearchParamsStore, 'SearchParamsStore');

0 comments on commit d9c188b

Please sign in to comment.