Ejemplo n.º 1
0
 /// <summary>
 /// Get languages this value is referenced from, but not the language specified. The
 /// method helps to find languages the value belongs to expect the current language.
 /// </summary>
 public static IEnumerable <string> GetLanguagesReferenced(this EavValue value, string valueLanguage, bool referenceReadWrite)
 {
     return(value.ValuesDimensions.Where(reference => referenceReadWrite ? !reference.ReadOnly : true)
            .Where(reference => reference.Dimension.ExternalKey != valueLanguage)
            .Select(reference => reference.Dimension.ExternalKey)
            .ToList());
 }
Ejemplo n.º 2
0
 /// <summary>
 /// If the value is a file or page reference, resolve it for example from
 /// File:4711 to Content/file4711.jpg. If the reference cannot be reoslved,
 /// the original value will be returned.
 /// </summary>
 public static string ResolveValueReference(this EavValue value)
 {
     if (value.IsHyperlink())
     {
         return(ResolveHyperlink(value));
     }
     return(value.Value);
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Check if a language reference is read-only.
        /// </summary>
        public static bool IsLanguageReadOnly(this EavValue value, string language)
        {
            var languageReference = value.ValuesDimensions.FirstOrDefault(reference => reference.Dimension.ExternalKey == language);

            if (languageReference == null)
            {
                return(false);
            }
            return(languageReference.ReadOnly);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Append an element to this. The element will have the value of the EavValue. File and page references
 /// can optionally be resolved.
 /// </summary>
 public static void AppendValue(this XElement element, XName name, EavValue value, ResourceReferenceExport resourceReferenceOption)
 {
     if (value == null)
     {
         element.Append(name, "=default()");
     }
     else if (resourceReferenceOption.IsResolve())
     {
         element.Append(name, value.ResolveValueReference());
     }
     else
     {
         element.Append(name, value.Value);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Add a new Value
        /// </summary>
        internal EavValue AddValue(Entity entity, int attributeId, string value, bool autoSave = true)
        {
            var changeId = Context.Versioning.GetChangeLogId();

            var newValue = new EavValue
            {
                AttributeID = attributeId,
                Entity = entity,
                Value = value,
                ChangeLogIDCreated = changeId
            };

            Context.SqlDb.AddToValues(newValue);
            if (autoSave)
                Context.SqlDb.SaveChanges();
            return newValue;
        }
Ejemplo n.º 6
0
        private static string ResolveHyperlink(EavValue value)
        {
            var match = Regex.Match(value.Value, @"(?<type>.+)\:(?<id>\d+)");

            if (!match.Success)
            {
                return(value.Value);
            }

            var linkId   = int.Parse(match.Groups["id"].Value);
            var linkType = match.Groups["type"].Value;

            if (linkType == "Page")
            {
                return(ResolvePageLink(linkId, value.Value));
            }
            else
            {
                return(ResolveFileLink(linkId, value.Value));
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Append an element to this. The element will have the value of the EavValue. File and page references 
 /// can optionally be resolved.
 /// </summary>
 public static void AppendValue(this XElement element, XName name, EavValue value, ResourceReferenceExport resourceReferenceOption)
 {
     if (value == null)
     {
         element.Append(name, "[]");
     }
     else if (value.Value == null)
     {
         element.Append(name, "[]");
     }
     else if (resourceReferenceOption.IsResolve())
     {
         element.Append(name, value.ResolveValueReference());
     }
     else if (value.Value == string.Empty)
     {
         element.Append(name, "[\"\"]");
     }
     else
     {
         element.Append(name, value.Value);
     }
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Get all languages this value is referenced from.
 /// </summary>
 public static IEnumerable <string> GetLanguages(this EavValue value)
 {
     return(value.ValuesDimensions.Select(reference => reference.Dimension.ExternalKey));
 }
Ejemplo n.º 9
0
 public static string GetLanguage(this EavValue value, string valueLanguage)
 {
     return(value.ValuesDimensions.Select(reference => reference.Dimension.ExternalKey)
            .FirstOrDefault(language => language == valueLanguage));
 }
Ejemplo n.º 10
0
 private static bool IsHyperlink(this EavValue value)
 {
     return(value.Attribute.Type == "Hyperlink");
 }
Ejemplo n.º 11
0
        /// <summary>
        /// Update a Value
        /// </summary>
        internal void UpdateValue(EavValue currentValue, string value, int changeId, bool autoSave = true)
        {
            // only if value has changed
            if (currentValue.Value.Equals(value))
                return;

            currentValue.Value = value;
            currentValue.ChangeLogIDModified = changeId;
            currentValue.ChangeLogIDDeleted = null;

            if (autoSave)
                Context.SqlDb.SaveChanges();
        }