details:   https://code.openbravo.com/erp/devel/pi/rev/418ed88a6db0
changeset: 28157:418ed88a6db0
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Tue Dec 22 09:29:10 2015 +0100
summary:   fixed bug 31758: error uploading attachments/images rendering OB in 
a frame

  Whent trying to upload attachments/images in an application rendered in a 
frame,
  JS errors were thrown.

  This was caused because callback script for those actions assumed top was the
  container for Openbravo, but when in a frame, top is the topmost frameset.

  Fixed by checking if top is OB, and if not using parent instead.

diffstat:

 src/org/openbravo/erpCommon/businessUtility/TabAttachments.java |  19 ++++++---
 src/org/openbravo/erpCommon/info/ImageInfoBLOB.java             |   7 ++-
 2 files changed, 16 insertions(+), 10 deletions(-)

diffs (67 lines):

diff -r 34f4e8dc1c5a -r 418ed88a6db0 
src/org/openbravo/erpCommon/businessUtility/TabAttachments.java
--- a/src/org/openbravo/erpCommon/businessUtility/TabAttachments.java   Mon Dec 
21 19:19:21 2015 +0000
+++ b/src/org/openbravo/erpCommon/businessUtility/TabAttachments.java   Tue Dec 
22 09:29:10 2015 +0100
@@ -126,10 +126,7 @@
             String buttonId = vars.getStringParameter("buttonId");
             response.setContentType("text/html; charset=UTF-8");
             Writer writer = response.getWriter();
-            writer.write("<HTML><BODY><script type=\"text/javascript\">");
-            writer.write("top.OB.Utilities.uploadFinished(\"" + buttonId + 
"\"," + obj.toString()
-                + ");");
-            writer.write("</SCRIPT></BODY></HTML>");
+            writer.write(getUploadFinishedScript(buttonId, obj));
           } finally {
             OBContext.restorePreviousMode();
           }
@@ -679,9 +676,7 @@
       String buttonId = vars.getStringParameter("buttonId");
       response.setContentType("text/html; charset=UTF-8");
       Writer writer = response.getWriter();
-      writer.write("<HTML><BODY><script type=\"text/javascript\">");
-      writer.write("top.OB.Utilities.uploadFinished(\"" + buttonId + "\"," + 
obj.toString() + ");");
-      writer.write("</SCRIPT></BODY></HTML>");
+      writer.write(getUploadFinishedScript(buttonId, obj));
     } catch (Exception e) {
       log4j.debug("Problem saving attachment: " + e.getMessage());
     } finally {
@@ -689,6 +684,16 @@
     }
   }
 
+  private String getUploadFinishedScript(String buttonId, JSONObject obj) {
+    StringBuilder script = new StringBuilder();
+    script.append("<HTML><BODY><script type=\"text/javascript\">");
+    script.append("var iscWindow = top.OB || parent.OB;\n");
+    script.append("iscWindow.Utilities.uploadFinished(\"" + buttonId + "\"," + 
obj.toString()
+        + ");");
+    script.append("</SCRIPT></BODY></HTML>");
+    return script.toString();
+  }
+
   /**
    * Provides the directory in which the attachment has to be stored. For 
example for tableId "259",
    * recordId "0F3A10E019754BACA5844387FB37B0D5", the file directory returned 
is
diff -r 34f4e8dc1c5a -r 418ed88a6db0 
src/org/openbravo/erpCommon/info/ImageInfoBLOB.java
--- a/src/org/openbravo/erpCommon/info/ImageInfoBLOB.java       Mon Dec 21 
19:19:21 2015 +0000
+++ b/src/org/openbravo/erpCommon/info/ImageInfoBLOB.java       Tue Dec 22 
09:29:10 2015 +0100
@@ -11,7 +11,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2009-2014 Openbravo SLU 
+ * All portions are Copyright (C) 2009-2015 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -282,8 +282,9 @@
   private void writeRedirectOB3(PrintWriter writer, String selectorId, String 
imageId,
       String imageSizeAction, Long[] sizeOld, Long[] sizeNew, String msg) {
     writer.write("<HTML><BODY><script type=\"text/javascript\">");
-    writer.write("top." + selectorId + ".callback('" + imageId + "', '" + 
imageSizeAction + "', '"
-        + sizeOld[0] + "' ,'" + sizeOld[1] + "' ,'" + sizeNew[0] + "' ,'" + 
sizeNew[1] + "'");
+    writer.write("var selector = top." + selectorId + " || parent." + 
selectorId + ";\n");
+    writer.write("selector.callback('" + imageId + "', '" + imageSizeAction + 
"', '" + sizeOld[0]
+        + "' ,'" + sizeOld[1] + "' ,'" + sizeNew[0] + "' ,'" + sizeNew[1] + 
"'");
 
     if (StringUtils.isNotEmpty(msg)) {
       writer.write(", '" + StringEscapeUtils.escapeJavaScript(msg) + "'");

------------------------------------------------------------------------------
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to