/// <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()); }
/// <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); }
/// <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); }
/// <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); } }
/// <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; }
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)); } }
/// <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); } }
/// <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)); }
public static string GetLanguage(this EavValue value, string valueLanguage) { return(value.ValuesDimensions.Select(reference => reference.Dimension.ExternalKey) .FirstOrDefault(language => language == valueLanguage)); }
private static bool IsHyperlink(this EavValue value) { return(value.Attribute.Type == "Hyperlink"); }
/// <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(); }