forked from oqtane/oqtane.blogs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Index.razor
105 lines (99 loc) · 4.12 KB
/
Index.razor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
@using Microsoft.Extensions.Localization
@using Oqtane.Blogs.Services
@using Oqtane.Blogs.Models
@namespace Oqtane.Blogs
@inherits ModuleBase
@inject IBlogService BlogService
@inject NavigationManager NavigationManager
@inject ISettingService SettingService
@inject IStringLocalizer<Index> Localizer
@if (_blogs != null)
{
if (PageState.QueryString.ContainsKey("id"))
{
if (_blogs.Count > 0)
{
<h2>@_blogs[0].Title</h2>
<p>
@((MarkupString)@_blogs[0].Content)
<br /><br /><b>@Localizer["Posted by"]</b> @_blogs[0].CreatedBy <b>@Localizer["on"]</b> @_blogs[0].CreatedOn.ToShortDateString()
</p>
<NavLink class="btn btn-secondary" href="@NavigateUrl()">@Localizer["View All Blogs"]</NavLink>
}
}
else
{
<ActionLink Action="Add" Security="SecurityAccessLevel.Edit" Text="Add Blog" />
<Pager Format="Grid" Items="@_blogs">
<Row>
<div class="col">
<br />
<a href="@NavigateUrl(PageState.Page.Path, "id=" + context.BlogId.ToString())">
<h2>@context.Title</h2>
</a>
<p>
<b>@Localizer["Posted by"]</b> @context.CreatedBy <b>@Localizer["on"]</b> @context.CreatedOn.ToShortDateString()
<br />
@if (context.Content.Length > _summarylength)
{
@((MarkupString)@context.Content.Substring(0, _summarylength))
}
else
{
@((MarkupString)@context.Content)
}
</p>
<div>
<NavLink class="btn btn-secondary" href="@NavigateUrl(PageState.Page.Path, "id=" + context.BlogId.ToString())">@Localizer["Details"]</NavLink>
<ActionLink Action="Edit" Parameters="@($"id=" + context.BlogId.ToString())" />
<ActionDialog Header="@(Localizer["Delete Blog"])" Message="@(Localizer["Are You Sure You Wish To Delete This Blog?"])" Action="Delete" Security="SecurityAccessLevel.Edit" Class="btn btn-danger" OnClick="@(async () => await DeleteBlog(context.BlogId))" />
</div>
</div>
</Row>
</Pager>
}
<br />
}
@code {
private List<Blog> _blogs;
private int _maxblogs;
private int _summarylength;
protected override async Task OnParametersSetAsync()
{
try
{
Dictionary<string, string> settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
_maxblogs = int.Parse(SettingService.GetSetting(settings, "MaxBogs", "20"));
_summarylength = int.Parse(SettingService.GetSetting(settings, "SummaryLength", "500"));
if (PageState.QueryString.ContainsKey("blogid"))
{
_blogs = new List<Blog>();
_blogs.Add(await BlogService.GetBlogAsync(int.Parse(PageState.QueryString["blogid"]), ModuleState.ModuleId));
}
else
{
_blogs = await BlogService.GetBlogsAsync(ModuleState.ModuleId);
_blogs = _blogs.OrderByDescending(item => item.CreatedOn).Take(_maxblogs).ToList();
}
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Loading Blogs {Error}", ex.Message);
ModuleInstance.AddModuleMessage(Localizer["Error Loading Blogs"], MessageType.Error);
}
}
private async Task DeleteBlog(int id)
{
try
{
await BlogService.DeleteBlogAsync(id, ModuleState.ModuleId);
await logger.LogInformation("Blog Deleted {BlogId}", id);
NavigationManager.NavigateTo(NavigateUrl());
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Deleting Blog {BlogId} {Error}", id, ex.Message);
ModuleInstance.AddModuleMessage(Localizer["Error Deleting Blog"], MessageType.Error);
}
}
}