System error after click button "cancel" on page Regenerate Renditions Wizard for Content Publisher (Contributor or Reviewer)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19923 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Steven Glover
2010-04-20 17:19:03 +00:00
parent 3873ebb4b5
commit 08f36b2012
2 changed files with 60 additions and 8 deletions
@@ -18,18 +18,28 @@
*/
package org.alfresco.web.action.evaluator;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.alfresco.model.WCMAppModel;
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.wcm.webproject.WebProjectInfo;
import org.alfresco.wcm.webproject.WebProjectService;
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;
import org.alfresco.web.bean.wcm.WebProject;
import org.alfresco.web.data.IDataContainer;
import org.alfresco.web.data.QuickSort;
/**
* UI Action Evaluator for Regenerate Renditions in the Web Forms DataDictionary folder
@@ -45,12 +55,31 @@ public class RegenerateRenditionsEvaluator extends BaseActionEvaluator
*/
public boolean evaluate(final Node node)
{
// is the authenticated user permitted to execute the regenerate renditions action
// against at least one web project
boolean isUserAllowed = false;
final FacesContext fc = FacesContext.getCurrentInstance();
final ServiceRegistry services = Repository.getServiceRegistry(fc);
final PermissionService permissionService = services.getPermissionService();
final WebProjectService webProjectService = services.getWebProjectService();
final NavigationBean navigator = (NavigationBean)FacesHelper.getManagedBean(fc, NavigationBean.BEAN_NAME);
// check that the authenticated user has CONTENT MANAGER permissions for at least one web project
// this will ensure that the action appears only if the user is able to regenerate renditions
// for at least one web project
List<WebProjectInfo> wpInfos = webProjectService.listWebProjects();
for (WebProjectInfo wpInfo : wpInfos)
{
if(permissionService.hasPermission(wpInfo.getNodeRef(), PermissionService.WCM_CONTENT_MANAGER) == AccessStatus.ALLOWED)
{
isUserAllowed = true;
break;
}
}
// TODO improve how we determine whether the form supports the ability to regenerate renditions or not
// get the path to the current name - compare each path element with the Web Forms folder name
final Path path = navigator.getCurrentNode().getNodePath();
@@ -67,6 +96,6 @@ public class RegenerateRenditionsEvaluator extends BaseActionEvaluator
}
}
return (node.hasAspect(WCMAppModel.ASPECT_RENDERING_ENGINE_TEMPLATE) || isWebFormsPath);
return (node.hasAspect(WCMAppModel.ASPECT_RENDERING_ENGINE_TEMPLATE) || isWebFormsPath) && isUserAllowed;
}
}
@@ -42,6 +42,8 @@ import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.ResultSetRow;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.security.AccessStatus;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.wcm.webproject.WebProjectInfo;
import org.alfresco.wcm.webproject.WebProjectService;
import org.alfresco.web.app.Application;
@@ -86,6 +88,7 @@ public class RegenerateRenditionsWizard
transient private AVMSyncService avmSyncService;
transient private SearchService searchService;
transient private FormsService formsService;
transient private PermissionService permissionService;
private WebProject selectedWebProject;
private String[] selectedForms;
@@ -248,12 +251,15 @@ public class RegenerateRenditionsWizard
for (WebProjectInfo wpInfo : wpInfos)
{
String s = wpInfo.getTitle();
if (this.selectedWebProject == null)
{
this.selectedWebProject = new WebProject(wpInfo.getNodeRef());
if(getPermissionService().hasPermission(wpInfo.getNodeRef(), PermissionService.WCM_CONTENT_MANAGER) == AccessStatus.ALLOWED) {
// display only web projects to which the authenticated user has CONTENT MANAGER rights
String s = wpInfo.getTitle();
if (this.selectedWebProject == null)
{
this.selectedWebProject = new WebProject(wpInfo.getNodeRef());
}
result.add(new SelectItem(wpInfo.getNodeRef().toString(), s != null && s.length() != 0 ? s : wpInfo.getName()));
}
result.add(new SelectItem(wpInfo.getNodeRef().toString(), s != null && s.length() != 0 ? s : wpInfo.getName()));
}
return result;
}
@@ -472,6 +478,23 @@ public class RegenerateRenditionsWizard
}
return this.formsService;
}
/**
* @param formsService The FormsService to set.
*/
public void setPermissionService(final PermissionService permissionService)
{
this.permissionService = permissionService;
}
private PermissionService getPermissionService()
{
if (this.permissionService == null)
{
this.permissionService = (PermissionService)FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), "PermissionService");
}
return this.permissionService;
}
// ------------------------------------------------------------------------------
// Helper Methods