Author: adamw Date: 2006-06-03 18:59:51 -0400 (Sat, 03 Jun 2006) New Revision: 4595 Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/Constants.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/Entry.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/Menu.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/ProjectMenuEntry.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/ProjectsMenuEntry.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/LabsCommandMapper.java labs/jbosslabs/trunk/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationDescriptor.java labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/AttributesFilter.java labs/jbosslabs/trunk/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java labs/jbosslabs/trunk/portal-extensions/project.properties Log: http://jira.jboss.com/jira/browse/JBLAB-685 Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/Constants.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/Constants.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/Constants.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -29,7 +29,6 @@ /* * Attributes passed to portlets from the URL. */ - public static final String ATTR_PROJECT = "project"; public static final String ATTR_REQ_PATH = "path"; public static final String ATTR_URL = "nav-url"; @@ -70,13 +69,28 @@ * An url parameter that should be set when a link does not point * to a project site. */ - public final static String PARAM_NO_PROJECT = "noproject"; + public final static String NO_PROJECT_PARAM_NAME = "noproject"; - - public final static String NO_PROJECT_PARAM = Constants.PARAM_NO_PROJECT + "=" + + /** + * An url parameter+value pair that should be set when a link does not + * point to a project site. + */ + public final static String NO_PROJECT_PARAM = Constants.NO_PROJECT_PARAM_NAME + "=" + Constants.TRUE_VALUE; + /** + * Name of the paramter in the URL + * depicting the selected project. + */ + public final static String PROJECT_PARAM = "project"; + /** + * An url parameter that should be set when it is known if the projects list + * should be expanded or not when showing a projects' menu. + */ + public static final String PROJECT_LIST_PARAM = "prjlist"; + + /** * A string representing a true value. */ public final static String TRUE_VALUE = "true"; Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/Entry.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/Entry.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/Entry.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -40,7 +40,6 @@ private final static String DISPLAY_ATTRIBUTE = "display"; private final static String FOLDABLE_ATTRIBUTE = "foldable"; - private final static String JS_FOLDABLE_ATTRIBUTE = "jsFoldable"; private final static String PERMISSION_ATTRIBUTE = "permission"; /** @@ -63,15 +62,7 @@ * that is, should be shown only when this entry is selected. */ private boolean foldable; - /** - * True if sub-menu of this entry are javascript-foldable, - * that is, should be toggled with a mouse click. Such entries - * represent no real link. - */ - private boolean jsFoldable; - - /** * Role that the user is required to have to display * this entry, or null if */ @@ -94,8 +85,6 @@ display = XmlTools.getAttributeValue(root, DISPLAY_ATTRIBUTE); foldable = Constants.TRUE_VALUE.equals( XmlTools.getAttributeValue(root, FOLDABLE_ATTRIBUTE)); - jsFoldable = Constants.TRUE_VALUE.equals( - XmlTools.getAttributeValue(root, JS_FOLDABLE_ATTRIBUTE)); NodeList nodes = root.getChildNodes(); @@ -127,13 +116,14 @@ DelegateContext context, String currentLink, String projectId, String levelId); - public boolean containsLink(String currentLink, String projectId, String levelId) { + public boolean containsLink(String currentLink, String projectId, String levelId, + JBossRenderRequest request) { if (linkToCheck == null) { return currentLink == null; } return linkToCheck.equals(currentLink) || ((menu != null) && (menu.containsLink( - currentLink, projectId, levelId))); + currentLink, projectId, levelId, request))); } /* @@ -151,7 +141,7 @@ protected void commonFillContext(JBossRenderRequest request, DelegateContext context, String currentLink, String projectId, String levelId) { - boolean selected = containsLink(currentLink, projectId, levelId); + boolean selected = containsLink(currentLink, projectId, levelId, request); if (selected) { context.put("selected", "true"); @@ -161,10 +151,6 @@ context.put("foldable", "true"); } - if (jsFoldable) { - context.put("jsFoldable", "true"); - } - if ((menu != null) && ((foldable && selected) || (!foldable))) { menu.fillContext(request, context, currentLink, projectId, levelId); } @@ -217,4 +203,8 @@ protected void setDisplay(String display) { this.display = display; } + + protected void setFoldable(boolean foldable) { + this.foldable = foldable; + } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/Menu.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/Menu.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/Menu.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -112,9 +112,10 @@ return jsp; } - public boolean containsLink(String link, String projectId, String levelId) { + public boolean containsLink(String link, String projectId, String levelId, + JBossRenderRequest request) { for (Entry e : entries) { - if (e.containsLink(link, projectId, levelId)) { + if (e.containsLink(link, projectId, levelId, request)) { return true; } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/ProjectMenuEntry.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/ProjectMenuEntry.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/ProjectMenuEntry.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -45,7 +45,7 @@ return null; } - public boolean containsLink(String link, String projectId, String levelId) { + public boolean containsLink(String link, String projectId, String levelId, JBossRenderRequest request) { if (projectId == null) { return false; } @@ -56,7 +56,7 @@ Menu menu = projects.getProjectMenu(pc, projectId); return link.equals(projects.getProjectLink(projectId)) || - menu.containsLink(link, projectId, levelId); + menu.containsLink(link, projectId, levelId, request); } protected void innerFillContext(JBossRenderRequest request, DelegateContext context, @@ -79,7 +79,7 @@ toFill.put("display", projects.getProjectName(projectId)); if (currentLink.equals(link) || menu.containsLink(currentLink, projectId, - levelId)) { + levelId, request)) { toFill.put("selected", "true"); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/ProjectsMenuEntry.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/ProjectsMenuEntry.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/navigation/ProjectsMenuEntry.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -30,43 +30,67 @@ import org.jboss.forge.common.projects.permissions.RenderRequestPermissionsChecker; import org.jboss.forge.common.XmlTools; import org.jboss.forge.common.ForgeHelper; +import org.jboss.forge.common.Constants; +import java.util.Set; + /** * @author Adam Warski (ad...@as...) */ public class ProjectsMenuEntry extends Entry { + private final static String FOLDED_ATTRIBUTE = "folded"; private final static String LEVEL_ATTRIBUTE = "level"; private final static String CURRENT_LEVEL_ATTR_VALUE = "${selected}"; private String level; private boolean selectedLevel; + private boolean folded; public ProjectsMenuEntry(String portalName, Node root) { super(portalName, null, root); + setFoldable(true); + level = XmlTools.getAttributeValue(root, LEVEL_ATTRIBUTE); selectedLevel = CURRENT_LEVEL_ATTR_VALUE.equals(level); + folded = Constants.TRUE_VALUE.equals( + XmlTools.getAttributeValue(root, FOLDED_ATTRIBUTE)); } protected String generateLink(String content) { return null; } - public boolean containsLink(String link, String projectId, String levelId) { - if (selectedLevel && (levelId == null)) { - // We can't display the current level if there is no level selected. + public boolean containsLink(String link, String projectId, String levelId, JBossRenderRequest request) { + if (link == null) { return false; } - if (link == null) { + if (selectedLevel && (levelId == null)) { + // We can't display the current level if there is no level selected. return false; } + String realLevelId = selectedLevel ? levelId : level; + Projects projects = ProjectsHelper.getProjects(getPortalName()); - return link.equals(ForgeHelper.prepareLinkForChecking( + boolean projectInLevel = false; + + if (projectId != null) { + projectInLevel = realLevelId.equals(projects.getProjectLevel(projectId)); + } + + PermissionsChecker pc = new RenderRequestPermissionsChecker(request); + if (projectInLevel) { + Menu menu = projects.getProjectMenu(pc, projectId); + return link.equals(projects.getProjectLink(projectId)) || + menu.containsLink(link, projectId, levelId, request); + } else { + return link.equals(ForgeHelper.prepareLinkForChecking( getPortalName(), projects.getLevelLink(selectedLevel ? levelId : level))); + } } protected void innerFillContext(JBossRenderRequest request, DelegateContext context, @@ -76,25 +100,77 @@ return; } + String realLevelId = selectedLevel ? levelId : level; + Projects projects = ProjectsHelper.getProjects(getPortalName()); + + Object prjListOpenObj = request.getAttribute(Constants.PROJECT_LIST_PARAM); + boolean prjListOpen; + + if (prjListOpenObj != null) { + prjListOpen = (Boolean) prjListOpenObj; + } else { + prjListOpen = false; + } + + boolean projectInLevel = false; + + if (projectId != null) { + projectInLevel = realLevelId.equals(projects.getProjectLevel(projectId)); + } + PermissionsChecker pc = new RenderRequestPermissionsChecker(request); + if (projectInLevel) { + Set<String> projectIds = projects.getProjectIds(pc, levelId); - DelegateContext prjContext = projects.getLevelContext(pc, - selectedLevel ? levelId : level); + if (projectIds.size() != 0) { + DelegateContext toFill = getNextEntryContext(context); + setEntryTypeInContext(toFill, "projects-menu"); + toFill.put("activeLevel", "true"); - // Appending the project's context only if there are any projects - // in it. - if (prjContext.childIterator("projects").hasNext()) { - DelegateContext toFill = getNextEntryContext(context); - setEntryTypeInContext(toFill, "projects-menu"); - toFill.append("projects-menu", prjContext); + toFill = toFill.next("projects-menu"); + toFill.put("name", projects.getLevelName(levelId)); - commonFillContext(request, toFill, currentLink, projectId, levelId); + for (String prjId : projectIds) { + DelegateContext prjContext = toFill.next("projects"); + prjContext.put("id", prjId); + prjContext.put("name", projects.getProjectName(prjId)); - // If there is a project selected, we fold all projects menus. - if (projectId != null) { - toFill.put("folded", "true"); + if (prjId.equals(projectId)) { + // Adding a project's menu. + prjContext.put("activeProject", "true"); + + Menu menu = projects.getProjectMenu(pc, projectId); + menu.fillContext(request, prjContext, currentLink, + projectId, levelId); + } else { + prjContext.put("activeProject", "false"); + } + } + + commonFillContext(request, toFill, currentLink, projectId, levelId); + + toFill.put("prjListOpen", prjListOpen ? "true" : "false"); } + } else { + DelegateContext prjContext = projects.getLevelContext(pc, realLevelId); + + // Appending the project's context only if there are any projects + // in it. + if (prjContext.childIterator("projects").hasNext()) { + DelegateContext toFill = getNextEntryContext(context); + setEntryTypeInContext(toFill, "projects-menu"); + toFill.append("projects-menu", prjContext); + + commonFillContext(request, toFill, currentLink, projectId, levelId); + + // If there is a project selected, we fold all projects menus. + if ((folded || (projectId != null))) { + toFill.put("folded", "true"); + } + + toFill.put("activeLevel", "false"); + } } } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -258,6 +258,14 @@ public String getLevelLink(String levelId) { return getProjectsDescriptor().getLevelLink(levelId); } + + /** + * Gets a link to the given level. + * @return A link to the given level. + */ + public String getLevelName(String levelId) { + return getProjectsDescriptor().getLevelName(levelId); + } /** * For the given project id, returns project repository. Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -630,7 +630,7 @@ * given permissions checker. */ public Set<String> getProjectIds(PermissionsChecker pc, String projectLevel) { - Set<String> ret = new HashSet<String>(); + Set<String> ret = new LinkedHashSet<String>(); for (String projectId : projects.keySet()) { ProjectDescriptor project = projects.get(projectId); @@ -688,6 +688,16 @@ return link; } + public String getLevelName(String levelId) { + ElementDescriptor ed = opm.getElementsDescriptor("level").getElementWithId(levelId); + + if (ed == null) { + return ""; + } + + return ed.getProperty("name"); + } + /** * For the given project id, returns project repository. * Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -42,9 +42,9 @@ * This class cannot be instatiated. */ private ProjectsHelper() { - + } - + /** * <code>PROJECT_ID</code> - name of the attribute under which the * selected project's id can be found in a servlet response object. @@ -60,26 +60,21 @@ * selected project's name can be found in a servlet response object. */ public final static String PROJECT_NAME = "projectName"; + /** - * <code>PROJECT_URL_PARAM</code> - name of the paramter in the URL - * depicting the selected project. - */ - public final static String PROJECT_URL_PARAM = "project"; - - /** * <code>DEFAULT_PROJECT</code> - name of the project to return if there * is no project selected. */ private final static String DEFAULT_PROJECT = "default"; - + /** * <code>projectsObjects</code> - portalName -> Projects object */ private static Map<String, Projects> projectsObjects; - + public final static String PROJECT_DESC = "project.xml"; public final static String PROJECTS_DESC = "projects.xml"; - + public final static String LEVELS_DESC = "levels.xml"; protected final static String PAGES_DESC = "pages.xml"; protected final static String JEMS_DESC = "jems.xml"; @@ -90,7 +85,7 @@ protected final static String DOWNLOADCOUNTERMAIN_DESC = "counters.xml"; public final static String POLLS_DESC = "polls.xml"; public final static String POLL_DESC = "poll.xml"; - + /** * <code>MEMBERS_DIRECTORY</code> - base repository directory in which * members store their files. @@ -99,14 +94,14 @@ public final static String DOWNLOADS_DIR = "downloads"; public final static String BLOG_DIR = "blog"; public final static String FREEZONE_DIR = "freezone"; - + static { projectsObjects = new HashMap<String, Projects>(); } - + /** * Gets an instance of the Projects object for the given portal. - * + * * @param portalName * Name of the portal. * @return An appropriate instance of class Projects. @@ -117,10 +112,10 @@ projects = new Projects(portalName); projectsObjects.put(portalName, projects); } - + return projects; } - + /** * Equivalent to <code>getSelectedProjectId(request, false)</code>. * @param request @@ -132,7 +127,7 @@ public static String getSelectedProjectId(JBossRenderRequest request) { return getSelectedProjectId(request, false); } - + /** * @param request * A request object from which the selected project name will be @@ -143,11 +138,9 @@ * @return Selected project's id, or the default project's id/ null, depending * on <code>withDefault</code>, if no project is selected. */ - public static String getSelectedProjectId(JBossRenderRequest request, + public static String getSelectedProjectId(JBossRenderRequest request, boolean withDefault) { - //String projectId = ForgeHelper.getRequestParameter(request, - // PROJECT_URL_PARAM); - Object projectIdObj = request.getAttribute(PROJECT_URL_PARAM); + Object projectIdObj = request.getAttribute(Constants.PROJECT_PARAM); String projectId = projectIdObj == null ? null : projectIdObj.toString(); if ((withDefault) && ((projectId == null) || ("".equals(projectId)))) { @@ -160,10 +153,10 @@ // No project context --> project does not exist. projectId = null; } - - return projectId; + + return projectId; } - + /** * Equivalent to <code>getSelectedProjectId(request, false)</code>. * @param request @@ -175,7 +168,7 @@ public static String getSelectedProjectId(JBossActionRequest request) { return getSelectedProjectId(request, false); } - + /** * @param request * A request object from which the selected project name will be @@ -186,10 +179,11 @@ * @return Selected project's id, or the default project's id/ null, depending * on <code>withDefault</code>, if no project is selected. */ - public static String getSelectedProjectId(JBossActionRequest request, + public static String getSelectedProjectId(JBossActionRequest request, boolean withDefault) { - String projectId = request.getParameter(PROJECT_URL_PARAM); - + Object projectIdObj = request.getAttribute(Constants.PROJECT_PARAM); + String projectId = projectIdObj == null ? null : projectIdObj.toString(); + if ((withDefault) && (projectId == null)) { projectId = DEFAULT_PROJECT; } else if ((!withDefault) && (DEFAULT_PROJECT.equals(projectId))) { @@ -200,14 +194,14 @@ // No project context --> project does not exist. projectId = null; } - + return projectId; } - + /** * Prepares a request object for generating a JSP. PROJECT_NAME and * PROJECT_ID attributes are set. - * + * * @param request * Request to prepare. */ @@ -218,10 +212,10 @@ request.setAttribute(LEVEL_ID, getProjects( ForgeHelper.getPortalName(request)).getProjectLevel(projectId)); } - + /** * Creates a link to a freezone page basing on the given parameters. - * + * * @param portalName * Name of the portal. * @param projectId @@ -234,7 +228,7 @@ String page) { return Constants.LINK_BASE + projectId + "/" + page; } - + /** * Creates a link to a portal page based on the given parameters. * @param portalName Name of the portal. Modified: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/LabsCommandMapper.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/LabsCommandMapper.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/LabsCommandMapper.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -169,18 +169,6 @@ } /** - * Gets a request attribute of the given name. - */ - private String getAttribute(ServerInvocation invocation, String name) { - Object o = invocation.getRequest().getContext().getClientRequest().getSession().getAttribute(name); - if (o == null) { - return null; - } - - return o.toString(); - } - - /** * Sets an attribute of the given and value both in session and request. */ private void setAttribute(ServerInvocation invocation, String name, String value) { @@ -297,9 +285,9 @@ // TODO temporary for freezone String projectParam = invocation.getRequest().getContext().getClientRequest() - .getParameter(Constants.ATTR_PROJECT); + .getParameter(Constants.PROJECT_PARAM); if (projectParam != null) { - setAttribute(invocation, Constants.ATTR_PROJECT, projectParam); + setAttribute(invocation, Constants.PROJECT_PARAM, projectParam); } // Removing unnecessary /. @@ -337,7 +325,7 @@ * The user requested a project page (/projectId). It will be * unset, if necessary, in the AttributesFilter. */ - setAttribute(invocation, Constants.ATTR_PROJECT, tokens[1]); + setAttribute(invocation, Constants.PROJECT_PARAM, tokens[1]); try { c = getProjectCommand(invocation, tokens.length > 2 ? tokens[2] : null, Modified: labs/jbosslabs/trunk/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationDescriptor.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationDescriptor.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationDescriptor.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -120,7 +120,7 @@ requestedLink); // Checking if this link is in the menu. - if (!mainMenu.containsLink(requestedLink, projectId, levelId)) { + if (!mainMenu.containsLink(requestedLink, projectId, levelId, request)) { // Trying to read the last good link. requestedLink = (String) request.getPortletSession() .getAttribute("nav-last-url"); Modified: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/AttributesFilter.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/AttributesFilter.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/AttributesFilter.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -32,7 +32,6 @@ import javax.servlet.http.HttpServletRequest; import org.jboss.forge.common.Constants; -import org.jboss.forge.common.projects.ProjectsHelper; /** * Filter which sets attributes that are necessary for labs portlets to be @@ -46,34 +45,51 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { + throws IOException, ServletException { if (request instanceof HttpServletRequest) { HttpServletRequest httpRequest = (HttpServletRequest) request; // Getting the request parameters. - String noproject = request.getParameter(Constants.PARAM_NO_PROJECT); - String project = request.getParameter(ProjectsHelper.PROJECT_URL_PARAM); + String noproject = request.getParameter(Constants.NO_PROJECT_PARAM_NAME); + String project = request.getParameter(Constants.PROJECT_PARAM); + String prjList = request.getParameter(Constants.PROJECT_LIST_PARAM); // The project doesn't have to be passed as a parameter. It can be // passed in the requestURI, when accessing freezone pages. This // only applies to the default portal. String requestURI = httpRequest.getRequestURI(); + // ProjectId handling. if (Constants.TRUE_VALUE.equals(noproject)) { // Removing project from session info. - httpRequest.getSession().removeAttribute(Constants.ATTR_PROJECT); - httpRequest.removeAttribute(Constants.ATTR_PROJECT); + httpRequest.getSession().removeAttribute(Constants.PROJECT_PARAM); + httpRequest.removeAttribute(Constants.PROJECT_PARAM); } else if ((project != null) && (!"".equals(project))) { - httpRequest.getSession().setAttribute(Constants.ATTR_PROJECT, project); - httpRequest.setAttribute(Constants.ATTR_PROJECT, project); + httpRequest.getSession().setAttribute(Constants.PROJECT_PARAM, project); + httpRequest.setAttribute(Constants.PROJECT_PARAM, project); } else { - Object projectObj = httpRequest.getSession().getAttribute( - ProjectsHelper.PROJECT_URL_PARAM); - if (projectObj != null) { - httpRequest.setAttribute(Constants.ATTR_PROJECT, projectObj.toString()); + Object val = httpRequest.getSession().getAttribute(Constants.PROJECT_PARAM); + if (val != null) { + httpRequest.setAttribute(Constants.PROJECT_PARAM, val.toString()); } } + // ProjectList handling. + if (Constants.TRUE_VALUE.equals(noproject)) { + httpRequest.getSession().removeAttribute(Constants.PROJECT_LIST_PARAM); + httpRequest.removeAttribute(Constants.PROJECT_LIST_PARAM); + } else if ((prjList != null) && (!"".equals(prjList))) { + Object val = Constants.TRUE_VALUE.equals(prjList); + + httpRequest.getSession().setAttribute(Constants.PROJECT_LIST_PARAM, val); + httpRequest.setAttribute(Constants.PROJECT_LIST_PARAM, val); + } else { + Object val = httpRequest.getSession().getAttribute(Constants.PROJECT_LIST_PARAM); + if (val != null) { + httpRequest.setAttribute(Constants.PROJECT_LIST_PARAM, val); + } + } + // Putting the full requested url into session for navigation. String fullUrl = requestURI; if (httpRequest.getQueryString() != null) { Modified: labs/jbosslabs/trunk/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java 2006-06-03 22:59:51 UTC (rev 4595) @@ -182,7 +182,7 @@ String pollId = request.getParameter("pollId"); // Getting name of the project on which the PollsPortlet is used. - String projectId = request.getParameter(ProjectsHelper.PROJECT_URL_PARAM); + String projectId = ProjectsHelper.getSelectedProjectId(request); String userId = request.getUser()!=null?request.getUser().getUserName():null; Modified: labs/jbosslabs/trunk/portal-extensions/project.properties =================================================================== --- labs/jbosslabs/trunk/portal-extensions/project.properties 2006-06-03 15:47:03 UTC (rev 4594) +++ labs/jbosslabs/trunk/portal-extensions/project.properties 2006-06-03 22:59:51 UTC (rev 4595) @@ -21,5 +21,6 @@ maven.jar.shotoku-feeds=${ext.root.dir}/shotoku/shotoku-feeds/target/shotoku-feeds.jar maven.jar.shotoku-file-access=${ext.root.dir}/shotoku/shotoku-file-access/target/shotoku-file-access.jar maven.jar.shotoku-aop=${ext.root.dir}/shotoku/shotoku-aop/target/shotoku-aop.jar +maven.jar.shotoku-tags=${ext.root.dir}/shotoku/shotoku-tags/target/shotoku-tags.jar maven.multiproject.excludes=shotoku/project.xml |