diff --git a/config/alfresco/web-client-config-actions.xml b/config/alfresco/web-client-config-actions.xml index b38532c743..853ede4c6f 100644 --- a/config/alfresco/web-client-config-actions.xml +++ b/config/alfresco/web-client-config-actions.xml @@ -374,6 +374,7 @@ + org.alfresco.web.action.evaluator.CreateFormEvaluator create_form /images/icons/new_content.gif wizard:createForm @@ -401,7 +402,7 @@ - + org.alfresco.web.action.evaluator.CreateWebProjectEvaluator create_website /images/icons/create_website.gif wizard:createWebsite @@ -609,10 +610,10 @@ false inlineAction - + diff --git a/source/java/org/alfresco/web/action/evaluator/CreateFormEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CreateFormEvaluator.java new file mode 100644 index 0000000000..3798016036 --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/CreateFormEvaluator.java @@ -0,0 +1,46 @@ +/* + * 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.action.evaluator; + +import javax.faces.context.FacesContext; + +import org.alfresco.service.cmr.security.AccessStatus; +import org.alfresco.service.cmr.security.PermissionService; +import org.alfresco.web.action.ActionEvaluator; +import org.alfresco.web.bean.repository.Node; +import org.alfresco.web.bean.repository.Repository; +import org.alfresco.web.forms.FormsService; + +/** + * UI Action Evaluator - Create Web Form in the Forms DataDictionary folder + * + * @author Kevin Roast + */ +public class CreateFormEvaluator implements ActionEvaluator +{ + /** + * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) + */ + public boolean evaluate(Node node) + { + PermissionService service = + Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getPermissionService(); + return service.hasPermission( + FormsService.getInstance().getContentFormsNodeRef(), + PermissionService.ADD_CHILDREN) == AccessStatus.ALLOWED; + } +} diff --git a/source/java/org/alfresco/web/action/evaluator/CreateWebProjectEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CreateWebProjectEvaluator.java new file mode 100644 index 0000000000..2debaba94b --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/CreateWebProjectEvaluator.java @@ -0,0 +1,58 @@ +/* + * 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.action.evaluator; + +import javax.faces.context.FacesContext; + +import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.repository.Path; +import org.alfresco.service.cmr.security.AccessStatus; +import org.alfresco.service.cmr.security.PermissionService; +import org.alfresco.web.action.ActionEvaluator; +import org.alfresco.web.app.Application; +import org.alfresco.web.app.servlet.FacesHelper; +import org.alfresco.web.bean.NavigationBean; +import org.alfresco.web.bean.repository.Node; +import org.alfresco.web.bean.repository.Repository; + +/** + * UI Action Evaluator - Create Web Project in the Websites folders + * + * @author Kevin Roast + */ +public class CreateWebProjectEvaluator implements ActionEvaluator +{ + /** + * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) + */ + public boolean evaluate(Node node) + { + FacesContext fc = FacesContext.getCurrentInstance(); + ServiceRegistry services = Repository.getServiceRegistry(fc); + NavigationBean navigator = (NavigationBean)FacesHelper.getManagedBean(fc, NavigationBean.BEAN_NAME); + // get the path to the current name - compare last element with the Website folder assoc name + Path path = services.getNodeService().getPath(navigator.getCurrentNode().getNodeRef()); + Path.Element element = path.get(path.size() - 1); + String endPath = element.getPrefixedString(services.getNamespaceService()); + if (Application.getWebsitesFolderName(fc).equals(endPath)) + { + // check we have the permission to create nodes in that Website folder + return navigator.getCurrentNode().hasPermission(PermissionService.ADD_CHILDREN); + } + return false; + } +} diff --git a/source/java/org/alfresco/web/action/evaluator/ShortcutNodeEvaluator.java b/source/java/org/alfresco/web/action/evaluator/ShortcutNodeEvaluator.java index 8e66afe0dc..03e184a7c4 100644 --- a/source/java/org/alfresco/web/action/evaluator/ShortcutNodeEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/ShortcutNodeEvaluator.java @@ -36,7 +36,7 @@ public class ShortcutNodeEvaluator implements ActionEvaluator public boolean evaluate(Node node) { NavigationBean nav = - (NavigationBean)FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), "NavigationBean"); + (NavigationBean)FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), NavigationBean.BEAN_NAME); return (nav.getIsGuest() == false); } } diff --git a/source/java/org/alfresco/web/action/evaluator/StartWorkflowEvaluator.java b/source/java/org/alfresco/web/action/evaluator/StartWorkflowEvaluator.java index 0d0de2e2d7..18bdb65e04 100644 --- a/source/java/org/alfresco/web/action/evaluator/StartWorkflowEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/StartWorkflowEvaluator.java @@ -36,7 +36,7 @@ public class StartWorkflowEvaluator implements ActionEvaluator public boolean evaluate(Node node) { NavigationBean nav = - (NavigationBean)FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), "NavigationBean"); + (NavigationBean)FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), NavigationBean.BEAN_NAME); return (nav.getIsGuest() == false); } } diff --git a/source/java/org/alfresco/web/app/AlfrescoNavigationHandler.java b/source/java/org/alfresco/web/app/AlfrescoNavigationHandler.java index c201aa5ec1..8130da7ad0 100644 --- a/source/java/org/alfresco/web/app/AlfrescoNavigationHandler.java +++ b/source/java/org/alfresco/web/app/AlfrescoNavigationHandler.java @@ -54,8 +54,6 @@ public class AlfrescoNavigationHandler extends NavigationHandler public final static String CLOSE_DIALOG_OUTCOME = DIALOG_PREFIX + "close"; public final static String CLOSE_WIZARD_OUTCOME = WIZARD_PREFIX + "close"; - protected final static String CONFIG_NAV_BEAN = "NavigationBean"; - protected String dialogContainer = null; protected String wizardContainer = null; @@ -400,7 +398,7 @@ public class AlfrescoNavigationHandler extends NavigationHandler Node dispatchNode = null; NavigationBean navBean = (NavigationBean)context.getExternalContext(). - getSessionMap().get(CONFIG_NAV_BEAN); + getSessionMap().get(NavigationBean.BEAN_NAME); if (navBean != null) { @@ -488,7 +486,7 @@ public class AlfrescoNavigationHandler extends NavigationHandler // reset the dispatch context ((NavigationBean)context.getExternalContext().getSessionMap(). - get(CONFIG_NAV_BEAN)).resetDispatchContext(); + get(NavigationBean.BEAN_NAME)).resetDispatchContext(); } else { diff --git a/source/java/org/alfresco/web/bean/NavigationBean.java b/source/java/org/alfresco/web/bean/NavigationBean.java index 5ca36789d0..9fcd318a13 100644 --- a/source/java/org/alfresco/web/bean/NavigationBean.java +++ b/source/java/org/alfresco/web/bean/NavigationBean.java @@ -62,8 +62,10 @@ import org.apache.log4j.Logger; */ public class NavigationBean { + /** Public JSF Bean name */ + public static final String BEAN_NAME = "NavigationBean"; + private static final String OUTCOME_MYALFRESCO = "myalfresco"; - private static final String OUTCOME_BROWSE = "browse"; /** diff --git a/source/java/org/alfresco/web/ui/common/Utils.java b/source/java/org/alfresco/web/ui/common/Utils.java index 02fc9caac1..5d2f6f5b4d 100644 --- a/source/java/org/alfresco/web/ui/common/Utils.java +++ b/source/java/org/alfresco/web/ui/common/Utils.java @@ -583,7 +583,7 @@ public final class Utils // get hold of the node service, cifsServer and navigation bean NodeService nodeService = Repository.getServiceRegistry(context).getNodeService(); NavigationBean navBean = (NavigationBean)context.getExternalContext(). - getSessionMap().get("NavigationBean"); + getSessionMap().get(NavigationBean.BEAN_NAME); CIFSServer cifsServer = (CIFSServer)FacesContextUtils.getRequiredWebApplicationContext( context).getBean("cifsServer");