@ -62,7 +62,7 @@
|
|||||||
public override string Title { get { return "Folder Management"; } }
|
public override string Title { get { return "Folder Management"; } }
|
||||||
|
|
||||||
List<Folder> folders;
|
List<Folder> folders;
|
||||||
int folderid;
|
int folderid = -1;
|
||||||
string name;
|
string name;
|
||||||
int parentid = -1;
|
int parentid = -1;
|
||||||
bool issystem = false;
|
bool issystem = false;
|
||||||
@ -86,7 +86,7 @@
|
|||||||
Folder folder = await FolderService.GetFolderAsync(folderid);
|
Folder folder = await FolderService.GetFolderAsync(folderid);
|
||||||
if (folder != null)
|
if (folder != null)
|
||||||
{
|
{
|
||||||
parentid = (folder.ParentId == null) ? -1 : folder.ParentId.Value;
|
parentid = folder.ParentId ?? -1;
|
||||||
name = folder.Name;
|
name = folder.Name;
|
||||||
issystem = folder.IsSystem;
|
issystem = folder.IsSystem;
|
||||||
permissions = folder.Permissions;
|
permissions = folder.Permissions;
|
||||||
|
@ -50,7 +50,7 @@ namespace Oqtane.Controllers
|
|||||||
if (alias == null && name.Contains("/"))
|
if (alias == null && name.Contains("/"))
|
||||||
{
|
{
|
||||||
// lookup alias without folder name
|
// 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)
|
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.
|
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)
|
V1 (MVP)
|
||||||
- Multi-Tenant ( Shared Database & Isolated Database ) **done**
|
- [x] Multi-Tenant ( Shared Database & Isolated Database )
|
||||||
- Modular Architecture / Headless API **done**
|
- [x] Modular Architecture / Headless API
|
||||||
- Dynamic Page Compositing Model / Site & Page Management **done**
|
- [x] Dynamic Page Compositing Model / Site & Page Management
|
||||||
- Authentication / User Management / Profile Management **done**
|
- [x] Authentication / User Management / Profile Management
|
||||||
- Authorization / Roles Management / Granular Permissions **done**
|
- [x] Authorization / Roles Management / Granular Permissions
|
||||||
- Dynamic Routing **done**
|
- [x] Dynamic Routing
|
||||||
- Extensibility via Custom Modules **done**
|
- [x] Extensibility via Custom Modules
|
||||||
- Extensibility via Custom Themes **done**
|
- [x] Extensibility via Custom Themes
|
||||||
- Event Logging **done**
|
- [x] Event Logging
|
||||||
- Folder / File Management **done**
|
- [x] Folder / File Management
|
||||||
- Recycle Bin **done**
|
- [x] Recycle Bin
|
||||||
- Scheduled Jobs ( Background Processing ) **done**
|
- [x] Scheduled Jobs ( Background Processing )
|
||||||
- Notifications / Email Delivery **done**
|
- [x] Notifications / Email Delivery
|
||||||
- Auto-Upgrade Framework **done**
|
- [x] Auto-Upgrade Framework
|
||||||
|
|
||||||
V.Next
|
V.Next
|
||||||
- Optional Encryption of Settings Values ( ie. via an IsSecure flag )
|
- [ ] Optional Encryption of Settings Values ( ie. via an IsSecure flag )
|
||||||
- Localization
|
- [ ] Localization
|
||||||
- Migrate to Code-Behind Pattern ( *.razor.cs )
|
- [ ] Migrate to Code-Behind Pattern ( *.razor.cs )
|
||||||
- Generic Repository Pattern
|
- [ ] Generic Repository Pattern
|
||||||
- JwT token authentication
|
- [ ] JwT token authentication
|
||||||
|
|
||||||
# Background
|
# 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.
|
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:
|
Default view after installation:
|
||||||
|
|
||||||

|

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

|

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

|

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

|

|
||||||
|
|
||||||
Context menu for managing specific module on page:
|
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:
|
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:
|
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 |