├── .editorconfig ├── .gitattributes ├── .github └── ISSUE_TEMPLATE │ ├── bug-report.md │ └── enhancement-request.md ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── Oqtane.Client ├── AssemblyInfo.cs ├── Extensions │ ├── OqtaneLocalizationExtensions.cs │ └── OqtaneServiceCollectionExtensions.cs ├── IconResources.cs ├── Installer │ ├── Controls │ │ ├── AzureSqlConfig.razor │ │ ├── LocalDBConfig.razor │ │ ├── MySQLConfig.razor │ │ ├── PostgreSQLConfig.razor │ │ ├── SqlServerConfig.razor │ │ └── SqliteConfig.razor │ └── Installer.razor ├── Modules │ ├── Admin │ │ ├── Dashboard │ │ │ └── Index.razor │ │ ├── Error │ │ │ └── Index.razor │ │ ├── Files │ │ │ ├── Add.razor │ │ │ ├── Details.razor │ │ │ ├── Edit.razor │ │ │ ├── Index.razor │ │ │ └── ModuleInfo.cs │ │ ├── Jobs │ │ │ ├── Edit.razor │ │ │ ├── Index.razor │ │ │ └── Log.razor │ │ ├── Languages │ │ │ ├── Add.razor │ │ │ ├── Edit.razor │ │ │ └── Index.razor │ │ ├── Login │ │ │ └── Index.razor │ │ ├── Logs │ │ │ ├── Detail.razor │ │ │ └── Index.razor │ │ ├── ModuleDefinitions │ │ │ ├── Add.razor │ │ │ ├── Create.razor │ │ │ ├── Edit.razor │ │ │ └── Index.razor │ │ ├── Modules │ │ │ ├── Export.razor │ │ │ ├── Import.razor │ │ │ └── Settings.razor │ │ ├── Pages │ │ │ ├── Add.razor │ │ │ ├── Edit.razor │ │ │ └── Index.razor │ │ ├── Profiles │ │ │ ├── Edit.razor │ │ │ ├── Index.razor │ │ │ └── ModuleInfo.cs │ │ ├── RecycleBin │ │ │ └── Index.razor │ │ ├── Register │ │ │ └── Index.razor │ │ ├── Reset │ │ │ └── Index.razor │ │ ├── Roles │ │ │ ├── Add.razor │ │ │ ├── Edit.razor │ │ │ ├── Index.razor │ │ │ ├── ModuleInfo.cs │ │ │ └── Users.razor │ │ ├── Search │ │ │ └── Index.razor │ │ ├── SearchResults │ │ │ ├── Index.razor │ │ │ ├── ModuleInfo.cs │ │ │ └── Settings.razor │ │ ├── Site │ │ │ └── Index.razor │ │ ├── Sites │ │ │ ├── Add.razor │ │ │ └── Index.razor │ │ ├── Sql │ │ │ └── Index.razor │ │ ├── SystemInfo │ │ │ └── Index.razor │ │ ├── Themes │ │ │ ├── Add.razor │ │ │ ├── Create.razor │ │ │ ├── Edit.razor │ │ │ └── Index.razor │ │ ├── Upgrade │ │ │ └── Index.razor │ │ ├── UrlMappings │ │ │ ├── Add.razor │ │ │ ├── Edit.razor │ │ │ └── Index.razor │ │ ├── UserProfile │ │ │ ├── Add.razor │ │ │ ├── Index.razor │ │ │ └── View.razor │ │ ├── Users │ │ │ ├── Add.razor │ │ │ ├── Edit.razor │ │ │ ├── Index.razor │ │ │ ├── ModuleInfo.cs │ │ │ ├── Roles.razor │ │ │ └── Users.razor │ │ └── Visitors │ │ │ ├── Detail.razor │ │ │ └── Index.razor │ ├── Controls │ │ ├── ActionDialog.razor │ │ ├── ActionLink.razor │ │ ├── AuditInfo.razor │ │ ├── AutoComplete.razor │ │ ├── FileManager.razor │ │ ├── InputList.razor │ │ ├── Label.razor │ │ ├── LocalizableComponent.cs │ │ ├── ModuleMessage.razor │ │ ├── Pager.razor │ │ ├── PermissionGrid.razor │ │ ├── QuillEditorInterop.cs │ │ ├── QuillJSTextEditor.razor │ │ ├── RichTextEditor.razor │ │ ├── Section.razor │ │ ├── TabPanel.razor │ │ ├── TabStrip.razor │ │ ├── TextAreaTextEditor.razor │ │ └── TriStateCheckBox.razor │ ├── HtmlText │ │ ├── Edit.razor │ │ ├── Index.razor │ │ ├── ModuleInfo.cs │ │ ├── Services │ │ │ ├── HtmlTextService.cs │ │ │ └── IHtmlTextService.cs │ │ └── Settings.razor │ ├── IModule.cs │ ├── MessageType.cs │ ├── ModuleBase.cs │ └── ModuleControlBase.cs ├── Oqtane.Client.csproj ├── Oqtane.Client.csproj.DotSettings ├── Program.cs ├── Properties │ └── launchSettings.json ├── Providers │ └── IdentityAuthenticationStateProvider.cs ├── Resources │ ├── IconResources.resx │ ├── Installer │ │ ├── Controls │ │ │ ├── LocalDBConfig.resx │ │ │ ├── MySQLConfig.resx │ │ │ ├── PostgreSQLConfig.resx │ │ │ ├── SqlServerConfig.resx │ │ │ └── SqliteConfig.resx │ │ └── Installer.resx │ ├── Modules │ │ ├── Admin │ │ │ ├── Api │ │ │ │ ├── Edit.resx │ │ │ │ └── Index.resx │ │ │ ├── Dashboard │ │ │ │ └── Index.resx │ │ │ ├── Error │ │ │ │ └── Index.resx │ │ │ ├── Files │ │ │ │ ├── Add.resx │ │ │ │ ├── Details.resx │ │ │ │ ├── Edit.resx │ │ │ │ └── Index.resx │ │ │ ├── Jobs │ │ │ │ ├── Edit.resx │ │ │ │ ├── Index.resx │ │ │ │ └── Log.resx │ │ │ ├── Languages │ │ │ │ ├── Add.resx │ │ │ │ ├── Edit.resx │ │ │ │ └── Index.resx │ │ │ ├── Login │ │ │ │ └── Index.resx │ │ │ ├── Logs │ │ │ │ ├── Detail.resx │ │ │ │ └── Index.resx │ │ │ ├── ModuleDefinitions │ │ │ │ ├── Add.resx │ │ │ │ ├── Create.resx │ │ │ │ ├── Edit.resx │ │ │ │ └── Index.resx │ │ │ ├── Modules │ │ │ │ ├── Export.resx │ │ │ │ ├── Import.resx │ │ │ │ └── Settings.resx │ │ │ ├── Pages │ │ │ │ ├── Add.resx │ │ │ │ ├── Edit.resx │ │ │ │ └── Index.resx │ │ │ ├── Profiles │ │ │ │ ├── Edit.resx │ │ │ │ └── Index.resx │ │ │ ├── RecycleBin │ │ │ │ └── Index.resx │ │ │ ├── Register │ │ │ │ └── Index.resx │ │ │ ├── Reset │ │ │ │ └── Index.resx │ │ │ ├── Roles │ │ │ │ ├── Add.resx │ │ │ │ ├── Edit.resx │ │ │ │ ├── Index.resx │ │ │ │ └── Users.resx │ │ │ ├── Search │ │ │ │ └── Index.resx │ │ │ ├── SearchResults │ │ │ │ ├── Index.resx │ │ │ │ └── Settings.resx │ │ │ ├── Site │ │ │ │ └── Index.resx │ │ │ ├── Sites │ │ │ │ ├── Add.resx │ │ │ │ └── Index.resx │ │ │ ├── Sql │ │ │ │ └── Index.resx │ │ │ ├── SystemInfo │ │ │ │ └── Index.resx │ │ │ ├── Themes │ │ │ │ ├── Add.resx │ │ │ │ ├── Create.resx │ │ │ │ ├── Edit.resx │ │ │ │ └── Index.resx │ │ │ ├── Upgrade │ │ │ │ └── Index.resx │ │ │ ├── UrlMappings │ │ │ │ ├── Add.resx │ │ │ │ ├── Edit.resx │ │ │ │ └── Index.resx │ │ │ ├── UserProfile │ │ │ │ ├── Add.resx │ │ │ │ ├── Index.resx │ │ │ │ └── View.resx │ │ │ ├── Users │ │ │ │ ├── Add.resx │ │ │ │ ├── Edit.resx │ │ │ │ ├── Index.resx │ │ │ │ ├── Roles.resx │ │ │ │ └── Users.resx │ │ │ └── Visitors │ │ │ │ ├── Detail.resx │ │ │ │ └── Index.resx │ │ ├── Controls │ │ │ ├── AuditInfo.resx │ │ │ ├── FileManager.resx │ │ │ ├── Pager.resx │ │ │ ├── PermissionGrid.resx │ │ │ ├── QuillJSTextEditor.resx │ │ │ ├── StaticPager.resx │ │ │ └── TriStateCheckBox.resx │ │ ├── HtmlText │ │ │ ├── Edit.resx │ │ │ ├── Index.resx │ │ │ └── Settings.resx │ │ └── Installer │ │ │ ├── Controls │ │ │ ├── LocalDBConfig.resx │ │ │ ├── MySQLConfig.resx │ │ │ ├── PostgreSQLConfig.resx │ │ │ ├── SqlServerConfig.resx │ │ │ └── SqliteConfig.resx │ │ │ └── Installer.resx │ ├── SharedResources.resx │ ├── Themes │ │ ├── Controls │ │ │ ├── ControlPanelInteractive.resx │ │ │ ├── CookieConsent.resx │ │ │ ├── Login.resx │ │ │ ├── ModuleActionsBase.resx │ │ │ ├── Search.resx │ │ │ └── UserProfile.resx │ │ └── OqtaneTheme │ │ │ ├── ContainerSettings.resx │ │ │ └── ThemeSettings.resx │ └── UI │ │ └── ModuleInstance.resx ├── Services │ ├── AliasService.cs │ ├── CookieConsentService.cs │ ├── DatabaseService.cs │ ├── FileService.cs │ ├── FolderService.cs │ ├── InstallationService.cs │ ├── Interfaces │ │ ├── IAliasService.cs │ │ ├── ICookieConsentService.cs │ │ ├── IDatabaseService.cs │ │ ├── IFileService.cs │ │ ├── IFolderService.cs │ │ ├── IInstallationService.cs │ │ ├── IJobLogService.cs │ │ ├── IJobService.cs │ │ ├── ILanguageService.cs │ │ ├── ILocalizationCookieService.cs │ │ ├── ILocalizationService.cs │ │ ├── ILogService.cs │ │ ├── IModuleDefinitionService.cs │ │ ├── IModuleService.cs │ │ ├── INotificationService.cs │ │ ├── IOutputCacheService.cs │ │ ├── IPackageService.cs │ │ ├── IPageModuleService.cs │ │ ├── IPageService.cs │ │ ├── IProfileService.cs │ │ ├── IRoleService.cs │ │ ├── ISearchResultsService.cs │ │ ├── ISettingService.cs │ │ ├── ISiteService.cs │ │ ├── ISiteTemplateService.cs │ │ ├── ISqlService.cs │ │ ├── ISyncService.cs │ │ ├── ISystemService.cs │ │ ├── ITenantService.cs │ │ ├── IThemeService.cs │ │ ├── ITimeZoneService.cs │ │ ├── IUrlMappingService.cs │ │ ├── IUserRoleService.cs │ │ ├── IUserService.cs │ │ └── IVisitorService.cs │ ├── JobLogService.cs │ ├── JobService.cs │ ├── LanguageService.cs │ ├── LocalizationCookieService.cs │ ├── LocalizationService.cs │ ├── LogService.cs │ ├── ModuleDefinitionService.cs │ ├── ModuleService.cs │ ├── NotificationService.cs │ ├── OutputCacheService.cs │ ├── PackageService.cs │ ├── PageModuleService.cs │ ├── PageService.cs │ ├── ProfileService.cs │ ├── RemoteServiceBase.cs │ ├── RoleService.cs │ ├── SearchResultsService.cs │ ├── ServiceBase.cs │ ├── SettingService.cs │ ├── SiteService.cs │ ├── SiteTemplateService.cs │ ├── SqlService.cs │ ├── SyncService.cs │ ├── SystemService.cs │ ├── TenantService.cs │ ├── ThemeService.cs │ ├── TimeZoneService.cs │ ├── UrlMappingService.cs │ ├── UserRoleService.cs │ ├── UserService.cs │ └── VisitorService.cs ├── SharedResources.cs ├── Themes │ ├── AdminContainer.razor │ ├── BlazorTheme │ │ ├── Containers │ │ │ └── Container.razor │ │ ├── ThemeInfo.cs │ │ └── Themes │ │ │ └── Default.razor │ ├── ContainerBase.cs │ ├── Controls │ │ ├── Container │ │ │ ├── ModuleActions.razor │ │ │ ├── ModuleActionsBase.cs │ │ │ ├── ModuleActionsInteractive.razor │ │ │ └── ModuleTitle.razor │ │ └── Theme │ │ │ ├── Breadcrumbs.razor │ │ │ ├── ControlPanel.razor │ │ │ ├── ControlPanelInteractive.razor │ │ │ ├── CookieConsent.razor │ │ │ ├── LanguageSwitcher.razor │ │ │ ├── Login.razor │ │ │ ├── LoginBase.cs │ │ │ ├── Logo.razor │ │ │ ├── Menu.razor │ │ │ ├── MenuBase.cs │ │ │ ├── MenuHorizontal.razor │ │ │ ├── MenuItemsBase.cs │ │ │ ├── MenuItemsHorizontal.razor │ │ │ ├── MenuItemsVertical.razor │ │ │ ├── MenuVertical.razor │ │ │ ├── Search.razor │ │ │ └── UserProfile.razor │ ├── DefaultContainer.razor │ ├── IContainerControl.cs │ ├── ILayoutControl.cs │ ├── ITheme.cs │ ├── LayoutBase.cs │ ├── OqtaneTheme │ │ ├── Containers │ │ │ ├── Container.razor │ │ │ └── ContainerSettings.razor │ │ ├── ThemeInfo.cs │ │ └── Themes │ │ │ ├── Default.razor │ │ │ └── ThemeSettings.razor │ ├── ThemeBase.cs │ └── ThemeControlBase.cs ├── UI │ ├── ContainerBuilder.razor │ ├── Head.razor │ ├── InteractiveRenderMode.cs │ ├── Interop.cs │ ├── ModuleInstance.placeholder.cs │ ├── ModuleInstance.razor │ ├── PageState.cs │ ├── Pane.razor │ ├── RenderModeBoundary.placeholder.cs │ ├── RenderModeBoundary.razor │ ├── Routes.razor │ ├── SiteRouter.razor │ └── ThemeBuilder.razor └── _Imports.razor ├── Oqtane.Database.MySQL ├── MySQLDatabase.cs └── Oqtane.Database.MySQL.csproj ├── Oqtane.Database.PostgreSQL ├── Oqtane.Database.PostgreSQL.csproj ├── OqtaneHistoryRepository.cs └── PostgreSQLDatabase.cs ├── Oqtane.Database.SqlServer ├── Oqtane.Database.SqlServer.csproj ├── OqtaneHistoryRepository.cs └── SqlServerDatabase.cs ├── Oqtane.Database.Sqlite ├── Oqtane.Database.Sqlite.csproj ├── OqtaneHistoryRepository.cs └── SqliteDatabase.cs ├── Oqtane.Maui.sln ├── Oqtane.Maui ├── App.xaml ├── App.xaml.cs ├── Head.razor ├── Main.razor ├── MainPage.xaml ├── MainPage.xaml.cs ├── MauiConstants.cs ├── MauiProgram.cs ├── Oqtane.Maui.csproj ├── Platforms │ ├── Android │ │ ├── AndroidManifest.xml │ │ ├── MainActivity.cs │ │ ├── MainApplication.cs │ │ └── Resources │ │ │ ├── values │ │ │ └── colors.xml │ │ │ └── xml │ │ │ └── network_security_config.xml │ ├── MacCatalyst │ │ ├── AppDelegate.cs │ │ ├── Info.plist │ │ └── Program.cs │ ├── Tizen │ │ ├── Main.cs │ │ └── tizen-manifest.xml │ ├── Windows │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Package.appxmanifest │ │ └── app.manifest │ └── iOS │ │ ├── AppDelegate.cs │ │ ├── Info.plist │ │ └── Program.cs ├── Properties │ └── launchSettings.json ├── Resources │ ├── AppIcon │ │ ├── appicon.svg │ │ └── appiconfg.svg │ ├── Fonts │ │ └── OpenSans-Regular.ttf │ ├── Images │ │ └── dotnet_bot.svg │ ├── Raw │ │ └── AboutAssets.txt │ └── Splash │ │ └── splash.svg ├── _Imports.razor └── wwwroot │ ├── css │ ├── app.css │ ├── empty.css │ └── open-iconic │ │ ├── FONT-LICENSE │ │ ├── ICON-LICENSE │ │ ├── README.md │ │ └── font │ │ ├── css │ │ └── open-iconic-bootstrap.min.css │ │ └── fonts │ │ ├── open-iconic.eot │ │ ├── open-iconic.otf │ │ ├── open-iconic.svg │ │ ├── open-iconic.ttf │ │ └── open-iconic.woff │ ├── favicon.ico │ ├── images │ ├── checked.png │ ├── error.png │ ├── help.png │ ├── logo-black.png │ ├── logo-white.png │ ├── null.png │ └── unchecked.png │ ├── index.html │ ├── js │ ├── app.js │ ├── interop.js │ └── loadjs.min.js │ ├── loading.gif │ └── oqtane-glow.png ├── Oqtane.Package ├── Oqtane.Client.nuspec ├── Oqtane.Framework.nuspec ├── Oqtane.Server.nuspec ├── Oqtane.Shared.nuspec ├── Oqtane.Updater.nuspec ├── icon.png ├── install.ps1 ├── nuget.exe ├── readme.md ├── release.cmd └── upgrade.ps1 ├── Oqtane.Server ├── AssemblyInfo.cs ├── Components │ ├── App.razor │ ├── _Imports.razor │ └── _Placeholder.cs ├── Controllers │ ├── AliasController.cs │ ├── CookieConsentController.cs │ ├── DatabaseController.cs │ ├── EndpointController.cs │ ├── FileController.cs │ ├── FolderController.cs │ ├── InstallationController.cs │ ├── JobController.cs │ ├── JobLogController.cs │ ├── LanguageController.cs │ ├── LocalizationController.cs │ ├── LogController.cs │ ├── ModuleController.cs │ ├── ModuleControllerBase.cs │ ├── ModuleDefinitionController.cs │ ├── NotificationController.cs │ ├── OutputCacheController.cs │ ├── PackageController.cs │ ├── PageController.cs │ ├── PageModuleController.cs │ ├── ProfileController.cs │ ├── RoleController.cs │ ├── SearchResultsController.cs │ ├── SettingController.cs │ ├── SiteController.cs │ ├── SiteTemplateController.cs │ ├── SqlController.cs │ ├── SyncController.cs │ ├── SystemController.cs │ ├── TenantController.cs │ ├── ThemeController.cs │ ├── TimeZoneController.cs │ ├── UrlMappingController.cs │ ├── UserController.cs │ ├── UserRoleController.cs │ └── VisitorController.cs ├── Data │ └── db.txt ├── Databases │ ├── DatabaseBase.cs │ └── Interfaces │ │ ├── IDatabase.cs │ │ └── IMultiDatabase.cs ├── Extensions │ ├── ApplicationBuilderExtensions.cs │ ├── CacheExtensions.cs │ ├── ClaimsPrincipalExtensions.cs │ ├── ComponentEndpointRouteBuilderExtensions.cs │ ├── DbContextOptionsBuilderExtensions.cs │ ├── DictionaryExtensions.cs │ ├── HttpContextExtensions.cs │ ├── MimeUtilities.cs │ ├── OqtaneMvcBuilderExtensions.cs │ ├── OqtaneServiceCollectionExtensions.cs │ ├── OqtaneSiteAuthenticationBuilderExtensions.cs │ ├── OqtaneSiteIdentityBuilderExtensions.cs │ ├── OqtaneSiteOptionsBuilder.cs │ ├── PermissionExtension.cs │ ├── QueryableExtensions.cs │ ├── StringExtensions.cs │ └── WebHostBuilderExtensions.cs ├── Infrastructure │ ├── AliasAccessor.cs │ ├── ConfigManager.cs │ ├── DatabaseManager.cs │ ├── EventSubscribers │ │ └── CacheInvalidationEventSubscriber.cs │ ├── HostedServices │ │ └── EventDistributorHostedService .cs │ ├── InstallationManager.cs │ ├── Interfaces │ │ ├── IAliasAccessor.cs │ │ ├── IConfigManager.cs │ │ ├── IDatabaseManager.cs │ │ ├── IEventSubscriber.cs │ │ ├── IHostResources.cs │ │ ├── IInstallable.cs │ │ ├── IInstallationManager.cs │ │ ├── ILocalizationManager.cs │ │ ├── ILogManager.cs │ │ ├── IServerStartup.cs │ │ ├── IServerStateManager.cs │ │ ├── ISiteMigration.cs │ │ ├── ISiteTemplate.cs │ │ ├── ISyncManager.cs │ │ ├── ITenantManager.cs │ │ ├── ITokenReplace.cs │ │ ├── IUpgradeManager.cs │ │ └── SiteMigrationAttribute.cs │ ├── Jobs │ │ ├── HostedServiceBase.cs │ │ ├── NotificationJob.cs │ │ ├── PurgeJob.cs │ │ └── SearchIndexJob.cs │ ├── Localization │ │ ├── LocalizationOptions.cs │ │ ├── RightToLeftCulture.cs │ │ └── RightToLeftCultureCalendar.cs │ ├── LocalizationManager.cs │ ├── LogManager.cs │ ├── Logging │ │ ├── FileLogger.cs │ │ └── FileLoggerProvider.cs │ ├── Middleware │ │ ├── ExceptionMiddleware.cs │ │ ├── JwtMiddleware.cs │ │ └── TenantMiddleware.cs │ ├── Options │ │ ├── ISiteNamedOptions.cs │ │ ├── ISiteOptions.cs │ │ ├── SiteNamedOptions.cs │ │ ├── SiteOptions.cs │ │ ├── SiteOptionsCache.cs │ │ ├── SiteOptionsFactory.cs │ │ └── SiteOptionsManager.cs │ ├── ServerState.cs │ ├── ServerStateManager.cs │ ├── SiteMigration │ │ └── ExampleSiteMigration.cs │ ├── SiteTemplates │ │ ├── AdminSiteTemplate.cs │ │ ├── DefaultSiteTemplate.cs │ │ └── EmptySiteTemplate.cs │ ├── SyncManager.cs │ ├── TenantManager.cs │ ├── TokenReplace.cs │ └── UpgradeManager.cs ├── Managers │ ├── Interfaces │ │ └── IUserManager.cs │ └── UserManager.cs ├── Migrations │ ├── EntityBuilders │ │ ├── AliasEntityBuilder.cs │ │ ├── AppVersionsEntityBuilder.cs │ │ ├── AspNetUserClaimsEntityBuilder.cs │ │ ├── AspNetUserLoginsEntityBuilder.cs │ │ ├── AspNetUsersEntityBuilder.cs │ │ ├── AuditableBaseEntityBuilder.cs │ │ ├── BaseEntityBuilder.cs │ │ ├── DeletableAuditableBaseEntityBuilder.cs │ │ ├── DeletableBaseEntityBuilder.cs │ │ ├── FileEntityBuilder.cs │ │ ├── FolderEntityBuilder.cs │ │ ├── JobEntityBuilder.cs │ │ ├── JobLogEntityBuilder.cs │ │ ├── LanguageEntityBuilder.cs │ │ ├── LogEntityBuilder.cs │ │ ├── ModuleDefinitionsEntityBuilder.cs │ │ ├── ModuleEntityBuilder.cs │ │ ├── NotificationEntityBuilder.cs │ │ ├── PageEntityBuilder.cs │ │ ├── PageModuleEntityBuilder.cs │ │ ├── PermissionEntityBuilder.cs │ │ ├── ProfileEntityBuilder.cs │ │ ├── RoleEntityBuilder.cs │ │ ├── SearchContentEntityBuilder.cs │ │ ├── SearchContentPropertyEntityBuilder.cs │ │ ├── SearchContentWordEntityBuilder.cs │ │ ├── SearchWordEntityBuilder.cs │ │ ├── SettingEntityBuilder.cs │ │ ├── SiteEntityBuilder.cs │ │ ├── TenantEntityBuilder.cs │ │ ├── ThemeEntityBuilder.cs │ │ ├── UrlMappingEntityBuilder.cs │ │ ├── UserEntityBuilder.cs │ │ ├── UserRoleEntityBuilder.cs │ │ └── VisitorEntityBuilder.cs │ ├── Framework │ │ ├── ForeignKey.cs │ │ ├── MigrationUtils.cs │ │ ├── MultiDatabaseMigration.cs │ │ ├── MultiDatabaseMigrationsAssembly.cs │ │ └── PrimaryKey.cs │ ├── Master │ │ ├── 01000000_InitializeMaster.cs │ │ ├── 01000100_AddAdditionalIndexesInMaster.cs │ │ ├── 02010000_AddIndexesForForeignKeyInMaster.cs │ │ ├── 02010001_AddDatabaseTypeColumnToTenant.cs │ │ ├── 03000201_AddAliasIsDefault.cs │ │ ├── 04000001_AddThemeTable.cs │ │ ├── 04000002_AddThemeName.cs │ │ ├── 05020101_AddIndexes.cs │ │ └── 06010001_AddThemeVersion.cs │ └── Tenant │ │ ├── 01000000_InitializeTenant.cs │ │ ├── 01000100_AddAdditionalIndexesInTenant.cs │ │ ├── 01000101_AddAdditionColumnToNotifications.cs │ │ ├── 01000201_DropColumnFromPage.cs │ │ ├── 02000001_AddColumnToProfileAndUpdatePage.cs │ │ ├── 02000101_UpdateIconColumnInPage.cs │ │ ├── 02000102_AddLanguageTable.cs │ │ ├── 02000103_UpdatePageAndAddColumnToSite.cs │ │ ├── 02000201_AddSiteGuidToSite.cs │ │ ├── 02000202_UpdateDefaultContainerTypeInSitePage.cs │ │ ├── 02000203_DropDefaultLayoutInSite.cs │ │ ├── 02010000_AddAppVersionsTableInTenant.cs │ │ ├── 02010001_ChangeFolderNameAndPathColumnsSize.cs │ │ ├── 02010002_DropAppVersionsTableInTenant.cs │ │ ├── 02010003_AddFolderType.cs │ │ ├── 02020001_AddPageIsClickable.cs │ │ ├── 02030001_AddFolderCapacity.cs │ │ ├── 02030002_AddSettingIsPublic.cs │ │ ├── 03000001_AddSiteRuntime.cs │ │ ├── 03000101_ChangeFileNameColumnsSize.cs │ │ ├── 03000102_AddVisitorTable.cs │ │ ├── 03000103_AddUrlMappingTable.cs │ │ ├── 03000104_AddSiteVisitorTracking.cs │ │ ├── 03000105_AddVisitorReferrer.cs │ │ ├── 03000201_UpdateSettingIsPublic.cs │ │ ├── 03000202_UpdateSettingIsPrivate.cs │ │ ├── 03000301_AddMetaToPage.cs │ │ ├── 03010001_ExpandVisitorAndUrlMappingUrls.cs │ │ ├── 03010002_AddUserTwoFactor.cs │ │ ├── 03010003_AddAspNetUserLogins.cs │ │ ├── 03010004_AddSiteVersion.cs │ │ ├── 03020001_AddSiteHomePage.cs │ │ ├── 03020201_RemoveFolderFileDeletableColumns.cs │ │ ├── 03030201_AddFolderFileIsDeletedColumns.cs │ │ ├── 04000001_AddHeadContent.cs │ │ ├── 04000002_AddBodyContent.cs │ │ ├── 04000003_AddProfileValidation.cs │ │ ├── 04000101_AddNotificationIsRead.cs │ │ ├── 04000601_AddProfileRows.cs │ │ ├── 05000100_AddSiteHybridEnabled.cs │ │ ├── 05010001_AddPageEffectiveExpiryDate.cs │ │ ├── 05010002_AddPageModuleEffectiveExpiryDate.cs │ │ ├── 05010003_AddProfileAutocomplete.cs │ │ ├── 05010004_AddSitePrerender.cs │ │ ├── 05020001_AddSearchTables.cs │ │ ├── 05020101_AddIndexes.cs │ │ ├── 05020401_RemoveLanguageName.cs │ │ ├── 06000101_AddLanguageName.cs │ │ ├── 06010001_AddFolderCacheControl.cs │ │ ├── 06010301_AddTimeZone.cs │ │ └── 06010302_AddModuleHeaderFooter.cs ├── Modules │ ├── Admin │ │ └── Files │ │ │ └── Manager │ │ │ └── FileManager.cs │ ├── HtmlText │ │ ├── Controllers │ │ │ └── HtmlTextController.cs │ │ ├── Manager │ │ │ └── HtmlTextManager.cs │ │ ├── Migrations │ │ │ ├── 01000000_InitializeModule.cs │ │ │ └── EntityBuilders │ │ │ │ └── HtmlTextEntityBuilder.cs │ │ ├── Repository │ │ │ ├── HtmlTextContext.cs │ │ │ ├── HtmlTextRepository.cs │ │ │ └── IHtmlTextRepository.cs │ │ ├── Services │ │ │ └── HtmlTextService.cs │ │ └── Startup │ │ │ └── ServerStartup.cs │ ├── IPortable.cs │ ├── ISitemap.cs │ └── MigratableModuleBase.cs ├── Oqtane.Server.csproj ├── Pages │ ├── External.cshtml │ ├── External.cshtml.cs │ ├── Files.cshtml │ ├── Files.cshtml.cs │ ├── Impersonate.cshtml │ ├── Impersonate.cshtml.cs │ ├── Login.cshtml │ ├── Login.cshtml.cs │ ├── Logout.cshtml │ ├── Logout.cshtml.cs │ ├── Sitemap.cshtml │ └── Sitemap.cshtml.cs ├── Program.cs ├── Properties │ └── launchSettings.json ├── Providers │ ├── DatabaseSearchProvider.cs │ └── IdentityRevalidatingAuthenticationStateProvider.cs ├── Repository │ ├── AliasRepository.cs │ ├── Context │ │ ├── DBContextBase.cs │ │ ├── DBContextDependencies.cs │ │ ├── DbContextUtils.cs │ │ ├── InstallationContext.cs │ │ ├── MasterDBContext.cs │ │ └── TenantDBContext.cs │ ├── FileRepository.cs │ ├── FolderRepository.cs │ ├── Interfaces │ │ ├── IAliasRepository.cs │ │ ├── IDBContextDependencies.cs │ │ ├── IFileRepository.cs │ │ ├── IFolderRepository.cs │ │ ├── IJobLogRepository.cs │ │ ├── IJobRepository.cs │ │ ├── ILanguageRepository.cs │ │ ├── ILogRepository.cs │ │ ├── IModuleDefinitionRepository.cs │ │ ├── IModuleRepository.cs │ │ ├── INotificationRepository.cs │ │ ├── IPageModuleRepository.cs │ │ ├── IPageRepository.cs │ │ ├── IPermissionRepository.cs │ │ ├── IProfileRepository.cs │ │ ├── IRoleRepository.cs │ │ ├── ISearchContentRepository.cs │ │ ├── ISettingRepository.cs │ │ ├── ISiteRepository.cs │ │ ├── ISiteTemplateRepository.cs │ │ ├── ISqlRepository.cs │ │ ├── ITenantRepository.cs │ │ ├── ITenantResolver.cs │ │ ├── IThemeRepository.cs │ │ ├── IUrlMappingRepository.cs │ │ ├── IUserRepository.cs │ │ ├── IUserRoleRepository.cs │ │ └── IVisitorRepository.cs │ ├── JobLogRepository.cs │ ├── JobRepository.cs │ ├── LanguageRepository.cs │ ├── LogRepository.cs │ ├── ModuleDefinitionRepository.cs │ ├── ModuleRepository.cs │ ├── NotificationRepository.cs │ ├── PageModuleRepository.cs │ ├── PageRepository.cs │ ├── PermissionRepository.cs │ ├── ProfileRepository.cs │ ├── RoleRepository.cs │ ├── SearchContentRepository.cs │ ├── SettingRepository.cs │ ├── SiteRepository.cs │ ├── SiteTemplateRepository.cs │ ├── SqlRepository.cs │ ├── TenantRepository.cs │ ├── TenantResolver.cs │ ├── ThemeRepository.cs │ ├── UrlMappingRepository.cs │ ├── UserRepository.cs │ ├── UserRoleRepository.cs │ └── VisitorRepository.cs ├── Resources │ ├── .gitkeep │ ├── Infrastructure │ │ └── SiteTemplates │ │ │ └── AdminSiteTemplate.resx │ └── Managers │ │ └── UserManager.resx ├── Scripts │ ├── MigrateMaster.sql │ └── MigrateTenant.sql ├── Security │ ├── AuthorizationPolicyProvider.cs │ ├── AutoValidateAntiforgeryTokenAttribute.cs │ ├── AutoValidateAntiforgeryTokenFilter.cs │ ├── ClaimsPrincipalFactory.cs │ ├── JwtManager.cs │ ├── PermissionHandler.cs │ ├── PermissionRequirement.cs │ ├── PrincipalValidator.cs │ └── UserPermissions.cs ├── Services │ ├── CookieConsentService.cs │ ├── ImageService.cs │ ├── LocalizationCookieService.cs │ ├── OutputCacheService.cs │ ├── SearchService.cs │ └── SiteService.cs ├── Startup.cs ├── appsettings.json ├── appsettings.release.json └── wwwroot │ ├── Modules │ ├── Oqtane.Modules.Admin.Login │ │ └── Module.css │ ├── Oqtane.Modules.HtmlText │ │ └── Module.css │ └── Templates │ │ └── External │ │ ├── Client │ │ ├── AssemblyInfo.cs │ │ ├── Interop.cs │ │ ├── Modules │ │ │ └── [Owner].Module.[Module] │ │ │ │ ├── Edit.razor │ │ │ │ ├── Index.razor │ │ │ │ ├── ModuleInfo.cs │ │ │ │ └── Settings.razor │ │ ├── Resources │ │ │ └── [Owner].Module.[Module] │ │ │ │ ├── Edit.resx │ │ │ │ ├── Index.resx │ │ │ │ └── Settings.resx │ │ ├── Services │ │ │ └── [Module]Service.cs │ │ ├── Startup │ │ │ └── ClientStartup.cs │ │ ├── [Owner].Module.[Module].Client.csproj │ │ └── _Imports.razor │ │ ├── Package │ │ ├── [Owner].Module.[Module].Package.csproj │ │ ├── [Owner].Module.[Module].nuspec │ │ ├── debug.cmd │ │ ├── debug.sh │ │ ├── icon.png │ │ ├── release.cmd │ │ └── release.sh │ │ ├── Server │ │ ├── AssemblyInfo.cs │ │ ├── Controllers │ │ │ └── [Module]Controller.cs │ │ ├── Manager │ │ │ └── [Module]Manager.cs │ │ ├── Migrations │ │ │ ├── 01000000_InitializeModule.cs │ │ │ └── EntityBuilders │ │ │ │ └── [Module]EntityBuilder.cs │ │ ├── Repository │ │ │ ├── I[Module]Repository.cs │ │ │ ├── [Module]Context.cs │ │ │ └── [Module]Repository.cs │ │ ├── Services │ │ │ └── [Module]Service.cs │ │ ├── Startup │ │ │ └── ServerStartup.cs │ │ ├── [Owner].Module.[Module].Server.csproj │ │ └── wwwroot │ │ │ ├── Modules │ │ │ └── [Owner].Module.[Module] │ │ │ │ ├── Module.css │ │ │ │ └── Module.js │ │ │ └── _content │ │ │ └── Placeholder.txt │ │ ├── Shared │ │ ├── Interfaces │ │ │ └── I[Module]Service.cs │ │ ├── Models │ │ │ └── [Module].cs │ │ └── [Owner].Module.[Module].Shared.csproj │ │ ├── [Owner].Module.[Module].sln │ │ └── template.json │ ├── Oqtane.Server.lib.module.js │ ├── Themes │ ├── Oqtane.Themes.BlazorTheme │ │ └── Theme.css │ ├── Oqtane.Themes.OqtaneTheme │ │ └── Theme.css │ └── Templates │ │ └── External │ │ ├── Client │ │ ├── AssemblyInfo.cs │ │ ├── Containers │ │ │ ├── Container1.razor │ │ │ └── ContainerSettings.razor │ │ ├── Resources │ │ │ └── [Owner].Theme.[Theme] │ │ │ │ ├── Container.resx │ │ │ │ ├── ContainerSettings.resx │ │ │ │ ├── Theme.resx │ │ │ │ └── ThemeSettings.resx │ │ ├── ThemeInfo.cs │ │ ├── Themes │ │ │ ├── Theme1.razor │ │ │ └── ThemeSettings.razor │ │ ├── [Owner].Theme.[Theme].Client.csproj │ │ ├── _Imports.razor │ │ └── wwwroot │ │ │ └── Themes │ │ │ └── [Owner].Theme.[Theme] │ │ │ └── Theme.css │ │ ├── Package │ │ ├── [Owner].Theme.[Theme].Package.csproj │ │ ├── [Owner].Theme.[Theme].nuspec │ │ ├── debug.cmd │ │ ├── debug.sh │ │ ├── icon.png │ │ ├── release.cmd │ │ └── release.sh │ │ ├── [Owner].Theme.[Theme].sln │ │ └── template.json │ ├── _content │ └── Placeholder.txt │ ├── app_offline.bak │ ├── css │ ├── app.css │ ├── open-iconic │ │ ├── FONT-LICENSE │ │ ├── ICON-LICENSE │ │ ├── README.md │ │ └── font │ │ │ ├── css │ │ │ └── open-iconic-bootstrap.min.css │ │ │ └── fonts │ │ │ ├── open-iconic.eot │ │ │ ├── open-iconic.otf │ │ │ ├── open-iconic.svg │ │ │ ├── open-iconic.ttf │ │ │ └── open-iconic.woff │ └── quill │ │ ├── quill.bubble.css │ │ ├── quill.snow.css │ │ ├── quill1.3.7.bubble.css │ │ └── quill1.3.7.snow.css │ ├── favicon.ico │ ├── icon.png │ ├── images │ ├── checked.png │ ├── error.png │ ├── help.png │ ├── logo-black.png │ ├── logo-white.png │ ├── null.png │ └── unchecked.png │ ├── js │ ├── app.js │ ├── interop.js │ ├── loadjs.min.js │ ├── quill-blot-formatter.min.js │ ├── quill-interop.js │ ├── quill.min.js │ ├── quill.min.js.map │ ├── quill1.3.7.min.js │ └── reload.js │ ├── loading.gif │ ├── oqtane-black.png │ ├── oqtane-glow.png │ ├── oqtane-white.png │ ├── oqtane.ico │ ├── oqtane.png │ ├── package.png │ ├── resources.txt │ ├── service-worker.js │ └── users.txt ├── Oqtane.Shared ├── Documentation │ ├── InternalApi.cs │ ├── PrivateApi.cs │ ├── PublicApi.cs │ ├── WorkInProgressApi.cs │ └── readme.md ├── Enums │ ├── LogFunction.cs │ ├── LogLevel.cs │ ├── MigrationType.cs │ ├── ResourceDeclaration.cs │ ├── ResourceLevel.cs │ ├── ResourceLoadBehavior.cs │ ├── ResourceLocation.cs │ ├── ResourceType.cs │ ├── Runtime.cs │ ├── SearchSortField.cs │ ├── SearchSortOrder.cs │ └── SecurityAccessLevel.cs ├── Extensions │ ├── AssemblyExtensions.cs │ └── EnumerableExtensions.cs ├── Interfaces │ ├── IAuditable.cs │ ├── IClientService.cs │ ├── IClientStartup.cs │ ├── IDatabaseConfigControl.cs │ ├── IDeletable.cs │ ├── IImageService.cs │ ├── IModuleControl.cs │ ├── ISearchProvider.cs │ ├── ISearchService.cs │ ├── ISearchable.cs │ ├── IService.cs │ ├── ISettingsControl.cs │ ├── ITextEditor.cs │ ├── IThemeControl.cs │ ├── ITokenSource.cs │ └── ITransientService.cs ├── Models │ ├── Alias.cs │ ├── Culture.cs │ ├── Database.cs │ ├── ExternalLoginProvider.cs │ ├── File.cs │ ├── Folder.cs │ ├── Installation.cs │ ├── Job.cs │ ├── JobLog.cs │ ├── Language.cs │ ├── Log.cs │ ├── MigrationHistoryTable.cs │ ├── ModelBase.cs │ ├── Module.cs │ ├── ModuleContent.cs │ ├── ModuleDefinition.cs │ ├── Notification.cs │ ├── Package.cs │ ├── Page.cs │ ├── PageModule.cs │ ├── Permission.cs │ ├── Profile.cs │ ├── RequestCulture.cs │ ├── Resource.cs │ ├── Result.cs │ ├── Role.cs │ ├── Route.cs │ ├── Script.cs │ ├── SearchContent.cs │ ├── SearchContentProperty.cs │ ├── SearchContentWord.cs │ ├── SearchQuery.cs │ ├── SearchResult.cs │ ├── SearchResults.cs │ ├── SearchWord.cs │ ├── Setting.cs │ ├── Site.cs │ ├── SiteTemplate.cs │ ├── Sitemap.cs │ ├── SqlQuery.cs │ ├── Stylesheet.cs │ ├── Sync.cs │ ├── Template.cs │ ├── Tenant.cs │ ├── Theme.cs │ ├── ThemeControl.cs │ ├── TimeZone.cs │ ├── UrlMapping.cs │ ├── User.cs │ ├── UserRole.cs │ ├── UserValidateResult.cs │ └── Visitor.cs ├── Modules │ └── HtmlText │ │ └── Models │ │ └── HtmlText.cs ├── Oqtane.Shared.csproj ├── Security │ └── UserSecurity.cs └── Shared │ ├── AuthenticationProviderTypes.cs │ ├── Constants.cs │ ├── ControllerRoutes.cs │ ├── CookieRequestCultureProvider.cs │ ├── EntityNames.cs │ ├── ExternalLoginProviders.cs │ ├── ExternalLoginStatus.cs │ ├── FolderTypes.cs │ ├── Icons.cs │ ├── InstallConfig.cs │ ├── OqtaneIgnoreAttribute.cs │ ├── PaneNames.cs │ ├── PermissionNames.cs │ ├── PolicyNames.cs │ ├── PropertyDictionary.cs │ ├── RenderModes.cs │ ├── RoleNames.cs │ ├── Runtimes.cs │ ├── SearchUtils.cs │ ├── ServiceActivator.cs │ ├── SettingKeys.cs │ ├── SiteState.cs │ ├── SyncEventActions.cs │ ├── TenantNames.cs │ ├── UserNames.cs │ └── Utilities.cs ├── Oqtane.Updater.sln ├── Oqtane.Updater ├── Oqtane.Updater.csproj └── Program.cs ├── Oqtane.sln ├── README.md ├── SECURITY.md ├── azuredeploy.json ├── installer.png ├── oqtane.png └── screenshots ├── Architecture.png ├── Installer.png ├── databases.png ├── screenshot0.png ├── screenshot1.png ├── screenshot2.png ├── screenshot3.png ├── screenshot4.png ├── screenshot5.png ├── screenshot6.png └── screenshot7.png /.gitattributes: -------------------------------------------------------------------------------- 1 | Oqtane.Server/wwwroot/Modules/Templates/External/Package/*.sh eol=lf 2 | Oqtane.Server/wwwroot/Themes/Templates/External/Package/*.sh eol=lf -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Create a bug report to help us improve the product 4 | title: "[BUG] " 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### Oqtane Info 11 | 12 | Version - #.#.# 13 | Render Mode - Static 14 | Interactivity - Server 15 | Database - SQL Server 16 | 17 | ### Describe the bug 18 | 19 | 20 | ### Expected Behavior 21 | 22 | 23 | ### Steps To Reproduce 24 | 25 | 26 | ### Anything else? 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/enhancement-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Enhancement Request 3 | about: 'Suggest a product enhancement ' 4 | title: "[ENH] " 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### Oqtane Info 11 | 12 | Version - #.#.# 13 | Render Mode - Static 14 | Interactivity - Server 15 | Database - SQL Server 16 | 17 | ### Describe the enhancement 18 | 19 | 20 | ### Anything else? 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vs/ 2 | bin/ 3 | obj/ 4 | *.user 5 | artifacts/ 6 | msbuild.binlog 7 | .vscode/ 8 | *.binlog 9 | *.nupkg 10 | *.zip 11 | 12 | *.idea 13 | _ReSharper.Caches 14 | .DS_Store 15 | 16 | Oqtane.Server/appsettings.json 17 | Oqtane.Server/Data 18 | 19 | Oqtane.Server/Properties/PublishProfiles/FolderProfile.pubxml 20 | Oqtane.Server/Content 21 | Oqtane.Server/Packages 22 | Oqtane.Server/wwwroot/Content 23 | Oqtane.Server/wwwroot/Packages/*.log 24 | 25 | Oqtane.Server/wwwroot/_content/* 26 | !Oqtane.Server/wwwroot/_content/Placeholder.txt 27 | 28 | Oqtane.Server/wwwroot/Modules/* 29 | !Oqtane.Server/wwwroot/Modules/Oqtane.Modules.* 30 | !Oqtane.Server/wwwroot/Modules/Templates 31 | Oqtane.Server/wwwroot/Modules/Templates/* 32 | !Oqtane.Server/wwwroot/Modules/Templates/External 33 | 34 | Oqtane.Server/wwwroot/Themes/* 35 | !Oqtane.Server/wwwroot/Themes/Oqtane.Themes.* 36 | !Oqtane.Server/wwwroot/Themes/Templates 37 | Oqtane.Server/wwwroot/Themes/Templates/* 38 | Oqtane.Server/wwwroot/Themes/Templates/External 39 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Oqtane 2 | 3 | ## How to Contribute 4 | 5 | We track all of our issues on Github. If you want to contribute, everything starts with an issue. If you don't have an issue yet, you can add one. Then a core contributor will tag it as either an enhancement [ENH] or a bug [BUG]. Tagged issues are open for contribution. 6 | 7 | ## Use GitHub-flow process 8 | - Make a comment on the issue that you intend to work on it and read all the comments to gain a full understanding. 9 | - Fork the repository 10 | - Create a new branch and update your comment on the issue with a llink to the branch 11 | - Make your changes and commit them 12 | - Push to the branch 13 | - Create a pull request 14 | 15 | ## Reporting Bugs 16 | 17 | - Check if the issue has already been reported. 18 | - Open a new issue if it hasn’t been reported. 19 | 20 | ## Requesting Features 21 | 22 | - Use the feature request template in the Issues tab. 23 | 24 | Thank you for contributing! 25 | -------------------------------------------------------------------------------- /Oqtane.Client/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | using Microsoft.Extensions.Localization; 3 | 4 | [assembly: RootNamespace("Oqtane")] 5 | [assembly: InternalsVisibleTo("Oqtane.Server")] 6 | -------------------------------------------------------------------------------- /Oqtane.Client/IconResources.cs: -------------------------------------------------------------------------------- 1 | namespace Oqtane 2 | { 3 | /// 4 | /// Dummy class used to collect shared resource strings for this application 5 | /// 6 | /// 7 | /// This class is mostly used with IStringLocalizer and IHtmlLocalizer interfaces. 8 | /// The class must reside at the project root. 9 | /// 10 | public class IconResources 11 | { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Oqtane.Client/Installer/Controls/SqliteConfig.razor: -------------------------------------------------------------------------------- 1 | @namespace Oqtane.Installer.Controls 2 | @implements Oqtane.Interfaces.IDatabaseConfigControl 3 | 4 |
5 | 6 |
7 | 8 |
9 |
10 | 11 | @code { 12 | private string _server = "Oqtane-" + DateTime.UtcNow.ToString("yyyyMMddHHmm") + ".db"; 13 | 14 | public string GetConnectionString() 15 | { 16 | var connectionstring = String.Empty; 17 | 18 | if (!String.IsNullOrEmpty(_server)) 19 | { 20 | connectionstring = $"Data Source={_server};"; 21 | } 22 | 23 | return connectionstring; 24 | } 25 | } -------------------------------------------------------------------------------- /Oqtane.Client/Modules/Admin/Error/Index.razor: -------------------------------------------------------------------------------- 1 | @namespace Oqtane.Modules.Admin.Error 2 | @inherits ModuleBase 3 | @inject IModuleService ModuleService 4 | @inject IStringLocalizer Localizer 5 | 6 | @code { 7 | public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Anonymous; 8 | 9 | protected override async Task OnInitializedAsync() 10 | { 11 | Module module = await ModuleService.GetModuleAsync(ModuleState.ModuleId); 12 | if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) 13 | { 14 | AddModuleMessage(string.Format(Localizer["Error.Module.Load"], module.ModuleDefinitionName), MessageType.Error); 15 | } 16 | 17 | await logger.LogCritical("Error Loading Module {Module}", module); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Oqtane.Client/Modules/Admin/Files/ModuleInfo.cs: -------------------------------------------------------------------------------- 1 | using Oqtane.Documentation; 2 | using Oqtane.Models; 3 | using Oqtane.Shared; 4 | 5 | namespace Oqtane.Modules.Admin.Files 6 | { 7 | [PrivateApi("Mark this as private, since it's not very useful in the public docs")] 8 | public class ModuleInfo : IModule 9 | { 10 | public ModuleDefinition ModuleDefinition => new ModuleDefinition 11 | { 12 | Name = "File Management", 13 | Description = "File Management", 14 | Version = Constants.Version, 15 | Categories = "Admin", 16 | ServerManagerType = "Oqtane.Modules.Admin.Files.Manager.FileManager, Oqtane.Server" 17 | }; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Oqtane.Client/Modules/Admin/Profiles/ModuleInfo.cs: -------------------------------------------------------------------------------- 1 | using Oqtane.Documentation; 2 | using Oqtane.Models; 3 | using Oqtane.Shared; 4 | 5 | namespace Oqtane.Modules.Admin.Profiles 6 | { 7 | [PrivateApi("Mark this as private, since it's not very useful in the public docs")] 8 | public class ModuleInfo : IModule 9 | { 10 | public ModuleDefinition ModuleDefinition => new ModuleDefinition 11 | { 12 | Name = "Profiles", 13 | Description = "Manage Profiles", 14 | Categories = "Admin", 15 | Version = Constants.Version, 16 | PermissionNames = $"{PermissionNames.View},{PermissionNames.Edit}," + 17 | $"{EntityNames.Profile}:{PermissionNames.Write}:{RoleNames.Admin}" 18 | }; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Oqtane.Client/Modules/Admin/Roles/ModuleInfo.cs: -------------------------------------------------------------------------------- 1 | using Oqtane.Documentation; 2 | using Oqtane.Models; 3 | using Oqtane.Shared; 4 | 5 | namespace Oqtane.Modules.Admin.Roles 6 | { 7 | [PrivateApi("Mark this as private, since it's not very useful in the public docs")] 8 | public class ModuleInfo : IModule 9 | { 10 | public ModuleDefinition ModuleDefinition => new ModuleDefinition 11 | { 12 | Name = "Roles", 13 | Description = "Manage Roles", 14 | Categories = "Admin", 15 | Version = Constants.Version, 16 | PermissionNames = $"{PermissionNames.View},{PermissionNames.Edit}," + 17 | $"{EntityNames.Role}:{PermissionNames.Write}:{RoleNames.Admin}," + 18 | $"{EntityNames.UserRole}:{PermissionNames.Write}:{RoleNames.Admin}" 19 | }; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Oqtane.Client/Modules/Admin/SearchResults/ModuleInfo.cs: -------------------------------------------------------------------------------- 1 | using Oqtane.Documentation; 2 | using Oqtane.Models; 3 | using Oqtane.Shared; 4 | 5 | namespace Oqtane.Modules.Admin.SearchResults 6 | { 7 | [PrivateApi("Mark this as private, since it's not very useful in the public docs")] 8 | public class ModuleInfo : IModule 9 | { 10 | public ModuleDefinition ModuleDefinition => new ModuleDefinition 11 | { 12 | Name = "Search Results", 13 | Description = "Search Results", 14 | Categories = "Admin", 15 | Version = Constants.Version, 16 | SettingsType = "Oqtane.Modules.Admin.SearchResults.Settings, Oqtane.Client" 17 | }; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Oqtane.Client/Modules/Admin/Users/ModuleInfo.cs: -------------------------------------------------------------------------------- 1 | using Oqtane.Documentation; 2 | using Oqtane.Models; 3 | using Oqtane.Shared; 4 | 5 | namespace Oqtane.Modules.Admin.Users 6 | { 7 | [PrivateApi("Mark this as private, since it's not very useful in the public docs")] 8 | public class ModuleInfo : IModule 9 | { 10 | public ModuleDefinition ModuleDefinition => new ModuleDefinition 11 | { 12 | Name = "Users", 13 | Description = "Manage Users", 14 | Categories = "Admin", 15 | Version = Constants.Version, 16 | PermissionNames = $"{PermissionNames.View},{PermissionNames.Edit}," + 17 | $"{EntityNames.User}:{PermissionNames.Write}:{RoleNames.Admin}," + 18 | $"{EntityNames.UserRole}:{PermissionNames.Write}:{RoleNames.Admin}" 19 | }; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Oqtane.Client/Modules/Controls/TextAreaTextEditor.razor: -------------------------------------------------------------------------------- 1 | @namespace Oqtane.Modules.Controls 2 | @inherits ModuleControlBase 3 | @implements ITextEditor 4 | 5 |
6 |