コード例 #1
0
ファイル: ItemXmlWriter.cs プロジェクト: eriknordin/n2cms
        protected virtual void WriteDefaultAttributes(ElementWriter itemElement, ContentItem item)
        {
            if (itemElement == null)
            {
                throw new ArgumentNullException("itemElement");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            itemElement.WriteAttribute("id", item.ID);
            itemElement.WriteAttribute("name", item.ID.ToString() == item.Name ? "" : item.Name);
            if (item.Parent != null)
            {
                if (item.Parent.ID != 0)
                {
                    itemElement.WriteAttribute("parent", item.Parent.ID.ToString());
                }
                else
                {
                    itemElement.WriteAttribute("parent", item.Parent.VersionOf.ID.ToString());
                    if (item.Parent.GetVersionKey() != null)
                    {
                        itemElement.WriteAttribute("parentVersionKey", item.Parent.GetVersionKey());
                    }
                }
            }
            itemElement.WriteAttribute("title", item.Title);
            itemElement.WriteAttribute("zoneName", item.ZoneName);
            itemElement.WriteAttribute("templateKey", item.TemplateKey);
            if (item.TranslationKey.HasValue)
            {
                itemElement.WriteAttribute("translationKey", item.TranslationKey.Value);
            }
            itemElement.WriteAttribute("state", (int)item.State);
            itemElement.WriteAttribute("created", item.Created);
            itemElement.WriteAttribute("updated", item.Updated);
            itemElement.WriteAttribute("published", item.Published);
            itemElement.WriteAttribute("expires", item.Expires);
            itemElement.WriteAttribute("sortOrder", item.SortOrder);
            itemElement.WriteAttribute("url", parser == null ? item.Url : (string)parser.BuildUrl(item));
            itemElement.WriteAttribute("visible", item.Visible);
            itemElement.WriteAttribute("savedBy", item.SavedBy);
            itemElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(item.GetContentType()));
            itemElement.WriteAttribute("discriminator", definitions.GetDefinition(item).Discriminator);
            itemElement.WriteAttribute("versionIndex", item.VersionIndex);
            itemElement.WriteAttribute("ancestralTrail", item.AncestralTrail);
            itemElement.WriteAttribute("alteredPermissions", (int)item.AlteredPermissions);
            itemElement.WriteAttribute("childState", (int)item.ChildState);
            if (item.VersionOf.HasValue)
            {
                Debug.Assert(item.VersionOf.ID != null, "item.VersionOf.ID != null");
                itemElement.WriteAttribute("versionOf", item.VersionOf.ID.Value);
            }
        }
コード例 #2
0
        public virtual void WriteDetail(ContentItem item, ContentDetail detail, XmlTextWriter writer)
        {
            using (ElementWriter detailElement = new ElementWriter("detail", writer))
            {
                detailElement.WriteAttribute("name", detail.Name);
                detailElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(detail.ValueType));

                WriteInnerContents(item, detail, detail.ValueTypeKey, detailElement);
            }
        }
コード例 #3
0
 private void Write(ElementWriter propertyElement, Type type, string contents, bool cdata)
 {
     propertyElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(type));
     if (cdata)
     {
         propertyElement.WriteCData(contents);
     }
     else
     {
         propertyElement.Write(contents);
     }
 }
コード例 #4
0
        public virtual void WriteDetail(ContentItem item, ContentDetail detail, XmlTextWriter writer)
        {
            using (ElementWriter detailElement = new ElementWriter("detail", writer))
            {
                detailElement.WriteAttribute("name", detail.Name);
                detailElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(detail.ValueType));

                if (detail.ValueType == typeof(object))
                {
                    string base64representation = SerializationUtility.ToBase64String(detail.Value);
                    detailElement.Write(base64representation);
                }
                else if (detail.ValueType == typeof(ContentItem))
                {
                    detailElement.Write(detail.LinkValue.HasValue ? detail.LinkValue.Value.ToString() : "0");
                }
                else if (detail.ValueType == typeof(string))
                {
                    string value = detail.StringValue;

                    if (!string.IsNullOrEmpty(value))
                    {
                        if (value.StartsWith(applicationPath, StringComparison.InvariantCultureIgnoreCase))
                        {
                            var pi = item.GetContentType().GetProperty(detail.Name);
                            if (pi != null)
                            {
                                var transformers = pi.GetCustomAttributes(typeof(IRelativityTransformer), false);
                                foreach (IRelativityTransformer transformer in transformers)
                                {
                                    if (transformer.RelativeWhen == RelativityMode.Always || transformer.RelativeWhen == RelativityMode.ImportingOrExporting)
                                    {
                                        value = transformer.Rebase(value, applicationPath, "~/");
                                    }
                                }
                            }
                        }

                        detailElement.WriteCData(value);
                    }
                }
                else if (detail.ValueType == typeof(DateTime))
                {
                    detailElement.Write(ElementWriter.ToUniversalString(detail.DateTimeValue));
                }
                else
                {
                    detailElement.Write(detail.Value.ToString());
                }
            }
        }
コード例 #5
0
 protected virtual void WriteDefaultAttributes(ElementWriter itemElement, ContentItem item)
 {
     itemElement.WriteAttribute("id", item.ID);
     itemElement.WriteAttribute("name", item.ID.ToString() == item.Name ? "" : item.Name);
     itemElement.WriteAttribute("parent", item.Parent != null ? item.Parent.ID.ToString() : string.Empty);
     itemElement.WriteAttribute("title", item.Title);
     itemElement.WriteAttribute("zoneName", item.ZoneName);
     itemElement.WriteAttribute("created", item.Created);
     itemElement.WriteAttribute("updated", item.Updated);
     itemElement.WriteAttribute("published", item.Published);
     itemElement.WriteAttribute("expires", item.Expires);
     itemElement.WriteAttribute("sortOrder", item.SortOrder);
     itemElement.WriteAttribute("url", parser.BuildUrl(item));
     itemElement.WriteAttribute("visible", item.Visible);
     itemElement.WriteAttribute("savedBy", item.SavedBy);
     itemElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(item.GetContentType()));
     itemElement.WriteAttribute("discriminator", definitions.GetDefinition(item.GetContentType()).Discriminator);
 }
コード例 #6
0
        protected virtual void WriteDefaultAttributes(ElementWriter itemElement, ContentItem item)
        {
            if (itemElement == null)
            {
                throw new ArgumentNullException("itemElement");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            itemElement.WriteAttribute("id", item.ID);
            itemElement.WriteAttribute("name", item.ID.ToString() == item.Name ? "" : item.Name, true);
            if (item.Parent != null)
            {
                if (item.Parent.ID != 0)
                {
                    itemElement.WriteAttribute("parent", item.Parent.ID.ToString());
                }
                else
                {
                    itemElement.WriteAttribute("parent", item.Parent.VersionOf.ID.ToString());
                    if (item.Parent.GetVersionKey() != null)
                    {
                        itemElement.WriteAttribute("parentVersionKey", item.Parent.GetVersionKey());
                    }
                }
            }
            itemElement.WriteAttribute("title", item.Title, true);
            itemElement.WriteAttribute("zoneName", item.ZoneName, true);
            itemElement.WriteAttribute("templateKey", item.TemplateKey, true);
            if (item.TranslationKey.HasValue)
            {
                itemElement.WriteAttribute("translationKey", item.TranslationKey.Value);
            }

            itemElement.WriteAttribute("state", Enum.GetName(typeof(ContentState), item.State)); // use textual state to avoid future import trouble
            itemElement.WriteAttribute("created", item.Created);
            itemElement.WriteAttribute("updated", item.Updated);
            itemElement.WriteAttribute("published", item.Published);
            itemElement.WriteAttribute("expires", item.Expires);             // TODO expired items could be excluded
            itemElement.WriteAttribute("sortOrder", item.SortOrder);

            if (item.IsPage && item.IsPublished())
            {
                itemElement.WriteAttribute("url", (parser != null) ? (string)parser.BuildUrl(item) : item.Url);  // generated
            }
            itemElement.WriteAttribute("visible", item.Visible);
            itemElement.WriteAttribute("savedBy", item.SavedBy);
            itemElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(item.GetContentType()));
            itemElement.WriteAttribute("discriminator", definitions.GetDefinition(item).Discriminator);
            itemElement.WriteAttribute("ancestralTrail", item.AncestralTrail);             // generated
            if (item.AlteredPermissions != 0)
            {
                itemElement.WriteAttribute("alteredPermissions", (int)item.AlteredPermissions);
            }
            itemElement.WriteAttribute("childState", (int)item.ChildState);
            if (item.VersionOf.HasValue && item.VersionOf.ID != null)
            {
                itemElement.WriteAttribute("versionIndex", item.VersionIndex);         // write only if versioned
                itemElement.WriteAttribute("versionOf", item.VersionOf.ID.Value);
            }
        }
コード例 #7
0
 private void WriteItem(ElementWriter propertyElement, ContentItem item)
 {
     propertyElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(typeof(ContentItem)));
     propertyElement.WriteAttribute("versionKey", item.GetVersionKey());
     propertyElement.Write(item.ID.ToString());
 }