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