diff --git a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java index 0446effa31..2283a5b22a 100644 --- a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java +++ b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java @@ -16,10 +16,12 @@ */ package org.alfresco.web.bean.wcm; +import java.io.Serializable; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.ResourceBundle; @@ -433,7 +435,26 @@ public class AVMBrowseBean implements IContextListener */ public void setAVMNodeDescriptor(AVMNodeDescriptor avmRef) { - this.avmNode = new AVMNode(avmRef); + AVMNode avmNode = new AVMNode(avmRef); + // TODO: remove this once we can add the aspect quickly in the ImportWebsiteDialog! + if (avmNode.isDirectory()) + { + if (this.nodeService.hasAspect(avmNode.getNodeRef(), ContentModel.ASPECT_UIFACETS) == false) + { + this.nodeService.addAspect(avmNode.getNodeRef(), ContentModel.ASPECT_UIFACETS, null); + } + } + else + { + if (this.nodeService.hasAspect(avmNode.getNodeRef(), ContentModel.ASPECT_TITLED) == false) + { + // add titled aspect for the read/edit properties screens + Map titledProps = new HashMap(1, 1.0f); + titledProps.put(ContentModel.PROP_TITLE, avmNode.getName()); + this.nodeService.addAspect(avmNode.getNodeRef(), ContentModel.ASPECT_TITLED, titledProps); + } + } + this.avmNode = avmNode; } /** diff --git a/source/java/org/alfresco/web/bean/wcm/AVMEditBean.java b/source/java/org/alfresco/web/bean/wcm/AVMEditBean.java index afea390396..25ee094612 100644 --- a/source/java/org/alfresco/web/bean/wcm/AVMEditBean.java +++ b/source/java/org/alfresco/web/bean/wcm/AVMEditBean.java @@ -388,7 +388,6 @@ public class AVMEditBean { // clean up and clear action context clearUpload(); - this.avmBrowseBean.setAvmNode(null); setDocumentContent(null); setEditorOutput(null); } diff --git a/source/java/org/alfresco/web/bean/wcm/AVMNode.java b/source/java/org/alfresco/web/bean/wcm/AVMNode.java index b0a988a433..c4a605a879 100644 --- a/source/java/org/alfresco/web/bean/wcm/AVMNode.java +++ b/source/java/org/alfresco/web/bean/wcm/AVMNode.java @@ -80,6 +80,16 @@ public class AVMNode implements Map { return AVMNodeConverter.ToNodeRef(this.version, this.path); } + + public boolean isDirectory() + { + return this.avmRef.isDirectory(); + } + + public boolean isFile() + { + return this.avmRef.isFile(); + } /** * @return All the properties known about this node. diff --git a/source/java/org/alfresco/web/bean/wcm/ImportWebsiteDialog.java b/source/java/org/alfresco/web/bean/wcm/ImportWebsiteDialog.java index 1ed7939f54..baec5d86f9 100644 --- a/source/java/org/alfresco/web/bean/wcm/ImportWebsiteDialog.java +++ b/source/java/org/alfresco/web/bean/wcm/ImportWebsiteDialog.java @@ -200,6 +200,8 @@ public class ImportWebsiteDialog tx = Repository.getUserTransaction(context); tx.begin(); + // 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); @@ -395,7 +397,6 @@ public class ImportWebsiteDialog private void importDirectory(String dir, NodeRef root) { ServiceRegistry services = Repository.getServiceRegistry(FacesContext.getCurrentInstance()); - NodeService nodeService = services.getNodeService(); MimetypeService mimetypeService = services.getMimetypeService(); File topdir = new File(dir); for (File file : topdir.listFiles()) @@ -404,6 +405,7 @@ public class ImportWebsiteDialog { if (file.isFile()) { + // Create a file in the AVM store String avmPath = AVMNodeConverter.ToAVMVersionPath(root).getSecond(); String fileName = file.getName(); this.avmService.createFile( @@ -412,10 +414,12 @@ public class ImportWebsiteDialog String filePath = avmPath + '/' + fileName; NodeRef fileRef = AVMNodeConverter.ToNodeRef(-1, filePath); + // TODO: restore this code once performance is acceptable + // see AVMBrowseBean.setAVMNodeDescriptor // add titled aspect for the read/edit properties screens - Map titledProps = new HashMap(1, 1.0f); - titledProps.put(ContentModel.PROP_TITLE, fileName); - this.nodeService.addAspect(fileRef, ContentModel.ASPECT_TITLED, titledProps); + //Map titledProps = new HashMap(1, 1.0f); + //titledProps.put(ContentModel.PROP_TITLE, fileName); + //this.nodeService.addAspect(fileRef, ContentModel.ASPECT_TITLED, titledProps); // create content node based on the filename /*FileInfo contentFile = fileFolderService.create(root, fileName, ContentModel.TYPE_AVM_PLAIN_CONTENT); @@ -433,15 +437,18 @@ public class ImportWebsiteDialog { //FileInfo fileInfo = fileFolderService.create(root, file.getName(), ContentModel.TYPE_AVM_PLAIN_FOLDER); + // Create a directory in the AVM store String avmPath = AVMNodeConverter.ToAVMVersionPath(root).getSecond(); - avmService.createDirectory(avmPath, file.getName()); + this.avmService.createDirectory(avmPath, file.getName()); String folderPath = avmPath + '/' + file.getName(); NodeRef folderRef = AVMNodeConverter.ToNodeRef(-1, folderPath); importDirectory(file.getPath(), folderRef); + // TODO: restore this code once performance is acceptable + // see AVMBrowseBean.setAVMNodeDescriptor // add the uifacets aspect for the read/edit properties screens - this.nodeService.addAspect(folderRef, ContentModel.ASPECT_UIFACETS, null); + //this.nodeService.addAspect(folderRef, ContentModel.ASPECT_UIFACETS, null); } } catch (FileNotFoundException e) diff --git a/source/web/WEB-INF/faces-config-beans.xml b/source/web/WEB-INF/faces-config-beans.xml index c045103e0c..b244189dc0 100644 --- a/source/web/WEB-INF/faces-config-beans.xml +++ b/source/web/WEB-INF/faces-config-beans.xml @@ -617,7 +617,7 @@ session nodeService - #{NodeService} + #{nodeService} fileFolderService