@@ -306,10 +306,9 @@
_languages = _languages.OrderBy(item => item.Name).ToList();
}
- // Group modules by PageId
- // Get distinct PageIds where modules are present
+ // get distinct pages where module exists
var distinctPageIds = PageState.Modules
- .Where(md => md.ModuleDefinition.ModuleDefinitionId == _moduleDefinitionId && md.IsDeleted == false)
+ .Where(md => md.ModuleDefinition?.ModuleDefinitionId == _moduleDefinitionId && md.IsDeleted == false)
.Select(md => md.PageId)
.Distinct();
diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
index 2d3b80a7..485f027f 100644
--- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
+++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
@@ -50,7 +50,7 @@ else
- |
+ |
@if (context.AssemblyName != Constants.ClientId)
{
diff --git a/Oqtane.Client/Modules/Admin/Modules/Settings.razor b/Oqtane.Client/Modules/Admin/Modules/Settings.razor
index 0031c729..277f223b 100644
--- a/Oqtane.Client/Modules/Admin/Modules/Settings.razor
+++ b/Oqtane.Client/Modules/Admin/Modules/Settings.razor
@@ -94,7 +94,7 @@
}
-
+
@if (_permissions != null)
{
@@ -126,9 +126,8 @@
- @code {
+@code {
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit;
- public override string Title => "Module Settings";
private ElementReference form;
private bool validated = false;
@@ -144,7 +143,7 @@
private PermissionGrid _permissionGrid;
private Type _moduleSettingsType;
private object _moduleSettings;
- private string _moduleSettingsTitle = "Module Settings";
+ private string _moduleSettingsTitle;
private RenderFragment ModuleSettingsComponent { get; set; }
private Type _containerSettingsType;
private object _containerSettings;
@@ -158,8 +157,10 @@
protected override void OnInitialized()
{
+ SetModuleTitle(Localizer["ModuleSettings.Title"]);
_module = ModuleState.ModuleDefinition.Name;
_title = ModuleState.Title;
+ _moduleSettingsTitle = Localizer["ModuleSettings.Heading"];
_pane = ModuleState.Pane;
_containers = ThemeService.GetContainerControls(PageState.Site.Themes, PageState.Page.ThemeType);
_containerType = ModuleState.ContainerType;
@@ -172,7 +173,8 @@
modifiedon = ModuleState.ModifiedOn;
_effectivedate = Utilities.UtcAsLocalDate(ModuleState.EffectiveDate);
_expirydate = Utilities.UtcAsLocalDate(ModuleState.ExpiryDate);
-
+
+
if (ModuleState.ModuleDefinition != null)
{
_permissionNames = ModuleState.ModuleDefinition?.PermissionNames;
diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor
index edaebf1a..b4bc912e 100644
--- a/Oqtane.Client/Modules/Admin/Pages/Add.razor
+++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor
@@ -198,12 +198,6 @@
- @if (_themeSettingsType != null)
- {
-
- @_themeSettingsComponent
-
- }
@@ -238,9 +232,6 @@
private string _bodycontent;
private string _permissions = null;
private PermissionGrid _permissionGrid;
- private Type _themeSettingsType;
- private object _themeSettings;
- private RenderFragment _themeSettingsComponent { get; set; }
private bool _refresh = false;
protected Page _parent = null;
protected Dictionary _icons;
@@ -281,7 +272,6 @@
}
_effectivedate = Utilities.UtcAsLocalDate(PageState.Page.EffectiveDate);
_expirydate = Utilities.UtcAsLocalDate(PageState.Page.ExpiryDate);
- ThemeSettings();
_initialized = true;
}
else
@@ -324,7 +314,6 @@
_themetype = (string)e.Value;
_containers = ThemeService.GetContainerControls(PageState.Site.Themes, _themetype);
_containertype = _containers.First().TypeName;
- ThemeSettings();
StateHasChanged();
// if theme chosen is different than default site theme, display warning message to user
@@ -334,28 +323,6 @@
}
}
- private void ThemeSettings()
- {
- _themeSettingsType = null;
- _themeSettingsComponent = null;
- var theme = PageState.Site.Themes.FirstOrDefault(item => item.Themes.Any(themecontrol => themecontrol.TypeName.Equals(_themetype)));
- if (theme != null && !string.IsNullOrEmpty(theme.ThemeSettingsType))
- {
- _themeSettingsType = Type.GetType(theme.ThemeSettingsType);
- if (_themeSettingsType != null)
- {
- _themeSettingsComponent = builder =>
- {
- builder.OpenComponent(0, _themeSettingsType);
- builder.AddAttribute(1, "RenderModeBoundary", RenderModeBoundary);
- builder.AddComponentReferenceCapture(2, inst => { _themeSettings = Convert.ChangeType(inst, _themeSettingsType); });
- builder.CloseComponent();
- };
- }
- _refresh = true;
- }
- }
-
private async Task SavePage()
{
validated = true;
@@ -482,11 +449,11 @@
await logger.LogInformation("Page Added {Page}", page);
if (!string.IsNullOrEmpty(PageState.ReturnUrl))
{
- NavigationManager.NavigateTo(PageState.ReturnUrl, true);
+ NavigationManager.NavigateTo(page.Path, true); // redirect to page added and reload
}
else
{
- NavigationManager.NavigateTo(page.Path); // redirect to new page created
+ NavigationManager.NavigateTo(NavigateUrl()); // redirect to page management
}
}
else
diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor
index 453f1f69..59e386b1 100644
--- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor
+++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor
@@ -1,5 +1,6 @@
@namespace Oqtane.Modules.Admin.Pages
@using Oqtane.Interfaces
+@using System.Globalization
@inherits ModuleBase
@inject NavigationManager NavigationManager
@inject IPageService PageService
@@ -362,7 +363,7 @@
_parent = PageState.Pages.FirstOrDefault(item => item.PageId == _page.ParentId);
}
_children = new List();
- foreach (Page p in PageState.Pages.Where(item => (_parentid == "-1" && item.ParentId == null) || (item.ParentId == int.Parse(_parentid))))
+ foreach (Page p in PageState.Pages.Where(item => (_parentid == "-1" && item.ParentId == null) || (item.ParentId == int.Parse(_parentid, CultureInfo.InvariantCulture))))
{
if (p.PageId != _pageId && UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.PermissionList))
{
@@ -643,11 +644,11 @@
await logger.LogInformation("Page Saved {Page}", _page);
if (!string.IsNullOrEmpty(PageState.ReturnUrl))
{
- NavigationManager.NavigateTo(PageState.ReturnUrl, true);
+ NavigationManager.NavigateTo(PageState.ReturnUrl, true); // redirect to page being edited and reload
}
else
{
- NavigationManager.NavigateTo(NavigateUrl(), true); // redirect to page being edited
+ NavigationManager.NavigateTo(NavigateUrl()); // redirect to page management
}
}
else
diff --git a/Oqtane.Client/Modules/Admin/Pages/Index.razor b/Oqtane.Client/Modules/Admin/Pages/Index.razor
index f1b9e9b4..391c6c42 100644
--- a/Oqtane.Client/Modules/Admin/Pages/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Pages/Index.razor
@@ -17,7 +17,7 @@
@SharedLocalizer["Name"] |
- |
+ |
|
|
@(new string('-', context.Level * 2))@(context.Name) |
diff --git a/Oqtane.Client/Modules/Admin/Profiles/Index.razor b/Oqtane.Client/Modules/Admin/Profiles/Index.razor
index 587fa452..6152062d 100644
--- a/Oqtane.Client/Modules/Admin/Profiles/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Profiles/Index.razor
@@ -22,7 +22,7 @@ else
@Localizer["Order"] |
- |
+ |
|
@context.Name |
@context.Title |
diff --git a/Oqtane.Client/Modules/Admin/Roles/Index.razor b/Oqtane.Client/Modules/Admin/Roles/Index.razor
index 6b0e4610..44ffe0c3 100644
--- a/Oqtane.Client/Modules/Admin/Roles/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Roles/Index.razor
@@ -20,9 +20,9 @@ else
@SharedLocalizer["Name"] |
- |
+ |
|
- |
+ |
@context.Name |
diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor
index 56df0b3e..a5626a5d 100644
--- a/Oqtane.Client/Modules/Admin/Site/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Site/Index.razor
@@ -319,7 +319,7 @@
-
-
+
@@ -572,6 +572,23 @@
}
}
+ private void RenderModeChanged(ChangeEventArgs e)
+ {
+ _rendermode = (string)e.Value;
+ switch (_rendermode)
+ {
+ case RenderModes.Interactive:
+ _prerender = "True";
+ break;
+ case RenderModes.Static:
+ _prerender = "False";
+ break;
+ case RenderModes.Headless:
+ _prerender = "False";
+ break;
+ }
+ }
+
private async Task SaveSite()
{
validated = true;
diff --git a/Oqtane.Client/Modules/Admin/Themes/Index.razor b/Oqtane.Client/Modules/Admin/Themes/Index.razor
index 3a7d64ae..db655868 100644
--- a/Oqtane.Client/Modules/Admin/Themes/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Themes/Index.razor
@@ -29,7 +29,7 @@ else
|
- |
+ |
@if (context.AssemblyName != Constants.ClientId)
{
@@ -63,7 +63,6 @@ else
}
|
- |
}
diff --git a/Oqtane.Client/Modules/Admin/UrlMappings/Index.razor b/Oqtane.Client/Modules/Admin/UrlMappings/Index.razor
index 6ed8c769..bae495fb 100644
--- a/Oqtane.Client/Modules/Admin/UrlMappings/Index.razor
+++ b/Oqtane.Client/Modules/Admin/UrlMappings/Index.razor
@@ -37,7 +37,7 @@ else
@Localizer["Requested"] |
- |
+ |
|
@context.Url
diff --git a/Oqtane.Client/Modules/Admin/Users/Edit.razor b/Oqtane.Client/Modules/Admin/Users/Edit.razor
index beb66e60..cf5ac069 100644
--- a/Oqtane.Client/Modules/Admin/Users/Edit.razor
+++ b/Oqtane.Client/Modules/Admin/Users/Edit.razor
@@ -226,11 +226,6 @@
user.Password = _password;
user.Email = email;
user.DisplayName = string.IsNullOrWhiteSpace(displayname) ? username : displayname;
- user.PhotoFileId = null;
- if (user.PhotoFileId == -1)
- {
- user.PhotoFileId = null;
- }
user.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted));
diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor
index ed050ac7..a04be4c3 100644
--- a/Oqtane.Client/Modules/Admin/Users/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Users/Index.razor
@@ -32,13 +32,13 @@ else
-
+
|
|
-
+
|
@context.User.Username |
@context.User.DisplayName |
diff --git a/Oqtane.Client/Modules/Admin/Visitors/Index.razor b/Oqtane.Client/Modules/Admin/Visitors/Index.razor
index 61487cf3..ea5510c0 100644
--- a/Oqtane.Client/Modules/Admin/Visitors/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Visitors/Index.razor
@@ -43,7 +43,7 @@ else
@Localizer["Created"] |
- |
+ |
@context.IPAddress |
@if (context.UserId != null)
@@ -69,14 +69,20 @@ else
-
+
+
+
+
+
+
+
-
+
@@ -103,7 +109,8 @@ else
private int _page = 1;
private List _visitors;
private string _tracking;
- private string _filter = "";
+ private int _duration = 5;
+ private string _filter = "";
private int _retention = 30;
private string _correlation = "true";
@@ -128,7 +135,8 @@ else
_tracking = PageState.Site.VisitorTracking.ToString();
var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId);
- _filter = SettingService.GetSetting(settings, "VisitorFilter", Constants.DefaultVisitorFilter);
+ _duration = int.Parse(SettingService.GetSetting(settings, "VisitorDuration", "5"));
+ _filter = SettingService.GetSetting(settings, "VisitorFilter", Constants.DefaultVisitorFilter);
_retention = int.Parse(SettingService.GetSetting(settings, "VisitorRetention", "30"));
_correlation = SettingService.GetSetting(settings, "VisitorCorrelation", "true");
}
@@ -179,7 +187,8 @@ else
await SiteService.UpdateSiteAsync(site);
var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId);
- settings = SettingService.SetSetting(settings, "VisitorFilter", _filter, true);
+ settings = SettingService.SetSetting(settings, "VisitorDuration", _duration.ToString(), true);
+ settings = SettingService.SetSetting(settings, "VisitorFilter", _filter, true);
settings = SettingService.SetSetting(settings, "VisitorRetention", _retention.ToString(), true);
settings = SettingService.SetSetting(settings, "VisitorCorrelation", _correlation, true);
await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId);
diff --git a/Oqtane.Client/Modules/Controls/ActionDialog.razor b/Oqtane.Client/Modules/Controls/ActionDialog.razor
index 1125d7b0..defb520d 100644
--- a/Oqtane.Client/Modules/Controls/ActionDialog.razor
+++ b/Oqtane.Client/Modules/Controls/ActionDialog.razor
@@ -35,11 +35,11 @@
{
if (Disabled)
{
-
+
}
else
{
-
+
}
}
}
@@ -83,13 +83,13 @@ else
{
if (Disabled)
{
-
+
}
else
{
}
}
@@ -101,6 +101,8 @@ else
private bool _editmode = false;
private bool _authorized = false;
private string _iconSpan = string.Empty;
+ private string _openIconSpan = string.Empty;
+ private string _openText = string.Empty;
[Parameter]
public string Header { get; set; } // required
@@ -138,6 +140,9 @@ else
[Parameter]
public string IconName { get; set; } // optional - specifies an icon for the link - default is no icon
+ [Parameter]
+ public bool IconOnly { get; set; } // optional - specifies only icon in opening link
+
[Parameter]
public string Id { get; set; } // optional - specifies a unique id for the compoment - required when there are multiple component instances on a page in static rendering
@@ -157,6 +162,8 @@ else
{
Text = Action;
}
+ _openText = Text;
+
if (string.IsNullOrEmpty(Class))
{
Class = "btn btn-success";
@@ -169,11 +176,17 @@ else
if (!string.IsNullOrEmpty(IconName))
{
+ if (IconOnly)
+ {
+ _openText = string.Empty;
+ }
+
if (!IconName.Contains(" "))
{
IconName = "oi oi-" + IconName;
}
- _iconSpan = $" ";
+ _openIconSpan = $"{(IconOnly ? "" : " ")}";
+ _iconSpan = $" ";
}
Text = Localize(nameof(Text), Text);
diff --git a/Oqtane.Client/Modules/Controls/ModuleMessage.razor b/Oqtane.Client/Modules/Controls/ModuleMessage.razor
index d8155b3d..c42b40cb 100644
--- a/Oqtane.Client/Modules/Controls/ModuleMessage.razor
+++ b/Oqtane.Client/Modules/Controls/ModuleMessage.razor
@@ -6,23 +6,24 @@
{
@((MarkupString)Message)
- @if (PageState != null)
+ @if (Type == MessageType.Error && PageState != null && UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))
{
- @if (Type == MessageType.Error && UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))
- {
- View Details
- }
-
+ View Details
+ }
+ @if (ModuleState.RenderMode == RenderModes.Static)
+ {
+
+ }
+ else
+ {
+
}
}
@code {
+ private string _message = string.Empty;
private string _classname = string.Empty;
- private string _formname = "ModuleMessageForm";
[Parameter]
public string Message { get; set; }
@@ -30,32 +31,13 @@
[Parameter]
public MessageType Type { get; set; }
- public void RefreshMessage(string message, MessageType type)
- {
- Message = message;
- Type = type;
-
- UpdateClassName();
-
- StateHasChanged();
- }
-
- protected override void OnInitialized()
- {
- if (ModuleState != null)
- {
- _formname += ModuleState.PageModuleId.ToString();
- }
- }
+ [Parameter]
+ public RenderModeBoundary Parent { get; set; }
protected override void OnParametersSet()
{
- UpdateClassName();
- }
-
- private void UpdateClassName()
- {
- if (!string.IsNullOrEmpty(Message))
+ _message = Message;
+ if (!string.IsNullOrEmpty(_message))
{
_classname = GetMessageType(Type);
}
@@ -82,9 +64,15 @@
return classname;
}
-
- private void DismissModal()
+ private void CloseMessage(MouseEventArgs e)
{
- Message = "";
+ if(Parent != null)
+ {
+ Parent.DismissMessage();
+ }
+ else
+ {
+ NavigationManager.NavigateTo(NavigationManager.Uri);
+ }
}
}
diff --git a/Oqtane.Client/Modules/Controls/Pager.razor b/Oqtane.Client/Modules/Controls/Pager.razor
index a37166ec..8e643f17 100644
--- a/Oqtane.Client/Modules/Controls/Pager.razor
+++ b/Oqtane.Client/Modules/Controls/Pager.razor
@@ -23,16 +23,16 @@
{
}
@@ -86,16 +86,16 @@
{
}
@@ -202,16 +202,16 @@
{
}
@@ -250,16 +250,16 @@
{
}
diff --git a/Oqtane.Client/Modules/Controls/RichTextEditor.razor b/Oqtane.Client/Modules/Controls/RichTextEditor.razor
index ad237acb..83986c35 100644
--- a/Oqtane.Client/Modules/Controls/RichTextEditor.razor
+++ b/Oqtane.Client/Modules/Controls/RichTextEditor.razor
@@ -122,6 +122,7 @@
private string _message = string.Empty;
private bool _contentchanged = false;
+ private int _editorIndex;
[Parameter]
public string Content { get; set; }
@@ -173,7 +174,11 @@
_rawhtml = Content;
_originalrawhtml = _rawhtml; // preserve for comparison later
_originalrichhtml = "";
- _contentchanged = true; // identifies when Content parameter has changed
+
+ if (Content != _originalrawhtml)
+ {
+ _contentchanged = true; // identifies when Content parameter has changed
+ }
if (!AllowRichText)
{
@@ -275,18 +280,18 @@
// return original raw html content
return _originalrawhtml;
}
- }
- }
+ }
+ }
- public async Task InsertRichImage()
- {
- _message = string.Empty;
- if (_richfilemanager)
- {
- var file = _fileManager.GetFile();
+ public async Task InsertRichImage()
+ {
+ _message = string.Empty;
+ if (_richfilemanager)
+ {
+ var file = _fileManager.GetFile();
if (file != null)
{
- await interop.InsertImage(_editorElement, file.Url, ((!string.IsNullOrEmpty(file.Description)) ? file.Description : file.Name));
+ await interop.InsertImage(_editorElement, file.Url, ((!string.IsNullOrEmpty(file.Description)) ? file.Description : file.Name), _editorIndex);
_richhtml = await interop.GetHtml(_editorElement);
_richfilemanager = false;
}
@@ -297,6 +302,7 @@
}
else
{
+ _editorIndex = await interop.GetCurrentCursor(_editorElement);
_richfilemanager = true;
}
StateHasChanged();
diff --git a/Oqtane.Client/Modules/Controls/RichTextEditorInterop.cs b/Oqtane.Client/Modules/Controls/RichTextEditorInterop.cs
index 6765cad9..338f240a 100644
--- a/Oqtane.Client/Modules/Controls/RichTextEditorInterop.cs
+++ b/Oqtane.Client/Modules/Controls/RichTextEditorInterop.cs
@@ -105,13 +105,25 @@ namespace Oqtane.Modules.Controls
}
}
- public Task InsertImage(ElementReference quillElement, string imageUrl, string altText)
+ public ValueTask GetCurrentCursor(ElementReference quillElement)
+ {
+ try
+ {
+ return _jsRuntime.InvokeAsync("Oqtane.RichTextEditor.getCurrentCursor", quillElement);
+ }
+ catch
+ {
+ return new ValueTask(Task.FromResult(0));
+ }
+ }
+
+ public Task InsertImage(ElementReference quillElement, string imageUrl, string altText, int editorIndex)
{
try
{
_jsRuntime.InvokeAsync | | |