diff --git a/src/Umbraco.Core/Services/PackagingService.cs b/src/Umbraco.Core/Services/PackagingService.cs index b0aa76b929..b53cedfd0c 100644 --- a/src/Umbraco.Core/Services/PackagingService.cs +++ b/src/Umbraco.Core/Services/PackagingService.cs @@ -9,6 +9,7 @@ using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Models; +using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.UnitOfWork; @@ -286,7 +287,7 @@ namespace Umbraco.Core.Services var properties = from property in element.Elements() where property.Attribute("isDoc") == null select property; - + IContent content = parent == null ? new Content(nodeName, parentId, contentType) { @@ -303,12 +304,33 @@ namespace Umbraco.Core.Services { string propertyTypeAlias = isLegacySchema ? property.Attribute("alias").Value : property.Name.LocalName; if (content.HasProperty(propertyTypeAlias)) - content.SetValue(propertyTypeAlias, property.Value); + { + var propertyValue = property.Value; + + var propertyType = contentType.PropertyTypes.FirstOrDefault(pt => pt.Alias == propertyTypeAlias); + if (propertyType != null && propertyType.DataTypeId == new Guid(Constants.PropertyEditors.CheckBoxList)) + { + var database = ApplicationContext.Current.DatabaseContext.Database; + var dtos = database.Fetch("WHERE datatypeNo" + "deId = @Id", new { Id = propertyType.DataTypeDefinitionId }); + + var propertyValueList = new List(); + foreach (var preValue in propertyValue.Split(',')) + { + propertyValueList.Add(dtos.Single(x => x.Value == preValue).Id.ToString(CultureInfo.InvariantCulture)); + } + + propertyValue = string.Join(",", propertyValueList.ToArray()); + } + + content.SetValue(propertyTypeAlias, propertyValue); + } } return content; } + + #endregion #region ContentTypes diff --git a/src/umbraco.editorControls/DefaultDataKeyValue.cs b/src/umbraco.editorControls/DefaultDataKeyValue.cs index 26a32ffb18..1a326d0e9d 100644 --- a/src/umbraco.editorControls/DefaultDataKeyValue.cs +++ b/src/umbraco.editorControls/DefaultDataKeyValue.cs @@ -1,48 +1,49 @@ using System; +using System.Linq; using Umbraco.Core.Logging; -using umbraco.DataLayer; namespace umbraco.editorControls { - /// - /// Summary description for cms.businesslogic.datatype.DefaultDataKeyValue. - /// + /// + /// Summary description for cms.businesslogic.datatype.DefaultDataKeyValue. + /// public class DefaultDataKeyValue : cms.businesslogic.datatype.DefaultData - { - public DefaultDataKeyValue(cms.businesslogic.datatype.BaseDataType DataType) : base(DataType) - {} - /// - /// Ov - /// - /// - /// - - public override System.Xml.XmlNode ToXMl(System.Xml.XmlDocument d) - { - // Get the value from - var v = ""; - try - { - // Don't query if there's nothing to query for.. - if (string.IsNullOrWhiteSpace(Value.ToString()) == false) - { - var dr = SqlHelper.ExecuteReader("Select [value] from cmsDataTypeprevalues where id in (" + SqlHelper.EscapeString(Value.ToString()) + ")"); + { + public DefaultDataKeyValue(cms.businesslogic.datatype.BaseDataType DataType) + : base(DataType) + { } - while (dr.Read()) - { - if (v.Length == 0) - v += dr.GetString("value"); - else - v += "," + dr.GetString("value"); - } - dr.Close(); - } - } - catch (Exception ex) - { - LogHelper.Error("An exception occurred converting the property data to XML", ex); - } - return d.CreateCDataSection(v); - } - } + /// + /// Gets the values of from cmsDataTypePreValues table by id and puts them into a CDATA section + /// + /// + /// + public override System.Xml.XmlNode ToXMl(System.Xml.XmlDocument xmlDocument) + { + var value = string.Empty; + try + { + // Don't query if there's nothing to query for.. + if (string.IsNullOrWhiteSpace(Value.ToString()) == false) + { + var dr = SqlHelper.ExecuteReader(string.Format("Select [value] from cmsDataTypeprevalues where id in ({0})", SqlHelper.EscapeString(Value.ToString()))); + + while (dr.Read()) + { + value += value.Length == 0 + ? dr.GetString("value") + : string.Format(",{0}", dr.GetString("value")); + } + + dr.Close(); + } + } + catch (Exception ex) + { + LogHelper.Error("An exception occurred converting the property data to XML", ex); + } + + return xmlDocument.CreateCDataSection(value); + } + } }