コード例 #1
0
        public static Content CreateContentFromRequest(string contentTypeName, string contentName, string parentPath, bool templated)
        {
            // TODO: templated parameter has become unused.

            Node parentNode;

            if (String.IsNullOrEmpty(contentTypeName ?? (contentTypeName = GetContentTypeNameFromRequest())))
            {
                return(null);
            }

            if (String.IsNullOrEmpty(parentPath ?? (parentPath = GetRequestParameter("ParentPath"))))
            {
                parentNode = PortalContext.Current.ContextNode;
            }
            else
            {
                parentNode = Node.LoadNode(parentPath);
            }

            if (parentNode == null)
            {
                throw new ApplicationException("Cannot create a new Content: invalid parent");
            }

            if (String.IsNullOrEmpty(contentName ?? (contentName = GetRequestParameter("ContentName"))))
            {
                contentName = contentTypeName;
            }

            var fieldData = RecognizeFieldParameters(contentTypeName);

            var contentType = ContentType.GetByName(contentTypeName);

            if (contentType == null)
            {
                // full template path is given as content type name
                if (fieldData.Count == 0)
                {
                    return(ContentTemplate.CreateTemplated(parentNode.Path, contentTypeName));
                }
                else
                {
                    var template = Node.LoadNode(contentTypeName);
                    if (template != null)
                    {
                        return(ContentTemplate.CreateTemplatedAndParse(parentNode, template, template.Name, fieldData));
                    }
                }
            }

            return(Content.CreateNewAndParse(contentTypeName, parentNode, contentName, fieldData));
        }