forked from siteserver/cms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHomeContentsController.cs
More file actions
95 lines (80 loc) · 4.38 KB
/
HomeContentsController.cs
File metadata and controls
95 lines (80 loc) · 4.38 KB
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
using System;
using System.Collections.Generic;
using System.Web.Http;
using SiteServer.CMS.Core;
using SiteServer.CMS.DataCache;
using SiteServer.CMS.Model;
using SiteServer.CMS.Plugin;
using SiteServer.CMS.Plugin.Impl;
namespace SiteServer.API.Controllers.Home
{
[RoutePrefix("home/contents")]
public class HomeContentsController : ApiController
{
private const string Route = "";
[HttpGet, Route(Route)]
public IHttpActionResult List()
{
try
{
var request = new RequestImpl();
var siteId = request.GetQueryInt("siteId");
var channelId = request.GetQueryInt("channelId");
var page = request.GetQueryInt("page");
if (!request.IsUserLoggin ||
!request.UserPermissionsImpl.HasChannelPermissions(siteId, channelId,
ConfigManager.ChannelPermissions.ContentView))
{
return Unauthorized();
}
var siteInfo = SiteManager.GetSiteInfo(siteId);
if (siteInfo == null) return BadRequest("无法确定内容对应的站点");
var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId);
if (channelInfo == null) return BadRequest("无法确定内容对应的栏目");
var columns = ContentManager.GetContentColumns(siteInfo, channelInfo, false);
var pluginIds = PluginContentManager.GetContentPluginIds(channelInfo);
var pluginColumns = PluginContentManager.GetContentColumns(pluginIds);
var pageContentInfoList = new List<ContentInfo>();
var count = ContentManager.GetCount(siteInfo, channelInfo);
var pages = Convert.ToInt32(Math.Ceiling((double)count / siteInfo.Additional.PageSize));
if (pages == 0) pages = 1;
if (count > 0)
{
var offset = siteInfo.Additional.PageSize * (page - 1);
var limit = siteInfo.Additional.PageSize;
var pageContentIds = ContentManager.GetContentIdList(siteInfo, channelInfo, offset, limit);
var sequence = offset + 1;
foreach (var contentId in pageContentIds)
{
var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId);
if (contentInfo == null) continue;
pageContentInfoList.Add(ContentManager.Calculate(sequence++, contentInfo, columns, pluginColumns));
}
}
var permissions = new
{
IsAdd = request.UserPermissionsImpl.HasChannelPermissions(siteInfo.Id, channelInfo.Id, ConfigManager.ChannelPermissions.ContentAdd) && channelInfo.Additional.IsContentAddable,
IsDelete = request.UserPermissionsImpl.HasChannelPermissions(siteInfo.Id, channelInfo.Id, ConfigManager.ChannelPermissions.ContentDelete),
IsEdit = request.UserPermissionsImpl.HasChannelPermissions(siteInfo.Id, channelInfo.Id, ConfigManager.ChannelPermissions.ContentEdit),
IsTranslate = request.UserPermissionsImpl.HasChannelPermissions(siteInfo.Id, channelInfo.Id, ConfigManager.ChannelPermissions.ContentTranslate),
IsCheck = request.UserPermissionsImpl.HasChannelPermissions(siteInfo.Id, channelInfo.Id, ConfigManager.ChannelPermissions.ContentCheck),
IsCreate = request.UserPermissionsImpl.HasSitePermissions(siteInfo.Id, ConfigManager.WebSitePermissions.Create) || request.UserPermissionsImpl.HasChannelPermissions(siteInfo.Id, channelInfo.Id, ConfigManager.ChannelPermissions.CreatePage),
IsChannelEdit = request.UserPermissionsImpl.HasChannelPermissions(siteInfo.Id, channelInfo.Id, ConfigManager.ChannelPermissions.ChannelEdit)
};
return Ok(new
{
Value = pageContentInfoList,
Count = count,
Pages = pages,
Permissions = permissions,
Columns = columns
});
}
catch (Exception ex)
{
LogUtils.AddErrorLog(ex);
return InternalServerError(ex);
}
}
}
}