add support for trial periods

This commit is contained in:
Shaun Walker 2021-09-03 15:24:51 -04:00
parent 233da1508b
commit 07165ce68d
8 changed files with 85 additions and 11 deletions

View File

@ -80,6 +80,7 @@ else
<strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]&nbsp;&nbsp;|&nbsp;&nbsp; <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]&nbsp;&nbsp;|&nbsp;&nbsp;
@SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>&nbsp;&nbsp;|&nbsp;&nbsp; @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>&nbsp;&nbsp;|&nbsp;&nbsp;
@SharedLocalizer["Search.Version"]: <strong>@context.Version</strong> @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong>
@((MarkupString)(context.TrialPeriod > 0 ? "&nbsp;&nbsp;|&nbsp;&nbsp;<strong>" + context.TrialPeriod + " " + @SharedLocalizer["Trial"] + "</strong>" : ""))
</td> </td>
<td style="width: 1px; vertical-align: middle;"> <td style="width: 1px; vertical-align: middle;">
@if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl)) @if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl))

View File

@ -32,6 +32,10 @@ else
{ {
<button type="button" class="btn btn-success" @onclick=@(async () => await DownloadLanguage(context.Code))>@SharedLocalizer["Upgrade"]</button> <button type="button" class="btn btn-success" @onclick=@(async () => await DownloadLanguage(context.Code))>@SharedLocalizer["Upgrade"]</button>
} }
else
{
@((MarkupString)PurchaseLink(context.Code))
}
</td> </td>
</Row> </Row>
</Pager> </Pager>
@ -91,6 +95,23 @@ else
return upgradeavailable; return upgradeavailable;
} }
private string PurchaseLink(string code)
{
string link = "";
if (_packages != null)
{
var package = _packages.Where(item => item.PackageId == (Constants.PackageId + ".Client." + code)).FirstOrDefault();
if (package != null)
{
if (package.Price > 0 && !string.IsNullOrEmpty(package.PaymentUrl))
{
link = "<a class=\"btn btn-primary\" style=\"text-decoration: none !important\" href=\"" + package.PaymentUrl + "\" target=\"_new\">" + package.Price.ToString("$#,##0.00") + "</a>";
}
}
}
return link;
}
private async Task DownloadLanguage(string code) private async Task DownloadLanguage(string code)
{ {
try try

View File

@ -37,6 +37,7 @@
<strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]&nbsp;&nbsp;|&nbsp;&nbsp; <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]&nbsp;&nbsp;|&nbsp;&nbsp;
@SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>&nbsp;&nbsp;|&nbsp;&nbsp; @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>&nbsp;&nbsp;|&nbsp;&nbsp;
@SharedLocalizer["Search.Version"]: <strong>@context.Version</strong> @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong>
@((MarkupString)(context.TrialPeriod > 0 ? "&nbsp;&nbsp;|&nbsp;&nbsp;<strong>" + context.TrialPeriod + " " + @SharedLocalizer["Trial"] + "</strong>" : ""))
</td> </td>
<td style="width: 1px; vertical-align: middle;"> <td style="width: 1px; vertical-align: middle;">
@if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl)) @if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl))

View File

@ -39,6 +39,10 @@ else
{ {
<button type="button" class="btn btn-success" @onclick=@(async () => await DownloadModule(context.PackageName, context.Version))>@SharedLocalizer["Upgrade"]</button> <button type="button" class="btn btn-success" @onclick=@(async () => await DownloadModule(context.PackageName, context.Version))>@SharedLocalizer["Upgrade"]</button>
} }
else
{
@((MarkupString)PurchaseLink(context.PackageName))
}
</td> </td>
</Row> </Row>
</Pager> </Pager>
@ -82,6 +86,23 @@ else
return upgradeavailable; return upgradeavailable;
} }
private string PurchaseLink(string packagename)
{
string link = "";
if (!string.IsNullOrEmpty(packagename) && _packages != null)
{
var package = _packages.Where(item => item.PackageId == packagename).FirstOrDefault();
if (package != null)
{
if (package.Price > 0 && !string.IsNullOrEmpty(package.PaymentUrl))
{
link = "<a class=\"btn btn-primary\" style=\"text-decoration: none !important\" href=\"" + package.PaymentUrl + "\" target=\"_new\">" + package.Price.ToString("$#,##0.00") + "</a>";
}
}
}
return link;
}
private async Task DownloadModule(string packagename, string version) private async Task DownloadModule(string packagename, string version)
{ {
try try

View File

@ -37,6 +37,7 @@
<strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]&nbsp;&nbsp;|&nbsp;&nbsp; <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]&nbsp;&nbsp;|&nbsp;&nbsp;
@SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>&nbsp;&nbsp;|&nbsp;&nbsp; @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>&nbsp;&nbsp;|&nbsp;&nbsp;
@SharedLocalizer["Search.Version"]: <strong>@context.Version</strong> @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong>
@((MarkupString)(context.TrialPeriod > 0 ? "&nbsp;&nbsp;|&nbsp;&nbsp;<strong>" + context.TrialPeriod + " " + @SharedLocalizer["Trial"] + "</strong>" : ""))
</td> </td>
<td style="width: 1px; vertical-align: middle;"> <td style="width: 1px; vertical-align: middle;">
@if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl)) @if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl))

View File

@ -40,6 +40,10 @@ else
{ {
<button type="button" class="btn btn-success" @onclick=@(async () => await DownloadTheme(context.PackageName, context.Version))>@SharedLocalizer["Upgrade"]</button> <button type="button" class="btn btn-success" @onclick=@(async () => await DownloadTheme(context.PackageName, context.Version))>@SharedLocalizer["Upgrade"]</button>
} }
else
{
@((MarkupString)PurchaseLink(context.PackageName))
}
</td> </td>
<td></td> <td></td>
</Row> </Row>
@ -99,6 +103,23 @@ else
} }
} }
private string PurchaseLink(string packagename)
{
string link = "";
if (!string.IsNullOrEmpty(packagename) && _packages != null)
{
var package = _packages.Where(item => item.PackageId == packagename).FirstOrDefault();
if (package != null)
{
if (package.Price > 0 && !string.IsNullOrEmpty(package.PaymentUrl))
{
link = "<a class=\"btn btn-primary\" style=\"text-decoration: none !important\" href=\"" + package.PaymentUrl + "\" target=\"_new\">" + package.Price.ToString("$#,##0.00") + "</a>";
}
}
}
return link;
}
private async Task DeleteTheme(Theme Theme) private async Task DeleteTheme(Theme Theme)
{ {
try try

View File

@ -300,4 +300,7 @@
<data name="Review License Terms" xml:space="preserve"> <data name="Review License Terms" xml:space="preserve">
<value>Review License Terms</value> <value>Review License Terms</value>
</data> </data>
<data name="Trial" xml:space="preserve">
<value>Day Trial</value>
</data>
</root> </root>

View File

@ -76,5 +76,10 @@ namespace Oqtane.Models
/// The Url for purchasing the package ( if commercial ) /// The Url for purchasing the package ( if commercial )
/// </summary> /// </summary>
public string PaymentUrl { get; set; } public string PaymentUrl { get; set; }
/// <summary>
/// The trial period in days ( if commercial )
/// </summary>
public int TrialPeriod { get; set; }
} }
} }