From 445fb40e86d13617f4df526b74e668d891f20ec4 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Fri, 1 Sep 2006 15:42:35 +0000 Subject: [PATCH] . Changing default view after Login to the MyAlfresco dashboard for all users - so new users see the helpful Getting Started page when logging in - this client config value can be changed if the sys admin does not want the MyAlfresco to be the default page . Add User Preference to change the default view after login - so users familiar with the system can change their default view back to Home Space or similar . Added client config to allow Guest user access to Configure Dashboard action (set to 'false' by default) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3652 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/messages/webclient.properties | 1 + config/alfresco/web-client-config.xml | 9 ++- .../alfresco/web/app/servlet/BaseServlet.java | 10 ++- .../java/org/alfresco/web/bean/LoginBean.java | 15 +++- .../org/alfresco/web/bean/NavigationBean.java | 28 +++++--- .../web/bean/UserPreferencesBean.java | 66 +++++++++++++++++ .../web/bean/dashboard/DashboardWizard.java | 8 +++ .../web/config/ClientConfigElement.java | 2 +- .../web/config/DashboardsConfigElement.java | 16 +++++ .../web/config/DashboardsElementReader.java | 8 +++ source/web/WEB-INF/faces-config-beans.xml | 17 +++++ source/web/index.jsp | 70 +++++++++++++------ source/web/jsp/dashboards/container.jsp | 2 +- .../dashboards/dashlets/getting-started.jsp | 21 +++++- source/web/jsp/users/user-console.jsp | 19 +++-- 15 files changed, 244 insertions(+), 48 deletions(-) create mode 100644 source/java/org/alfresco/web/bean/UserPreferencesBean.java diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties index 7c58bd50c5..6266c85a09 100644 --- a/config/alfresco/messages/webclient.properties +++ b/config/alfresco/messages/webclient.properties @@ -932,6 +932,7 @@ old_password=Old Password new_password=New Password edit_user_details=Edit User Details edit_user_details_description=Use this view to change your user details and email address +start_location=Start Location # Delete Space Dialog messages select_delete_operation=What do you want to delete? diff --git a/config/alfresco/web-client-config.xml b/config/alfresco/web-client-config.xml index 5c396fd690..a3c3146465 100644 --- a/config/alfresco/web-client-config.xml +++ b/config/alfresco/web-client-config.xml @@ -53,8 +53,8 @@ Consumer - - userhome + + myalfresco http://www.alfresco.org/help/webclient @@ -170,7 +170,7 @@ - + @@ -186,6 +186,7 @@ + @@ -203,6 +204,8 @@ + + false diff --git a/source/java/org/alfresco/web/app/servlet/BaseServlet.java b/source/java/org/alfresco/web/app/servlet/BaseServlet.java index 90b4c7c687..42dde0bf53 100644 --- a/source/java/org/alfresco/web/app/servlet/BaseServlet.java +++ b/source/java/org/alfresco/web/app/servlet/BaseServlet.java @@ -77,7 +77,6 @@ public abstract class BaseServlet extends HttpServlet validRedirectJSPs.add("/jsp/forums/forums.jsp"); validRedirectJSPs.add("/jsp/users/users.jsp"); validRedirectJSPs.add("/jsp/trashcan/trash-list.jsp"); - validRedirectJSPs.add("/jsp/dashboards/container.jsp"); } private static Log logger = LogFactory.getLog(BaseServlet.class); @@ -156,10 +155,15 @@ public abstract class BaseServlet extends HttpServlet throws IOException { // authentication failed - so end servlet execution and redirect to login page - // also save the full requested URL so the login page knows where to redirect too later res.sendRedirect(req.getContextPath() + FACES_SERVLET + Application.getLoginPage(sc)); + + // save the full requested URL so the login page knows where to redirect too later String uri = req.getRequestURI(); - String url = uri + (req.getQueryString() != null ? ("?" + req.getQueryString()) : ""); + String url = uri; + if (req.getQueryString() != null && req.getQueryString().length() != 0) + { + url += "?" + req.getQueryString(); + } if (uri.indexOf(req.getContextPath() + FACES_SERVLET) != -1) { // if we find a JSF servlet reference in the URI then we need to check if the rest of the diff --git a/source/java/org/alfresco/web/bean/LoginBean.java b/source/java/org/alfresco/web/bean/LoginBean.java index 17274e42b9..406f26b039 100644 --- a/source/java/org/alfresco/web/bean/LoginBean.java +++ b/source/java/org/alfresco/web/bean/LoginBean.java @@ -91,13 +91,21 @@ public class LoginBean } /** - * @param navigator The NavigationBean to set. + * @param navigator The NavigationBean to set. */ public void setNavigator(NavigationBean navigator) { this.navigator = navigator; } + /** + * @param preferences The UserPreferencesBean to set + */ + public void setUserPreferencesBean(UserPreferencesBean preferences) + { + this.preferences = preferences; + } + /** * @return true if the default Alfresco authentication process is being used, else false * if an external authorisation mechanism is present. @@ -329,7 +337,7 @@ public class LoginBean else { // special case to handle jump to My Alfresco page initially - String location = Application.getClientConfig(FacesContext.getCurrentInstance()).getInitialLocation(); + String location = this.preferences.getStartLocation(); if (NavigationBean.LOCATION_MYALFRESCO.equals(location)) { return "myalfresco"; @@ -451,4 +459,7 @@ public class LoginBean /** The NavigationBean bean reference */ protected NavigationBean navigator; + + /** The user preferences bean reference */ + protected UserPreferencesBean preferences; } diff --git a/source/java/org/alfresco/web/bean/NavigationBean.java b/source/java/org/alfresco/web/bean/NavigationBean.java index d426a07732..e536007f83 100644 --- a/source/java/org/alfresco/web/bean/NavigationBean.java +++ b/source/java/org/alfresco/web/bean/NavigationBean.java @@ -126,6 +126,14 @@ public class NavigationBean this.contentDiskDriver = contentDiskDriver; } + /** + * @param preferences The UserPreferencesBean to set + */ + public void setUserPreferencesBean(UserPreferencesBean preferences) + { + this.preferences = preferences; + } + /** * @return the User object representing the current instance for this user */ @@ -507,13 +515,8 @@ public class NavigationBean { if (this.location == null) { - // get the initial location from the client config - String initialLocation = clientConfig.getInitialLocation(); - if (initialLocation == null || initialLocation.length() == 0) - { - initialLocation = LOCATION_HOME; - } - processToolbarLocation(initialLocation, false); + // get the initial location from the user preferences + processToolbarLocation(this.preferences.getStartLocation(), false); } return this.location; @@ -798,10 +801,10 @@ public class NavigationBean private static Logger s_logger = Logger.getLogger(NavigationBean.class); /** constant values used by the toolbar location modelist control */ - static final String LOCATION_COMPANY = "companyhome"; - static final String LOCATION_HOME = "userhome"; - static final String LOCATION_GUEST = "guesthome"; - static final String LOCATION_MYALFRESCO = "myalfresco"; + public static final String LOCATION_COMPANY = "companyhome"; + public static final String LOCATION_HOME = "userhome"; + public static final String LOCATION_GUEST = "guesthome"; + public static final String LOCATION_MYALFRESCO = "myalfresco"; private static final String MSG_MYALFRESCO = "my_alfresco"; @@ -828,6 +831,9 @@ public class NavigationBean /** Client configuration object */ protected ClientConfigElement clientConfig = null; + /** The user preferences bean reference */ + protected UserPreferencesBean preferences; + /** Cached path to our CIFS server and top level node DIR */ private String cifsServerPath; diff --git a/source/java/org/alfresco/web/bean/UserPreferencesBean.java b/source/java/org/alfresco/web/bean/UserPreferencesBean.java new file mode 100644 index 0000000000..692e3dd7e3 --- /dev/null +++ b/source/java/org/alfresco/web/bean/UserPreferencesBean.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.web.bean; + +import java.util.ResourceBundle; + +import javax.faces.context.FacesContext; +import javax.faces.model.SelectItem; + +import org.alfresco.web.app.Application; +import org.alfresco.web.bean.repository.PreferencesService; + +/** + * Simple bean backing the user preferences settings. + * + * @author Kevin Roast + */ +public class UserPreferencesBean +{ + private static final String PREF_STARTLOCATION = "start-location"; + private static final String MSG_MYALFRESCO = "my_alfresco"; + private static final String MSG_MYHOME = "my_home"; + private static final String MSG_COMPANYHOME = "company_home"; + private static final String MSG_GUESTHOME = "guest_home"; + + + public String getStartLocation() + { + String location = (String)PreferencesService.getPreferences().getValue(PREF_STARTLOCATION); + if (location == null) + { + // default to value from client config + location = Application.getClientConfig(FacesContext.getCurrentInstance()).getInitialLocation(); + } + return location; + } + + public void setStartLocation(String location) + { + PreferencesService.getPreferences().setValue(PREF_STARTLOCATION, location); + } + + public SelectItem[] getStartLocations() + { + ResourceBundle msg = Application.getBundle(FacesContext.getCurrentInstance()); + return new SelectItem[] { + new SelectItem(NavigationBean.LOCATION_MYALFRESCO, msg.getString(MSG_MYALFRESCO)), + new SelectItem(NavigationBean.LOCATION_HOME, msg.getString(MSG_MYHOME)), + new SelectItem(NavigationBean.LOCATION_COMPANY, msg.getString(MSG_COMPANYHOME)), + new SelectItem(NavigationBean.LOCATION_GUEST, msg.getString(MSG_GUESTHOME))}; + } +} diff --git a/source/java/org/alfresco/web/bean/dashboard/DashboardWizard.java b/source/java/org/alfresco/web/bean/dashboard/DashboardWizard.java index 615570d480..4ff8d46793 100644 --- a/source/java/org/alfresco/web/bean/dashboard/DashboardWizard.java +++ b/source/java/org/alfresco/web/bean/dashboard/DashboardWizard.java @@ -125,6 +125,14 @@ public class DashboardWizard extends BaseWizardBean // ------------------------------------------------------------------------------ // Dashboard Wizard bean getters + /** + * @return true to allow the Guest user to configure the dashboard, false otherwise + */ + public boolean getAllowGuestConfig() + { + return DashboardManager.getDashboardConfig().getAllowGuestConfig(); + } + /** * @return The currently selected layout ID - used by the Dynamic Description component */ diff --git a/source/java/org/alfresco/web/config/ClientConfigElement.java b/source/java/org/alfresco/web/config/ClientConfigElement.java index 0f6a3e216e..b151b3b0fe 100644 --- a/source/java/org/alfresco/web/config/ClientConfigElement.java +++ b/source/java/org/alfresco/web/config/ClientConfigElement.java @@ -40,7 +40,7 @@ public class ClientConfigElement extends ConfigElementAdapter private String editLinkType = "http"; private String homeSpacePermission = null; private boolean ajaxEnabled = false; - private String initialLocation = null; + private String initialLocation = "myalfresco"; /** * Default Constructor diff --git a/source/java/org/alfresco/web/config/DashboardsConfigElement.java b/source/java/org/alfresco/web/config/DashboardsConfigElement.java index 83ed1a8039..d5e19db865 100644 --- a/source/java/org/alfresco/web/config/DashboardsConfigElement.java +++ b/source/java/org/alfresco/web/config/DashboardsConfigElement.java @@ -37,6 +37,7 @@ public class DashboardsConfigElement extends ConfigElementAdapter private Map layoutDefs = new LinkedHashMap(4, 1.0f); private Map dashletDefs = new LinkedHashMap(8, 1.0f); + private boolean allowGuestConfig = false; /** * Default constructor @@ -77,9 +78,24 @@ public class DashboardsConfigElement extends ConfigElementAdapter combinedElement.layoutDefs.putAll(this.layoutDefs); combinedElement.layoutDefs.putAll(newElement.layoutDefs); + if (newElement.allowGuestConfig != combinedElement.allowGuestConfig) + { + combinedElement.allowGuestConfig = newElement.allowGuestConfig; + } + return combinedElement; } + /*package*/ void setAllowGuestConfig(boolean allow) + { + this.allowGuestConfig = allow; + } + + public boolean getAllowGuestConfig() + { + return this.allowGuestConfig; + } + /*package*/ void addLayoutDefinition(LayoutDefinition def) { this.layoutDefs.put(def.Id, def); diff --git a/source/java/org/alfresco/web/config/DashboardsElementReader.java b/source/java/org/alfresco/web/config/DashboardsElementReader.java index e532ec8486..e599251f71 100644 --- a/source/java/org/alfresco/web/config/DashboardsElementReader.java +++ b/source/java/org/alfresco/web/config/DashboardsElementReader.java @@ -37,6 +37,7 @@ public class DashboardsElementReader implements ConfigElementReader public static final String ELEMENT_LAYOUT = "layout"; public static final String ELEMENT_DASHLETS = "dashlets"; public static final String ELEMENT_DASHLET = "dashlet"; + public static final String ELEMENT_GUESTCONFIG = "allow-guest-config"; public static final String ATTR_ID = "id"; public static final String ATTR_COLUMNS = "columns"; public static final String ATTR_COLUMNLENGTH = "column-length"; @@ -85,6 +86,13 @@ public class DashboardsElementReader implements ConfigElementReader configElement.addDashletDefinition(dashletDef); } } + + Element guestConfigElement = element.element(ELEMENT_GUESTCONFIG); + if (guestConfigElement != null) + { + boolean allow = Boolean.parseBoolean(guestConfigElement.getTextTrim()); + configElement.setAllowGuestConfig(allow); + } } return configElement; diff --git a/source/web/WEB-INF/faces-config-beans.xml b/source/web/WEB-INF/faces-config-beans.xml index e342a8fd21..c4a2a92530 100644 --- a/source/web/WEB-INF/faces-config-beans.xml +++ b/source/web/WEB-INF/faces-config-beans.xml @@ -31,6 +31,10 @@ browseBean #{BrowseBean} + + userPreferencesBean + #{UserPreferencesBean} + @@ -60,6 +64,10 @@ ruleService #{RuleService} + + userPreferencesBean + #{UserPreferencesBean} + @@ -1993,6 +2001,15 @@ + + + The bean that backs up the User Preferences page + + UserPreferencesBean + org.alfresco.web.bean.UserPreferencesBean + session + + diff --git a/source/web/index.jsp b/source/web/index.jsp index 8916281a16..699051315b 100644 --- a/source/web/index.jsp +++ b/source/web/index.jsp @@ -1,21 +1,51 @@ <%-- - Copyright (C) 2005 Alfresco, Inc. - - Licensed under the Mozilla Public License version 1.1 - with a permitted attribution clause. You may obtain a - copy of the License at - - http://www.alfresco.org/legal/license.txt - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - either express or implied. See the License for the specific - language governing permissions and limitations under the - License. ---%> - -<%-- redirect to the web application's start page --%> -<% -response.sendRedirect(request.getContextPath() + "/faces/jsp/browse/browse.jsp"); -%> \ No newline at end of file +Copyright (C) 2005 Alfresco, Inc. + +Licensed under the Mozilla Public License version 1.1 +with a permitted attribution clause. You may obtain a +copy of the License at + +http://www.alfresco.org/legal/license.txt + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the License for the specific +language governing permissions and limitations under the +License. +--%> + +<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %> +<%@ page import="org.alfresco.config.ConfigService" %> +<%@ page import="org.alfresco.web.app.servlet.AuthenticationHelper" %> +<%@ page import="org.alfresco.web.bean.NavigationBean" %> +<%@ page import="org.alfresco.web.bean.repository.User" %> +<%@ page import="org.alfresco.web.bean.repository.PreferencesService" %> +<%@ page import="org.alfresco.web.config.ClientConfigElement" %> + +<%-- redirect to the web application's appropriate start page --%> +<% +// get the start location as configured by the web-client config +ConfigService configService = (ConfigService)WebApplicationContextUtils.getRequiredWebApplicationContext(session.getServletContext()).getBean("webClientConfigService"); +ClientConfigElement configElement = (ClientConfigElement)configService.getGlobalConfig().getConfigElement("client"); +String location = configElement.getInitialLocation(); + +// override with the users preference if they have one +User user = (User)session.getAttribute(AuthenticationHelper.AUTHENTICATION_USER); +if (user != null) +{ + String preference = (String)PreferencesService.getPreferences(user).getValue("start-location"); + if (preference != null) + { + location = preference; + } +} +if (NavigationBean.LOCATION_MYALFRESCO.equals(location)) +{ + response.sendRedirect(request.getContextPath() + "/faces/jsp/dashboards/container.jsp"); +} +else +{ + response.sendRedirect(request.getContextPath() + "/faces/jsp/browse/browse.jsp"); +} +%> diff --git a/source/web/jsp/dashboards/container.jsp b/source/web/jsp/dashboards/container.jsp index adc53b82af..8a1e21eef4 100644 --- a/source/web/jsp/dashboards/container.jsp +++ b/source/web/jsp/dashboards/container.jsp @@ -74,7 +74,7 @@
- + diff --git a/source/web/jsp/dashboards/dashlets/getting-started.jsp b/source/web/jsp/dashboards/dashlets/getting-started.jsp index b54487ccc1..c8b4eee5fc 100644 --- a/source/web/jsp/dashboards/dashlets/getting-started.jsp +++ b/source/web/jsp/dashboards/dashlets/getting-started.jsp @@ -71,7 +71,12 @@ - + + + + + +
@@ -80,7 +85,12 @@ - + + + + + +
@@ -89,7 +99,12 @@ - + + + + + +
diff --git a/source/web/jsp/users/user-console.jsp b/source/web/jsp/users/user-console.jsp index 008991349e..6457bc0636 100644 --- a/source/web/jsp/users/user-console.jsp +++ b/source/web/jsp/users/user-console.jsp @@ -134,14 +134,25 @@
- + <%-- - - --%> + - +
+ + + +
+ :  + + <%-- Start Location drop-down selector --%> + + + +