Browse Source

Created AlertManager

pull/301/head
Halil İbrahim Kalkan 8 years ago
parent
commit
712c736ab0
  1. 6
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelper.cs
  2. 3
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelperService.cs
  3. 0
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/MainNavbarMenuViewComponent.cs
  4. 16
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/PageAlerts/Default.cshtml
  5. 20
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/PageAlerts/PageAlertsViewComponent.cs
  6. 5
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml
  7. 2
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml
  8. 5
      src/Volo.Abp.AspNetCore.Mvc.UI/RazorPages/AbpPageModel.cs
  9. 0
      src/Volo.Abp.AspNetCore.Mvc.UI/RazorPages/ServiceBasedPageModelActivatorProvider.cs
  10. 32
      src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/AlertList.cs
  11. 14
      src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/AlertManager.cs
  12. 30
      src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/AlertMessage.cs
  13. 4
      src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/AlertType.cs
  14. 7
      src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/IAlertManager.cs

6
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelper.cs

@ -1,8 +1,10 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
using Volo.Abp.AspNetCore.Mvc.UI.Alerts;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public class AbpAlertTagHelper : AbpTagHelper<AbpAlertTagHelper, AbpAlertTagHelperService>
{
public AbpAlertType AlertType { get; set; } = AbpAlertType.Default;
public AlertType AlertType { get; set; } = AlertType.Default;
public bool? Dismissible { get; set; }

3
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelperService.cs

@ -1,5 +1,6 @@
using System;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Alerts;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
@ -20,7 +21,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
output.Attributes.Add("role", "alert");
output.Attributes.AddClass("alert");
if (TagHelper.AlertType != AbpAlertType.Default)
if (TagHelper.AlertType != AlertType.Default)
{
output.Attributes.AddClass("alert-" + TagHelper.AlertType.ToString().ToLowerInvariant());
}

0
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/AbpMenuViewComponent.cs → src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/MainNavbarMenuViewComponent.cs

16
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/PageAlerts/Default.cshtml

@ -0,0 +1,16 @@
@model Volo.Abp.AspNetCore.Mvc.UI.Alerts.AlertList
@if (Model.Any())
{
<div id="AbpPageAlerts">
@foreach (var alertMessage in Model)
{
<abp-alert alert-type="@alertMessage.Type" dismissible="@alertMessage.Dismissible">
@if (alertMessage.Title != null)
{
<h4>@alertMessage.Title</h4>
}
@alertMessage.Text
</abp-alert>
}
</div>
}

20
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/PageAlerts/PageAlertsViewComponent.cs

@ -0,0 +1,20 @@
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI.Alerts;
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.PageAlerts
{
public class PageAlertsViewComponent : AbpViewComponent
{
private readonly IAlertManager _alertManager;
public PageAlertsViewComponent(IAlertManager alertManager)
{
_alertManager = alertManager;
}
public IViewComponentResult Invoke(string name)
{
return View("~/Themes/Basic/Components/PageAlerts/Default.cshtml", _alertManager.Alerts);
}
}
}

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

@ -1,5 +1,6 @@
@using Volo.Abp.AspNetCore.Mvc.AntiForgery
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.MainNavbar
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.PageAlerts
@inject IAbpAntiForgeryManager AbpAntiForgeryManager
@{
Layout = null;
@ -25,7 +26,9 @@
@(await Component.InvokeAsync<MainNavbarViewComponent>())
<div class="container"> @* TODO: Create option to select 'container' or 'container-fluid' *@
<div class="container">
@* TODO: Create option to select 'container' or 'container-fluid' *@
@(await Component.InvokeAsync<PageAlertsViewComponent>())
@RenderBody()
</div>

2
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml

@ -1,5 +1,6 @@
@using Volo.Abp.AspNetCore.Mvc.AntiForgery
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.MainNavbar
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.PageAlerts
@inject IAbpAntiForgeryManager AbpAntiForgeryManager
@{
Layout = null;
@ -24,6 +25,7 @@
<body>
<div class="container">
@(await Component.InvokeAsync<PageAlertsViewComponent>())
@RenderBody()
</div>

5
src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/RazorPages/AbpPageModel.cs → src/Volo.Abp.AspNetCore.Mvc.UI/RazorPages/AbpPageModel.cs

@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Volo.Abp.AspNetCore.Mvc.UI.Alerts;
using Volo.Abp.AspNetCore.Mvc.Validation;
using Volo.Abp.Guids;
using Volo.Abp.MultiTenancy;
@ -34,6 +35,10 @@ namespace Volo.Abp.AspNetCore.Mvc.RazorPages
public IAuthorizationService AuthorizationService { get; set; }
public IAlertManager AlertManager { get; set; }
public AlertList Alerts => AlertManager.Alerts;
protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current;
public IClock Clock { get; set; }

0
src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/RazorPages/ServiceBasedPageModelActivatorProvider.cs → src/Volo.Abp.AspNetCore.Mvc.UI/RazorPages/ServiceBasedPageModelActivatorProvider.cs

32
src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/AlertList.cs

@ -0,0 +1,32 @@
using System.Collections.Generic;
namespace Volo.Abp.AspNetCore.Mvc.UI.Alerts
{
public class AlertList : List<AlertMessage>
{
public void Add(AlertType type, string text, string title = null, bool dismissible = true)
{
Add(new AlertMessage(type, text, title, dismissible));
}
public void Info(string text, string title = null, bool dismissible = true)
{
Add(new AlertMessage(AlertType.Info, text, title, dismissible));
}
public void Warning(string text, string title = null, bool dismissible = true)
{
Add(new AlertMessage(AlertType.Warning, text, title, dismissible));
}
public void Danger(string text, string title = null, bool dismissible = true)
{
Add(new AlertMessage(AlertType.Danger, text, title, dismissible));
}
public void Success(string text, string title = null, bool dismissible = true)
{
Add(new AlertMessage(AlertType.Success, text, title, dismissible));
}
}
}

14
src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/AlertManager.cs

@ -0,0 +1,14 @@
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.UI.Alerts
{
public class AlertManager : IAlertManager, IScopedDependency
{
public AlertList Alerts { get; }
public AlertManager()
{
Alerts = new AlertList();
}
}
}

30
src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/AlertMessage.cs

@ -0,0 +1,30 @@
using JetBrains.Annotations;
namespace Volo.Abp.AspNetCore.Mvc.UI.Alerts
{
public class AlertMessage
{
[NotNull]
public string Text
{
get => _text;
set => _text = Check.NotNullOrWhiteSpace(value, nameof(value));
}
private string _text;
public AlertType Type { get; set; }
[CanBeNull]
public string Title { get; set; }
public bool Dismissible { get; set; }
public AlertMessage(AlertType type, [NotNull] string text, string title = null, bool dismissible = true)
{
Type = type;
Text = Check.NotNullOrWhiteSpace(text, nameof(text));
Title = title;
Dismissible = dismissible;
}
}
}

4
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertType.cs → src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/AlertType.cs

@ -1,6 +1,6 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
namespace Volo.Abp.AspNetCore.Mvc.UI.Alerts
{
public enum AbpAlertType
public enum AlertType
{
Default,
Primary,

7
src/Volo.Abp.AspNetCore.Mvc.UI/UI/Alerts/IAlertManager.cs

@ -0,0 +1,7 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Alerts
{
public interface IAlertManager
{
AlertList Alerts { get; }
}
}
Loading…
Cancel
Save