From bf2b53f12963d07ee893e63c45bf70a2a5785c0a Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 29 Sep 2024 15:29:01 +0200 Subject: [PATCH 1/3] get the object to be translated correctly --- news/303.bugfix | 2 ++ .../browser/javascript/babel_helper.js | 10 ++++++++-- src/plone/app/multilingual/browser/translate.py | 15 ++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 news/303.bugfix diff --git a/news/303.bugfix b/news/303.bugfix new file mode 100644 index 000000000..ad85419a2 --- /dev/null +++ b/news/303.bugfix @@ -0,0 +1,2 @@ +Get the object to be translated correctly +[erral] diff --git a/src/plone/app/multilingual/browser/javascript/babel_helper.js b/src/plone/app/multilingual/browser/javascript/babel_helper.js index 331240322..48279d32a 100644 --- a/src/plone/app/multilingual/browser/javascript/babel_helper.js +++ b/src/plone/app/multilingual/browser/javascript/babel_helper.js @@ -128,10 +128,16 @@ original_field.children('.translator-widget').click(function () { var field = $(value).attr("rel"); // Fetch source of text to translate. + + // we use the current URL to get the context's UID + var url_parts = document.location.pathname.split('++addtranslation++') + var jsondata = { 'field': field, - 'lang_source': langSource - }; + 'lang_source': langSource, + // we use the second part of the url_parts, the uid itself + 'context_uid': url_parts[1] + }; var targetelement = destination_field.find('textarea'); var tiny_editor = destination_field.find("textarea.mce_editable"); if (!targetelement.length) { diff --git a/src/plone/app/multilingual/browser/translate.py b/src/plone/app/multilingual/browser/translate.py index cb702e41c..0c7938503 100644 --- a/src/plone/app/multilingual/browser/translate.py +++ b/src/plone/app/multilingual/browser/translate.py @@ -5,6 +5,7 @@ from plone.base.interfaces import ILanguage from plone.registry.interfaces import IRegistry from plone.uuid.interfaces import IUUID +from Products.CMFCore.utils import getToolByName from Products.Five import BrowserView from zope.component import getUtility @@ -57,7 +58,19 @@ def __call__(self): ): return _("Need a field") else: - manager = ITranslationManager(self.context) + context_uid = self.request.form.get('context_uid', None) + if context_uid is None: + # try with context if no translation uid is present + manager = ITranslationManager(self.context) + else: + catalog = getToolByName(self.context, "portal_catalog") + brains = catalog(UID=context_uid) + if len(brains): + context = brains[0].getObject() + manager = ITranslationManager(context) + else: + manager = ITranslationManager(self.context) + registry = getUtility(IRegistry) settings = registry.forInterface( IMultiLanguageExtraOptionsSchema, prefix="plone" From 218494031b57f5b3ba3740e4c4ede60075ae8c61 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Sun, 29 Sep 2024 15:36:30 +0200 Subject: [PATCH 2/3] black --- src/plone/app/multilingual/browser/translate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plone/app/multilingual/browser/translate.py b/src/plone/app/multilingual/browser/translate.py index 0c7938503..ab2448912 100644 --- a/src/plone/app/multilingual/browser/translate.py +++ b/src/plone/app/multilingual/browser/translate.py @@ -58,7 +58,7 @@ def __call__(self): ): return _("Need a field") else: - context_uid = self.request.form.get('context_uid', None) + context_uid = self.request.form.get("context_uid", None) if context_uid is None: # try with context if no translation uid is present manager = ITranslationManager(self.context) From 12c3985ad078005ffd50245b5d3076a222d8b087 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Mon, 30 Sep 2024 07:46:39 +0200 Subject: [PATCH 3/3] use uuidToObject to get the object from UUID --- src/plone/app/multilingual/browser/translate.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/plone/app/multilingual/browser/translate.py b/src/plone/app/multilingual/browser/translate.py index ab2448912..e5348f3b0 100644 --- a/src/plone/app/multilingual/browser/translate.py +++ b/src/plone/app/multilingual/browser/translate.py @@ -2,10 +2,10 @@ from plone.app.multilingual import _ from plone.app.multilingual.interfaces import IMultiLanguageExtraOptionsSchema from plone.app.multilingual.interfaces import ITranslationManager +from plone.app.uuid.utils import uuidToObject from plone.base.interfaces import ILanguage from plone.registry.interfaces import IRegistry from plone.uuid.interfaces import IUUID -from Products.CMFCore.utils import getToolByName from Products.Five import BrowserView from zope.component import getUtility @@ -63,10 +63,8 @@ def __call__(self): # try with context if no translation uid is present manager = ITranslationManager(self.context) else: - catalog = getToolByName(self.context, "portal_catalog") - brains = catalog(UID=context_uid) - if len(brains): - context = brains[0].getObject() + context = uuidToObject(context_uid) + if context is not None: manager = ITranslationManager(context) else: manager = ITranslationManager(self.context)