mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
. Single web-app per Web Project changes implemented in Sandbox browsing view
- the web-app folder name specified at Web Project creation time is created by default and is the root folder for all sandbox operations - a mechanism for selecting a different root webapp (or creating new root folders) can be easily added later (when there is time…!) . Removal of two public workflow actions that have no params and therefore don't work as public actions in the UI . Fix to user sandboxes component to allow any user to always have action to delete a user sandbox git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4445 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -511,7 +511,8 @@ public class AVMBrowseBean implements IContextListener
|
||||
{
|
||||
if (this.currentPath == null)
|
||||
{
|
||||
this.currentPath = AVMConstants.buildAVMStoreRootPath(getSandbox());
|
||||
String webapp = (String)getWebsite().getProperties().get(ContentModel.PROP_DEFAULTWEBAPP);
|
||||
this.currentPath = AVMConstants.buildAVMStoreWebappPath(getSandbox(), webapp);
|
||||
}
|
||||
return this.currentPath;
|
||||
}
|
||||
@@ -532,40 +533,6 @@ public class AVMBrowseBean implements IContextListener
|
||||
UIContextService.getInstance(FacesContext.getCurrentInstance()).notifyBeans();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the current user has the manager role in the current website
|
||||
*/
|
||||
public boolean getIsManagerRole()
|
||||
{
|
||||
boolean isManager = false;
|
||||
|
||||
User user = Application.getCurrentUser(FacesContext.getCurrentInstance());
|
||||
if (user.isAdmin() == false)
|
||||
{
|
||||
String currentUser = user.getUserName();
|
||||
Node websiteNode = this.navigator.getCurrentNode();
|
||||
List<ChildAssociationRef> userInfoRefs = this.nodeService.getChildAssocs(
|
||||
websiteNode.getNodeRef(), ContentModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL);
|
||||
for (ChildAssociationRef ref : userInfoRefs)
|
||||
{
|
||||
NodeRef userInfoRef = ref.getChildRef();
|
||||
String username = (String)nodeService.getProperty(userInfoRef, ContentModel.PROP_WEBUSERNAME);
|
||||
String userrole = (String)nodeService.getProperty(userInfoRef, ContentModel.PROP_WEBUSERROLE);
|
||||
if (currentUser.equals(username) && ROLE_CONTENT_MANAGER.equals(userrole))
|
||||
{
|
||||
isManager = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
isManager = true;
|
||||
}
|
||||
|
||||
return isManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the AVMNode that represents the current browsing path
|
||||
*/
|
||||
@@ -602,6 +569,40 @@ public class AVMBrowseBean implements IContextListener
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the current user has the manager role in the current website
|
||||
*/
|
||||
public boolean getIsManagerRole()
|
||||
{
|
||||
boolean isManager = false;
|
||||
|
||||
User user = Application.getCurrentUser(FacesContext.getCurrentInstance());
|
||||
if (user.isAdmin() == false)
|
||||
{
|
||||
String currentUser = user.getUserName();
|
||||
Node websiteNode = this.navigator.getCurrentNode();
|
||||
List<ChildAssociationRef> userInfoRefs = this.nodeService.getChildAssocs(
|
||||
websiteNode.getNodeRef(), ContentModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL);
|
||||
for (ChildAssociationRef ref : userInfoRefs)
|
||||
{
|
||||
NodeRef userInfoRef = ref.getChildRef();
|
||||
String username = (String)nodeService.getProperty(userInfoRef, ContentModel.PROP_WEBUSERNAME);
|
||||
String userrole = (String)nodeService.getProperty(userInfoRef, ContentModel.PROP_WEBUSERROLE);
|
||||
if (currentUser.equals(username) && ROLE_CONTENT_MANAGER.equals(userrole))
|
||||
{
|
||||
isManager = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
isManager = true;
|
||||
}
|
||||
|
||||
return isManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Map of avm node objects representing the folders with the current website space
|
||||
*/
|
||||
|
@@ -67,6 +67,11 @@ public final class AVMConstants
|
||||
return store + ":/" + DIR_APPBASE + '/' + DIR_WEBAPPS;
|
||||
}
|
||||
|
||||
public static String buildAVMStoreWebappPath(String store, String webapp)
|
||||
{
|
||||
return store + ":/" + DIR_APPBASE + '/' + DIR_WEBAPPS + '/' + webapp;
|
||||
}
|
||||
|
||||
public static String buildAVMStoreUrl(String store)
|
||||
{
|
||||
if (store.indexOf(':') != -1)
|
||||
@@ -144,12 +149,10 @@ public final class AVMConstants
|
||||
{
|
||||
return parent;
|
||||
}
|
||||
|
||||
|
||||
if (path.charAt(0) == '/')
|
||||
{
|
||||
final Pattern p = Pattern.compile("([^:]+:/" + AVMConstants.DIR_APPBASE +
|
||||
"/[^/]+/[^/]+).*");
|
||||
final Matcher m = p.matcher(parent);
|
||||
final Matcher m = absoluteAVMPath.matcher(parent);
|
||||
if (m.matches())
|
||||
{
|
||||
parent = m.group(1);
|
||||
@@ -189,4 +192,8 @@ public final class AVMConstants
|
||||
// URLs for preview of sandboxes and assets
|
||||
private final static String PREVIEW_SANDBOX_URL = "http://www-{0}.avm.{1}:{2}";
|
||||
private final static String PREVIEW_ASSET_URL = "http://www-{0}.avm.{1}:{2}{3}";
|
||||
|
||||
// patter for absolute AVM Path
|
||||
private final static Pattern absoluteAVMPath = Pattern.compile(
|
||||
"([^:]+:/" + AVMConstants.DIR_APPBASE + "/[^/]+/[^/]+).*");
|
||||
}
|
||||
|
@@ -181,10 +181,14 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
||||
outcome = wiz.finish();
|
||||
if (outcome != null)
|
||||
{
|
||||
// create the AVM stores to represent the newly created location website
|
||||
// create the AVM staging store to represent the newly created location website
|
||||
SandboxFactory.createStagingSandbox(avmStore, wiz.getManagers());
|
||||
|
||||
// set the property on the node to reference the AVM store
|
||||
// create the default webapp folder under the hidden system folders
|
||||
String stagingStore = AVMConstants.buildAVMStagingStoreName(avmStore);
|
||||
this.avmService.createDirectory(AVMConstants.buildAVMStoreRootPath(stagingStore), webapp);
|
||||
|
||||
// set the property on the node to reference the root AVM store
|
||||
this.nodeService.setProperty(nodeRef, ContentModel.PROP_AVMSTORE, avmStore);
|
||||
|
||||
// persist the forms, templates, workflows and workflow defaults to the model for this web project
|
||||
|
@@ -52,6 +52,7 @@ import org.alfresco.web.app.AlfrescoNavigationHandler;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.FileUploadBean;
|
||||
import org.alfresco.web.bean.NavigationBean;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
import org.alfresco.web.bean.repository.Repository;
|
||||
import org.alfresco.web.ui.common.Utils;
|
||||
import org.apache.tools.zip.ZipEntry;
|
||||
@@ -198,15 +199,16 @@ public class ImportWebsiteDialog
|
||||
// TODO: explicit permission check for WRITE on website node for this user
|
||||
|
||||
// import the content into the appropriate store for the website
|
||||
String storeRoot = (String)this.navigationBean.getCurrentNode().getProperties().get(
|
||||
ContentModel.PROP_AVMSTORE);
|
||||
if (storeRoot != null)
|
||||
Node website = this.navigationBean.getCurrentNode();
|
||||
String storeRoot = (String)website.getProperties().get(ContentModel.PROP_AVMSTORE);
|
||||
String webapp = (String)website.getProperties().get(ContentModel.PROP_DEFAULTWEBAPP);
|
||||
if (storeRoot != null && webapp != null)
|
||||
{
|
||||
String store = AVMConstants.buildAVMStagingStoreName(storeRoot);
|
||||
if (this.avmService.getAVMStore(store) != null)
|
||||
{
|
||||
// get the root path to the webapps import area of the store
|
||||
String rootPath = AVMConstants.buildAVMStoreRootPath(store);
|
||||
// get the path to the root webapp import area of the store
|
||||
String rootPath = AVMConstants.buildAVMStoreWebappPath(store, webapp);
|
||||
|
||||
// convert the AVM path to a NodeRef so we can use the NodeService to perform import
|
||||
NodeRef importRef = AVMNodeConverter.ToNodeRef(-1, rootPath);
|
||||
@@ -218,7 +220,7 @@ public class ImportWebsiteDialog
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: output an error to indicate we cannot find the store property on the website
|
||||
throw new IllegalStateException("Unable to find root store/webapp property for website!");
|
||||
}
|
||||
|
||||
tx.commit();
|
||||
|
@@ -50,6 +50,7 @@ import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.app.servlet.DownloadContentServlet;
|
||||
import org.alfresco.web.bean.BrowseBean;
|
||||
import org.alfresco.web.bean.repository.Repository;
|
||||
import org.alfresco.web.bean.repository.User;
|
||||
import org.alfresco.web.bean.wcm.AVMConstants;
|
||||
import org.alfresco.web.bean.wcm.AVMNode;
|
||||
import org.alfresco.web.config.ClientConfigElement;
|
||||
@@ -426,19 +427,23 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
||||
*/
|
||||
private static boolean isManagerRole(FacesContext context, NodeService nodeService, NodeRef websiteRef)
|
||||
{
|
||||
boolean isManager = false;
|
||||
String currentUser = Application.getCurrentUser(context).getUserName();
|
||||
List<ChildAssociationRef> userInfoRefs = nodeService.getChildAssocs(
|
||||
websiteRef, ContentModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL);
|
||||
for (ChildAssociationRef ref : userInfoRefs)
|
||||
User user = Application.getCurrentUser(context);
|
||||
boolean isManager = user.isAdmin();
|
||||
if (isManager == false)
|
||||
{
|
||||
NodeRef userInfoRef = ref.getChildRef();
|
||||
String username = (String)nodeService.getProperty(userInfoRef, ContentModel.PROP_WEBUSERNAME);
|
||||
String userrole = (String)nodeService.getProperty(userInfoRef, ContentModel.PROP_WEBUSERROLE);
|
||||
if (currentUser.equals(username) && ROLE_CONTENT_MANAGER.equals(userrole))
|
||||
String currentUser = user.getUserName();
|
||||
List<ChildAssociationRef> userInfoRefs = nodeService.getChildAssocs(
|
||||
websiteRef, ContentModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL);
|
||||
for (ChildAssociationRef ref : userInfoRefs)
|
||||
{
|
||||
isManager = true;
|
||||
break;
|
||||
NodeRef userInfoRef = ref.getChildRef();
|
||||
String username = (String)nodeService.getProperty(userInfoRef, ContentModel.PROP_WEBUSERNAME);
|
||||
String userrole = (String)nodeService.getProperty(userInfoRef, ContentModel.PROP_WEBUSERROLE);
|
||||
if (currentUser.equals(username) && ROLE_CONTENT_MANAGER.equals(userrole))
|
||||
{
|
||||
isManager = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return isManager;
|
||||
|
Reference in New Issue
Block a user