Index: magnolia-content-translation/src/main/java/info/magnolia/translation/finder/DialogBasedPropertiesToTranslateFinder.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/magnolia-content-translation/src/main/java/info/magnolia/translation/finder/DialogBasedPropertiesToTranslateFinder.java b/magnolia-content-translation/src/main/java/info/magnolia/translation/finder/DialogBasedPropertiesToTranslateFinder.java
--- a/magnolia-content-translation/src/main/java/info/magnolia/translation/finder/DialogBasedPropertiesToTranslateFinder.java (revision 2c7625ba885817a2c3f503820893860263bbafce)
+++ b/magnolia-content-translation/src/main/java/info/magnolia/translation/finder/DialogBasedPropertiesToTranslateFinder.java (date 1611587622524)
@@ -14,6 +14,7 @@
*/
package info.magnolia.translation.finder;
+import com.google.common.collect.Maps;
import info.magnolia.config.registry.Registry;
import info.magnolia.i18nsystem.I18nizer;
import info.magnolia.jcr.util.NodeTypes;
@@ -27,20 +28,18 @@
import info.magnolia.ui.dialog.FormDialogDefinition;
import info.magnolia.ui.editor.FormDefinition;
import info.magnolia.ui.form.definition.DefinitionConverter;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.inject.Inject;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.Maps;
+import javax.inject.Inject;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* Finds the {@link javax.jcr.Property properties} to translate via {@link FormDialogDefinition dialogs}.
@@ -66,7 +65,7 @@
* get it from the parent node.
*/
protected List determineDialogNames(Node node) {
- final List dialogNames = new ArrayList<>();
+ final Set dialogNames = new HashSet<>();
String templateName = null;
boolean isArea = false;
@@ -93,7 +92,7 @@
}
if (StringUtils.isBlank(templateName)) {
- return dialogNames;
+ return new ArrayList<>(dialogNames);
}
final TemplateDefinition templateDefinition = templateDefinitionRegistry.getProvider(templateName).get();
@@ -103,8 +102,23 @@
log.debug("Adding dialog {} to list of dialogNames", dialogName);
dialogNames.add(dialogName);
}
+
+ try {
+ Map areas = getAreasFromRegistry(node);
+ areas.keySet()
+ .stream()
+ .filter(k -> !areas.get(k).getCreateAreaNode())
+ .forEach(k->{
+ String areaDialogName = areas.get(k).getDialog();
+ if (StringUtils.isNotBlank(areaDialogName)) {
+ dialogNames.add(areaDialogName);
+ }
+ });
+ } catch (RepositoryException e) {
+ log.debug("Could not get parent for node {}", NodeUtil.getNodePathIfPossible(node));
+ }
}
- return dialogNames;
+ return new ArrayList<>(dialogNames);
}
/**
@@ -137,23 +151,24 @@
private Map getAreasFromRegistry(Node node) throws RepositoryException {
Node parentNode = node;
do {
- parentNode = parentNode.getParent();
final String template = Renderable.getTemplate(parentNode);
- if (template == null) {
- continue;
- }
+ if (template != null) {
- TemplateDefinition templateDefinition = null;
- try {
- templateDefinition = templateDefinitionRegistry.getProvider(template).get();
- } catch (Registry.NoSuchDefinitionException e) {
- log.debug("No Registry found for node {}", parentNode, e);
- }
+ TemplateDefinition templateDefinition = null;
+ try {
+ templateDefinition = templateDefinitionRegistry.getProvider(template).get();
+ } catch (Registry.NoSuchDefinitionException e) {
+ log.debug("No Registry found for node {}", parentNode, e);
+ }
- if (templateDefinition != null) {
- return templateDefinition.getAreas();
+ if (templateDefinition != null) {
+ return templateDefinition.getAreas();
+ }
}
+
+ parentNode = parentNode.getParent();
+
} while (!NodeUtil.isNodeType(parentNode, NodeTypes.Page.NAME));
return Maps.newHashMap();
@@ -161,6 +176,8 @@
@Override
public List getPropertiesToTranslate(Node node) {
+ List propertyToTranslate = new ArrayList<>();
+
List dialogNames = determineDialogNames(node);
for (String dialogName : dialogNames) {
@@ -169,7 +186,7 @@
FormDialogDefinition dialogDefinition = null;
Object dialog = this.dialogDefinitionRegistry.getProvider(dialogName).get();
if (dialog instanceof info.magnolia.ui.dialog.definition.ConfiguredFormDialogDefinition) {
- info.magnolia.ui.dialog.definition.ConfiguredFormDialogDefinition oldFormDialogDefinition = (info.magnolia.ui.dialog.definition.ConfiguredFormDialogDefinition)dialog;
+ info.magnolia.ui.dialog.definition.ConfiguredFormDialogDefinition oldFormDialogDefinition = (info.magnolia.ui.dialog.definition.ConfiguredFormDialogDefinition) dialog;
dialogDefinition = (FormDialogDefinition) DefinitionConverter.DIALOG.convert(oldFormDialogDefinition);
} else {
dialogDefinition = (FormDialogDefinition) dialog;
@@ -182,21 +199,21 @@
final String dialogLabel;
try {
final String decoratedDialogDefinitionLabel = decoratedDialogDefinition.getLabel();
-
+
if (StringUtils.isNotBlank(decoratedDialogDefinitionLabel) && !isMessageKey(dialogName, decoratedDialogDefinitionLabel)) {
dialogLabel = decoratedDialogDefinitionLabel;
} else {
dialogLabel = dialogName;
}
- return processForm(decoratedForm, dialogLabel);
+ propertyToTranslate.addAll(processForm(decoratedForm, dialogLabel));
} catch (Exception e) {
log.debug("Could not get dialog label for dialog named {}.", dialogName);
}
}
}
- return new ArrayList<>();
+ return propertyToTranslate;
}
/**