using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json; using System.Text.Json.Serialization; using Oqtane.Documentation; namespace Oqtane.Models { /// /// Describes a Module type (Definition) in Oqtane. /// The available Modules are determined at StartUp. /// public class ModuleDefinition : ModelBase { [PrivateApi("The constructor is probably just for internal use and shouldn't appear in the docs")] public ModuleDefinition() { Name = ""; Description = ""; Categories = ""; Version = ""; Owner = ""; Url = ""; Contact = ""; License = ""; Dependencies = ""; PermissionNames = ""; ServerManagerType = ""; ControlTypeRoutes = ""; ReleaseVersions = ""; DefaultAction = ""; SettingsType = ""; PackageName = ""; Runtimes = ""; Template = ""; Resources = null; IsAutoEnabled = true; PageTemplates = null; } /// /// Reference to the . /// public int ModuleDefinitionId { get; set; } /// /// Name of the /// public string ModuleDefinitionName { get; set; } /// /// Friendly name to show in UI /// public string Name { get; set; } /// /// Module description for admin dialogs. /// public string Description { get; set; } /// /// Categories this Module will be shown in (in the admin-dialogs) /// public string Categories { get; set; } /// /// Version information of this Module based on the information stored in its assembly /// public string Version { get; set; } // additional IModule properties [NotMapped] public string Owner { get; set; } [NotMapped] public string Url { get; set; } [NotMapped] public string Contact { get; set; } [NotMapped] public string License { get; set; } [NotMapped] public string Runtimes { get; set; } [NotMapped] public string Dependencies { get; set; } [NotMapped] public string PermissionNames { get; set; } [NotMapped] public string ServerManagerType { get; set; } [NotMapped] public string ControlTypeRoutes { get; set; } /// /// ReleaseVersions contains a comma delimited list of all official release versions of a module ie "1.0.0,1.0.1" /// Must be set for modules which use SQL scripts or include version-based logic in IInstallable implementations /// [NotMapped] public string ReleaseVersions { get; set; } [NotMapped] public string DefaultAction { get; set; } [NotMapped] public string SettingsType { get; set; } // added in 2.0.2 [NotMapped] public string PackageName { get; set; } // added in 2.1.0 [NotMapped] public List Resources { get; set; } // added in 4.0.0 [NotMapped] public bool IsAutoEnabled { get; set; } // added in 4.0.0 [NotMapped] public List PageTemplates { get; set; } // added in 4.0.0 // internal properties [NotMapped] public int SiteId { get; set; } [NotMapped] public bool IsEnabled { get; set; } [NotMapped] public string ControlTypeTemplate { get; set; } [NotMapped] public string AssemblyName { get; set; } [NotMapped] public List PermissionList { get; set; } [NotMapped] public string Template { get; set; } [NotMapped] public bool IsPortable { get; set; } [NotMapped] public string Hash { get; set; } #region Deprecated Properties [Obsolete("The Permissions property is deprecated. Use PermissionList instead", false)] [NotMapped] [JsonIgnore] // exclude from API payload public string Permissions { get { return JsonSerializer.Serialize(PermissionList); } set { PermissionList = JsonSerializer.Deserialize>(value); } } #endregion } }