Browse Source

Resolved #908

pull/1884/head
Armağan Ünlü 7 years ago
parent
commit
50880a9914
  1. 33
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/MainNavbar/Default.cshtml
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml
  3. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml
  4. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/Default.cshtml
  5. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/LanguageSwitch/Default.cshtml
  6. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/UserMenu/Default.cshtml
  7. 50
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml
  8. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml
  9. 73
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/wwwroot/themes/basic/layout.css
  10. 61
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml
  11. 66
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml
  12. 23
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml
  13. 6
      modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml
  14. 26
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml

33
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/MainNavbar/Default.cshtml

@ -1,20 +1,21 @@
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Brand @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Brand
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Menu @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Menu
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Toolbar @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Toolbar
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top" id="main-navbar"> <nav class="navbar navbar-expand-md navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4" id="main-navbar" style="min-height: 4rem;">
@(await Component.InvokeAsync<MainNavbarBrandViewComponent>()) <div class="container">
<button class="navbar-toggler" type="button" data-toggle="collapse" @(await Component.InvokeAsync<MainNavbarBrandViewComponent>())
data-target="#main-navbar-collapse" aria-controls="main-navbar-collapse" <button class="navbar-toggler" type="button" data-toggle="collapse"
aria-expanded="false" aria-label="Toggle navigation"> data-target="#main-navbar-collapse" aria-controls="main-navbar-collapse"
<span class="navbar-toggler-icon"></span> aria-expanded="false" aria-label="Toggle navigation">
</button> <span class="navbar-toggler-icon"></span>
<div class="collapse navbar-collapse" id="main-navbar-collapse"> </button>
<ul class="navbar-nav mr-auto"> <div class="collapse navbar-collapse" id="main-navbar-collapse">
@(await Component.InvokeAsync<MainNavbarMenuViewComponent>()) <ul class="navbar-nav mx-auto">
</ul> @(await Component.InvokeAsync<MainNavbarMenuViewComponent>())
</ul>
<span id="main-navbar-tools"> <ul class="navbar-nav">
@(await Component.InvokeAsync<MainNavbarToolbarViewComponent>()) @(await Component.InvokeAsync<MainNavbarToolbarViewComponent>())
</span> </ul>
</div>
</div> </div>
</nav> </nav>

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml

@ -37,7 +37,7 @@
} }
@menuItem.DisplayName @menuItem.DisplayName
</a> </a>
<div class="dropdown-menu" aria-labelledby="Menu_@(menuItem.Name)"> <div class="dropdown-menu border-0 shadow-sm" aria-labelledby="Menu_@(menuItem.Name)">
@foreach (var childMenuItem in menuItem.Items) @foreach (var childMenuItem in menuItem.Items)
{ {
@await Html.PartialAsync("~/Themes/Basic/Components/Menu/_MenuItem.cshtml", childMenuItem) @await Html.PartialAsync("~/Themes/Basic/Components/Menu/_MenuItem.cshtml", childMenuItem)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml

@ -33,7 +33,7 @@ else
@Model.DisplayName @Model.DisplayName
</span> </span>
</a> </a>
<div class="dropdown-menu"> <div class="dropdown-menu border-0 shadow-sm">
@foreach (var childMenuItem in Model.Items) @foreach (var childMenuItem in Model.Items)
{ {
@await Html.PartialAsync("~/Themes/Basic/Components/Menu/_MenuItem.cshtml", childMenuItem) @await Html.PartialAsync("~/Themes/Basic/Components/Menu/_MenuItem.cshtml", childMenuItem)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/Default.cshtml

@ -2,5 +2,5 @@
@model Toolbar @model Toolbar
@foreach (var toolbarItem in Model.Items.OrderBy(i => i.Order)) @foreach (var toolbarItem in Model.Items.OrderBy(i => i.Order))
{ {
<span>@(await Component.InvokeAsync(toolbarItem.ComponentType))</span> <li class="nav-item">@(await Component.InvokeAsync(toolbarItem.ComponentType))</li>
} }

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/LanguageSwitch/Default.cshtml

@ -1,11 +1,11 @@
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Toolbar.LanguageSwitch @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Toolbar.LanguageSwitch
@model LanguageSwitchViewComponentModel @model LanguageSwitchViewComponentModel
<div class="dropdown d-inline"> <div class="dropdown">
<a class="btn btn-link dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <a class="nav-link dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Model.CurrentLanguage.DisplayName @Model.CurrentLanguage.DisplayName
</a> </a>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink"> <div class="dropdown-menu dropdown-menu-right border-0 shadow-sm" aria-labelledby="dropdownMenuLink">
@foreach (var language in Model.OtherLanguages) @foreach (var language in Model.OtherLanguages)
{ {
<a class="dropdown-item" href="/Abp/Languages/Switch?culture=@(language.CultureName)&uiCulture=@(language.UiCultureName)">@language.DisplayName</a> <a class="dropdown-item" href="/Abp/Languages/Switch?culture=@(language.CultureName)&uiCulture=@(language.UiCultureName)">@language.DisplayName</a>

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/UserMenu/Default.cshtml

@ -7,14 +7,14 @@
@inject ICurrentTenant CurrentTenant @inject ICurrentTenant CurrentTenant
@inject IHtmlLocalizer<AbpUiResource> L @inject IHtmlLocalizer<AbpUiResource> L
@model ApplicationMenu @model ApplicationMenu
<div class="dropdown d-inline"> <div class="dropdown">
<a class="btn btn-link dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <a class="nav-link dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@CurrentUser.UserName @CurrentUser.UserName
</a> </a>
@if (Model.Items.Any()) @if (Model.Items.Any())
{ {
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuLink"> <div class="dropdown-menu dropdown-menu-right border-0 shadow-sm" aria-labelledby="dropdownMenuLink">
@foreach (var menuItem in Model.Items) @foreach (var menuItem in Model.Items)
{ {
var elementId = string.IsNullOrEmpty(menuItem.ElementId) ? string.Empty : $"id=\"{menuItem.ElementId}\""; var elementId = string.IsNullOrEmpty(menuItem.ElementId) ? string.Empty : $"id=\"{menuItem.ElementId}\"";

50
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml

@ -45,32 +45,42 @@
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.Last, StandardLayouts.Account) @await Component.InvokeLayoutHookAsync(LayoutHooks.Head.Last, StandardLayouts.Account)
</head> </head>
<body class="abp-account-layout"> <body class="abp-account-layout bg-light">
@await Component.InvokeLayoutHookAsync(LayoutHooks.Body.First, StandardLayouts.Account) @await Component.InvokeLayoutHookAsync(LayoutHooks.Body.First, StandardLayouts.Account)
@(await Component.InvokeAsync<MainNavbarViewComponent>()) @(await Component.InvokeAsync<MainNavbarViewComponent>())
<div class="@containerClass"> <div class="@containerClass">
<abp-row> <abp-row>
<abp-column size-md="_4" offset-md="_4"> <abp-column size-md="_5" class="mx-auto">
@if (MultiTenancyOptions.Value.IsEnabled && <div class="card shadow-sm rounded mb-3">
(TenantResolveResultAccessor.Result?.AppliedResolvers?.Contains(CookieTenantResolveContributor.ContributorName) == true)) <div class="card-body px-5">
{ <div class="row">
<div class="tenant-switch-box" style="background-color: #eee; margin-bottom: 20px; color: #000; padding: 10px; text-align: center;"> <div class="col">
<span style="color: #666;">@MultiTenancyStringLocalizer["Tenant"]: </span> <span style="font-size: .8em;" class="text-uppercase text-muted">@MultiTenancyStringLocalizer["Tenant"]</span><br />
<strong> <h6 class="m-0 d-inline-block">
@if (CurrentTenant.Id == null) @if (CurrentTenant.Id == null)
{ {
<i>@MultiTenancyStringLocalizer["NotSelected"]</i> <span>
} @MultiTenancyStringLocalizer["NotSelected"]
else </span>
{ }
@(CurrentTenant.Name ?? CurrentTenant.Id.Value.ToString()) else
} {
</strong> <strong>@(CurrentTenant.Name ?? CurrentTenant.Id.Value.ToString())</strong>
(<a id="AbpTenantSwitchLink" style="color: #333; cursor: pointer">@MultiTenancyStringLocalizer["Switch"]</a>) }
</div> </h6>
} </div>
<div class="col-auto">
@if (MultiTenancyOptions.Value.IsEnabled &&
(TenantResolveResultAccessor.Result?.AppliedResolvers?.Contains(CookieTenantResolveContributor.ContributorName) == true))
{
<a id="AbpTenantSwitchLink" href="javascript:;" class="btn btn-sm mt-3 btn-outline-primary">@MultiTenancyStringLocalizer["Switch"]</a>
}
</div>
</div>
</div>
</div>
@(await Component.InvokeAsync<PageAlertsViewComponent>()) @(await Component.InvokeAsync<PageAlertsViewComponent>())
@RenderBody() @RenderBody()
</abp-column> </abp-column>

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml

@ -49,14 +49,14 @@
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.Last, StandardLayouts.Application) @await Component.InvokeLayoutHookAsync(LayoutHooks.Head.Last, StandardLayouts.Application)
</head> </head>
<body class="abp-application-layout"> <body class="abp-application-layout bg-light">
@await Component.InvokeLayoutHookAsync(LayoutHooks.Body.First, StandardLayouts.Application) @await Component.InvokeLayoutHookAsync(LayoutHooks.Body.First, StandardLayouts.Application)
@(await Component.InvokeAsync<MainNavbarViewComponent>()) @(await Component.InvokeAsync<MainNavbarViewComponent>())
<div class="@containerClass"> <div class="@containerClass">
@(await Component.InvokeAsync<PageAlertsViewComponent>()) @(await Component.InvokeAsync<PageAlertsViewComponent>())
<div id="AbpContentToolbar" class="text-right mb-3"> <div id="AbpContentToolbar">
@RenderSection("content_toolbar", false) @RenderSection("content_toolbar", false)
</div> </div>
@RenderBody() @RenderBody()

73
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/wwwroot/themes/basic/layout.css

@ -1,36 +1,59 @@
body {
padding-top: 5rem;
}
body.abp-empty-layout {
padding-top: 0;
}
#main-navbar-tools a.dropdown-toggle { #main-navbar-tools a.dropdown-toggle {
text-decoration: none; text-decoration: none;
color: #fff; color: #fff;
} }
/* Main Menu */
.navbar .dropdown-submenu { .navbar .dropdown-submenu {
position: relative; position: relative;
} }
.navbar .dropdown-menu {
.navbar .dropdown-submenu a { margin: 0;
padding: 0.25rem 1.4rem; padding: 0;
}
.navbar .dropdown-menu a {
font-size: .9em;
padding: 10px 15px;
display: block;
min-width: 210px;
text-align: left;
border-radius: 0.25rem;
min-height: 44px;
} }
.navbar .dropdown-submenu a::after {
transform: rotate(-90deg);
position: absolute;
right: 16px;
top: 18px;
}
.navbar .dropdown-submenu .dropdown-menu {
top: 0;
left: 100%;
}
.card-header .btn {
padding: 2px 6px;
}
.card-header h5 {
margin: 0;
}
.container > .card {
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}
.navbar .dropdown-submenu a::after { @media screen and (min-width: 768px) {
transform: rotate(-90deg); .navbar .dropdown:hover > .dropdown-menu {
position: absolute; display: block;
right: 16px; }
top: 18px;
}
.navbar .dropdown-submenu .dropdown-menu { .navbar .dropdown-submenu:hover > .dropdown-menu {
top: 0; display: block;
left: 100%;
margin-left: .1rem;
margin-right: .1rem;
} }
}
.input-validation-error {
border-color: #dc3545;
}
.field-validation-error {
font-size: 0.8em;
}

61
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml

@ -3,37 +3,44 @@
@model Volo.Abp.Account.Web.Pages.Account.LoginModel @model Volo.Abp.Account.Web.Pages.Account.LoginModel
@inherits Volo.Abp.Account.Web.Pages.Account.AccountPage @inherits Volo.Abp.Account.Web.Pages.Account.AccountPage
@inject Volo.Abp.Settings.ISettingProvider SettingProvider @inject Volo.Abp.Settings.ISettingProvider SettingProvider
<h2>@L["Login"]</h2>
@if (Model.EnableLocalLogin) @if (Model.EnableLocalLogin)
{ {
<form method="post"> <div class="card mt-3 shadow-sm rounded">
<input asp-for="ReturnUrl" /> <div class="card-body p-5">
<input asp-for="ReturnUrlHash" /> <h4>@L["Login"]</h4>
<div class="form-group"> @if (string.Equals(await SettingProvider.GetOrNullAsync(AccountSettingNames.IsSelfRegistrationEnabled), "true", StringComparison.OrdinalIgnoreCase))
<label asp-for="LoginInput.UserNameOrEmailAddress"></label> {
<input asp-for="LoginInput.UserNameOrEmailAddress" class="form-control" /> <strong>
<span asp-validation-for="LoginInput.UserNameOrEmailAddress" class="text-danger"></span> Are you new user?
</div> <a href="@Url.Page("./Register", new {returnUrl = Model.ReturnUrl, returnUrlHash = Model.ReturnUrlHash})" class="text-decoration-none">@L["Register"]</a>
<div class="form-group"> </strong>
<label asp-for="LoginInput.Password"></label> }
<input asp-for="LoginInput.Password" class="form-control" /> <form method="post" class="mt-4">
<span asp-validation-for="LoginInput.Password" class="text-danger"></span> <input asp-for="ReturnUrl" />
</div> <input asp-for="ReturnUrlHash" />
<div class="form-check"> <div class="form-group">
<label asp-for="LoginInput.RememberMe" class="form-check-label"> <label asp-for="LoginInput.UserNameOrEmailAddress"></label>
<input asp-for="LoginInput.RememberMe" class="form-check-input" /> <input asp-for="LoginInput.UserNameOrEmailAddress" class="form-control" />
@Html.DisplayNameFor(m => m.LoginInput.RememberMe) <span asp-validation-for="LoginInput.UserNameOrEmailAddress" class="text-danger"></span>
</label> </div>
<div class="form-group">
<label asp-for="LoginInput.Password"></label>
<input asp-for="LoginInput.Password" class="form-control" />
<span asp-validation-for="LoginInput.Password" class="text-danger"></span>
</div>
<div class="form-check">
<label asp-for="LoginInput.RememberMe" class="form-check-label">
<input asp-for="LoginInput.RememberMe" class="form-check-input" />
@Html.DisplayNameFor(m => m.LoginInput.RememberMe)
</label>
</div>
<abp-button type="submit" button-type="Primary" name="Action" value="Login" class="btn-block btn-lg mt-3">@L["Login"]</abp-button>
</form>
</div> </div>
<abp-button type="button" button-type="Secondary" name="Action" value="Cancel">@L["Cancel"]</abp-button> @* TODO: Only show if identity server is used *@
<abp-button type="submit" button-type="Primary" name="Action" value="Login">@L["Login"]</abp-button>
</form>
<div style="padding-top: 20px"> <div class="card-footer text-center border-0">
@if (string.Equals(await SettingProvider.GetOrNullAsync(AccountSettingNames.IsSelfRegistrationEnabled), "true", StringComparison.OrdinalIgnoreCase)) <abp-button type="button" button-type="Link" name="Action" value="Cancel" class="px-2 py-0">@L["Cancel"]</abp-button> @* TODO: Only show if identity server is used *@
{ </div>
<a href="@Url.Page("./Register", new {returnUrl = Model.ReturnUrl, returnUrlHash = Model.ReturnUrlHash})">@L["Register"]</a>
}
</div> </div>
} }

66
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml

@ -17,34 +17,38 @@
@section scripts { @section scripts {
<abp-script src="/Pages/Account/Manage.js" /> <abp-script src="/Pages/Account/Manage.js" />
} }
<abp-card>
<abp-tabs tab-style="PillVertical"> <abp-card-body>
<abp-tab title="@L["ChangePassword"].Value"> <abp-tabs tab-style="PillVertical">
<abp-dynamic-form abp-model="@Model.ChangePasswordInfoModel" id="ChangePasswordForm"> <abp-tab title="@L["ChangePassword"].Value">
<abp-form-content /> <h4>@L["ChangePassword"].Value</h4><hr />
<abp-button type="submit" button-type="Primary" text="@L["Submit"].Value" /> <abp-dynamic-form abp-model="@Model.ChangePasswordInfoModel" id="ChangePasswordForm">
</abp-dynamic-form> <abp-form-content />
</abp-tab> <abp-button type="submit" button-type="Primary" text="@L["Submit"].Value" />
<abp-tab title="@L["PersonalSettings"].Value"> </abp-dynamic-form>
<form method="post" id="PersonalSettingsForm"> </abp-tab>
<abp-tab title="@L["PersonalSettings"].Value">
<abp-input asp-for="PersonalSettingsInfoModel.UserName" readonly="!isUserNameUpdateEnabled" /> <h4>@L["PersonalSettings"].Value</h4><hr />
<form method="post" id="PersonalSettingsForm">
<abp-row>
<abp-column size-md="_6"> <abp-input asp-for="PersonalSettingsInfoModel.UserName" readonly="!isUserNameUpdateEnabled" />
<abp-input asp-for="PersonalSettingsInfoModel.Name" />
</abp-column> <abp-row>
<abp-column size-md="_6"> <abp-column size-md="_6">
<abp-input asp-for="PersonalSettingsInfoModel.Surname" /> <abp-input asp-for="PersonalSettingsInfoModel.Name" />
</abp-column> </abp-column>
</abp-row> <abp-column size-md="_6">
<abp-input asp-for="PersonalSettingsInfoModel.Surname" />
<abp-input asp-for="PersonalSettingsInfoModel.Email" readonly="!isEmailUpdateEnabled" /> </abp-column>
</abp-row>
<abp-input asp-for="PersonalSettingsInfoModel.PhoneNumber" />
<abp-input asp-for="PersonalSettingsInfoModel.Email" readonly="!isEmailUpdateEnabled" />
<abp-button type="submit" button-type="Primary" text="@L["Submit"].Value" />
</form> <abp-input asp-for="PersonalSettingsInfoModel.PhoneNumber" />
</abp-tab>
<abp-button type="submit" button-type="Primary" text="@L["Submit"].Value" />
</abp-tabs> </form>
</abp-tab>
</abp-tabs>
</abp-card-body>
</abp-card>

23
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml

@ -1,10 +1,19 @@
@page @page
@model Volo.Abp.Account.Web.Pages.Account.RegisterModel @model Volo.Abp.Account.Web.Pages.Account.RegisterModel
@inherits Volo.Abp.Account.Web.Pages.Account.AccountPage @inherits Volo.Abp.Account.Web.Pages.Account.AccountPage
<h2>@L["Register"]</h2>
<form method="post"> <div class="card mt-3 shadow-sm rounded">
<abp-input asp-for="Input.UserName" auto-focus="true" /> <div class="card-body p-5">
<abp-input asp-for="Input.EmailAddress" /> <h4>@L["Register"]</h4>
<abp-input asp-for="Input.Password" /> <strong>
<abp-button button-type="Primary" type="submit">@L["Register"]</abp-button> Already registered?
</form> <a href="@Url.Page("./Login", new {returnUrl = Model.ReturnUrl, returnUrlHash = Model.ReturnUrlHash})" class="text-decoration-none">@L["Login"]</a>
</strong>
<form method="post" class="mt-4">
<abp-input asp-for="Input.UserName" auto-focus="true" />
<abp-input asp-for="Input.EmailAddress" />
<abp-input asp-for="Input.Password" />
<abp-button button-type="Primary" type="submit" class="btn-lg btn-block mt-4">@L["Register"]</abp-button>
</form>
</div>
</div>

6
modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml

@ -19,13 +19,11 @@
<div id="SettingManagementWrapper"> <div id="SettingManagementWrapper">
<abp-card> <abp-card>
<abp-card-body> <abp-card-body>
<abp-tabs tab-style="PillVertical" vertical-header-size="_3"> <abp-tabs tab-style="PillVertical" vertical-header-size="_3">
@foreach (var group in Model.SettingPageCreationContext.Groups) @foreach (var group in Model.SettingPageCreationContext.Groups)
{ {
<abp-tab title="@group.DisplayName"> <abp-tab title="@group.DisplayName">
<h2>@group.DisplayName</h2> <h2>@group.DisplayName</h2>
<hr class="my-4" /> <hr class="my-4" />
@await Component.InvokeAsync(group.ComponentType) @await Component.InvokeAsync(group.ComponentType)

26
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml

@ -11,15 +11,17 @@
<abp-script src="/Pages/Index.js" /> <abp-script src="/Pages/Index.js" />
</abp-script-bundle> </abp-script-bundle>
} }
<abp-card> <div class="jumbotron text-center">
<abp-card-header>@L["Welcome"]</abp-card-header> <h1>@L["Welcome"]</h1>
<abp-card-body> <div class="row">
<p>@L["LongWelcomeMessage"]</p> <div class="col-md-6 mx-auto">
@if (!CurrentUser.IsAuthenticated) <p>@L["LongWelcomeMessage"]</p>
{ <hr class="my-4"/>
<p><a abp-button="Primary" href="/Account/Login"><i class="fa fa-sign-in"></i> @L["Login"]</a></p> </div>
} </div>
<hr /> <a href="https://abp.io?ref=tmpl" target="_blank" class="btn btn-primary px-4">abp.io</a>
<p class="text-right"><a href="https://abp.io?ref=tmpl" target="_blank">abp.io</a></p> @if (!CurrentUser.IsAuthenticated)
</abp-card-body> {
</abp-card> <a abp-button="Primary" href="/Account/Login" class="px-4"><i class="fa fa-sign-in"></i> @L["Login"]</a>
}
</div>
Loading…
Cancel
Save