. UI action evaluators for Create Web Project and Create Form actions

- permissions are check for Write access to appropriate folders
 - The Create Web Project action is now only available when the current folder context is the "Websites" folder
. NavigationBean bean name constant added

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4452 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2006-11-28 14:56:38 +00:00
parent 6027f1c17d
commit c8af965116
8 changed files with 115 additions and 10 deletions

View File

@@ -374,6 +374,7 @@
<!-- Create XML content type -->
<action id="create_form">
<evaluator>org.alfresco.web.action.evaluator.CreateFormEvaluator</evaluator>
<label-id>create_form</label-id>
<image>/images/icons/new_content.gif</image>
<action>wizard:createForm</action>
@@ -401,7 +402,7 @@
<!-- Create Website Wizard -->
<action id="create_website_wizard">
<!-- TODO: check for role and in Websites folder -->
<evaluator>org.alfresco.web.action.evaluator.CreateWebProjectEvaluator</evaluator>
<label-id>create_website</label-id>
<image>/images/icons/create_website.gif</image>
<action>wizard:createWebsite</action>
@@ -609,10 +610,10 @@
<show-link>false</show-link>
<style-class>inlineAction</style-class>
<action idref="delete_space" />
<action idref="cut_node" />
<action idref="copy_node" />
<action idref="details_space" />
<action idref="delete_space" />
</action-group>
<!-- Actions Menu for a space in the Browse screen -->

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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
{

View File

@@ -62,8 +62,10 @@ import org.apache.log4j.Logger;
*/
public class NavigationBean
{
private static final String OUTCOME_MYALFRESCO = "myalfresco";
/** 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";
/**

View File

@@ -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");