This is an automated email from the ASF dual-hosted git repository.

deepak pushed a commit to branch release17.12
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release17.12 by this push:
     new fe3c06c3fb Added support to allow direct view rendering in override 
view functionality (OFBIZ-13117) Added allow-direct-view-rendering in 
view-mapping tag, default values will be false. i.e by default now view is 
allowed to be used as OOTB overridden view functionality. In order to allow the 
view redirection (override) on all workflows allow-direct-view-rendering must 
be set to true.
fe3c06c3fb is described below

commit fe3c06c3fb7ab1abdd6e0dd55220b7192ec2b8c1
Author: Deepak Dixit <dee...@apache.org>
AuthorDate: Sat Jun 15 11:38:34 2024 +0530

    Added support to allow direct view rendering in override view functionality 
(OFBIZ-13117)
    Added allow-direct-view-rendering in view-mapping tag, default values will 
be false. i.e by default now view is allowed to be used as OOTB overridden view 
functionality. In order to allow the view redirection (override) on all 
workflows allow-direct-view-rendering must be set to true.
---
 applications/content/webapp/content/WEB-INF/controller.xml    |  2 +-
 framework/webapp/dtd/site-conf.xsd                            | 11 +++++++++++
 .../java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java |  2 ++
 .../java/org/apache/ofbiz/webapp/control/RequestHandler.java  |  2 +-
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/applications/content/webapp/content/WEB-INF/controller.xml 
b/applications/content/webapp/content/WEB-INF/controller.xml
index a1535f2e84..c784650444 100644
--- a/applications/content/webapp/content/WEB-INF/controller.xml
+++ b/applications/content/webapp/content/WEB-INF/controller.xml
@@ -1993,7 +1993,7 @@ under the License.
     <view-map name="EditWebSitePathAlias" type="screen" 
page="component://content/widget/WebSiteScreens.xml#EditWebSitePathAlias"/>
     <view-map name="WebSiteContent" type="screen" 
page="component://content/widget/WebSiteScreens.xml#WebSiteContent"/>
     <view-map name="WebSiteCMS" type="screen" 
page="component://content/widget/WebSiteScreens.xml#WebSiteCMS"/>
-    <view-map name="WebSiteCMSContent" type="screen" 
page="component://content/widget/WebSiteScreens.xml#WebSiteCMSContent"/>
+    <view-map name="WebSiteCMSContent" type="screen" 
page="component://content/widget/WebSiteScreens.xml#WebSiteCMSContent" 
allow-direct-view-rendering="true"/>
     <view-map name="WebSiteCMSEditor" type="screen" 
page="component://content/widget/WebSiteScreens.xml#WebSiteCMSEditor"/>
     <view-map name="WebSiteCMSMetaInfo" type="screen" 
page="component://content/widget/WebSiteScreens.xml#WebSiteCMSMetaInfo"/>
     <view-map name="WebSiteCMSPathAlias" type="screen" 
page="component://content/widget/WebSiteScreens.xml#WebSiteCMSPathAlias"/>
diff --git a/framework/webapp/dtd/site-conf.xsd 
b/framework/webapp/dtd/site-conf.xsd
index 1541aeeb3d..8007ae636f 100644
--- a/framework/webapp/dtd/site-conf.xsd
+++ b/framework/webapp/dtd/site-conf.xsd
@@ -784,6 +784,17 @@ under the License.
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
+        <xs:attribute type="xs:boolean" name="allow-direct-view-rendering" 
default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    This attribute determines whether direct rendering of the 
view is allowed when using the override view functionality.
+                    If set to true,
+                    the system permits the view to be rendered directly using 
the override view functionality.
+                    If false or not specified,
+                    direct rendering is not allowed, and system throws Unknown 
request exception.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="x-frame-options" default="sameorigin">
             <xs:annotation>
                 <xs:documentation>
diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java
index 226514ad35..013caf69a5 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java
@@ -648,6 +648,7 @@ public class ConfigXMLReader {
         public String strictTransportSecurity;
         public String description;
         public boolean noCache = false;
+        public boolean allowDirectViewRendering = false;
 
         public ViewMap(Element viewMapElement) {
             this.name = viewMapElement.getAttribute("name");
@@ -656,6 +657,7 @@ public class ConfigXMLReader {
             this.info = viewMapElement.getAttribute("info");
             this.contentType = viewMapElement.getAttribute("content-type");
             this.noCache = 
"true".equals(viewMapElement.getAttribute("no-cache"));
+            this.allowDirectViewRendering = 
"true".equals(viewMapElement.getAttribute("allow-direct-view-rendering"));
             this.encoding = viewMapElement.getAttribute("encoding");
             this.xFrameOption = viewMapElement.getAttribute("x-frame-options");
             this.strictTransportSecurity = 
viewMapElement.getAttribute("strict-transport-security");
diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/RequestHandler.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/RequestHandler.java
index d694ff9b17..379d093ac7 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/RequestHandler.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/RequestHandler.java
@@ -193,7 +193,7 @@ public class RequestHandler {
             ConfigXMLReader.ViewMap viewMap;
             try {
                 viewMap = 
getControllerConfig().getViewMapMap().get(overrideViewUri);
-                if (viewMap == null) {
+                if (viewMap == null || !viewMap.allowDirectViewRendering) {
                     String defaultRequest = 
controllerConfig.getDefaultRequest();
                     if (defaultRequest != null) { // required! to avoid a null 
pointer exception and generate a requesthandler exception if default request 
not found.
                         requestMap = requestMapMap.get(defaultRequest);

Reply via email to