Author: szimano Date: 2006-05-23 18:52:54 -0400 (Tue, 23 May 2006) New Revision: 4386 Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/taglib/TagMeTag.java labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/MetaMoveFilter.java Modified: labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml labs/jbosslabs/trunk/portal-extensions/forge-common/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/forge-file-access/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java labs/jbosslabs/trunk/portal-extensions/forge-podcast/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/forge-root-redirect/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/forge-status/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/forge-tagme/maven.xml labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/forge-timetracker/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/polls/src/web/WEB-INF/tld/forge.tld labs/jbosslabs/trunk/portal-extensions/primates/src/web/WEB-INF/tld/forge.tld Log: gwt tagme + labs filter JBLAB-674 Modified: labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml =================================================================== --- labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml 2006-05-23 22:52:54 UTC (rev 4386) @@ -21,6 +21,16 @@ <filter-name>titleAndTimestampFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> + + <filter> + <filter-name>moveMeta</filter-name> + <filter-class>org.jboss.forge.portal.MetaMoveFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>moveMeta</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> <!-- SSL Processor --> <filter> Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/taglib/TagMeTag.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/taglib/TagMeTag.java 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/taglib/TagMeTag.java 2006-05-23 22:52:54 UTC (rev 4386) @@ -0,0 +1,107 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.forge.common.taglib; + +import java.io.IOException; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.tagext.TagSupport; + +public class TagMeTag extends TagSupport{ + + private String user; + private String div; + private String service; + private String path; + private String id; + + private static final long serialVersionUID = 1L; + + @Override + public int doStartTag() throws JspException { + return SKIP_BODY; + } + + public int doEndTag() throws JspException { + try { + pageContext.getOut().write(getMetaProperties()); + } catch (IOException e) { + throw new JspException(e); + } + + return EVAL_PAGE; + } + + private String getMetaProperties() { + StringBuffer buffer = new StringBuffer(); + buffer.append(getMetaProperty("tagMeSet"+id, id)); + buffer.append(getMetaProperty("tagMeDiv"+id, div)); + buffer.append(getMetaProperty("tagMePath"+id, path)); + buffer.append(getMetaProperty("tagMeUser"+id, user)); + buffer.append(getMetaProperty("tagMeClass"+id, service)); + return buffer.toString(); + } + + private String getMetaProperty(String key, String value) { + return "<meta name='gwt:property' content='"+key+"="+value+"' />"; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getDiv() { + return div; + } + + public void setDiv(String div) { + this.div = div; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } +} Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/forge-file-access/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-file-access/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-file-access/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2006-05-23 22:52:54 UTC (rev 4386) @@ -49,235 +49,265 @@ * @author Ryszard Kozmik */ public class Freezone extends JBossLabsPortlet { - @Inject - private ContentManager cm; + @Inject + private ContentManager cm; - @CacheItem - private FreezoneConfWatcher conf; + @CacheItem + private FreezoneConfWatcher conf; - private final static String ERROR_404_MSG = "404 - Not found."; + private final static String ERROR_404_MSG = "404 - Not found."; - private void sendResponseNotFound(JBossRenderResponse response) - throws IOException { - response.setContentType(Constants.PAGES_MIME_TYPE); - response.getWriter().println(ERROR_404_MSG); - } + private void sendResponseNotFound(JBossRenderResponse response) + throws IOException { + response.setContentType(Constants.PAGES_MIME_TYPE); + response.getWriter().println(ERROR_404_MSG); + } - public void labsDoView(JBossRenderRequest request, - JBossRenderResponse response) throws IOException, PortletException { - /* - * Checking if the user has access to the selected project (this isn't - * checked in the url mapper). - */ - String projectId = ProjectsHelper.getSelectedProjectId(request); - String portalName = ForgeHelper.getPortalName(request); + public void labsDoView(JBossRenderRequest request, + JBossRenderResponse response) throws IOException, PortletException { + /* + * Checking if the user has access to the selected project (this isn't + * checked in the url mapper). + */ + String projectId = ProjectsHelper.getSelectedProjectId(request); + String portalName = ForgeHelper.getPortalName(request); - if ((projectId != null) && (!ProjectsHelper.getProjects( - portalName).projectExists( - new RenderRequestPermissionsChecker(request), projectId))) { - sendResponseNotFound(response); - return; - } + if ((projectId != null) + && (!ProjectsHelper.getProjects(portalName) + .projectExists( + new RenderRequestPermissionsChecker(request), + projectId))) { + sendResponseNotFound(response); + return; + } - // Getting the path requested by the user. - Object requestedPathObject = request.getAttribute(Constants.ATTR_REQ_PATH); + // Getting the path requested by the user. + Object requestedPathObject = request + .getAttribute(Constants.ATTR_REQ_PATH); - String requestedPath; - if (requestedPathObject == null) { - requestedPath = request.getParameter(Constants.ATTR_REQ_PATH); - } else { - requestedPath = requestedPathObject.toString(); - } + String requestedPath; + if (requestedPathObject == null) { + requestedPath = request.getParameter(Constants.ATTR_REQ_PATH); + } else { + requestedPath = requestedPathObject.toString(); + } - // It is used if an instance has defined preference in instance descriptor. - Object requestedPathFromPref = request.getPreferences().getValue("page", null ); + // It is used if an instance has defined preference in instance + // descriptor. + Object requestedPathFromPref = request.getPreferences().getValue( + "page", null); - if (requestedPathFromPref != null){ - requestedPath = (String)requestedPathFromPref; - } + if (requestedPathFromPref != null) { + requestedPath = (String) requestedPathFromPref; + } - if (requestedPath == null) { - sendResponseNotFound(response); - return; - } + if (requestedPath == null) { + sendResponseNotFound(response); + return; + } - Node requestedNode; - try { - requestedNode = cm.getNode(requestedPath); - } catch (ResourceDoesNotExist e) { - // Even if the resource doesn't exist, writing an edit link, to - // (possibly) create a new page.ru - if (isAllowedToEdit(portalName, request, response)) { - response.setContentType(Constants.PAGES_MIME_TYPE); - writeEditLink(portalName, requestedPath, request, response); - response.getWriter().println(ERROR_404_MSG); - } else { - sendResponseNotFound(response); - } + Node requestedNode; + try { + requestedNode = cm.getNode(requestedPath); + } catch (ResourceDoesNotExist e) { + // Even if the resource doesn't exist, writing an edit link, to + // (possibly) create a new page.ru + if (isAllowedToEdit(portalName, request, response)) { + response.setContentType(Constants.PAGES_MIME_TYPE); + writeTagmeButton(request, response); + writeEditLink(portalName, requestedPath, request, response); + response.getWriter().println(ERROR_404_MSG); + } else { + sendResponseNotFound(response); + } - return; - } + return; + } - response.setContentType(Constants.PAGES_MIME_TYPE); - if (isAllowedToEdit(portalName, request, response)) { - writeEditLink(portalName, requestedPath, request, response); - Tools.transfer(requestedNode.getContentInputStream(), - response.getWriter()); - } else { - Tools.transfer(requestedNode.getContentInputStream(), - response.getPortletOutputStream()); - } - } + response.setContentType(Constants.PAGES_MIME_TYPE); + writeTagmeButton(request, response); + if (isAllowedToEdit(portalName, request, response)) { + writeEditLink(portalName, requestedPath, request, response); + Tools.transfer(requestedNode.getContentInputStream(), response + .getWriter()); + } else { + Tools.transfer(requestedNode.getContentInputStream(), response + .getWriter()); + } + } - @SuppressWarnings("unchecked") - @Override - protected boolean isAllowed(JBossRenderRequest request, - JBossRenderResponse response) { - Object requestedPathFromPref = request.getPreferences().getValue("page", null ); - Object cmsPathObject = request.getAttribute(Constants.ATTR_REQ_PATH); - String cmsPath = null; - if (cmsPathObject!=null) { - cmsPath= cmsPathObject.toString(); - } - if (requestedPathFromPref!=null) { - cmsPath=(String)requestedPathFromPref; - } + private void writeTagmeButton(JBossRenderRequest request, + JBossRenderResponse response) throws PortletException, IOException { + PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( + "/WEB-INF/jsp/normal.jsp"); - List<String> loggedInOnly = conf.get(ForgeHelper.getPortalName(request)); + rd.include(request, response); + } - return (request.getUser() != null) || (loggedInOnly != null && !loggedInOnly.contains(cmsPath)); - } + @SuppressWarnings("unchecked") + @Override + protected boolean isAllowed(JBossRenderRequest request, + JBossRenderResponse response) { + Object requestedPathFromPref = request.getPreferences().getValue( + "page", null); + Object cmsPathObject = request.getAttribute(Constants.ATTR_REQ_PATH); + String cmsPath = null; + if (cmsPathObject != null) { + cmsPath = cmsPathObject.toString(); + } + if (requestedPathFromPref != null) { + cmsPath = (String) requestedPathFromPref; + } - /* - * EDITING PART - */ + List<String> loggedInOnly = conf + .get(ForgeHelper.getPortalName(request)); - private final static String LOG_MSG = "Freezone save"; - private final static String ERROR_403_MSG = "403 not authorized"; - private final static String EDIT_LINK_JSP = "freezone/edit_link.jsp"; - private final static String EDIT_JSP = "freezone/edit.jsp"; + return (request.getUser() != null) + || (loggedInOnly != null && !loggedInOnly.contains(cmsPath)); + } - private final static String ATTR_RETURN = "return"; + /* + * EDITING PART + */ - private final static String PARAM_MESSAGE = "message"; - private final static String MESSAGE_SAVE_ERROR = - "There was an error while saving; please try again or contact the " + - "administrator. Error: "; + private final static String LOG_MSG = "Freezone save"; - private final static String ACTION_SAVE = "save"; - private final static String ACTION_CANCEL = "cancel"; - private final static String ACTION_PREVIEW = "preview"; - private final static String CONTENT = "content"; + private final static String ERROR_403_MSG = "403 not authorized"; - protected boolean isAllowedToEdit(String portalName, JBossRenderRequest request, - JBossRenderResponse response) { - return ProjectsHelper.getProjects(portalName).editPermissionAllowed( - new RenderRequestPermissionsChecker(request), - ProjectsHelper.getSelectedProjectId(request, true)); - } + private final static String EDIT_LINK_JSP = "freezone/edit_link.jsp"; - protected void writeEditLink(String portalName, String requestedPath, - JBossRenderRequest request, JBossRenderResponse response) - throws IOException, PortletException { - PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( - ForgeHelper.createRepoAccessPath(portalName, EDIT_LINK_JSP)); + private final static String EDIT_JSP = "freezone/edit.jsp"; - String ret = request.getParameter(ATTR_RETURN); - if (ret == null) { - Object retObj = request.getAttribute(Constants.ATTR_URL); - if (retObj != null) { - ret = retObj.toString(); - } - } + private final static String ATTR_RETURN = "return"; - request.setAttribute(ATTR_RETURN, ret); - request.setAttribute(Constants.ATTR_REQ_PATH, requestedPath); + private final static String PARAM_MESSAGE = "message"; - rd.include(request, response); - } + private final static String MESSAGE_SAVE_ERROR = "There was an error while saving; please try again or contact the " + + "administrator. Error: "; - private Node getNodeForPath(String path) throws PortletException { - try { - return cm.getNode(path); - } catch (ResourceDoesNotExist resourceDoesNotExist) { - try { - return cm.getRootDirectory().newNode(path); - } catch (Exception e) { - throw new PortletException(e); - } - } - } + private final static String ACTION_SAVE = "save"; - protected void doEdit(JBossRenderRequest request, - JBossRenderResponse response) - throws PortletException, PortletSecurityException, IOException { - String portalName = ForgeHelper.getPortalName(request); + private final static String ACTION_CANCEL = "cancel"; - // We'll be sending text/html for sure. - response.setContentType(Constants.PAGES_MIME_TYPE); + private final static String ACTION_PREVIEW = "preview"; - // First checking if a user is allowed to edit the page. - if (!isAllowedToEdit(portalName, request, response)) { - response.getWriter().write(ERROR_403_MSG); - return; - } + private final static String CONTENT = "content"; - // Setting the content attribute. - String content = request.getParameter(CONTENT); - if (content == null) { - content = getNodeForPath(request.getParameter( - Constants.ATTR_REQ_PATH)).getContent(); - } + protected boolean isAllowedToEdit(String portalName, + JBossRenderRequest request, JBossRenderResponse response) { + return ProjectsHelper.getProjects(portalName).editPermissionAllowed( + new RenderRequestPermissionsChecker(request), + ProjectsHelper.getSelectedProjectId(request, true)); + } - request.setAttribute(CONTENT, content); + protected void writeEditLink(String portalName, String requestedPath, + JBossRenderRequest request, JBossRenderResponse response) + throws IOException, PortletException { + PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( + ForgeHelper.createRepoAccessPath(portalName, EDIT_LINK_JSP)); - // Showing the edit page. - PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( - ForgeHelper.createRepoAccessPath(portalName, EDIT_JSP)); + String ret = request.getParameter(ATTR_RETURN); + if (ret == null) { + Object retObj = request.getAttribute(Constants.ATTR_URL); + if (retObj != null) { + ret = retObj.toString(); + } + } - rd.include(request, response); - } + request.setAttribute(ATTR_RETURN, ret); + request.setAttribute(Constants.ATTR_REQ_PATH, requestedPath); - public void processAction(ActionRequest request, ActionResponse response) - throws PortletException, PortletSecurityException, IOException { - // Passing necessary parameters. - response.setRenderParameter(Constants.ATTR_REQ_PATH, - request.getParameter(Constants.ATTR_REQ_PATH)); - response.setRenderParameter(ATTR_RETURN, request.getParameter(ATTR_RETURN)); - /*request.setAttribute(ProjectsHelper.PROJECT_URL_PARAM, - request.getParameter(ProjectsHelper.PROJECT_URL_PARAM));*/ + rd.include(request, response); + } - if (request.getParameter(ACTION_PREVIEW) != null) { - // Preview. - response.setRenderParameter(CONTENT, request.getParameter(CONTENT)); + private Node getNodeForPath(String path) throws PortletException { + try { + return cm.getNode(path); + } catch (ResourceDoesNotExist resourceDoesNotExist) { + try { + return cm.getRootDirectory().newNode(path); + } catch (Exception e) { + throw new PortletException(e); + } + } + } - return; - } + protected void doEdit(JBossRenderRequest request, + JBossRenderResponse response) throws PortletException, + PortletSecurityException, IOException { + String portalName = ForgeHelper.getPortalName(request); - if (request.getParameter(ACTION_SAVE) != null) { - // Save. - Node n = getNodeForPath(request.getParameter(Constants.ATTR_REQ_PATH)); - n.setContent(request.getParameter(CONTENT)); + // We'll be sending text/html for sure. + response.setContentType(Constants.PAGES_MIME_TYPE); - try { - n.save(LOG_MSG); - } catch (SaveException e) { - response.setRenderParameter(CONTENT, request.getParameter(CONTENT)); - response.setRenderParameter(PARAM_MESSAGE, MESSAGE_SAVE_ERROR + e.toString()); + // First checking if a user is allowed to edit the page. + if (!isAllowedToEdit(portalName, request, response)) { + response.getWriter().write(ERROR_403_MSG); + return; + } - return; - } + // Setting the content attribute. + String content = request.getParameter(CONTENT); + if (content == null) { + content = getNodeForPath( + request.getParameter(Constants.ATTR_REQ_PATH)).getContent(); + } - // Save successfull, returning to the normal view. - response.setPortletMode(PortletMode.VIEW); + request.setAttribute(CONTENT, content); - return; - } + // Showing the edit page. + PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( + ForgeHelper.createRepoAccessPath(portalName, EDIT_JSP)); - if (request.getParameter(ACTION_CANCEL) != null) { - // Canceling the edit - returning to normal view. + rd.include(request, response); + } - response.setPortletMode(PortletMode.VIEW); - } - } + public void processAction(ActionRequest request, ActionResponse response) + throws PortletException, PortletSecurityException, IOException { + // Passing necessary parameters. + response.setRenderParameter(Constants.ATTR_REQ_PATH, request + .getParameter(Constants.ATTR_REQ_PATH)); + response.setRenderParameter(ATTR_RETURN, request + .getParameter(ATTR_RETURN)); + /* + * request.setAttribute(ProjectsHelper.PROJECT_URL_PARAM, + * request.getParameter(ProjectsHelper.PROJECT_URL_PARAM)); + */ + + if (request.getParameter(ACTION_PREVIEW) != null) { + // Preview. + response.setRenderParameter(CONTENT, request.getParameter(CONTENT)); + + return; + } + + if (request.getParameter(ACTION_SAVE) != null) { + // Save. + Node n = getNodeForPath(request + .getParameter(Constants.ATTR_REQ_PATH)); + n.setContent(request.getParameter(CONTENT)); + + try { + n.save(LOG_MSG); + } catch (SaveException e) { + response.setRenderParameter(CONTENT, request + .getParameter(CONTENT)); + response.setRenderParameter(PARAM_MESSAGE, MESSAGE_SAVE_ERROR + + e.toString()); + + return; + } + + // Save successfull, returning to the normal view. + response.setPortletMode(PortletMode.VIEW); + + return; + } + + if (request.getParameter(ACTION_CANCEL) != null) { + // Canceling the edit - returning to normal view. + + response.setPortletMode(PortletMode.VIEW); + } + } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-podcast/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-podcast/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-podcast/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Added: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/MetaMoveFilter.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/MetaMoveFilter.java 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/MetaMoveFilter.java 2006-05-23 22:52:54 UTC (rev 4386) @@ -0,0 +1,85 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.forge.portal; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletResponse; + +/** + * This Filter moves all meta tags to head section. This is made to make tagme + * work (it needs gwt:meta props) + * + * @author <a href="mailto:tom...@jb...">Tomasz Szymanski</a> + * + */ +public class MetaMoveFilter implements Filter { + + public void init(FilterConfig conf) throws ServletException { + + } + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + + CharResponseWrapper wrapper = new CharResponseWrapper( + (HttpServletResponse) response); + chain.doFilter(request, wrapper); + + if (wrapper.getContentType() != null + && wrapper.getContentType().startsWith("text/html")) { + + PrintWriter out = response.getWriter(); + + out.write(moveAllMeta(wrapper.toString())); + + out.close(); + } + } + + private String moveAllMeta(String content) { + StringBuffer newContent = new StringBuffer(content); + + Matcher matcher = Pattern.compile("<meta.*/>").matcher(content); + + while (matcher.find()) { + String meta = content.substring(matcher.start(), matcher.end()); + newContent.insert(newContent.indexOf("<head>") + "<head>".length(), + meta); + } + + return newContent.toString(); + } + + public void destroy() { + } + +} Modified: labs/jbosslabs/trunk/portal-extensions/forge-root-redirect/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-root-redirect/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-root-redirect/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/maven.xml =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/maven.xml 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/maven.xml 2006-05-23 22:52:54 UTC (rev 4386) @@ -11,6 +11,17 @@ </goal> <goal name="buildGWT"> + <!--<ant:java classname="com.google.gwt.dev.GWTCompiler"> + <ant:classpath> + <ant:pathelement path="src/java" /> + <ant:pathelement location="../binaries/maven-repo-addons/google/jars/gwt-user.jar" /> + <ant:pathelement location="../binaries/maven-repo-addons/google/jars/gwt-dev-linux.jar" /> + </ant:classpath> + <ant:arg value="-out" /> + <ant:arg value="target/tagme-servlet/www" /> + <ant:arg value="org.jboss.labs.tagme.gwt.TagMe" /> + </ant:java>--> + <ant:exec executable="java" > <ant:arg value="-cp" /> <ant:arg value="src/java:../binaries/maven-repo-addons/google/jars/gwt-user.jar:../binaries/maven-repo-addons/google/jars/gwt-dev-linux.jar" /> Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-05-23 22:52:54 UTC (rev 4386) @@ -120,7 +120,7 @@ private Button getButton(String path, String user, String clas) { - return new Button("ClickMe", new TagMeShowPopupListener(path, user, clas)); + return new Button("TagMe", new TagMeShowPopupListener(path, user, clas)); } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-05-23 22:52:54 UTC (rev 4386) @@ -96,7 +96,7 @@ popUp.add(panel); - popUp.setPopupPosition(10,10); + popUp.setPopupPosition(0,0); popUp.show(); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/forge-timetracker/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-timetracker/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/forge-timetracker/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/polls/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/polls/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/polls/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> Modified: labs/jbosslabs/trunk/portal-extensions/primates/src/web/WEB-INF/tld/forge.tld =================================================================== --- labs/jbosslabs/trunk/portal-extensions/primates/src/web/WEB-INF/tld/forge.tld 2006-05-23 20:38:27 UTC (rev 4385) +++ labs/jbosslabs/trunk/portal-extensions/primates/src/web/WEB-INF/tld/forge.tld 2006-05-23 22:52:54 UTC (rev 4386) @@ -28,6 +28,36 @@ </tag> <tag> + <name>tagmeButton</name> + <tagclass>org.jboss.forge.common.taglib.TagMeTag</tagclass> + <attribute> + <name>div</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>service</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>user</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> <name>param</name> <tagclass>org.jboss.forge.common.taglib.ParamTag</tagclass> <attribute> |