using Oqtane.Shared; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; namespace Oqtane.Models { /// /// Describes a Module _Instance_ which will be shown on a page. This is different from a which describes a Module. /// public class Module : IAuditable { /// /// The ID of this instance /// public int ModuleId { get; set; } /// /// Reference to the /// public int SiteId { get; set; } /// /// Reference to the /// public string ModuleDefinitionName { get; set; } /// /// Determines if this Module Instance should be shown on all pages of the current /// public bool AllPages { get; set; } #region IAuditable Properties /// public string CreatedBy { get; set; } /// public DateTime CreatedOn { get; set; } /// public string ModifiedBy { get; set; } /// public DateTime ModifiedOn { get; set; } #endregion #region Extended IAuditable Properties, may be moved to an Interface some day so not documented yet [NotMapped] public string DeletedBy { get; set; } [NotMapped] public DateTime? DeletedOn { get; set; } [NotMapped] public bool IsDeleted { get; set; } #endregion [NotMapped] public string Permissions { get; set; } [NotMapped] public Dictionary Settings { get; set; } #region PageModule properties [NotMapped] public int PageModuleId { get; set; } /// /// Reference to the this module is on. /// [NotMapped] public int PageId { get; set; } [NotMapped] public string Title { get; set; } /// /// The Pane this module is shown in. /// [NotMapped] public string Pane { get; set; } [NotMapped] public int Order { get; set; } [NotMapped] public string ContainerType { get; set; } #endregion #region SiteRouter properties [NotMapped] public string ModuleType { get; set; } [NotMapped] public int PaneModuleIndex { get; set; } [NotMapped] public int PaneModuleCount { get; set; } #endregion #region ModuleDefinition /// /// Reference to the used for this module. /// TODO: todoc - unclear if this is always populated /// [NotMapped] public ModuleDefinition ModuleDefinition { get; set; } #endregion #region IModuleControl properties // TODO: unclear why these are IModuleControl properties - there is no such interface [NotMapped] public SecurityAccessLevel SecurityAccessLevel { get; set; } [NotMapped] public string ControlTitle { get; set; } [NotMapped] public string Actions { get; set; } [NotMapped] public bool UseAdminContainer { get; set; } #endregion } }