Refactor onboarding and verification workflows.
Adjusted interaction types and state filters to better streamline onboarding and verification processes. Updated UI labels, navigation, and modal dialogs to reflect new terminology and improve usability. Enhanced filtering logic and added new interaction types to support the revised process.
This commit is contained in:
@@ -90,6 +90,15 @@ namespace FoodsharingSiegen.Contracts.Entity
|
|||||||
Admin = 300
|
Admin = 300
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum ProspectStateFilter
|
||||||
|
{
|
||||||
|
OnBoarding = 10,
|
||||||
|
|
||||||
|
Verification = 20,
|
||||||
|
|
||||||
|
Completed = 30
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The user group enum
|
/// The user group enum
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -190,6 +199,16 @@ namespace FoodsharingSiegen.Contracts.Entity
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The complete interaction type
|
/// The complete interaction type
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Complete = 70
|
Complete = 70,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The StepInBriefing interaction type
|
||||||
|
/// </summary>
|
||||||
|
StepInBriefing = 80,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The StepInBriefing interaction type
|
||||||
|
/// </summary>
|
||||||
|
ReleasedForVerification = 90
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<div style="white-space: nowrap;">
|
<div style="white-space: nowrap;">
|
||||||
<span title="@interaction.User.Memo">@interaction.User.Name</span> (@interaction.Date.ToShortDateString())
|
<span title="@interaction.User.Memo">@interaction.User.Name</span> (@interaction.Date.ToShortDateString())
|
||||||
|
|
||||||
@if ((Prospect is not { Complete: true } || interaction.Type == InteractionType.Complete) && AllowAddInteraction)
|
@if ((Prospect is not { Complete: true } || interaction.Type == InteractionType.Complete) && AllowInteraction)
|
||||||
{
|
{
|
||||||
<span> <a href=""><i class="fa-solid fa-square-xmark" @onclick="async () => await RemoveClick.InvokeAsync(interaction.Id)" @onclick:preventDefault></i></a></span>
|
<span> <a href=""><i class="fa-solid fa-square-xmark" @onclick="async () => await RemoveClick.InvokeAsync(interaction.Id)" @onclick:preventDefault></i></a></span>
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@if (Prospect is not {Complete: true } && (Interactions.Count == 0 || Multiple) && AllowAddInteraction)
|
@if (Prospect is not {Complete: true } && (Interactions.Count == 0 || Multiple) && AllowInteraction)
|
||||||
{
|
{
|
||||||
if (Multiple) ButtonIconClass = "fa-solid fa-plus";
|
if (Multiple) ButtonIconClass = "fa-solid fa-plus";
|
||||||
<div class="m-auto">
|
<div class="m-auto">
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace FoodsharingSiegen.Server.Controls
|
|||||||
/// Gets or sets the value of the allow add interaction (ab)
|
/// Gets or sets the value of the allow add interaction (ab)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public bool AllowAddInteraction { get; set; }
|
public bool AllowInteraction { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the value of the button text (ab)
|
/// Gets or sets the value of the button text (ab)
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
@using FoodsharingSiegen.Contracts.Entity
|
@inherits FsBase
|
||||||
@using FoodsharingSiegen.Contracts.Helper
|
|
||||||
@using FoodsharingSiegen.Server.BaseClasses
|
|
||||||
@inherits FsBase
|
|
||||||
|
|
||||||
@{
|
@{
|
||||||
var divClass = $"{CssClass} pc-main";
|
var divClass = $"{CssClass} pc-main";
|
||||||
if (Prospect is {Complete: true }) divClass += " complete";
|
if (Prospect is { Complete: true }) divClass += " complete";
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="@divClass">
|
<div class="@divClass">
|
||||||
@@ -37,7 +34,7 @@
|
|||||||
<InteractionRow
|
<InteractionRow
|
||||||
Prospect="Prospect"
|
Prospect="Prospect"
|
||||||
Type="InteractionType.Welcome"
|
Type="InteractionType.Welcome"
|
||||||
AllowAddInteraction="@CurrentUser.IsInGroup(UserGroup.WelcomeTeam)"
|
AllowInteraction="@(StateFilter == ProspectStateFilter.OnBoarding && CurrentUser.IsInGroup(UserGroup.WelcomeTeam))"
|
||||||
AddClick="() => AddInteraction(InteractionType.Welcome)"
|
AddClick="() => AddInteraction(InteractionType.Welcome)"
|
||||||
RemoveClick="@RemoveInteraction"
|
RemoveClick="@RemoveInteraction"
|
||||||
Caption="Begrüßung"
|
Caption="Begrüßung"
|
||||||
@@ -45,10 +42,21 @@
|
|||||||
IconClass="fa-solid fa-handshake-simple">
|
IconClass="fa-solid fa-handshake-simple">
|
||||||
</InteractionRow>
|
</InteractionRow>
|
||||||
|
|
||||||
|
<InteractionRow
|
||||||
|
Prospect="Prospect"
|
||||||
|
Type="InteractionType.StepInBriefing"
|
||||||
|
AllowInteraction="@(StateFilter == ProspectStateFilter.OnBoarding && CurrentUser.IsInGroup(UserGroup.WelcomeTeam))"
|
||||||
|
AddClick="() => AddInteraction(InteractionType.StepInBriefing)"
|
||||||
|
RemoveClick="@RemoveInteraction"
|
||||||
|
Caption="Neulingstreffen"
|
||||||
|
ButtonIconClass="fa-solid fa-check"
|
||||||
|
IconClass="fa-solid fa-graduation-cap">
|
||||||
|
</InteractionRow>
|
||||||
|
|
||||||
<InteractionRow
|
<InteractionRow
|
||||||
Prospect="Prospect"
|
Prospect="Prospect"
|
||||||
Type="InteractionType.EinAb"
|
Type="InteractionType.EinAb"
|
||||||
AllowAddInteraction="@CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.StoreManager, UserGroup.Ambassador)"
|
AllowInteraction="@(StateFilter == ProspectStateFilter.OnBoarding && CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.StoreManager, UserGroup.Ambassador))"
|
||||||
AddClick="() => AddInteraction(InteractionType.EinAb)"
|
AddClick="() => AddInteraction(InteractionType.EinAb)"
|
||||||
RemoveClick="@RemoveInteraction"
|
RemoveClick="@RemoveInteraction"
|
||||||
Caption="Einführungen"
|
Caption="Einführungen"
|
||||||
@@ -64,21 +72,37 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<InteractionRow
|
||||||
|
Prospect="Prospect"
|
||||||
|
Type="InteractionType.ReleasedForVerification"
|
||||||
|
AllowInteraction="@(StateFilter == ProspectStateFilter.OnBoarding && CurrentUser.IsInGroup(UserGroup.WelcomeTeam))"
|
||||||
|
AddClick="() => AddInteraction(InteractionType.ReleasedForVerification)"
|
||||||
|
RemoveClick="@RemoveInteraction"
|
||||||
|
Caption="Freigabe zur Verifizierung"
|
||||||
|
ButtonIconClass="fa-solid fa-check"
|
||||||
|
IconClass="fa-solid fa-id-card">
|
||||||
|
</InteractionRow>
|
||||||
|
|
||||||
|
@if (CurrentUser.IsInGroup(UserGroup.Ambassador))
|
||||||
|
{
|
||||||
<InteractionRow
|
<InteractionRow
|
||||||
Prospect="Prospect"
|
Prospect="Prospect"
|
||||||
Type="InteractionType.IdCheck"
|
Type="InteractionType.IdCheck"
|
||||||
AllowAddInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
AllowInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
||||||
AddClick="() => AddInteraction(InteractionType.IdCheck)"
|
AddClick="() => AddInteraction(InteractionType.IdCheck)"
|
||||||
RemoveClick="@RemoveInteraction"
|
RemoveClick="@RemoveInteraction"
|
||||||
Caption="Perso checken"
|
Caption="Perso checken"
|
||||||
ButtonIconClass="fa-solid fa-check"
|
ButtonIconClass="fa-solid fa-check"
|
||||||
IconClass="fa-solid fa-magnifying-glass">
|
IconClass="fa-solid fa-magnifying-glass">
|
||||||
</InteractionRow>
|
</InteractionRow>
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (StateFilter > ProspectStateFilter.OnBoarding)
|
||||||
|
{
|
||||||
<InteractionRow
|
<InteractionRow
|
||||||
Prospect="Prospect"
|
Prospect="Prospect"
|
||||||
Type="InteractionType.PrintPass"
|
Type="InteractionType.PrintPass"
|
||||||
AllowAddInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
AllowInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
||||||
AddClick="() => AddInteraction(InteractionType.PrintPass)"
|
AddClick="() => AddInteraction(InteractionType.PrintPass)"
|
||||||
RemoveClick="@RemoveInteraction"
|
RemoveClick="@RemoveInteraction"
|
||||||
Caption="FS-Ausweis (print)"
|
Caption="FS-Ausweis (print)"
|
||||||
@@ -88,7 +112,7 @@
|
|||||||
|
|
||||||
<InteractionRow
|
<InteractionRow
|
||||||
Prospect="Prospect"
|
Prospect="Prospect"
|
||||||
AllowAddInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
AllowInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
||||||
Type="InteractionType.Verify"
|
Type="InteractionType.Verify"
|
||||||
AddClick="() => AddInteraction(InteractionType.Verify)"
|
AddClick="() => AddInteraction(InteractionType.Verify)"
|
||||||
RemoveClick="@RemoveInteraction"
|
RemoveClick="@RemoveInteraction"
|
||||||
@@ -105,7 +129,7 @@
|
|||||||
|
|
||||||
<InteractionRow
|
<InteractionRow
|
||||||
Prospect="Prospect"
|
Prospect="Prospect"
|
||||||
AllowAddInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
AllowInteraction="@CurrentUser.IsInGroup(UserGroup.Ambassador)"
|
||||||
Type="InteractionType.Complete"
|
Type="InteractionType.Complete"
|
||||||
AddClick="() => AddInteraction(InteractionType.Complete)"
|
AddClick="() => AddInteraction(InteractionType.Complete)"
|
||||||
RemoveClick="@RemoveInteraction"
|
RemoveClick="@RemoveInteraction"
|
||||||
@@ -113,6 +137,7 @@
|
|||||||
ButtonIconClass="fa-solid fa-check"
|
ButtonIconClass="fa-solid fa-check"
|
||||||
IconClass="fa-solid fa-flag-checkered">
|
IconClass="fa-solid fa-flag-checkered">
|
||||||
</InteractionRow>
|
</InteractionRow>
|
||||||
|
}
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ namespace FoodsharingSiegen.Server.Controls
|
|||||||
|
|
||||||
[Parameter] public EventCallback<Guid> RemoveInteraction { get; set; }
|
[Parameter] public EventCallback<Guid> RemoveInteraction { get; set; }
|
||||||
|
|
||||||
|
[Parameter] public ProspectStateFilter StateFilter { get; set; }
|
||||||
|
|
||||||
[Parameter] public string? CssClass { get; set; }
|
[Parameter] public string? CssClass { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 480px;
|
max-width: 480px;
|
||||||
border: 1px solid #533a20;
|
border: 1px solid #533a20;
|
||||||
border-radius: 7px;
|
border-radius: 3px;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</ModalBody>
|
</ModalBody>
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button Color="Color.Secondary" Clicked="ModalReference.Hide">Abbrechen</Button>
|
<Button Color="Color.Secondary" Clicked="ModalReference.Hide">Abbrechen</Button>
|
||||||
<Button Color="Color.Primary" Clicked="@AddInteraction">Speichern</Button>
|
<Button Color="Color.Primary" Clicked="@AddInteraction">OK</Button>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
</Modal>
|
</Modal>
|
||||||
@@ -72,6 +72,14 @@ namespace FoodsharingSiegen.Server.Dialogs
|
|||||||
_header = "Als fertig markieren";
|
_header = "Als fertig markieren";
|
||||||
_showInfo = true;
|
_showInfo = true;
|
||||||
break;
|
break;
|
||||||
|
case InteractionType.StepInBriefing:
|
||||||
|
_header = "Neulingstreffen absolviert";
|
||||||
|
break;
|
||||||
|
case InteractionType.ReleasedForVerification:
|
||||||
|
_header = "Zur Verifizierung freigegeben";
|
||||||
|
_showInfo = true;
|
||||||
|
_infoName = "Hinweis";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Interaction = new Interaction
|
Interaction = new Interaction
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
@inherits FsBase
|
@inherits FsBase
|
||||||
|
|
||||||
<PageTitle>@AppSettings.Title - Aktuelle Einarbeitungen</PageTitle>
|
<PageTitle>@AppSettings.Title - Neue Foodsaver</PageTitle>
|
||||||
<h2>Aktuelle Einarbeitungen</h2>
|
<h2>Neue Foodsaver</h2>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
Color="Color.Primary"
|
Color="Color.Primary"
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
{
|
{
|
||||||
<div class="row m-0">
|
<div class="row m-0">
|
||||||
<Repeater Items="@filterList">
|
<Repeater Items="@filterList">
|
||||||
<ProspectContainer Prospect="context" InteractionModal="InteractionModal" ProspectModal="ProspectModal" RemoveInteraction="RemoveInteraction"></ProspectContainer>
|
<ProspectContainer Prospect="context" InteractionModal="InteractionModal" ProspectModal="ProspectModal" RemoveInteraction="RemoveInteraction" StateFilter="ProspectStateFilter.OnBoarding"></ProspectContainer>
|
||||||
</Repeater>
|
</Repeater>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ namespace FoodsharingSiegen.Server.Pages
|
|||||||
{
|
{
|
||||||
var parameter = new GetProspectsParameter
|
var parameter = new GetProspectsParameter
|
||||||
{
|
{
|
||||||
CannotHaveInteractions = [InteractionType.Complete, InteractionType.Verify]
|
CannotHaveInteractions = [InteractionType.Complete, InteractionType.Verify, InteractionType.ReleasedForVerification]
|
||||||
};
|
};
|
||||||
var prospectsR = await ProspectService.GetProspectsAsync(parameter);
|
var prospectsR = await ProspectService.GetProspectsAsync(parameter);
|
||||||
if (prospectsR.Success) ProspectList = prospectsR.Data;
|
if (prospectsR.Success) ProspectList = prospectsR.Data;
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace FoodsharingSiegen.Server.Pages
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private async Task LoadProspects()
|
private async Task LoadProspects()
|
||||||
{
|
{
|
||||||
var parameter = new GetProspectsParameter { MustHaveInteractions = new() { InteractionType.Complete } };
|
var parameter = new GetProspectsParameter { MustHaveInteractions = [InteractionType.Complete] };
|
||||||
var prospectsR = await ProspectService.GetProspectsAsync(parameter);
|
var prospectsR = await ProspectService.GetProspectsAsync(parameter);
|
||||||
if (prospectsR.Success) ProspectList = prospectsR.Data;
|
if (prospectsR.Success) ProspectList = prospectsR.Data;
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
@inherits FsBase
|
@inherits FsBase
|
||||||
|
|
||||||
<PageTitle>@AppSettings.Title - Wartende Einarbeitungen</PageTitle>
|
<PageTitle>@AppSettings.Title - </PageTitle>
|
||||||
|
|
||||||
<h2>Wartende Einarbeitungen</h2>
|
<h2>Freischalten</h2>
|
||||||
|
|
||||||
@{
|
@{
|
||||||
var filterList = ProspectList;
|
var filterList = ProspectList;
|
||||||
@@ -21,10 +21,9 @@
|
|||||||
<TextEdit TextChanged="FilterText_Changed" Placeholder="Suchen..." Debounce="true" DebounceInterval="150" />
|
<TextEdit TextChanged="FilterText_Changed" Placeholder="Suchen..." Debounce="true" DebounceInterval="150" />
|
||||||
@if (filterList?.Any() == true)
|
@if (filterList?.Any() == true)
|
||||||
{
|
{
|
||||||
<div class="text-center font-weight-bold">Bereits verifiziert, aber noch nicht abgeschlossen. Zum Beispiel, wenn noch der Druck-Ausweis fehlt o.ä.</div>
|
|
||||||
<div class="row m-0">
|
<div class="row m-0">
|
||||||
<Repeater Items="@filterList">
|
<Repeater Items="@filterList">
|
||||||
<ProspectContainer Prospect="context" InteractionModal="InteractionModal" ProspectModal="ProspectModal" RemoveInteraction="RemoveInteraction"></ProspectContainer>
|
<ProspectContainer Prospect="context" InteractionModal="InteractionModal" ProspectModal="ProspectModal" RemoveInteraction="RemoveInteraction" StateFilter="ProspectStateFilter.Verification"></ProspectContainer>
|
||||||
</Repeater>
|
</Repeater>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ namespace FoodsharingSiegen.Server.Pages
|
|||||||
var parameter = new GetProspectsParameter
|
var parameter = new GetProspectsParameter
|
||||||
{
|
{
|
||||||
CannotHaveInteractions = [InteractionType.Complete],
|
CannotHaveInteractions = [InteractionType.Complete],
|
||||||
MustHaveInteractions = [InteractionType.Verify]
|
MustHaveInteractions = [InteractionType.ReleasedForVerification]
|
||||||
};
|
};
|
||||||
var prospectsR = await ProspectService.GetProspectsAsync(parameter);
|
var prospectsR = await ProspectService.GetProspectsAsync(parameter);
|
||||||
if (prospectsR.Success) ProspectList = prospectsR.Data;
|
if (prospectsR.Success) ProspectList = prospectsR.Data;
|
||||||
|
|||||||
@@ -4,50 +4,54 @@
|
|||||||
Einarbeitungen<br />
|
Einarbeitungen<br />
|
||||||
@(AppSettings.SidebarTitle ?? AppSettings.Title)
|
@(AppSettings.SidebarTitle ?? AppSettings.Title)
|
||||||
</div>
|
</div>
|
||||||
<div class="row px-3">
|
<div class="d-flex px-3 mt-3 justify-content-center text-center font-weight-bold">
|
||||||
<div class="col">
|
Hallo @CurrentUser.Name!
|
||||||
<div class="nav-item">
|
|
||||||
<NavLink class="nav-link justify-content-center" href="profile" Match="NavLinkMatch.All" title="Profil">
|
|
||||||
<span class="fas fa-user mr-1" aria-hidden="true" style="font-size: 1.4em;"></span>
|
|
||||||
</NavLink>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<div class="nav-item">
|
|
||||||
<NavLink class="nav-link justify-content-center" href="logout" Match="NavLinkMatch.All" title="Ausloggen">
|
|
||||||
<span class="fa-solid fa-door-open mr-1" aria-hidden="true" style="font-size: 1.4em;"></span>
|
|
||||||
</NavLink>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
<div class="nav-item px-3">
|
<div class="nav-item px-3">
|
||||||
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
|
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
|
||||||
<span class="fas fa-user-plus mr-1" aria-hidden="true" style="font-size: 1.4em;"></span> Neue Foodsaver
|
<span class="fas fa-user-plus mr-2" aria-hidden="true" style="font-size: 1.4em;"></span> Einarbeiten
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-item px-3">
|
<div class="nav-item px-3">
|
||||||
<NavLink class="nav-link" href="todo" Match="NavLinkMatch.All">
|
<NavLink class="nav-link" href="todo" Match="NavLinkMatch.All">
|
||||||
<span class="fas fa-user-clock mr-1" aria-hidden="true" style="font-size: 1.4em;"></span> ToDo
|
<span class="fas fa-user-pen mr-2" aria-hidden="true" style="font-size: 1.4em;"></span> Freischalten
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-item px-3">
|
<div class="nav-item px-3">
|
||||||
<NavLink class="nav-link" href="done" Match="NavLinkMatch.All">
|
<NavLink class="nav-link" href="done" Match="NavLinkMatch.All">
|
||||||
<span class="fas fa-user-shield mr-1" aria-hidden="true" style="font-size: 1.4em;"></span> Abgeschlossen
|
<span class="fas fa-user-check mr-2" aria-hidden="true" style="font-size: 1.4em;"></span> Fertig
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
@if (CurrentUser.IsAdmin())
|
@if (CurrentUser.IsAdmin())
|
||||||
{
|
{
|
||||||
<div class="nav-item px-3 mt-3">
|
<div class="nav-item px-3">
|
||||||
<NavLink class="nav-link" href="users" Match="NavLinkMatch.All">
|
<NavLink class="nav-link" href="users" Match="NavLinkMatch.All">
|
||||||
<span class="fas fa-users mr-1" aria-hidden="true" style="font-size: 1.4em;"></span> Benutzer
|
<span class="fas fa-users mr-2" aria-hidden="true" style="font-size: 1.4em;"></span> Benutzer
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<div class="nav-item px-3">
|
||||||
|
<NavLink class="nav-link" href="profile" Match="NavLinkMatch.All">
|
||||||
|
<span class="fas fa-user mr-2" aria-hidden="true" style="font-size: 1.4em;"></span> Profil
|
||||||
|
</NavLink>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="nav-item px-3">
|
<div class="nav-item px-3">
|
||||||
<NavLink class="nav-link" href="audit" Match="NavLinkMatch.All">
|
<NavLink class="nav-link" href="audit" Match="NavLinkMatch.All">
|
||||||
<span class="fa-solid fa-clock-rotate-left mr-1" aria-hidden="true" style="font-size: 1.4em;"></span> Aktivitäten
|
<span class="fa-solid fa-clock-rotate-left mr-2" aria-hidden="true" style="font-size: 1.4em;"></span> Aktivitäten
|
||||||
|
</NavLink>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav-item px-3">
|
||||||
|
<NavLink class="nav-link" href="logout" Match="NavLinkMatch.All">
|
||||||
|
<span class="fa-solid fa-door-open mr-2" aria-hidden="true" style="font-size: 1.4em;"></span> Ausloggen
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -7,6 +7,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Settings": {
|
"Settings": {
|
||||||
"Title": "Foodsharing Olpe-Wenden"
|
"Title": "Andres Superduperbezirk"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user