@ -62,7 +62,7 @@
|
||||
public override string Title { get { return "Folder Management"; } }
|
||||
|
||||
List<Folder> folders;
|
||||
int folderid;
|
||||
int folderid = -1;
|
||||
string name;
|
||||
int parentid = -1;
|
||||
bool issystem = false;
|
||||
@ -86,7 +86,7 @@
|
||||
Folder folder = await FolderService.GetFolderAsync(folderid);
|
||||
if (folder != null)
|
||||
{
|
||||
parentid = (folder.ParentId == null) ? -1 : folder.ParentId.Value;
|
||||
parentid = folder.ParentId ?? -1;
|
||||
name = folder.Name;
|
||||
issystem = folder.IsSystem;
|
||||
permissions = folder.Permissions;
|
||||
|
@ -50,7 +50,7 @@ namespace Oqtane.Controllers
|
||||
if (alias == null && name.Contains("/"))
|
||||
{
|
||||
// lookup alias without folder name
|
||||
alias = aliases.Where(item => item.Name == name.Substring(name.IndexOf("/") + 1)).FirstOrDefault();
|
||||
alias = aliases.Find(item => item.Name == name.Substring(0, name.IndexOf("/")));
|
||||
}
|
||||
if (alias == null && aliases.Count > 0)
|
||||
{
|
||||
|
52
README.md
@ -19,27 +19,27 @@ Oqtane uses Blazor, a new web framework for .NET Core that lets you build intera
|
||||
This project is a work in progress and the schedule for implementing enhancements is dependent upon the availability of community members who are willing/able to assist.
|
||||
|
||||
V1 (MVP)
|
||||
- Multi-Tenant ( Shared Database & Isolated Database ) **done**
|
||||
- Modular Architecture / Headless API **done**
|
||||
- Dynamic Page Compositing Model / Site & Page Management **done**
|
||||
- Authentication / User Management / Profile Management **done**
|
||||
- Authorization / Roles Management / Granular Permissions **done**
|
||||
- Dynamic Routing **done**
|
||||
- Extensibility via Custom Modules **done**
|
||||
- Extensibility via Custom Themes **done**
|
||||
- Event Logging **done**
|
||||
- Folder / File Management **done**
|
||||
- Recycle Bin **done**
|
||||
- Scheduled Jobs ( Background Processing ) **done**
|
||||
- Notifications / Email Delivery **done**
|
||||
- Auto-Upgrade Framework **done**
|
||||
- [x] Multi-Tenant ( Shared Database & Isolated Database )
|
||||
- [x] Modular Architecture / Headless API
|
||||
- [x] Dynamic Page Compositing Model / Site & Page Management
|
||||
- [x] Authentication / User Management / Profile Management
|
||||
- [x] Authorization / Roles Management / Granular Permissions
|
||||
- [x] Dynamic Routing
|
||||
- [x] Extensibility via Custom Modules
|
||||
- [x] Extensibility via Custom Themes
|
||||
- [x] Event Logging
|
||||
- [x] Folder / File Management
|
||||
- [x] Recycle Bin
|
||||
- [x] Scheduled Jobs ( Background Processing )
|
||||
- [x] Notifications / Email Delivery
|
||||
- [x] Auto-Upgrade Framework
|
||||
|
||||
V.Next
|
||||
- Optional Encryption of Settings Values ( ie. via an IsSecure flag )
|
||||
- Localization
|
||||
- Migrate to Code-Behind Pattern ( *.razor.cs )
|
||||
- Generic Repository Pattern
|
||||
- JwT token authentication
|
||||
- [ ] Optional Encryption of Settings Values ( ie. via an IsSecure flag )
|
||||
- [ ] Localization
|
||||
- [ ] Migrate to Code-Behind Pattern ( *.razor.cs )
|
||||
- [ ] Generic Repository Pattern
|
||||
- [ ] JwT token authentication
|
||||
|
||||
# Background
|
||||
Oqtane was created by [Shaun Walker](https://www.linkedin.com/in/shaunbrucewalker/) and is inspired by the DotNetNuke web application framework. Initially created as a proof of concept, Oqtane is a native Blazor application written from the ground up using modern .NET Core technology. It is a modular application framework offering a fully dynamic page compositing model, multi-site support, designer friendly templates (skins), and extensibility via third party modules.
|
||||
@ -56,28 +56,28 @@ Install Wizard:
|
||||
|
||||
Default view after installation:
|
||||
|
||||

|
||||

|
||||
|
||||
A seamless login flow utilizing .NET Core Identity services:
|
||||
|
||||

|
||||

|
||||
|
||||
Main view for authorized users, allowing full management of modules and content:
|
||||
|
||||

|
||||

|
||||
|
||||
Content editing user experience using modal dialog:
|
||||
|
||||

|
||||

|
||||
|
||||
Context menu for managing specific module on page:
|
||||
|
||||

|
||||

|
||||
|
||||
Control panel for adding, editing, and deleting pages as well as adding new modules to a page:
|
||||
|
||||

|
||||

|
||||
|
||||
Admin dashboard for accessing the variuous administrative features of the framework:
|
||||
|
||||

|
||||

|
||||
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 175 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 174 KiB |
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |