mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
. WCM UI
- Create Web Content action (HTML, plain text and XML forms !) now creates content in the current AVM store+folder - Edit inline content for HTML, plain text and XML forms . Applied web.xml error patch as suggested by Gav git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3873 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -140,6 +140,11 @@ public class AVMBrowseBean implements IContextListener
|
|||||||
this.nodeService = nodeService;
|
this.nodeService = nodeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter used by the Inline Edit XML JSP
|
||||||
|
*
|
||||||
|
* @return The NodeService
|
||||||
|
*/
|
||||||
public NodeService getNodeService()
|
public NodeService getNodeService()
|
||||||
{
|
{
|
||||||
return this.nodeService;
|
return this.nodeService;
|
||||||
@@ -369,6 +374,29 @@ public class AVMBrowseBean implements IContextListener
|
|||||||
this.avmNode = new AVMNode(avmRef);
|
this.avmNode = new AVMNode(avmRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the internal AVM path to the current folder for browsing
|
||||||
|
*/
|
||||||
|
public String getCurrentPath()
|
||||||
|
{
|
||||||
|
if (this.currentPath == null)
|
||||||
|
{
|
||||||
|
this.currentPath = AVMConstants.buildAVMStoreRootPath(getSandbox());
|
||||||
|
}
|
||||||
|
return this.currentPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param path the internal AVM path to the current folder for browsing
|
||||||
|
*/
|
||||||
|
public void setCurrentPath(String path)
|
||||||
|
{
|
||||||
|
this.currentPath = path;
|
||||||
|
|
||||||
|
// update UI state ready for screen refresh
|
||||||
|
UIContextService.getInstance(FacesContext.getCurrentInstance()).notifyBeans();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Breadcrumb location list
|
* @return Breadcrumb location list
|
||||||
*/
|
*/
|
||||||
@@ -542,29 +570,6 @@ public class AVMBrowseBean implements IContextListener
|
|||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// Private helpers
|
// Private helpers
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the internal AVM path to the current folder for browsing
|
|
||||||
*/
|
|
||||||
private String getCurrentPath()
|
|
||||||
{
|
|
||||||
if (this.currentPath == null)
|
|
||||||
{
|
|
||||||
this.currentPath = AVMConstants.buildAVMStoreRootPath(getSandbox());
|
|
||||||
}
|
|
||||||
return this.currentPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param path the internal AVM path to the current folder for browsing
|
|
||||||
*/
|
|
||||||
private void setCurrentPath(String path)
|
|
||||||
{
|
|
||||||
this.currentPath = path;
|
|
||||||
|
|
||||||
// update UI state ready for screen refresh
|
|
||||||
UIContextService.getInstance(FacesContext.getCurrentInstance()).notifyBeans();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the breadcrumb with the clicked Group location
|
* Update the breadcrumb with the clicked Group location
|
||||||
*/
|
*/
|
||||||
|
@@ -20,11 +20,8 @@ import java.io.BufferedInputStream;
|
|||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.io.StringReader;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
@@ -36,20 +33,11 @@ import javax.faces.model.SelectItem;
|
|||||||
import org.alfresco.config.Config;
|
import org.alfresco.config.Config;
|
||||||
import org.alfresco.config.ConfigElement;
|
import org.alfresco.config.ConfigElement;
|
||||||
import org.alfresco.config.ConfigService;
|
import org.alfresco.config.ConfigService;
|
||||||
import org.alfresco.model.ContentModel;
|
|
||||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
import org.alfresco.service.cmr.model.FileInfo;
|
|
||||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
|
||||||
import org.alfresco.service.cmr.repository.MimetypeService;
|
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
|
||||||
import org.alfresco.service.namespace.QName;
|
|
||||||
import org.alfresco.web.app.AlfrescoNavigationHandler;
|
|
||||||
import org.alfresco.web.app.Application;
|
import org.alfresco.web.app.Application;
|
||||||
import org.alfresco.web.bean.content.BaseContentWizard;
|
import org.alfresco.web.bean.content.BaseContentWizard;
|
||||||
import org.alfresco.web.bean.repository.Node;
|
|
||||||
import org.alfresco.web.bean.repository.Repository;
|
|
||||||
import org.alfresco.web.data.IDataContainer;
|
import org.alfresco.web.data.IDataContainer;
|
||||||
import org.alfresco.web.data.QuickSort;
|
import org.alfresco.web.data.QuickSort;
|
||||||
import org.alfresco.web.templating.OutputUtil;
|
import org.alfresco.web.templating.OutputUtil;
|
||||||
@@ -137,20 +125,7 @@ public class CreateWebContentWizard extends BaseContentWizard
|
|||||||
protected void saveContent(File fileContent, String strContent) throws Exception
|
protected void saveContent(File fileContent, String strContent) throws Exception
|
||||||
{
|
{
|
||||||
// get the parent path of the location to save the content
|
// get the parent path of the location to save the content
|
||||||
String path;
|
String path = this.avmBrowseBean.getCurrentPath();
|
||||||
AVMNode avmNode = this.avmBrowseBean.getAvmNode();
|
|
||||||
if (avmNode == null)
|
|
||||||
{
|
|
||||||
// create in root of current website
|
|
||||||
Node websiteNode = this.navigator.getCurrentNode();
|
|
||||||
String storeRoot = (String)websiteNode.getProperties().get(ContentModel.PROP_AVMSTORE);
|
|
||||||
path = AVMConstants.buildAVMStoreRootPath(AVMConstants.buildAVMStagingStoreName(storeRoot));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// create in current folder path
|
|
||||||
path = avmNode.getPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
// put the content of the file into the AVM store
|
// put the content of the file into the AVM store
|
||||||
if (fileContent != null)
|
if (fileContent != null)
|
||||||
|
@@ -20,10 +20,8 @@ import java.io.OutputStream;
|
|||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.avm.AVMContext;
|
|
||||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
|
||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.service.cmr.repository.ContentService;
|
import org.alfresco.service.cmr.repository.ContentService;
|
||||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||||
@@ -49,27 +47,6 @@ public class OutputUtil
|
|||||||
return s.replaceAll("(.+)\\..*", "$1");
|
return s.replaceAll("(.+)\\..*", "$1");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getAVMParentPath(NodeRef nodeRef,
|
|
||||||
NodeService nodeService)
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
ChildAssociationRef caf = nodeService.getPrimaryParent(nodeRef);
|
|
||||||
final String parentName = (String)
|
|
||||||
nodeService.getProperty(caf.getParentRef(), ContentModel.PROP_NAME);
|
|
||||||
LOGGER.debug("computed avm path " + PARENT_AVM_PATH + "/" + parentName);
|
|
||||||
final String result = PARENT_AVM_PATH + "/" + parentName;
|
|
||||||
AVMService avmService = (AVMService)AVMContext.fgInstance.fAppContext.getBean("avmService");
|
|
||||||
if (avmService.lookup(-1, result) != null)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// avmService.createDirectory(PARENT_AVM_PATH, parentName);
|
|
||||||
return PARENT_AVM_PATH;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void generate(String parentPath,
|
public static void generate(String parentPath,
|
||||||
Document xml,
|
Document xml,
|
||||||
TemplateType tt,
|
TemplateType tt,
|
||||||
@@ -108,20 +85,6 @@ public class OutputUtil
|
|||||||
nodeService.setProperty(createdNodeRef,
|
nodeService.setProperty(createdNodeRef,
|
||||||
TemplatingService.TT_GENERATED_OUTPUT_QNAME,
|
TemplatingService.TT_GENERATED_OUTPUT_QNAME,
|
||||||
outputNodeRef.toString());
|
outputNodeRef.toString());
|
||||||
|
|
||||||
// TODO: should this output go anywhere in the AVM world now we are writing directly?
|
|
||||||
/*try
|
|
||||||
{
|
|
||||||
out = new OutputStreamWriter(avmService.createFile(parentAVMPath, fileName));
|
|
||||||
}
|
|
||||||
catch (AVMExistsException e)
|
|
||||||
{
|
|
||||||
out = new OutputStreamWriter(avmService.getFileOutputStream(parentAVMPath + "/" + fileName));
|
|
||||||
}
|
|
||||||
LOGGER.debug("writing xml " + fileName + " to avm");
|
|
||||||
final TemplatingService ts = TemplatingService.getInstance();
|
|
||||||
ts.writeXML(xml, out);
|
|
||||||
out.close();*/
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -173,33 +136,6 @@ public class OutputUtil
|
|||||||
out.close();
|
out.close();
|
||||||
|
|
||||||
LOGGER.debug("generated " + fileName + " using " + tom);
|
LOGGER.debug("generated " + fileName + " using " + tom);
|
||||||
|
|
||||||
// TODO: do we need these now - as the NodeRef's above are now AVM NodeRefs...?
|
|
||||||
/*AVMService avmService = (AVMService)AVMContext.fgInstance.fAppContext.getBean("avmService");
|
|
||||||
final String parentAVMPath = getAVMParentPath(nodeRef, nodeService);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
out = new OutputStreamWriter(avmService.createFile(parentAVMPath, generatedFileName));
|
|
||||||
}
|
|
||||||
catch (AVMExistsException e)
|
|
||||||
{
|
|
||||||
out = new OutputStreamWriter(avmService.getFileOutputStream(parentAVMPath + "/" + generatedFileName));
|
|
||||||
}
|
|
||||||
LOGGER.debug("generating " + generatedFileName + " to avm");
|
|
||||||
tom.generate(xml, tt, out);
|
|
||||||
out.close();*/
|
|
||||||
|
|
||||||
/*try
|
|
||||||
{
|
|
||||||
out = new OutputStreamWriter(avmService.createFile(parentAVMPath, fileName));
|
|
||||||
}
|
|
||||||
catch (AVMExistsException e)
|
|
||||||
{
|
|
||||||
out = new OutputStreamWriter(avmService.getFileOutputStream(parentAVMPath + "/" + fileName));
|
|
||||||
}
|
|
||||||
LOGGER.debug("writing xml " + fileName + " to avm");
|
|
||||||
ts.writeXML(xml, out);
|
|
||||||
out.close();*/
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@@ -648,6 +648,10 @@
|
|||||||
<property-name>navigationBean</property-name>
|
<property-name>navigationBean</property-name>
|
||||||
<value>#{NavigationBean}</value>
|
<value>#{NavigationBean}</value>
|
||||||
</managed-property>
|
</managed-property>
|
||||||
|
<managed-property>
|
||||||
|
<property-name>nodeService</property-name>
|
||||||
|
<value>#{NodeService}</value>
|
||||||
|
</managed-property>
|
||||||
</managed-bean>
|
</managed-bean>
|
||||||
|
|
||||||
<managed-bean>
|
<managed-bean>
|
||||||
@@ -669,6 +673,10 @@
|
|||||||
<property-name>avmBrowseBean</property-name>
|
<property-name>avmBrowseBean</property-name>
|
||||||
<value>#{AVMBrowseBean}</value>
|
<value>#{AVMBrowseBean}</value>
|
||||||
</managed-property>
|
</managed-property>
|
||||||
|
<managed-property>
|
||||||
|
<property-name>nodeService</property-name>
|
||||||
|
<value>#{NodeService}</value>
|
||||||
|
</managed-property>
|
||||||
</managed-bean>
|
</managed-bean>
|
||||||
|
|
||||||
<managed-bean>
|
<managed-bean>
|
||||||
|
@@ -274,7 +274,7 @@
|
|||||||
</welcome-file-list>
|
</welcome-file-list>
|
||||||
|
|
||||||
<error-page>
|
<error-page>
|
||||||
<error-code>500</error-code>
|
<exception-type>java.lang.Exception</exception-type>
|
||||||
<location>/jsp/error.jsp</location>
|
<location>/jsp/error.jsp</location>
|
||||||
</error-page>
|
</error-page>
|
||||||
|
|
||||||
|
@@ -75,7 +75,7 @@
|
|||||||
<div class="mainSubText"><h:outputText value="#{NavigationBean.nodeProperties.description}" id="msg4" /></div>
|
<div class="mainSubText"><h:outputText value="#{NavigationBean.nodeProperties.description}" id="msg4" /></div>
|
||||||
</td>
|
</td>
|
||||||
<td align=right>
|
<td align=right>
|
||||||
<a:actionLink value="#{msg.sandbox_create}" image="/images/icons/new_content.gif" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="wizard:createWebContent" />
|
<a:actionLink value="#{msg.sandbox_create}" image="/images/icons/new_content.gif" action="wizard:createWebContent" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@@ -33,10 +33,10 @@
|
|||||||
<%@ page import="org.alfresco.web.templating.*" %>
|
<%@ page import="org.alfresco.web.templating.*" %>
|
||||||
<%@ page import="org.w3c.dom.Document" %>
|
<%@ page import="org.w3c.dom.Document" %>
|
||||||
<%
|
<%
|
||||||
final AVMBrowseBean ccb = (AVMBrowseBean)session.getAttribute("AVMBrowseBean");
|
final AVMBrowseBean browseBean = (AVMBrowseBean)session.getAttribute("AVMBrowseBean");
|
||||||
NodeRef nr = ccb.getAvmNode().getNodeRef();
|
NodeRef nr = browseBean.getAvmNode().getNodeRef();
|
||||||
final AVMEditBean aeb = (AVMEditBean)session.getAttribute("AVMEditBean");
|
final AVMEditBean editBean = (AVMEditBean)session.getAttribute("AVMEditBean");
|
||||||
String ttName = (String)ccb.getNodeService().getProperty(nr, TemplatingService.TT_QNAME);
|
String ttName = (String)browseBean.getNodeService().getProperty(nr, TemplatingService.TT_QNAME);
|
||||||
final TemplatingService ts = TemplatingService.getInstance();
|
final TemplatingService ts = TemplatingService.getInstance();
|
||||||
final TemplateType tt = ts.getTemplateType(ttName);
|
final TemplateType tt = ts.getTemplateType(ttName);
|
||||||
TemplateInputMethod tim = tt.getInputMethods().get(0);
|
TemplateInputMethod tim = tt.getInputMethods().get(0);
|
||||||
@@ -46,7 +46,7 @@ final InstanceData instanceData = new InstanceData()
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return aeb.getEditorOutput() != null ? ts.parseXML(aeb.getEditorOutput()) : null;
|
return editBean.getEditorOutput() != null ? ts.parseXML(editBean.getEditorOutput()) : null;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -57,7 +57,7 @@ final InstanceData instanceData = new InstanceData()
|
|||||||
|
|
||||||
public void setContent(final Document d)
|
public void setContent(final Document d)
|
||||||
{
|
{
|
||||||
aeb.setEditorOutput(ts.writeXMLToString(d));
|
editBean.setEditorOutput(ts.writeXMLToString(d));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
%>
|
%>
|
||||||
@@ -130,27 +130,7 @@ final InstanceData instanceData = new InstanceData()
|
|||||||
<td height="100%">
|
<td height="100%">
|
||||||
<table cellspacing="0" cellpadding="3" border="0" width="100%" height="100%">
|
<table cellspacing="0" cellpadding="3" border="0" width="100%" height="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top" rowspan=2>
|
<%-- Inline editor --%>
|
||||||
<% PanelGenerator.generatePanelStart(out, request.getContextPath(), "blue", "#D3E6FE"); %>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<h:commandButton id="save-button" value="#{msg.save}" action="#{CheckinCheckoutBean.editInlineOK}" styleClass="dialogControls" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr><td class="dialogButtonSpacing"></td></tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<h:commandButton value="#{msg.cancel}" action="browse" styleClass="dialogControls" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<% PanelGenerator.generatePanelEnd(out, request.getContextPath(), "blue"); %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<%-- Inline editor --%>
|
|
||||||
<tr>
|
|
||||||
<td width="100%" valign="top" height="100%">
|
<td width="100%" valign="top" height="100%">
|
||||||
<% PanelGenerator.generatePanelStart(out, request.getContextPath(), "white", "white"); %>
|
<% PanelGenerator.generatePanelStart(out, request.getContextPath(), "white", "white"); %>
|
||||||
|
|
||||||
@@ -158,6 +138,23 @@ final InstanceData instanceData = new InstanceData()
|
|||||||
|
|
||||||
<% PanelGenerator.generatePanelEnd(out, request.getContextPath(), "white"); %>
|
<% PanelGenerator.generatePanelEnd(out, request.getContextPath(), "white"); %>
|
||||||
</td>
|
</td>
|
||||||
|
<td valign="top" rowspan=2>
|
||||||
|
<% PanelGenerator.generatePanelStart(out, request.getContextPath(), "blue", "#D3E6FE"); %>
|
||||||
|
<table cellpadding="1" cellspacing="1" border="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<h:commandButton id="save-button" value="#{msg.save}" action="#{AVMEditBean.editInlineOK}" styleClass="dialogControls" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td class="dialogButtonSpacing"></td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<h:commandButton value="#{msg.cancel}" action="dialog:close" styleClass="dialogControls" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<% PanelGenerator.generatePanelEnd(out, request.getContextPath(), "blue"); %>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
|
Reference in New Issue
Block a user