protected virtual void WriteRole(XmlTextWriter writer, AuthorizedRole ar)
		{
			using (ElementWriter role = new ElementWriter("role", writer))
			{
				role.Write(ar.Role);
			}
		}
예제 #2
0
		private void WriteInnerContents(ContentItem item, ContentDetail detail, string valueTypeKey, ElementWriter element)
		{
			switch (valueTypeKey)
			{
				case ContentDetail.TypeKeys.BoolType:
					element.Write(detail.BoolValue.HasValue ? detail.BoolValue.Value.ToString() : "0");
					return;

				case ContentDetail.TypeKeys.DateTimeType:
					element.Write(SerializationUtility.ToUniversalString(detail.DateTimeValue));
					return;

				case ContentDetail.TypeKeys.DoubleType:
					element.Write(detail.DoubleValue.HasValue ? detail.DoubleValue.Value.ToString() : "0");
					return;

				case ContentDetail.TypeKeys.IntType:
					element.Write(detail.IntValue.HasValue ? detail.IntValue.Value.ToString() : "0");
					return;

				case ContentDetail.TypeKeys.LinkType:
					element.Write(detail.LinkValue.HasValue ? detail.LinkValue.Value.ToString() : "0");
					return;

				case ContentDetail.TypeKeys.MultiType:
					WriteMultiValue(item, detail, ContentDetail.TypeKeys.BoolType, detail.BoolValue, element.Writer);
					WriteMultiValue(item, detail, ContentDetail.TypeKeys.DateTimeType, detail.DateTimeValue, element.Writer);
					WriteMultiValue(item, detail, ContentDetail.TypeKeys.DoubleType, detail.DoubleValue, element.Writer);
					WriteMultiValue(item, detail, ContentDetail.TypeKeys.IntType, detail.IntValue, element.Writer);
					WriteMultiValue(item, detail, ContentDetail.TypeKeys.LinkType, detail.LinkedItem, element.Writer);
					WriteMultiValue(item, detail, ContentDetail.TypeKeys.ObjectType, detail.ObjectValue, element.Writer);
					WriteMultiValue(item, detail, ContentDetail.TypeKeys.StringType, SerializationUtility.RemoveInvalidCharacters(detail.StringValue), element.Writer);
					return;

				case ContentDetail.TypeKeys.ObjectType:
					string base64representation = SerializationUtility.ToBase64String(detail.ObjectValue);
					element.Write(base64representation);
					return;

				case ContentDetail.TypeKeys.EnumType: /* TODO: Do we need to write out the 'meta' value here? */
				case ContentDetail.TypeKeys.StringType:
					string value = detail.StringValue;

					if (!string.IsNullOrEmpty(value))
					{
						value = ExecuteRelativityTransformers(item, detail.Name, value);
						element.WriteAttribute("encoded", true);
						value = HttpUtility.HtmlEncode(SerializationUtility.RemoveInvalidCharacters(value));
						element.WriteCData(value);
					}
					return;


				default:
					throw new InvalidOperationException("Invalid detail type: " + valueTypeKey);
			}
		}
예제 #3
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());
                }
            }
        }
예제 #4
0
 protected virtual void WriteRole(XmlTextWriter writer, AuthorizedRole ar)
 {
     using (ElementWriter role = new ElementWriter("role", writer))
     {
         role.Write(ar.Role);
     }
 }
예제 #5
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());
                }
            }
        }
예제 #6
0
 private void Write(ElementWriter detailElement, Type type, string contents, bool cdata)
 {
     detailElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(type));
     if(cdata)
         detailElement.WriteCData(contents);
     else
         detailElement.Write(contents);
 }
 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);
     }
 }
		private void WriteItems(ElementWriter propertyElement, IEnumerable enumerable)
		{
			propertyElement.WriteAttribute("typeName", "System.Collections.Generic.IEnumerable`1[[N2.ContentItem, N2]]");
			foreach (ContentItem item in enumerable)
			{
				using (ElementWriter itemElement = new ElementWriter("item", propertyElement.Writer))
				{
					itemElement.WriteAttribute("versionKey", item.GetVersionKey());
					itemElement.Write(item.ID.ToString());
				}
			}
		}
 private void WriteItems(ElementWriter propertyElement, IEnumerable enumerable)
 {
     propertyElement.WriteAttribute("typeName", "System.Collections.Generic.IEnumerable`1[[N2.ContentItem, N2]]");
     foreach (ContentItem item in enumerable)
     {
         using (ElementWriter itemElement = new ElementWriter("item", propertyElement.Writer))
         {
             itemElement.WriteAttribute("versionKey", item.GetVersionKey());
             itemElement.Write(item.ID.ToString());
         }
     }
 }
예제 #10
0
        private void WriteInnerContents(ContentItem item, ContentDetail detail, string valueTypeKey, ElementWriter element)
        {
            switch (valueTypeKey)
            {
            case ContentDetail.TypeKeys.BoolType:
                element.Write(detail.BoolValue.HasValue ? detail.BoolValue.Value.ToString() : "0");
                return;

            case ContentDetail.TypeKeys.DateTimeType:
                element.Write(SerializationUtility.ToUniversalString(detail.DateTimeValue));
                return;

            case ContentDetail.TypeKeys.DoubleType:
                element.Write(detail.DoubleValue.HasValue ? detail.DoubleValue.Value.ToString() : "0");
                return;

            case ContentDetail.TypeKeys.IntType:
                element.Write(detail.IntValue.HasValue ? detail.IntValue.Value.ToString() : "0");
                return;

            case ContentDetail.TypeKeys.LinkType:
                element.Write(detail.LinkValue.HasValue ? detail.LinkValue.Value.ToString() : "0");
                return;

            case ContentDetail.TypeKeys.MultiType:
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.BoolType, detail.BoolValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.DateTimeType, detail.DateTimeValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.DoubleType, detail.DoubleValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.IntType, detail.IntValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.LinkType, detail.LinkedItem, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.ObjectType, detail.ObjectValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.StringType, SerializationUtility.RemoveInvalidCharacters(detail.StringValue), element.Writer);
                return;

            case ContentDetail.TypeKeys.ObjectType:
                string base64representation = SerializationUtility.ToBase64String(detail.ObjectValue);
                element.Write(base64representation);
                return;

            case ContentDetail.TypeKeys.EnumType:                     /* TODO: Do we need to write out the 'meta' value here? */
            case ContentDetail.TypeKeys.StringType:
                string value = detail.StringValue;

                if (!string.IsNullOrEmpty(value))
                {
                    value = ExecuteRelativityTransformers(item, detail.Name, value);
                    element.WriteAttribute("encoded", true);
                    value = HttpUtility.HtmlEncode(SerializationUtility.RemoveInvalidCharacters(value));
                    element.WriteCData(value);
                }
                return;


            default:
                throw new InvalidOperationException("Invalid detail type: " + valueTypeKey);
            }
        }
예제 #11
0
        public void Write(IFileSystem fs, ContentItem item, XmlTextWriter writer)
        {
            string url = item[Name] as string;
            if(!string.IsNullOrEmpty(url))
            {
                string path = url;
                if(fs.FileExists(path))
                {
                    using(ElementWriter ew = new ElementWriter("file", writer))
                    {
                        ew.WriteAttribute("url", url);

                        byte[] fileContents = ReadFully(fs.OpenFile(path));
                        string base64representation = Convert.ToBase64String(fileContents);
                        ew.Write(base64representation);
                    }
                }
            }
        }
예제 #12
0
        public void Write(ContentItem item, XmlTextWriter writer)
        {
            string url = item[Name] as string;
            if(!string.IsNullOrEmpty(url))
            {
                string path = MapPath(url);
                if(File.Exists(path))
                {
                    using(ElementWriter ew = new ElementWriter("file", writer))
                    {
                        ew.WriteAttribute("url", url);

                        byte[] fileContents = File.ReadAllBytes(path);
                        string base64representation = Convert.ToBase64String(fileContents);
                        ew.Write(base64representation);
                    }
                }
            }
        }
예제 #13
0
        public void Write(ContentItem item, XmlTextWriter writer)
        {
            string url = item[Name] as string;

            if (!string.IsNullOrEmpty(url))
            {
                string path = MapPath(url);
                if (File.Exists(path))
                {
                    using (ElementWriter ew = new ElementWriter("file", writer))
                    {
                        ew.WriteAttribute("url", url);

                        byte[] fileContents         = File.ReadAllBytes(path);
                        string base64representation = Convert.ToBase64String(fileContents);
                        ew.Write(base64representation);
                    }
                }
            }
        }
예제 #14
0
        public void Write(IFileSystem fs, ContentItem item, XmlTextWriter writer)
        {
            string url = item[Name] as string;

            if (!string.IsNullOrEmpty(url))
            {
                string path = url;
                if (fs.FileExists(path))
                {
                    using (ElementWriter ew = new ElementWriter("file", writer))
                    {
                        ew.WriteAttribute("url", url);

                        using (var s = fs.OpenFile(path))
                        {
                            byte[] fileContents         = ReadFully(s);
                            string base64representation = Convert.ToBase64String(fileContents);
                            ew.Write(base64representation);
                        }
                    }
                }
            }
        }
예제 #15
0
        private void WriteInnerContents(ContentItem item, ContentDetail detail, string valueTypeKey, ElementWriter element)
        {
            switch (valueTypeKey)
            {
            case ContentDetail.TypeKeys.BoolType:
                element.Write(detail.BoolValue.HasValue ? detail.BoolValue.Value.ToString() : "0");
                return;

            case ContentDetail.TypeKeys.DateTimeType:
                element.Write(SerializationUtility.ToUniversalString(detail.DateTimeValue));
                return;

            case ContentDetail.TypeKeys.DoubleType:
                element.Write(detail.DoubleValue.HasValue ? detail.DoubleValue.Value.ToString() : "0");
                return;

            case ContentDetail.TypeKeys.IntType:
                element.Write(detail.IntValue.HasValue ? detail.IntValue.Value.ToString() : "0");
                return;

            case ContentDetail.TypeKeys.LinkType:
                element.Write(detail.LinkValue.HasValue ? detail.LinkValue.Value.ToString() : "0");
                return;

            case ContentDetail.TypeKeys.MultiType:
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.BoolType, detail.BoolValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.DateTimeType, detail.DateTimeValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.DoubleType, detail.DoubleValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.IntType, detail.IntValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.LinkType, detail.LinkedItem, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.ObjectType, detail.ObjectValue, element.Writer);
                WriteMultiValue(item, detail, ContentDetail.TypeKeys.StringType, detail.StringValue, element.Writer);
                return;

            case ContentDetail.TypeKeys.ObjectType:
                string base64representation = SerializationUtility.ToBase64String(detail.ObjectValue);
                element.Write(base64representation);
                return;

            case ContentDetail.TypeKeys.StringType:
                string value = detail.StringValue;

                if (!string.IsNullOrEmpty(value))
                {
                    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, "~/");
                            }
                        }
                    }

                    element.WriteCData(value);
                }
                return;

            default:
                throw new InvalidOperationException("Invalid detail type: " + valueTypeKey);
            }
        }
		private void WriteItem(ElementWriter propertyElement, ContentItem item)
		{
			propertyElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(typeof(ContentItem)));
			propertyElement.WriteAttribute("versionKey", item.GetVersionKey());
			propertyElement.Write(item.ID.ToString());
		}
 private void WriteItem(ElementWriter propertyElement, ContentItem item)
 {
     propertyElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(typeof(ContentItem)));
     propertyElement.WriteAttribute("versionKey", item.GetVersionKey());
     propertyElement.Write(item.ID.ToString());
 }
예제 #18
0
        private void WriteInnerContents(ContentItem item, ContentDetail detail, string valueTypeKey, ElementWriter element)
        {
            switch (valueTypeKey)
            {
                case ContentDetail.TypeKeys.BoolType:
                    element.Write(detail.BoolValue.HasValue ? detail.BoolValue.Value.ToString() : "0");
                    return;

                case ContentDetail.TypeKeys.DateTimeType:
                    element.Write(SerializationUtility.ToUniversalString(detail.DateTimeValue));
                    return;

                case ContentDetail.TypeKeys.DoubleType:
                    element.Write(detail.DoubleValue.HasValue ? detail.DoubleValue.Value.ToString() : "0");
                    return;

                case ContentDetail.TypeKeys.IntType:
                    element.Write(detail.IntValue.HasValue ? detail.IntValue.Value.ToString() : "0");
                    return;

                case ContentDetail.TypeKeys.LinkType:
                    element.Write(detail.LinkValue.HasValue ? detail.LinkValue.Value.ToString() : "0");
                    return;

                case ContentDetail.TypeKeys.MultiType:
                    WriteMultiValue(item, detail, ContentDetail.TypeKeys.BoolType, detail.BoolValue, element.Writer);
                    WriteMultiValue(item, detail, ContentDetail.TypeKeys.DateTimeType, detail.DateTimeValue, element.Writer);
                    WriteMultiValue(item, detail, ContentDetail.TypeKeys.DoubleType, detail.DoubleValue, element.Writer);
                    WriteMultiValue(item, detail, ContentDetail.TypeKeys.IntType, detail.IntValue, element.Writer);
                    WriteMultiValue(item, detail, ContentDetail.TypeKeys.LinkType, detail.LinkedItem, element.Writer);
                    WriteMultiValue(item, detail, ContentDetail.TypeKeys.ObjectType, detail.ObjectValue, element.Writer);
                    WriteMultiValue(item, detail, ContentDetail.TypeKeys.StringType, detail.StringValue, element.Writer);
                    return;

                case ContentDetail.TypeKeys.ObjectType:
                    string base64representation = SerializationUtility.ToBase64String(detail.ObjectValue);
                    element.Write(base64representation);
                    return;

                case ContentDetail.TypeKeys.StringType:
                    string value = detail.StringValue;

                    if (!string.IsNullOrEmpty(value))
                    {
                        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, "~/");
                            }
                        }

                        element.WriteCData(value);
                    }
                    return;

                default:
                    throw new InvalidOperationException("Invalid detail type: " + valueTypeKey);
            }
        }