有没有办法向内容标签节点添加计数限制? 例如,您有以下节点结构:
Home
|
|-- About
|
|-- Projects
|
|-- Project 1
|
|-- Project 2
|
|-- News
|
|-- News 1
|
|-- News 2
|
|
...
客户1:
选择标准主机包并获得10个项目和10个新闻项目。
客户2:
选择最终的托管包,获得1000个项目和1000个新闻项目。
如何限制客户只创建某个项目和新网站?
答案 0 :(得分:0)
您可以挂钩到Umbraco应用程序事件处理程序以捕获ContentService.Created事件(ContentService.Creating事件已过时,因为它提供了相同的选项)。
public class AppEvents : IApplicationEventHandler
{
public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
ContentService.Created += ContentService_Creating;
}
}
然后,您可以编写Created事件的扩展名,该扩展名将检查正在创建的页面类型,并根据当前用户的UserType应用限制。这只是意味着您取消事件并阻止创建页面。
public void ContentService_Creating(IContentService sender, Umbraco.Core.Events.NewEventArgs<IContent> e)
{
switch (e.Entity.ContentType.Alias)
{
case "ProjectAlias":
case "NewsItemAlias":
var contentService = Umbraco.Web.UmbracoContext.Current.Application.Services.ContentService;
var userTypeAlias = UmbracoContext.Current.Security.CurrentUser.UserType.Alias;
var count = contentService.GetChildren(e.Entity.ParentId).Count();
if (string.Equals(userTypeAlias, "Standard") && count >= 10)
{
e.Cancel = true;
}
else if (string.Equals(userTypeAlias, "Ultimate") && count >= 1000)
{
e.Cancel = true;
}
break;
default:
break;
}
}
这是未经测试的,但我之前使用过类似的方法来阻止某些用户创建/删除页面。
答案 1 :(得分:0)
我建议您使用包 NodeRestrict 。
您可以通过配置文件指定用户可以在父节点下创建的最大节点。例如。对于你的情况:
@RequestMapping(value = "/init/filter", method = RequestMethod.GET)
public final Reponse filterGrid(
@RequestParam(value = "nom", required = false) final String nom,
@RequestParam(value = "matricule", required = false) final String matricule,
final HttpServletRequest httpRequete,
final HttpServletResponse httpReponse, Model model) {
}