This is an automated email from the ASF dual-hosted git repository. mleila pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push: new 693da97fba Fixed: Display of grid and forms within a same xml file (OFBIZ-13127) (#828) 693da97fba is described below commit 693da97fba82ee5d44840c8423770d209c950d50 Author: MLeila <mle...@apache.org> AuthorDate: Fri Aug 30 09:18:22 2024 +0200 Fixed: Display of grid and forms within a same xml file (OFBIZ-13127) (#828) This correct display of form extending a form within a file containing a grid Co-authored-by: Leila <leila.mek...@nereide.fr> --- .../org/apache/ofbiz/widget/model/ModelGrid.java | 23 +++++++++++++++++++- .../apache/ofbiz/widget/model/ModelSingleForm.java | 25 ++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelGrid.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelGrid.java index 69285be878..8c19ebe642 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelGrid.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelGrid.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import org.apache.ofbiz.base.util.Debug; import org.apache.ofbiz.base.util.UtilMisc; +import org.apache.ofbiz.base.util.UtilValidate; import org.apache.ofbiz.base.util.UtilXml; import org.apache.ofbiz.base.util.string.FlexibleStringExpander; import org.apache.ofbiz.entity.model.ModelReader; @@ -82,13 +83,33 @@ public class ModelGrid extends ModelForm { Debug.logError(e, "Failed to load parent grid definition '" + parentGrid + "' at resource '" + parentResource + "'", MODULE); } + if (parentModel == null) { + // Backwards compatibility - look for form definitions + try { + parentModel = FormFactory.getFormFromLocation(parentResource, parentGrid, entityModelReader, + visualTheme, dispatchContext); + } catch (Exception e) { + Debug.logError(e, "Failed to load parent grid definition '" + parentGrid + + "' at resource '" + parentResource + "'", MODULE); + } + } + } else if (!parentGrid.equals(gridElement.getAttribute("name"))) { // try to find a grid definition in the same file Element rootElement = gridElement.getOwnerDocument().getDocumentElement(); List<? extends Element> gridElements = UtilXml.childElementList(rootElement, "grid"); - if (gridElements.isEmpty()) { + if (gridElements.stream() + .noneMatch(grid -> grid.getAttribute("name").equals(parentGrid))) { // Backwards compatibility - look for form definitions gridElements = UtilXml.childElementList(rootElement, "form"); + Element parentElement = gridElements.stream() + .filter(form -> form.getAttribute("name").equals(parentGrid)) + .findFirst().orElseGet(null); + if (UtilValidate.isNotEmpty(parentElement)) { + parentModel = FormFactory.createModelForm(parentElement, entityModelReader, visualTheme, + dispatchContext, parentResource, parentGrid); + return parentModel; + } } for (Element parentElement : gridElements) { if (parentElement.getAttribute("name").equals(parentGrid)) { diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelSingleForm.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelSingleForm.java index b6fb312224..d41524e5a9 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelSingleForm.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelSingleForm.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import org.apache.ofbiz.base.util.Debug; import org.apache.ofbiz.base.util.UtilMisc; +import org.apache.ofbiz.base.util.UtilValidate; import org.apache.ofbiz.base.util.UtilXml; import org.apache.ofbiz.base.util.string.FlexibleStringExpander; import org.apache.ofbiz.entity.model.ModelReader; @@ -82,12 +83,36 @@ public class ModelSingleForm extends ModelForm { Debug.logError(e, "Failed to load parent form definition '" + parentForm + "' at resource '" + parentResource + "'", MODULE); } + if (parent == null) { + try { + // Backwards compatibility - look for grid definitions + parent = GridFactory.getGridFromLocation(parentResource, parentForm, entityModelReader, + visualTheme, dispatchContext); + } catch (Exception e) { + Debug.logError(e, "Failed to load parent form definition '" + parentForm + "' at resource '" + parentResource + + "'", MODULE); + } + } + } else if (!parentForm.equals(formElement.getAttribute("name"))) { // try to find a form definition in the same file Element rootElement = formElement.getOwnerDocument().getDocumentElement(); List<? extends Element> formElements = UtilXml.childElementList(rootElement, "form"); //Uncomment below to add support for abstract forms //formElements.addAll(UtilXml.childElementList(rootElement, "abstract-form")); + if (formElements.stream() + .noneMatch(form -> form.getAttribute("name").equals(parentForm))) { + // Backwards compatibility - look for grid definitions + formElements = UtilXml.childElementList(rootElement, "grid"); + Element parentElement = formElements.stream() + .filter(grid -> grid.getAttribute("name").equals(parentForm)) + .findFirst().orElseGet(null); + if (UtilValidate.isNotEmpty(parentElement)) { + parent = GridFactory.createModelGrid(parentElement, entityModelReader, visualTheme, + dispatchContext, parentResource, parentForm); + return parent; + } + } for (Element parentElement : formElements) { if (parentElement.getAttribute("name").equals(parentForm)) { parent = FormFactory.createModelForm(parentElement, entityModelReader, visualTheme,