From d2c12c2e5ffb9ce8336eac53ef14faaf3499ae82 Mon Sep 17 00:00:00 2001 From: Automerge Date: Thu, 7 Jun 2012 11:42:29 +0000 Subject: [merge from 6.7] #7067 Update a comment, fix typoed ticket reference svn changeset:23903/svn branch:6.8 --- src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index 8d0414a235..d88d0d31e5 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -2060,11 +2060,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, isNewBody = false; if (firstvisible > 0) { - // FIXME #7607 - // Originally deferred due to Firefox oddities which should not - // occur any more. Currently deferring breaks Webkit scrolling with - // relative-height tables, but not deferring instead breaks tables - // with explicit page length. + // Deferred due to some Firefox oddities Scheduler.get().scheduleDeferred(new Command() { public void execute() { scrollBodyPanel @@ -6249,7 +6245,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, // overflow hack here to shake body element a bit. // We must run the fix as a deferred command to prevent it from // overwriting the scroll position with an outdated value, see - // #7606. + // #7607. Scheduler.get().scheduleDeferred(new Command() { public void execute() { Util.runWebkitOverflowAutoFix(scrollBodyPanel.getElement()); -- cgit v1.2.3 From cece22a1d1919d8da459b6dab18c19e53c6e7f04 Mon Sep 17 00:00:00 2001 From: Leif Åstrand Date: Thu, 7 Jun 2012 12:07:16 +0000 Subject: Remove document.write from bootstrap (#8924) svn changeset:23905/svn branch:6.8 --- .../gwt/server/AbstractApplicationPortlet.java | 70 ++++++++++++++++------ .../gwt/server/AbstractApplicationServlet.java | 12 ++-- 2 files changed, 59 insertions(+), 23 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java index 9f1bd4e9ee..26b0d3df1d 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java @@ -879,6 +879,30 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet return null; } + /** + * Returns the URL from which the widgetset is served on the portal. + * + * @param request + * @return + */ + protected String getWidgetsetURL(RenderRequest request) { + String requestWidgetset = getApplicationOrSystemProperty( + PARAMETER_WIDGETSET, null); + String sharedWidgetset = getPortalProperty( + PORTAL_PARAMETER_VAADIN_WIDGETSET, request.getPortalContext()); + + String widgetset; + if (requestWidgetset != null) { + widgetset = requestWidgetset; + } else if (sharedWidgetset != null) { + widgetset = sharedWidgetset; + } else { + widgetset = DEFAULT_WIDGETSET; + } + String widgetsetURL = getWidgetsetURL(widgetset, request); + return widgetsetURL; + } + /** * Returns the URL from which the widgetset is served on the portal. * @@ -1037,12 +1061,32 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet writer.write("\n"); + writeAjaxPageWidgetset(request, writer); + writeAjaxPageHtmlTheme(request, writer, themeName, themeURI, portalTheme); // TODO Warn if widgetset has not been loaded after 15 seconds } + /** + * Writes the script to load the widgetset on the HTML fragment created by + * the portlet. + * + * @param request + * @param writer + * @throws IOException + */ + protected void writeAjaxPageWidgetset(RenderRequest request, + BufferedWriter writer) throws IOException { + String widgetsetURL = getWidgetsetURL(request); + writer.write("'\n"); + writer.write("\n"); + } + /** * Writes the script to load the widgetset on the HTML fragment created by * the portlet. @@ -1051,29 +1095,19 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet * @param response * @param writer * @throws IOException + * + * @Deprecated As of 6.8, use + * {@link #writeAjaxPageWidgetset(RenderRequest, BufferedWriter)} + * instead to avoid using document.write */ + @Deprecated protected void writeAjaxPageScriptWidgetset(RenderRequest request, RenderResponse response, final BufferedWriter writer) throws IOException { - String requestWidgetset = getApplicationOrSystemProperty( - PARAMETER_WIDGETSET, null); - String sharedWidgetset = getPortalProperty( - PORTAL_PARAMETER_VAADIN_WIDGETSET, request.getPortalContext()); + // No longer used as of #8924, but retained to maintain compatibility - String widgetset; - if (requestWidgetset != null) { - widgetset = requestWidgetset; - } else if (sharedWidgetset != null) { - widgetset = sharedWidgetset; - } else { - widgetset = DEFAULT_WIDGETSET; - } - String widgetsetURL = getWidgetsetURL(widgetset, request); - writer.write("document.write('');\n"); - writer.write("document.write(\"\n"); + page.write("\n"); + page.write("\n"); + if (themeName != null) { // Custom theme's stylesheet, load only once, in different // script -- cgit v1.2.3 From 45b2a35ec9789bd1c6ef9cd46de3ba6695279547 Mon Sep 17 00:00:00 2001 From: Leif Åstrand Date: Thu, 7 Jun 2012 13:40:30 +0000 Subject: Fix some typos in Portlet init javascript and html (#8924) svn changeset:23910/svn branch:6.8 --- src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java index 26b0d3df1d..898bd2856c 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java @@ -1082,7 +1082,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet String widgetsetURL = getWidgetsetURL(request); writer.write("'\n"); + + "hidden;opacity:0;top:-100px;left:-100px;\" src=\"javascript:false\">\n"); writer.write("\n"); } @@ -1107,7 +1107,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet // No longer used as of #8924, but retained to maintain compatibility // But we still need to close this one block, for compatibility - writer.append("\\n}\\n"); + writer.append("\n}\n"); } /** -- cgit v1.2.3 From 07b20a1cd3118b744e361d02ca4a5607cccf124f Mon Sep 17 00:00:00 2001 From: Leif Åstrand Date: Thu, 7 Jun 2012 14:02:38 +0000 Subject: Prevent double iframe and script tags if writeAjaxPageScriptWidgetset is overridden (#8924) svn changeset:23911/svn branch:6.8 --- .../gwt/server/AbstractApplicationPortlet.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java index 898bd2856c..edc151f22d 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java @@ -76,6 +76,8 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet private static final String PORTAL_PARAMETER_VAADIN_THEME = "vaadin.theme"; + public static final String WRITE_AJAX_PAGE_SCRIPT_WIDGETSET_SHOULD_WRITE = "writeAjaxPageScriptWidgetsetShouldWrite"; + // TODO some parts could be shared with AbstractApplicationServlet // TODO Can we close the application when the portlet is removed? Do we know @@ -1071,7 +1073,8 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet /** * Writes the script to load the widgetset on the HTML fragment created by - * the portlet. + * the portlet if the request attribute + * WRITE_AJAX_PAGE_SCRIPT_WIDGETSET_SHOULD_WRITE is set to Boolean.TRUE. * * @param request * @param writer @@ -1079,6 +1082,14 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet */ protected void writeAjaxPageWidgetset(RenderRequest request, BufferedWriter writer) throws IOException { + /* + * If the old method that used to add this code using document.write has + * been overridden, we shouldn't do anything here because then the + * iframe and script tag have already been added. + */ + if (request.getAttribute(WRITE_AJAX_PAGE_SCRIPT_WIDGETSET_SHOULD_WRITE) != Boolean.TRUE) { + return; + } String widgetsetURL = getWidgetsetURL(request); writer.write("