mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
- some improved error handling for editing of renditions when the form instance data has been reverted
- not caching the forms list within the web project as it is not being properly refreshed when the web project is edited - better error handling in create web content for when the workflow has not properly been configured. - more work on getting edit and preview working from manage tasks screen. it should all be in place now though i am completely unable to preview right now - need to hear back from jon. had to reduce reliance on AVMBrowseBean from actions since the current path is not necessarily properly set since it's outside of a browse context. - some error handling in rendition if the primary form instance data is not there. - adding a backward webproject noderef reference to the staging store to make it possible to get web project properties without an avmbrowsebean context git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4708 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -179,9 +179,11 @@
|
||||
</action-group>
|
||||
|
||||
<action-group id="edit_wcm_package_item_actions">
|
||||
<action idref="file_details" />
|
||||
<action idref="edit_file" />
|
||||
<action idref="update_file" />
|
||||
<action idref="revert" />
|
||||
<action idref="preview_file" />
|
||||
<action idref="file_details" />
|
||||
<action idref="workflow_checkout_doc" />
|
||||
<action idref="workflow_checkin_doc" />
|
||||
<action idref="workflow_cancelcheckout_doc" />
|
||||
@@ -211,9 +213,11 @@
|
||||
</action-group>
|
||||
|
||||
<action-group id="edit_and_remove_wcm_package_item_actions">
|
||||
<action idref="file_details" />
|
||||
<action idref="edit_file"/>
|
||||
<action idref="update_file" />
|
||||
<action idref="revert" />
|
||||
<action idref="preview_file" />
|
||||
<action idref="file_details" />
|
||||
<action idref="workflow_checkout_doc" />
|
||||
<action idref="workflow_checkin_doc" />
|
||||
<action idref="workflow_cancelcheckout_doc" />
|
||||
|
@@ -740,6 +740,7 @@ public final class AVMConstants
|
||||
public final static String PROP_SANDBOXID = ".sandbox-id.";
|
||||
public final static String PROP_DNS = ".dns.";
|
||||
public final static String PROP_SANDBOX_STORE_PREFIX = ".sandbox.store.";
|
||||
public final static QName PROP_WEB_PROJECT_NODE_REF = QName.createQName(null, ".web_project.noderef");
|
||||
public final static QName PROP_SANDBOX_STAGING_MAIN = QName.createQName(null, ".sandbox.staging.main");
|
||||
public final static QName PROP_SANDBOX_STAGING_PREVIEW = QName.createQName(null, ".sandbox.staging.preview");
|
||||
public final static QName PROP_SANDBOX_AUTHOR_MAIN = QName.createQName(null, ".sandbox.author.main");
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package org.alfresco.web.bean.wcm;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -29,9 +30,11 @@ import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.model.WCMAppModel;
|
||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||
import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.repo.domain.PropertyValue;
|
||||
import org.alfresco.service.cmr.avm.AVMService;
|
||||
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
||||
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
@@ -75,7 +78,8 @@ public class AVMEditBean
|
||||
private File file = null;
|
||||
private String fileName = null;
|
||||
protected FormProcessor.Session formProcessorSession = null;
|
||||
|
||||
private Form form = null;
|
||||
|
||||
/** AVM service bean reference */
|
||||
protected AVMService avmService;
|
||||
|
||||
@@ -233,10 +237,15 @@ public class AVMEditBean
|
||||
*/
|
||||
public Form getForm()
|
||||
{
|
||||
final String formName = (String)
|
||||
this.nodeService.getProperty(this.getAvmNode().getNodeRef(),
|
||||
WCMAppModel.PROP_PARENT_FORM_NAME);
|
||||
return this.avmBrowseBean.getWebProject().getForm(formName);
|
||||
if (this.form == null)
|
||||
{
|
||||
final String formName = (String)
|
||||
this.nodeService.getProperty(this.getAvmNode().getNodeRef(),
|
||||
WCMAppModel.PROP_PARENT_FORM_NAME);
|
||||
final WebProject wp = new WebProject(this.getAvmNode().getPath());
|
||||
this.form = wp.getForm(formName);
|
||||
}
|
||||
return this.form;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -296,17 +305,27 @@ public class AVMEditBean
|
||||
{
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug(avmPath + " is a rendition, editing primary rendition instead");
|
||||
avmPath = new RenditionImpl(AVMNodeConverter.ToNodeRef(-1, avmPath)).getPrimaryFormInstanceData().getPath();
|
||||
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("Editing primary form instance data " + avmPath);
|
||||
this.avmBrowseBean.setAvmActionNode(new AVMNode(this.avmService.lookup(-1, avmPath)));
|
||||
try
|
||||
{
|
||||
final FormInstanceData fid =
|
||||
new RenditionImpl(AVMNodeConverter.ToNodeRef(-1, avmPath)).getPrimaryFormInstanceData();
|
||||
avmPath = fid.getPath();
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("Editing primary form instance data " + avmPath);
|
||||
this.avmBrowseBean.setAvmActionNode(new AVMNode(this.avmService.lookup(-1, avmPath)));
|
||||
}
|
||||
catch (FileNotFoundException fnfe)
|
||||
{
|
||||
this.avmService.removeAspect(avmPath, WCMAppModel.ASPECT_RENDITION);
|
||||
this.avmService.removeAspect(avmPath, WCMAppModel.ASPECT_FORM_INSTANCE_DATA);
|
||||
Utils.addErrorMessage(fnfe.getMessage(), fnfe);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.avmService.hasAspect(-1, avmPath, WCMAppModel.ASPECT_FORM_INSTANCE_DATA))
|
||||
{
|
||||
// reset the preview layer
|
||||
String storeName = AVMConstants.getStoreName(this.avmBrowseBean.getCurrentPath());
|
||||
String storeName = AVMConstants.getStoreName(avmPath);
|
||||
storeName = AVMConstants.getCorrespondingPreviewStoreName(storeName);
|
||||
final String path = AVMConstants.buildStoreRootPath(storeName);
|
||||
if (LOGGER.isDebugEnabled())
|
||||
|
@@ -588,7 +588,8 @@ public class CreateFormWizard
|
||||
{
|
||||
if (LOGGER.isDebugEnabled())
|
||||
{
|
||||
LOGGER.debug("schemaFileValueChanged(" + this.getSchemaFile() + ")");
|
||||
LOGGER.debug("schemaFileValueChanged(" + this.getFileName(FILE_SCHEMA) + "[" +
|
||||
this.getSchemaFile() + "])");
|
||||
}
|
||||
if (this.getSchemaFile() != null)
|
||||
{
|
||||
@@ -599,9 +600,9 @@ public class CreateFormWizard
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
final String msg = "unable to parse " + this.getSchemaFileName();
|
||||
final String msg = "unable to parse " + this.getFileName(FILE_SCHEMA);
|
||||
this.removeUploadedSchemaFile();
|
||||
Utils.addErrorMessage(msg, e);
|
||||
Utils.addErrorMessage(msg + ": " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -822,8 +823,7 @@ public class CreateFormWizard
|
||||
}
|
||||
if (LOGGER.isDebugEnabled())
|
||||
{
|
||||
LOGGER.debug("getSchemaRootElementNameChoices(" + this.schema +
|
||||
") = " + result.size());
|
||||
LOGGER.debug("getSchemaRootElementNameChoices(" + this.schema + ") = " + result.size());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@@ -317,6 +317,12 @@ public class CreateWebContentWizard extends BaseContentWizard
|
||||
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("starting workflow " + wd + " with parameters " + parameters);
|
||||
|
||||
if (parameters == null)
|
||||
{
|
||||
Utils.addErrorMessage(Application.getMessage(context, "submit_workflow_config_error"));
|
||||
return null;
|
||||
}
|
||||
|
||||
// start the workflow to get access to the start task
|
||||
WorkflowPath path = this.workflowService.startWorkflow(wd.id, null);
|
||||
|
@@ -184,7 +184,7 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
||||
if (outcome != null)
|
||||
{
|
||||
// create the AVM staging store to represent the newly created location website
|
||||
SandboxFactory.createStagingSandbox(avmStore, wiz.getManagers());
|
||||
SandboxFactory.createStagingSandbox(avmStore, nodeRef, wiz.getManagers());
|
||||
|
||||
// create the default webapp folder under the hidden system folders
|
||||
final String stagingStore = AVMConstants.buildStagingStoreName(avmStore);
|
||||
|
@@ -65,9 +65,12 @@ public final class SandboxFactory
|
||||
* Website Name: .website.name = website name
|
||||
*
|
||||
* @param storeId The store name to create the sandbox for
|
||||
* @param webProjectNodeRef The noderef for the webproject.
|
||||
* @param managers The list of authorities who have ContentManager role in the website
|
||||
*/
|
||||
public static SandboxInfo createStagingSandbox(final String storeId, final List<String> managers)
|
||||
public static SandboxInfo createStagingSandbox(final String storeId,
|
||||
final NodeRef webProjectNodeRef,
|
||||
final List<String> managers)
|
||||
{
|
||||
final ServiceRegistry services = Repository.getServiceRegistry(FacesContext.getCurrentInstance());
|
||||
final AVMService avmService = services.getAVMService();
|
||||
@@ -93,6 +96,9 @@ public final class SandboxFactory
|
||||
avmService.setStoreProperty(stagingStoreName,
|
||||
AVMConstants.PROP_SANDBOX_STAGING_MAIN,
|
||||
new PropertyValue(DataTypeDefinition.TEXT, null));
|
||||
avmService.setStoreProperty(stagingStoreName,
|
||||
AVMConstants.PROP_WEB_PROJECT_NODE_REF,
|
||||
new PropertyValue(DataTypeDefinition.NODE_REF, webProjectNodeRef));
|
||||
|
||||
// tag the store with the DNS name property
|
||||
tagStoreDNSPath(avmService, stagingStoreName, storeId);
|
||||
|
@@ -16,38 +16,40 @@
|
||||
*/
|
||||
package org.alfresco.web.bean.wcm;
|
||||
|
||||
import org.alfresco.web.bean.repository.User;
|
||||
import java.io.Serializable;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.w3c.dom.Document;
|
||||
import org.xml.sax.SAXException;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import javax.faces.context.FacesContext;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.model.WCMAppModel;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.avm.AVMService;
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.TemplateService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.service.namespace.RegexQNamePattern;
|
||||
import org.alfresco.web.app.servlet.DownloadContentServlet;
|
||||
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.forms.*;
|
||||
import org.alfresco.web.forms.xforms.XFormsProcessor;
|
||||
import org.alfresco.web.app.servlet.DownloadContentServlet;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.w3c.dom.*;
|
||||
import org.w3c.dom.Document;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* Provides configured data for a web project.
|
||||
@@ -165,13 +167,21 @@ public class WebProject
|
||||
private static final String ROLE_CONTENT_MANAGER = "ContentManager";
|
||||
|
||||
private final NodeRef nodeRef;
|
||||
private Map<String, Form> forms;
|
||||
|
||||
public WebProject(final NodeRef nodeRef)
|
||||
{
|
||||
this.nodeRef = nodeRef;
|
||||
}
|
||||
|
||||
public WebProject(final String avmPath)
|
||||
{
|
||||
String stagingStore = AVMConstants.buildStagingStoreName(AVMConstants.getStoreId(AVMConstants.getStoreName(avmPath)));
|
||||
final AVMService avmService = this.getServiceRegistry().getAVMService();
|
||||
this.nodeRef = (NodeRef)
|
||||
avmService.getStoreProperty(stagingStore,
|
||||
AVMConstants.PROP_WEB_PROJECT_NODE_REF).getValue(DataTypeDefinition.NODE_REF);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the web project.
|
||||
*
|
||||
@@ -281,24 +291,21 @@ public class WebProject
|
||||
|
||||
private Map<String, Form> getFormsImpl()
|
||||
{
|
||||
if (this.forms == null)
|
||||
final ServiceRegistry serviceRegistry = this.getServiceRegistry();
|
||||
final NodeService nodeService = serviceRegistry.getNodeService();
|
||||
final List<ChildAssociationRef> formRefs =
|
||||
nodeService.getChildAssocs(this.nodeRef,
|
||||
WCMAppModel.ASSOC_WEBFORM,
|
||||
RegexQNamePattern.MATCH_ALL);
|
||||
Map<String, Form> result = new HashMap<String, Form>(formRefs.size(), 1.0f);
|
||||
for (final ChildAssociationRef ref : formRefs)
|
||||
{
|
||||
final ServiceRegistry serviceRegistry = this.getServiceRegistry();
|
||||
final NodeService nodeService = serviceRegistry.getNodeService();
|
||||
final List<ChildAssociationRef> formRefs =
|
||||
nodeService.getChildAssocs(this.nodeRef,
|
||||
WCMAppModel.ASSOC_WEBFORM,
|
||||
RegexQNamePattern.MATCH_ALL);
|
||||
this.forms = new HashMap<String, Form>(formRefs.size(), 1.0f);
|
||||
for (final ChildAssociationRef ref : formRefs)
|
||||
{
|
||||
final String formName = (String)
|
||||
nodeService.getProperty(ref.getChildRef(), WCMAppModel.PROP_FORMNAME);
|
||||
final Form baseForm = FormsService.getInstance().getForm(formName);
|
||||
this.forms.put(formName, new FormWrapper(baseForm, ref.getChildRef()));
|
||||
}
|
||||
final String formName = (String)
|
||||
nodeService.getProperty(ref.getChildRef(), WCMAppModel.PROP_FORMNAME);
|
||||
final Form baseForm = FormsService.getInstance().getForm(formName);
|
||||
result.put(formName, new FormWrapper(baseForm, ref.getChildRef()));
|
||||
}
|
||||
return this.forms;
|
||||
return result;
|
||||
}
|
||||
|
||||
private ServiceRegistry getServiceRegistry()
|
||||
|
@@ -36,6 +36,7 @@ import org.alfresco.web.bean.repository.Repository;
|
||||
import org.alfresco.web.bean.repository.TransientNode;
|
||||
import org.alfresco.web.bean.wcm.AVMConstants;
|
||||
import org.alfresco.web.bean.wcm.AVMNode;
|
||||
import org.alfresco.web.config.ClientConfigElement;
|
||||
import org.alfresco.web.config.DialogsConfigElement.DialogButtonConfig;
|
||||
import org.alfresco.web.ui.common.Utils;
|
||||
import org.alfresco.web.ui.common.component.UIActionLink;
|
||||
@@ -544,8 +545,7 @@ public class ManageTaskDialog extends BaseDialogBean
|
||||
WCMModel.PROP_AVM_DIR_INDIRECTION);
|
||||
final String stagingAvmPath = AVMNodeConverter.ToAVMVersionPath(stagingNodeRef).getSecond();
|
||||
final String packageAvmPath = AVMNodeConverter.ToAVMVersionPath(this.workflowPackage).getSecond();
|
||||
LOGGER.debug("comparing " + packageAvmPath +
|
||||
" with " + stagingAvmPath);
|
||||
LOGGER.debug("comparing " + packageAvmPath + " with " + stagingAvmPath);
|
||||
for (AVMDifference d : this.avmSyncService.compare(-1, packageAvmPath,
|
||||
-1, stagingAvmPath,
|
||||
null))
|
||||
@@ -685,10 +685,18 @@ public class ManageTaskDialog extends BaseDialogBean
|
||||
// ------------------------------------------------------------------------------
|
||||
// Helper methods
|
||||
|
||||
protected void addAVMNode(AVMNode node)
|
||||
protected void addAVMNode(final AVMNode node)
|
||||
{
|
||||
LOGGER.debug("adding node " + node);
|
||||
node.getProperties().put("taskId", this.task.id);
|
||||
final ClientConfigElement config = Application.getClientConfig(FacesContext.getCurrentInstance());
|
||||
final String dns = AVMConstants.lookupStoreDNS(AVMConstants.getStoreName(node.getPath()));
|
||||
node.getProperties().put("previewUrl",
|
||||
AVMConstants.buildAssetUrl(AVMConstants.getSandboxRelativePath(node.getPath()),
|
||||
config.getWCMDomain(),
|
||||
config.getWCMPort(),
|
||||
dns));
|
||||
|
||||
this.browseBean.setupCommonBindingProperties(node);
|
||||
final String packagePath = AVMNodeConverter.ToAVMVersionPath(this.workflowPackage).getSecond();
|
||||
NodePropertyResolver resolverPath = new NodePropertyResolver()
|
||||
@@ -714,9 +722,6 @@ public class ManageTaskDialog extends BaseDialogBean
|
||||
// node.remove("path");
|
||||
// node.addPropertyResolver("path", resolverPath);
|
||||
// node.addPropertyResolver("displayPath", resolverPath);
|
||||
|
||||
LOGGER.debug("created mapnode " + node);
|
||||
|
||||
this.resources.add(node);
|
||||
}
|
||||
|
||||
|
@@ -108,9 +108,6 @@ public class FormImpl
|
||||
? (String)nodeService.getProperty(workflowRef, WCMAppModel.PROP_WORKFLOW_NAME)
|
||||
: null);
|
||||
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("using workflow " + workflowName + " for form " + this.getName());
|
||||
|
||||
return workflowName != null ? workflowService.getDefinitionByName(workflowName) : null;
|
||||
}
|
||||
|
||||
|
@@ -16,10 +16,10 @@
|
||||
*/
|
||||
package org.alfresco.web.forms;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Serializable;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
@@ -43,7 +43,8 @@ public interface Rendition
|
||||
public String getSandboxRelativePath();
|
||||
|
||||
/** the primary form instance data used to generate this rendition */
|
||||
public FormInstanceData getPrimaryFormInstanceData();
|
||||
public FormInstanceData getPrimaryFormInstanceData()
|
||||
throws FileNotFoundException;
|
||||
|
||||
/** the rendering engine template that generated this rendition */
|
||||
public RenderingEngineTemplate getRenderingEngineTemplate();
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package org.alfresco.web.forms;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import javax.faces.context.FacesContext;
|
||||
@@ -23,7 +24,10 @@ import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.model.WCMAppModel;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||
import org.alfresco.repo.domain.PropertyValue;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.avm.AVMService;
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.MimetypeService;
|
||||
@@ -89,17 +93,21 @@ public class RenditionImpl
|
||||
}
|
||||
|
||||
public FormInstanceData getPrimaryFormInstanceData()
|
||||
throws FileNotFoundException
|
||||
{
|
||||
final AVMService avmService = this.getServiceRegistry().getAVMService();
|
||||
final NodeService nodeService = this.getServiceRegistry().getNodeService();
|
||||
final String fidAVMStoreRelativePath = (String)
|
||||
nodeService.getProperty(this.nodeRef,
|
||||
WCMAppModel.PROP_PRIMARY_FORM_INSTANCE_DATA);
|
||||
String avmStore = AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond();
|
||||
avmStore = avmStore.substring(0, avmStore.indexOf(':'));
|
||||
|
||||
final NodeRef fidNodeRef =
|
||||
AVMNodeConverter.ToNodeRef(-1, avmStore + ':' + fidAVMStoreRelativePath);
|
||||
return new FormInstanceDataImpl(fidNodeRef);
|
||||
final String path = avmStore + ':' + fidAVMStoreRelativePath;
|
||||
if (avmService.lookup(-1, path) == null)
|
||||
{
|
||||
throw new FileNotFoundException("unable to find primary form instance data " + path);
|
||||
}
|
||||
return new FormInstanceDataImpl(AVMNodeConverter.ToNodeRef(-1, path));
|
||||
}
|
||||
|
||||
/** the rendering engine template that generated this rendition */
|
||||
|
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:alfresco="http://www.alfresco.org/alfresco"
|
||||
targetNamespace="http://www.alfresco.org/alfresco"
|
||||
elementFormDefault="qualified">
|
||||
<xs:element name="ist-topic">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
|
||||
<xs:element name="page_title" type="xs:string"/>
|
||||
<xs:element name="image" type="xs:string"/>
|
||||
<xs:element name="page_intro" type="xs:anyType"/>
|
||||
|
||||
<!-- announcements section title is an image. not text
|
||||
<xs:element name="announcement_title" type="xs:string" default="Announcements" minOccurs="0"/>
|
||||
-->
|
||||
<xs:element name="announcement" minOccurs="1" maxOccurs="3">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="title" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="title_link" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="content" type="xs:anyType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="left_column_title" type="xs:string" default="About this Topic"/>
|
||||
<xs:element name="left_column" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="title" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subtitle" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subtitle_link" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="content" type="xs:anyType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="right_column_section_1_title" type="xs:string" default="Documentation"/>
|
||||
<xs:element name="right_column_section_1" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="title" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subtitle" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subtitle_link" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="content" type="xs:anyType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="right_column_section_2_title" type="xs:string" default="Related Services"/>
|
||||
<xs:element name="right_column_section_2" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="title" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subtitle" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subtitle_link" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="content" type="xs:anyType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="right_column_section_3_title" type="xs:string" default="Support Resources"/>
|
||||
<xs:element name="right_column_section_3" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="title" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subtitle" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subtitle_link" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="content" type="xs:anyType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
||||
|
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="shiporder">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="orderperson" type="xs:string"/>
|
||||
<xs:element name="shipto">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="name" type="xs:string"/>
|
||||
<xs:element name="address" type="xs:string"/>
|
||||
<xs:element name="city" type="xs:string"/>
|
||||
<xs:element name="country" type="xs:string"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="item" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="title" type="xs:string"/>
|
||||
<xs:element name="note" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="quantity" type="xs:positiveInteger"/>
|
||||
<xs:element name="price" type="xs:decimal"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="orderid" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
Reference in New Issue
Block a user