gpt4 book ai didi

liferay-6 - 在 liferay 6.1.0 中以编程方式将站点模板分配给组织站点

转载 作者:行者123 更新时间:2023-12-03 21:29:09 28 4
gpt4 key购买 nike

我分别使用 addUser() 和 addOrganization() 方法实用地创建了用户和组织。

我还可以使用 addOrganizationUsers() 方法将用户添加到该组织。

现在我已经从 liferay 控制面板创建了一个站点模板。

正如我们所知,我们可以为组织创建网站,在创建网站时,我们可以选择为公共(public)和私有(private)页面选择网站模板。

据我们所知。公共(public)页面 - 成员(member)+非成员(member)可见私有(private)页面 - 仅对成员(member)可见。

所以我想创建一个仅包含私有(private)页面的组织网站,这样只有组织成员才能看到。

OrganiztionLocalServiceUtil.addOrganization(
long userId, long parentOrganizationId, String name, String type,
boolean recursable, long regionId, long countryId, int statusId,
String comments, boolean site, ServiceContext serviceContext)

使用上述方法,通过指定 bool 站点值“true”,将创建一个站点。

现在我想实用地向我从控制面板创建的这个组织网站添加一个网站模板。

那么有没有API可以将站点模板添加到组织的任何站点

最佳答案

不幸的是,它没有公共(public) API。

使用 LayoutSetPrototypeLocalServiceUtil 获取 SiteTemplate 的 ID。要按名称获取 SiteTemplate,您必须使用 dynamicQuery 或迭代 LayoutSetPrototypeLocalServiceUtil.getLayoutSetPrototypes(-1, -1) 的结果

然后在门户上下文中调用 SitesUtil 的 applyLayoutSetPrototypes。

MethodKey methodKey = new MethodKey("com.liferay.portlet.sites.util.SitesUtil","applyLayoutSetPrototypes", Group.class, long.class, long.class, ServiceContext.class);
PortalClassInvoker.invoke(false, methodKey, organization.getGroup(), publicLayoutSetId, privateLayoutSetId, serviceContext);

为 publicLayoutSetId 指定 -1。

管理员必须登录才能执行此操作。要在启动时或在后台执行此操作,需要一个新的 ServiceContext。

类似下面的内容

ServiceContext serviceContext = new ServiceContext();
serviceContext.setAddGroupPermissions(true);
serviceContext.setAddGuestPermissions(true);
serviceContext.setSignedIn(false);
// set the following to an admin user / company or default user
User user = UserLocalServiceUtil.getDefaultUser(companyId); // or any user that has the permissions
serviceContext.setUserId(user.getUserId());
serviceContext.setCompanyId(companyId);

很可能您还必须设置 ThreadPermissionChecker

PrincipalThreadLocal.setName(user.getUserId());
PermissionChecker adminPermissionChecker = PermissionCheckerFactoryUtil.create(user, false);
PermissionThreadLocal.setPermissionChecker(adminPermissionChecker);

不要忘记在最后一个 block 中重置权限检查器,否则同一线程上的其他请求可能会使用相同的权限检查器。

关于liferay-6 - 在 liferay 6.1.0 中以编程方式将站点模板分配给组织站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15714874/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com