private static void SetValuesFromSubFolder(IProjectObject parent, IXmlReadWriteWrapper writeElement, IFile value, IAssetManagerFolder ownFolder) { ownFolder = ownFolder.SubFolders.GetByName(value.Folder.Name); writeElement.SetAttributeValue(ELTSRCSUBDIRGUID, ownFolder.Guid.ToRQLString()); SetFilename(parent, value, ownFolder, writeElement); }
private static void SetFromSameProject(IProjectObject parent, IXmlReadWriteWrapper element, IFile value) { var folderGuid = element.GetGuid(ELTFOLDERGUID); var topLevelFolder = value.Folder; if (value.Folder.IsAssetManager) { var assetFolder = (IAssetManagerFolder)value.Folder; if (assetFolder.IsSubFolder) { topLevelFolder = assetFolder.ParentFolder; } } if (topLevelFolder.Guid != folderGuid) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format( "Cannot set sample file '{0}', because it isn't in the current folder branch '{1}/'", value, parent.Project.Folders.GetByGuid(folderGuid).Name)); } //TODO at least cms 7.5 stores undefined as value, maybe "" is allowed, too, try this out element.SetAttributeValue(ELTSRCSUBDIRGUID, value.Folder.Guid == folderGuid ? "undefined" : value.Folder.Guid.ToRQLString()); element.SetAttributeValue(ELTSRC, value.Name); }
private static void SetValuesFromDifferentProjects(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, IFile value) { IFolder ownFolder; if (!parent.Project.Folders.TryGetByName(value.Folder.Name, out ownFolder)) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format("No such folder {0} in project {1} for setting of {2}", value.Folder.Name, parent.Project, attribute.Description)); } var ownFile = ownFolder.Files.GetByNamePattern(value.Name).SingleOrDefault(); if (ownFile == null) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format( "No such file {3} in folder {0} in project {1} for setting of {2}", value.Folder.Name, parent.Project, attribute.Description, value.Name)); } element.SetAttributeValue(ELTFOLDERGUID, ownFolder.Guid.ToRQLString()); element.SetAttributeValue(ELTXSLFILE, ownFile.Name); }
public static void EnsureValidProjectObject(IProjectObject parent) { if (parent == null) { throw new SmartAPIInternalException("Converter called with invalid project object"); } }
protected override IContentClassFolder GetFromGuid(IProjectObject parent, XmlElement element, RedDotAttribute attribute, Guid guid) { return (parent.Project.ContentClassFolders.Union(parent.Project.ContentClassFolders.Broken) .First(folder => folder.Guid == guid)); }
public virtual void WriteTo(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, T value) { if (parent == null) { throw new SmartAPIInternalException(string.Format("{0}.WriteTo must be called from a project object", GetType().Name)); } CheckReadOnly(parent.Project, attribute); if (value == null) { element.SetAttributeValue(attribute.ElementName, null); return; } if (ConverterHelper.AreFromTheSameProject(parent, value)) { element.SetAttributeValue(attribute.ElementName, value.Guid.ToRQLString()); } else { T resolvedValue = GetFromName(parent, element, attribute, value); element.SetAttributeValue(attribute.ElementName, resolvedValue != null ? resolvedValue.Guid.ToRQLString() : null); } }
public void WriteTo(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, IContentClassElement value) { if (parent == null) { throw new SmartAPIInternalException(string.Format("{0}.WriteTo must be called from a project object", GetType().Name)); } CheckReadOnly(parent.Project, attribute); if (value == null) { SetValuesToNull(element); return; } if (AreFromTheSameServer(parent, value)) { SetValuesFromSameServer(element, value); return; } SetValuesFromOtherServer(parent, element, value); }
public static void EnsureValueIsSupportedByServerVersion(IProjectObject obj, SpecialDataFieldFormat value) { var serverVersion = obj.Session.ServerVersion; switch (value) { case SpecialDataFieldFormat.DefaultUserDefined: case SpecialDataFieldFormat.DefaultHTML: case SpecialDataFieldFormat.DefaultImage: return; case SpecialDataFieldFormat.TextUserDefined: case SpecialDataFieldFormat.DateUserDefined: case SpecialDataFieldFormat.CurrencyUserDefined: var version = new Version(11, 0); if (serverVersion < version) { throw new SmartAPIException(obj.Session.ServerLogin, string.Format( "Cannot set {0} to value {1} for server versions older than {2}", RedDotAttributeDescription.GetDescriptionForElement( "eltcolumniotype"), value.ToString(), version)); } return; default: throw new ArgumentException(string.Format("Unknown {0} value: {1}", typeof (SpecialDataFieldFormat).Name, value)); } }
public void WriteTo(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, string value) { if (string.IsNullOrEmpty(value)) { element.SetAttributeValue(attribute.ElementName, null); } else { Guid guid = element.IsAttributeSet(parent, attribute.ElementName) ? element.GetGuid(attribute.ElementName) : Guid.Empty; var languageVariantName = element.GetAttributeValue("languagevariantid"); var languageVariant = parent.Project.LanguageVariants[languageVariantName]; try { Guid textGuid = parent.Project.SetTextContent(guid, languageVariant, ((int)Type).ToString(CultureInfo.InvariantCulture), value); element.SetAttributeValue(attribute.ElementName, textGuid.ToRQLString()); } catch (Exception e) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format("Could not set {0} text for {1} in language {2}", Type.ToString().ToLower(), parent, languageVariantName), e); } } }
public static void EnsureValueIsSupportedByServerVersion(IProjectObject obj, SpecialDataFieldFormat value) { var serverVersion = obj.Session.ServerVersion; switch (value) { case SpecialDataFieldFormat.DefaultUserDefined: case SpecialDataFieldFormat.DefaultHTML: case SpecialDataFieldFormat.DefaultImage: return; case SpecialDataFieldFormat.TextUserDefined: case SpecialDataFieldFormat.DateUserDefined: case SpecialDataFieldFormat.CurrencyUserDefined: var version = new Version(11, 0); if (serverVersion < version) { throw new SmartAPIException(obj.Session.ServerLogin, string.Format( "Cannot set {0} to value {1} for server versions older than {2}", RedDotAttributeDescription.GetDescriptionForElement( "eltcolumniotype"), value.ToString(), version)); } return; default: throw new ArgumentException(string.Format("Unknown {0} value: {1}", typeof(SpecialDataFieldFormat).Name, value)); } }
public void WriteTo(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, IFile value) { if (parent == null) { throw new SmartAPIInternalException("Parent project object may not be null for SrcFileConverter"); } if (value == null) { ClearFile(element); return; } if (ConverterHelper.AreFromTheSameProject(parent, value)) { SetFromSameProject(parent, element, value); } else { if (value.Folder.IsAssetManager) { SetValuesFromAssetManagerFolder(parent, element, value); } else { var ownFolder = parent.Project.Folders.GetByName(value.Folder.Name); SetValuesFromTopLevelFolder(parent, element, value, ownFolder); } } }
public T ReadFrom <T>(IProjectObject sourceProject, IXmlReadWriteWrapper element) { Type type = typeof(T); return(_converterInstance != null ? GetCustomConversion <T>(sourceProject, element, type) : GetDefaultConversion <T>(element, type)); }
public static void CheckReadOnly <T>(IAttributeConverter <T> converter, IProjectObject po, RedDotAttribute attribute) where T : IProjectObject { if (converter.IsReadOnly || attribute.IsReadOnly) { throw new SmartAPIException(po.Session.ServerLogin, string.Format("Writing to attribute {0} is forbidden", attribute.Description)); } }
protected override ICategory GetFromGuid(IProjectObject parent, XmlElement element, RedDotAttribute attribute, Guid guid) { //after a deletion of a category, references to it can still be present in the system and //thus we can't throw an exception but have to handle it like no category is assigned (RedDot seems to handle it that way). ICategory result; return(parent.Project.Categories.TryGetByGuid(guid, out result) ? result : null); }
private static void SetValuesFromTopLevelFolder(IProjectObject parent, IXmlReadWriteWrapper element, IFile value, IFolder ownFolder) { var folderGuid = element.GetGuid(ELTFOLDERGUID); element.SetAttributeValue(ELTSRCSUBDIRGUID, ownFolder.Guid == folderGuid ? "undefined" : ownFolder.Guid.ToRQLString()); SetFilename(parent, value, ownFolder, element); }
private T GetCustomConversion <T>(IProjectObject sourceProject, IXmlReadWriteWrapper element, Type type) { if (_targetType != type) { throw new SmartAPIInternalException( string.Format("Converter type does not match Convert<T> call for element {0}", ElementName)); } return(((IAttributeConverter <T>)_converterInstance).ConvertFrom(sourceProject, element.MergedElement, this)); }
private void SetWithCustomConversion <T>(IProjectObject targetProject, IXmlReadWriteWrapper element, T value) { if (typeof(T) != _targetType) { throw new SmartAPIInternalException( string.Format("Converter type {0} does not match Set<T> call for element {1} with type {2}", _targetType.Name, ElementName, typeof(T).Name)); } ((IAttributeConverter <T>)_converterInstance).WriteTo(targetProject, element, this, value); }
public override ICategory ConvertFrom(IProjectObject parent, XmlElement element, RedDotAttribute attribute) { var stringValue = element.GetAttributeValue(attribute.ElementName); if (string.IsNullOrEmpty(stringValue)) { return(null); } return(stringValue == "-1" ? null : base.ConvertFrom(parent, element, attribute)); }
public void WriteTo(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, EditorSettings value) { ConverterHelper.EnsureValidProjectObject(parent); var attributeValue = value == EditorSettings.NotSet ? null : ((int)value).ToString(CultureInfo.InvariantCulture); element.SetAttributeValue(attribute.ElementName, attributeValue); }
public ISystemLocale ConvertFrom(IProjectObject parent, XmlElement element, RedDotAttribute attribute) { string value = element.GetAttributeValue(attribute.ElementName); var lcid = element.IsAttributeSet(parent, attribute.ElementName) && !value.Contains("EmptyBuffer") ? int.Parse(value) : (int?)null; return(lcid == null ? null : ((IContentClassElement)parent).ContentClass.Project.Session.Locales[lcid.Value]); }
protected override ICategory GetFromName(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, ICategory value) { ICategory category; if (!parent.Project.Categories.TryGetByName(value.Name, out category)) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format("Cannot find category {0} in project {1}", value.Name, parent)); } return(category); }
private static IAssetManagerFolder GetTopLevelFolder(IProjectObject parent, IAssetManagerFolder value) { var ownTopLevelFolder = parent.Project.Folders.GetByName(value.ParentFolder.Name) as IAssetManagerFolder; if (ownTopLevelFolder == null) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format("No asset folder with name {0} found in project {1}", value.ParentFolder.Name, parent.Project)); } return(ownTopLevelFolder); }
private static void SetFilename(IProjectObject parent, IFile value, IXmlReadWriteWrapper element, IFolder ownFolder) { var ownFile = ownFolder.Files.GetByNamePattern(value.Name).SingleOrDefault(); if (ownFile == null) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format("No file with name {0} found in folder {1} of project {2}", value.Name, ownFolder.Name, parent.Project)); } element.SetAttributeValue(ELTSRC, value.Name); }
private static IFolder GetFolder(IProjectObject parent, XmlElement readElement) { Guid folderGuid; if (!readElement.TryGetGuid(ELTSRCSUBDIRGUID, out folderGuid)) { folderGuid = readElement.GetGuid(ELTFOLDERGUID); } var folder = parent.Project.Folders.AllIncludingSubFolders.GetByGuid(folderGuid); return(folder); }
public string ConvertFrom(IProjectObject parent, XmlElement element, RedDotAttribute attribute) { ILanguageVariant lang = parent.Project.LanguageVariants.Current; if (!element.IsAttributeSet(parent, attribute.ElementName)) { return(string.Empty); } Guid guid = element.GetGuid(attribute.ElementName); return(parent.Project.GetTextContent(guid, lang, ((int)Type).ToString(CultureInfo.InvariantCulture))); }
public EditorSettings ConvertFrom(IProjectObject parent, XmlElement element, RedDotAttribute attribute) { ConverterHelper.EnsureValidProjectObject(parent); if (!element.IsAttributeSet(parent, attribute.ElementName)) { return(EditorSettings.NotSet); } var intValue = element.GetIntAttributeValue(attribute.ElementName); return((EditorSettings)(intValue ?? (int)EditorSettings.NotSet)); }
public IInfoAttribute ConvertFrom(IProjectObject parent, XmlElement element, RedDotAttribute attribute) { if (!element.IsAttributeSet(parent, attribute.ElementName)) { return(null); } // ReSharper disable PossibleInvalidOperationException var id = element.GetIntAttributeValue(attribute.ElementName).Value; // ReSharper restore PossibleInvalidOperationException return(parent.Project.InfoAttributes[id]); }
public virtual T ConvertFrom(IProjectObject parent, XmlElement element, RedDotAttribute attribute) { if (parent == null) { throw new SmartAPIInternalException(string.Format( "{0}.ConvertFrom must be called from a project object", GetType().Name)); } Guid guid; return(element.TryGetGuid(attribute.ElementName, out guid) ? GetFromGuid(parent, element, attribute, guid) : null); }
protected override ISyllable GetFromName(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, ISyllable value) { ISyllable output; if (!parent.Project.Syllables.TryGetByName(value.Name, out output)) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format("Could not find a syllable with name {0} in project {1}", value.Name, parent)); } return(output); }
protected override IFolder GetFromName(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, IFolder value) { var folders = parent.Project.Folders.AllIncludingSubFolders; var folder = folders.FirstOrDefault(folder1 => folder1.Name == value.Name); if (folder == null) { throw new SmartAPIException(parent.Session.ServerLogin, string.Format("Could not find a folder with name {0} in project {1}", value.Name, parent.Project)); } return(folder); }
public override void WriteTo(IProjectObject parent, IXmlReadWriteWrapper element, RedDotAttribute attribute, ICategory value) { CheckReadOnly(parent.Project, attribute); if (value == ArbitraryCategory.INSTANCE) { element.SetAttributeValue(attribute.ElementName, ARBITRARY_CATEGORY_VALUE); } else { base.WriteTo(parent, element, attribute, value); } }
private void GenericRemove(IProjectObject[] entries, string type) { if (entries == null || entries.Length == 0) { return; } const string REMOVE_ENTRY = @"<ADMINISTRATION><USER guid=""{0}""><CLIPBOARDDATA action=""remove"" projectguid=""{1}"">{2}</CLIPBOARDDATA></USER></ADMINISTRATION>"; var entryStr = string.Join("", entries.Select(x => SINGLE_ENTRY.RQLFormat(x, type))); var doc = Project.ExecuteRQL(REMOVE_ENTRY.RQLFormat(Session.CurrentUser, Project, entryStr)); if (!doc.InnerText.Contains("ok")) { throw new SmartAPIException(Session.ServerLogin, "Error removing entries from clipboard"); } InvalidateCache(); }