From b3883c90f5cb8f159c0592cea1e6d8b9b579afd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikul=C3=A1=C5=A1=20Hobl=C3=ADk?= Date: Thu, 31 Oct 2024 10:00:09 +0100 Subject: [PATCH 1/4] Gateway page to HBP GitHub repo --- .../Pages/Premium/GatewayToGithub.razor | 18 +++++++++++++ .../Pages/Premium/GatewayToGithub.razor.cs | 25 +++++++++++++++++++ .../Pages/Premium/GetPremium.razor | 2 +- Havit.Blazor.sln | 2 +- 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor create mode 100644 Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor new file mode 100644 index 00000000..1cfc0959 --- /dev/null +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor @@ -0,0 +1,18 @@ +@page "/premium/access-content" + +

Access source code

+ +

Only for premium subscribers.

+ +
+ +
+ + +
+
diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs new file mode 100644 index 00000000..30c5ca6e --- /dev/null +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs @@ -0,0 +1,25 @@ +namespace Havit.Blazor.Documentation.Pages.Premium; + +public partial class GatewayToGithub +{ + [SupplyParameterFromQuery] public string Url { get; set; } + [Inject] private NavigationManager NavigationManager { get; set; } + + private bool _skipGatewayPage = false; + + private void LearnMoreAboutPremium() + { + NavigationManager.NavigateTo("/premium"); + } + + private void ContinueToGitHub() + { + if (_skipGatewayPage) + { + // TODO: save preference into a cookie and redirect user right away if the cookie is present + } + + var unescaped = Uri.UnescapeDataString(Url); + NavigationManager.NavigateTo(unescaped); + } +} diff --git a/Havit.Blazor.Documentation/Pages/Premium/GetPremium.razor b/Havit.Blazor.Documentation/Pages/Premium/GetPremium.razor index 4e4877d8..96a4f855 100644 --- a/Havit.Blazor.Documentation/Pages/Premium/GetPremium.razor +++ b/Havit.Blazor.Documentation/Pages/Premium/GetPremium.razor @@ -1,4 +1,4 @@ -@page "/premium/" +@page "/premium" @layout EmptyLayout Get Premium | HAVIT Blazor Bootstrap - Free components for ASP.NET Core Blazor diff --git a/Havit.Blazor.sln b/Havit.Blazor.sln index 49467cca..1da470ff 100644 --- a/Havit.Blazor.sln +++ b/Havit.Blazor.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# 17 +# Visual Studio Version 17 VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Havit.Blazor.Components.Web", "Havit.Blazor.Components.Web\Havit.Blazor.Components.Web.csproj", "{DF1C423F-ACA1-446E-A9F1-099DFDF70D44}" From 800483107a3f53ffb1649b9b08cb6ccffe3581c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikul=C3=A1=C5=A1=20Hobl=C3=ADk?= Date: Thu, 31 Oct 2024 11:02:22 +0100 Subject: [PATCH 2/4] Gateway page to HBP GitHub repo - skip next time functionality --- .../Pages/Premium/GatewayToGitHub.razor.js | 5 +++ .../Pages/Premium/GatewayToGithub.razor | 4 ++ .../Pages/Premium/GatewayToGithub.razor.cs | 37 ++++++++++++++++--- .../Pages/Premium/GetPremium.razor | 2 +- 4 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 Havit.Blazor.Documentation/Pages/Premium/GatewayToGitHub.razor.js diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGitHub.razor.js b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGitHub.razor.js new file mode 100644 index 00000000..99b3da13 --- /dev/null +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGitHub.razor.js @@ -0,0 +1,5 @@ +export function setSkipGatewayPage(skipGatewayPage) { + const date = new Date(); + date.setTime(date.getTime() + (60 * 24 * 60 * 60 * 1000)); // 60 days + document.cookie = "SkipGatewayPage=" + skipGatewayPage + "; expires = " + date.toGMTString() + "; path = /"; +} diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor index 1cfc0959..88818b79 100644 --- a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor @@ -1,5 +1,9 @@ @page "/premium/access-content" + + @GenerateHeadContent() + +

Access source code

Only for premium subscribers.

diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs index 30c5ca6e..d762099a 100644 --- a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs @@ -1,25 +1,50 @@ -namespace Havit.Blazor.Documentation.Pages.Premium; +using Microsoft.JSInterop; -public partial class GatewayToGithub +namespace Havit.Blazor.Documentation.Pages.Premium; + +public partial class GatewayToGitHub { [SupplyParameterFromQuery] public string Url { get; set; } + [Inject] private NavigationManager NavigationManager { get; set; } + [Inject] private IJSRuntime JSRuntime { get; set; } + + private IJSObjectReference _jsModule; private bool _skipGatewayPage = false; + private string _gitHubFolderUrl = "https://github.com/havit/Havit.Blazor.Premium"; + + protected override void OnParametersSet() + { + _gitHubFolderUrl = Uri.UnescapeDataString(Url); + } private void LearnMoreAboutPremium() { NavigationManager.NavigateTo("/premium"); } - private void ContinueToGitHub() + private async Task ContinueToGitHub() { if (_skipGatewayPage) { - // TODO: save preference into a cookie and redirect user right away if the cookie is present + await EnsureJsModuleAsync(); + await _jsModule.InvokeVoidAsync("setSkipGatewayPage", true); } + NavigationManager.NavigateTo(_gitHubFolderUrl); + } - var unescaped = Uri.UnescapeDataString(Url); - NavigationManager.NavigateTo(unescaped); + private async Task EnsureJsModuleAsync() + { + _jsModule ??= await JSRuntime.ImportModuleAsync($"./Pages/Premium/{nameof(GatewayToGitHub)}.razor.js"); + } + + private MarkupString GenerateHeadContent() + { + return (MarkupString)$@""; } } diff --git a/Havit.Blazor.Documentation/Pages/Premium/GetPremium.razor b/Havit.Blazor.Documentation/Pages/Premium/GetPremium.razor index 96a4f855..83696c82 100644 --- a/Havit.Blazor.Documentation/Pages/Premium/GetPremium.razor +++ b/Havit.Blazor.Documentation/Pages/Premium/GetPremium.razor @@ -62,7 +62,7 @@

Contact sales

Tailor-made support for your team - + From 59ab96f44139e36939fbb53f41533a96da4f5001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikul=C3=A1=C5=A1=20Hobl=C3=ADk?= Date: Thu, 31 Oct 2024 16:05:58 +0100 Subject: [PATCH 3/4] Gateway page - text adj. --- .../{GatewayToGithub.razor => GatewayToPremium.razor} | 9 ++++----- ...atewayToGithub.razor.cs => GatewayToPremium.razor.cs} | 6 +++--- ...atewayToGitHub.razor.js => GatewayToPremium.razor.js} | 0 3 files changed, 7 insertions(+), 8 deletions(-) rename Havit.Blazor.Documentation/Pages/Premium/{GatewayToGithub.razor => GatewayToPremium.razor} (73%) rename Havit.Blazor.Documentation/Pages/Premium/{GatewayToGithub.razor.cs => GatewayToPremium.razor.cs} (90%) rename Havit.Blazor.Documentation/Pages/Premium/{GatewayToGitHub.razor.js => GatewayToPremium.razor.js} (100%) diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor similarity index 73% rename from Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor rename to Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor index 88818b79..be4cf125 100644 --- a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor @@ -4,19 +4,18 @@ @GenerateHeadContent() -

Access source code

+

HAVIT Blazor Premium

Only for premium subscribers.

- + OnClick="ContinueToPremiumContent" + Outline="true" />
diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.cs similarity index 90% rename from Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs rename to Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.cs index d762099a..40e1179d 100644 --- a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGithub.razor.cs +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.cs @@ -2,7 +2,7 @@ namespace Havit.Blazor.Documentation.Pages.Premium; -public partial class GatewayToGitHub +public partial class GatewayToPremium { [SupplyParameterFromQuery] public string Url { get; set; } @@ -24,7 +24,7 @@ private void LearnMoreAboutPremium() NavigationManager.NavigateTo("/premium"); } - private async Task ContinueToGitHub() + private async Task ContinueToPremiumContent() { if (_skipGatewayPage) { @@ -36,7 +36,7 @@ private async Task ContinueToGitHub() private async Task EnsureJsModuleAsync() { - _jsModule ??= await JSRuntime.ImportModuleAsync($"./Pages/Premium/{nameof(GatewayToGitHub)}.razor.js"); + _jsModule ??= await JSRuntime.ImportModuleAsync($"./Pages/Premium/{nameof(GatewayToPremium)}.razor.js"); } private MarkupString GenerateHeadContent() diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToGitHub.razor.js b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.js similarity index 100% rename from Havit.Blazor.Documentation/Pages/Premium/GatewayToGitHub.razor.js rename to Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.js From 8a21a923df321243ab87b0111e8f0b334dd8aa5f Mon Sep 17 00:00:00 2001 From: Robert Haken Date: Thu, 31 Oct 2024 18:33:06 +0100 Subject: [PATCH 4/4] review - simplification, fixes --- .../Pages/Premium/GatewayToPremium.razor | 25 ++++++++------- .../Pages/Premium/GatewayToPremium.razor.cs | 31 ++++++++++--------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor index be4cf125..4b9a8981 100644 --- a/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor @@ -1,21 +1,24 @@ @page "/premium/access-content" - @GenerateHeadContent() + @GenerateHeadContent()

HAVIT Blazor Premium

-

Only for premium subscribers.

+

You are accessing content for Premium subscribers.

- -
- - -
+
+ + +
+
diff --git a/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.cs b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.cs index 40e1179d..e50723a8 100644 --- a/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.cs +++ b/Havit.Blazor.Documentation/Pages/Premium/GatewayToPremium.razor.cs @@ -2,7 +2,7 @@ namespace Havit.Blazor.Documentation.Pages.Premium; -public partial class GatewayToPremium +public partial class GatewayToPremium : IAsyncDisposable { [SupplyParameterFromQuery] public string Url { get; set; } @@ -10,14 +10,7 @@ public partial class GatewayToPremium [Inject] private IJSRuntime JSRuntime { get; set; } private IJSObjectReference _jsModule; - private bool _skipGatewayPage = false; - private string _gitHubFolderUrl = "https://github.com/havit/Havit.Blazor.Premium"; - - protected override void OnParametersSet() - { - _gitHubFolderUrl = Uri.UnescapeDataString(Url); - } private void LearnMoreAboutPremium() { @@ -31,7 +24,7 @@ private async Task ContinueToPremiumContent() await EnsureJsModuleAsync(); await _jsModule.InvokeVoidAsync("setSkipGatewayPage", true); } - NavigationManager.NavigateTo(_gitHubFolderUrl); + NavigationManager.NavigateTo(Url); } private async Task EnsureJsModuleAsync() @@ -41,10 +34,20 @@ private async Task EnsureJsModuleAsync() private MarkupString GenerateHeadContent() { - return (MarkupString)$@""; + return (MarkupString)$$""" + + """; + } + + public async ValueTask DisposeAsync() + { + if (_jsModule != null) + { + await _jsModule.DisposeAsync(); + } } }