Hello,
If you want to download the template for version 4.4.3, please try the command below:
abp new CryptoTrader -t app-pro --tiered --version 4.4.3
If you want to download the more recent version, change your CLI version to the version of the template you want to download. For instance:
dotnet tool update -g Volo.Abp.Cli --version 6.0.0
Hi, can we confirm that abp cli
and abp suite
have the same version(e.g. 5.3.0
)?
Hi, can you please send the output of the following command?
abp login-info
Sorry, my fault. I expected this to work, but it didn't. I tested the code below. Can you try?
abp.libs.sweetAlert.config.error.footer = "<button type='button' id='DownloadLog' class='swal2-cancel swal2-styled'>Download Log</button>"
abp.libs.sweetAlert.config.error.didOpen = () => {
$("#DownloadLog").click(function() {
console.log("Test");
});
}
The blog was inaccurate? You cannot do it the way they said?
I have no idea about this, I did not read the article. I tried to explain the simplest solution completely according to your requirement.
Either way I tried doing it your way. We don't have the angular UI on my project, so I added it into migrations.
Screenshots may belong to the angular interface, but there are similar pages in other user interfaces.
Does it use the key the name, "Abp.Account.EMailConfirmationLink"? I inserted a value for "Abp.Account.EMailConfirmationLink" with content for the email, but it did not use it when I send the confirmation email.
Did you try it from the user interface or did you try to change it by writing code?
Also, where are the original templates coming from? Is it a resource or something? Since database, after initial migration, does not have the list of templates shown above. The "AbpTextTemplateContents" table is empty on initial migration.
Yes, it is a resource.
Resource path: Volo/Abp/Account/Emailing/Templates/EmailConfirmationLink.tpl
If you do not want to make this change through the user interface, I recommend you to read the following document if you want to do it with code. => https://docs.abp.io/en/abp/latest/Emailing#overriding-replacing-the-standard-templates
How to trigger Copy Log button click for this solution, can you give an example? Because, it can not be triggered.
I think you can do this in your globally used script file by using the id
you gave to the button.
Note: If you don't have a global js file, you can do it similarly to the global.css
' config.
$( "#DownloadLog" ).click(function() {
alert( "Handler for .click() called." );
});
Unfortunately, the Suite
does not support this feature. However, there is no obstacle for you to manually add the properties you want according to the requirements of your application.
Hello,
I opened a pull-reqeuest on the topic. See: https://github.com/abpframework/abp/pull/14188
Copy the code of the model class you want to override and paste it into the contents of your own model class. For example: https://github.com/abpframework/abp/blob/dev/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs
Then update the model on the page to reference your customized model class. For instance: https://github.com/abpframework/abp/blob/317eb03942c49ddbdff09a7a7d7bfcf7ff3dd518/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml#L8
You can find the code you want below ✌️
Themes/LeptonX/Layouts/Account/Default.cshtml
@using Microsoft.Extensions.Localization
@using Microsoft.Extensions.Options
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX
@using Volo.Abp.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling
@using Volo.Abp.AspNetCore.Mvc.UI.Theming
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetScripts
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetStyles
@using Volo.Abp.Ui.Branding
@using Volo.Abp.AspNetCore.Mvc.AntiForgery
@using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.Localization
@using Volo.Abp.AspNetCore.MultiTenancy
@using Volo.Abp.MultiTenancy
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Themes.LeptonX.Components.Common.PageAlerts
@inject IAbpAntiForgeryManager AbpAntiForgeryManager
@inject IBrandingProvider BrandingProvider
@inject LeptonXStyleProvider LeptonXStyleProvider
@inject IStringLocalizer<AbpUiMultiTenancyResource> MultiTenancyStringLocalizer
@inject ITenantResolveResultAccessor TenantResolveResultAccessor
@inject IOptions<AbpMultiTenancyOptions> MultiTenancyOptions
@inject ICurrentTenant CurrentTenant
@{
AbpAntiForgeryManager.SetCookie();
var langDir = CultureHelper.IsRtl ? "rtl" : string.Empty;
var title = ViewBag.Title == null ? BrandingProvider.AppName : ViewBag.Title;
var logoUrl = BrandingProvider.LogoUrl == null ? null : "--lpx-logo: url(" + BrandingProvider.LogoUrl + ");";
var logoReverseUrl = BrandingProvider.LogoReverseUrl == null ? null : "--lpx-logo: url(" +
BrandingProvider.LogoReverseUrl + ");";
var selectedStyle = await LeptonXStyleProvider.GetSelectedStyleAsync();
var selectedStyleFileName = CultureHelper.IsRtl ? selectedStyle + ".rtl" : selectedStyle;
}
<!DOCTYPE html>
<html lang="@CultureInfo.CurrentCulture.Name" dir="@langDir">
<head>
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Account)
<title>@title</title>
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<meta charset="UTF-8" />
<meta name="description" content="@ViewBag.MetaDescription">
<link rel="icon" href="~/images/favicon/logo-favicon_1.svg" type="image/svg+xml">
<link rel="manifest" href="~/images/favicon/site.webmanifest">
<abp-style-bundle name="@LeptonXThemeBundles.Styles.Global" />
<link href="/Themes/LeptonX/Global/side-menu/css/bootstrap-@(selectedStyleFileName).css" type="text/css" rel="stylesheet" id="lpx-theme-bootstrap-@selectedStyle" />
<link href="/Themes/LeptonX/Global/side-menu/css/@(selectedStyleFileName).css" type="text/css" rel="stylesheet" id="lpx-theme-color-@selectedStyle" />
@await Component.InvokeAsync(typeof(WidgetStylesViewComponent))
@await RenderSectionAsync("styles", false)
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.Last, StandardLayouts.Account)
@*TODO Removed from this layout to prevent unvisible logos*@
@if (logoReverseUrl != null)
{
<style>
:root .lpx-theme-dark {
@logoUrl
}
:root .lpx-theme-dim {
@logoUrl
}
</style>
}
@if (logoReverseUrl != null)
{
<style>
:root .lpx-theme-light {
@logoReverseUrl
}
</style>
}
</head>
<body>
@await Component.InvokeLayoutHookAsync(LayoutHooks.Body.First, StandardLayouts.Account)
<div class="container-fluid overflow-hidden">
<div class="row">
<div class="col-lg-6 px-0 d-none d-lg-block overflow-hidden lpx-login-image-area">
<img src="/Themes/LeptonX/Global/assets/img/login-bg.jpg" alt="login image" class="login-img">
<div class="lpx-brand-logo lpx-login-big-logo"></div>
</div>
<div class="col-lg-6 position-relative">
<div class="row align-items-center min-vh-100 py-5 pb-0">
<div class="col-11 mx-auto lpx-login-form-max-width">
<div class="lpx-brand-logo mb-4 mx-auto lpx-login-sm-logo"></div>
<div class="card">
<div class="card-body p-4 p-lg-5 pb-0 pb-lg-0">
@await Component.InvokeAsync(typeof(PageAlertsViewComponent))
@if (MultiTenancyOptions.Value.IsEnabled &&
(TenantResolveResultAccessor.Result?.AppliedResolvers?.Contains(CookieTenantResolveContributor.ContributorName)
== true ||
TenantResolveResultAccessor.Result?.AppliedResolvers?.Contains(QueryStringTenantResolveContributor.ContributorName)
== true))
{
<div class="row">
<div class="col">
<span style="font-size: .8em;"
class="text-uppercase text-muted">@MultiTenancyStringLocalizer["Tenant"]</span><br />
<h6 class="m-0 d-inline-block">
@if (CurrentTenant.Id == null)
{
<span>
@MultiTenancyStringLocalizer["NotSelected"]
</span>
}
else
{
<strong>@(CurrentTenant.Name ??
CurrentTenant.Id.Value.ToString())</strong>
}
</h6>
</div>
<div class="col-auto">
<a id="AbpTenantSwitchLink" href="javascript:;"
class="btn btn-sm btn-outline-primary">@MultiTenancyStringLocalizer["Switch"]</a>
</div>
</div>
}
<hr />
<div class="login-wrapper">
<div class="auth-form">
@RenderBody()
</div>
</div>
</div>
</div>
</div>
</div>
<footer>
@await Html.PartialAsync("~/Themes/LeptonX/Layouts/Account/_Footer.cshtml")
</footer>
</div>
</div>
</div>
<abp-script-bundle name="@LeptonXThemeBundles.Scripts.Global" />
<script type="text/javascript" src="~/Abp/ApplicationConfigurationScript"></script>
<script type="text/javascript" src="~/Abp/ServiceProxyScript"></script>
@await Component.InvokeAsync(typeof(WidgetScriptsViewComponent))
@await RenderSectionAsync("scripts", false)
@await Component.InvokeLayoutHookAsync(LayoutHooks.Body.Last, StandardLayouts.Account)
</body>
</html>