From 1be49d2679666d77558f5fb8fc64b6b204654080 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Mon, 11 Jun 2007 14:50:05 +0000 Subject: [PATCH] Webscript JSR-168 Portlet runtime fixes for webscript url generation client-side function and url argument decoding. JSR-168 portlet webscripts now use different service url - /168service/... UI improvements to pop-up dialogs in portlets - now draggable and position now relative. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5912 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/portlets/myspaces.get.html.ftl | 10 ++++++--- .../web/scripts/portlet/WebScriptPortlet.java | 21 +++++++++++++++---- .../portlet/WebScriptPortletResponse.java | 2 +- source/web/WEB-INF/portlet.xml | 8 +++---- source/web/WEB-INF/web.xml | 15 +++++++++++++ source/web/scripts/ajax/myspaces.js | 7 +++++++ 6 files changed, 51 insertions(+), 12 deletions(-) diff --git a/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces.get.html.ftl index e83e5e54ba..34b29db840 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces.get.html.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces.get.html.ftl @@ -90,7 +90,13 @@
<#-- populated via an AJAX call to 'myspacespanel' webscript --> <#-- resolved path, filter and home.noderef required as arguments --> - +
<#-- the count value is retrieved and set dynamically from the AJAX webscript output above --> @@ -402,7 +408,6 @@ a.spaceBreadcrumbLink:link, a.spaceBreadcrumbLink:visited, a.spaceBreadcrumbLink padding: 8px; margin: 8px; display: none; - left: 8px; -moz-border-radius: 5px; } @@ -416,7 +421,6 @@ a.spaceBreadcrumbLink:link, a.spaceBreadcrumbLink:visited, a.spaceBreadcrumbLink padding: 8px; margin: 8px; display: none; - left: 8px; -moz-border-radius: 5px; } diff --git a/source/java/org/alfresco/web/scripts/portlet/WebScriptPortlet.java b/source/java/org/alfresco/web/scripts/portlet/WebScriptPortlet.java index bc5dea8a86..14ff1eea05 100644 --- a/source/java/org/alfresco/web/scripts/portlet/WebScriptPortlet.java +++ b/source/java/org/alfresco/web/scripts/portlet/WebScriptPortlet.java @@ -25,6 +25,8 @@ package org.alfresco.web.scripts.portlet; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; import java.util.Map; import javax.portlet.ActionRequest; @@ -39,6 +41,7 @@ import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.portlet.WindowState; +import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.web.scripts.DeclarativeWebScriptRegistry; @@ -154,7 +157,7 @@ public class WebScriptPortlet implements Portlet if (scriptUrl != null) { // build web script url from render request - String scriptUrlArgs = ""; + StringBuilder scriptUrlArgs = new StringBuilder(128); Map params = req.getParameterMap(); for (Map.Entry param : params.entrySet()) { @@ -164,12 +167,22 @@ public class WebScriptPortlet implements Portlet String argName = name.substring("arg.".length()); for (String argValue : param.getValue()) { - scriptUrlArgs += (scriptUrlArgs.length() == 0) ? "" : "&"; - scriptUrlArgs += argName + "=" + argValue; + scriptUrlArgs.append((scriptUrlArgs.length() == 0) ? "" : "&"); + // decode url arg (as it would be if this was a servlet) + try + { + scriptUrlArgs.append(argName).append("=") + .append(URLDecoder.decode(argValue, "UTF-8")); + } + catch (UnsupportedEncodingException e) + { + throw new AlfrescoRuntimeException("Unable to decode UTF-8 url!", e); + } + } } } - scriptUrl += "?" + scriptUrlArgs; + scriptUrl += (scriptUrlArgs.length() != 0 ? ("?" + scriptUrlArgs.toString()) : ""); } else { diff --git a/source/java/org/alfresco/web/scripts/portlet/WebScriptPortletResponse.java b/source/java/org/alfresco/web/scripts/portlet/WebScriptPortletResponse.java index da00f1d147..3af33a5f12 100644 --- a/source/java/org/alfresco/web/scripts/portlet/WebScriptPortletResponse.java +++ b/source/java/org/alfresco/web/scripts/portlet/WebScriptPortletResponse.java @@ -154,7 +154,7 @@ public class WebScriptPortletResponse implements WebScriptResponse " var args = url.substring(argsIndex + 1).split(\"&\");" + " for (var i=0; i scriptUrl - /alfresco/wcservice/mytasks + /alfresco/168service/mytasks @@ -50,7 +50,7 @@ scriptUrl - /alfresco/wcservice/doclist + /alfresco/168service/doclist @@ -71,7 +71,7 @@ scriptUrl - /alfresco/wcservice/myspaces + /alfresco/168service/myspaces @@ -92,7 +92,7 @@ scriptUrl - /alfresco/wcservice/mywebforms + /alfresco/168service/mywebforms diff --git a/source/web/WEB-INF/web.xml b/source/web/WEB-INF/web.xml index 0e9c5db9b7..37b3140a1c 100644 --- a/source/web/WEB-INF/web.xml +++ b/source/web/WEB-INF/web.xml @@ -269,6 +269,11 @@ webscripts.authenticator.webclient + + + portalapiServlet + org.alfresco.web.scripts.WebScriptServlet + proxyServlet @@ -399,6 +404,16 @@ wcapiServlet /wcs/* + + + portalapiServlet + /168service/* + + + + portalapiServlet + /168s/* + proxyServlet diff --git a/source/web/scripts/ajax/myspaces.js b/source/web/scripts/ajax/myspaces.js index ca3968d517..e3629c1c10 100644 --- a/source/web/scripts/ajax/myspaces.js +++ b/source/web/scripts/ajax/myspaces.js @@ -473,6 +473,10 @@ var MySpaces = { var panel = $E(".spaceCreateSpacePanel", $(actionEl).getParent()); panel.setStyle("opacity", 0); panel.setStyle("display", "inline"); + Alfresco.Dom.smartAlignElement(panel, panel.getParent()); + // make into a dragable panel + new Drag.Move(panel); + var anim = new Fx.Styles( panel, { @@ -544,6 +548,9 @@ var MySpaces = { var panel = $E(".spaceUploadPanel", $(actionEl).getParent()); panel.setStyle("opacity", 0); panel.setStyle("display", "inline"); + Alfresco.Dom.smartAlignElement(panel, panel.getParent()); + // make into a dragable panel + new Drag.Move(panel); // Generate a file upload element // To perform the actual upload, the element is moved to a hidden iframe