后来在Liferay forum中,找到了一篇帖子,给了解决此种问题的解决办法:在portlet-ext.properties中配置一个 default.user.layout.group 属性(自定义的),用于指明默认的layout-group。在ServicePreAction类的扩展修改 addDefaultLayouts 操作,满足特定的需求应用。这种扩展的方式就是,将指定layout-group拷贝给用户第一默认的,这样就不会再使用liferay默认的了。—— 当然这样的方式是比较简单的,可能在系统实施过程中,有比这更加复杂的需求。
新建默认的Community
首先,通过新增一个新的Community,命名为User_Default,并新增一个private的page与内容.
配置默认的Community
首先在ext项目的 ext-ejb目录下,修改portal-ext.properties文件,增加如下设置:
default.user.layout.group=User_Default
|
然后通过build,将portal-ext.properties移动到 ext项目的
ext\servers\tomcat\webapps\ROOT\WEB-INF\classes 目录下。
构造LayoutCopy类
public class LayoutCopy ...{
private static Log _log = LogFactory.getLog(LayoutCopy.class);
private User user;
private String ownerId;
private Group userGroup;
public LayoutCopy(User user) ...{
super();
this.user = user;
this.ownerId = getOwnerId(user.getGroup().getGroupId(), false);
this.userGroup = user.getGroup();
}
public void copyDefaultUserLayout(HttpServletRequest httpReq)
throws SystemException, PortalException ...{
// set in the portal-ext.properties:
// default.user.layout.group=Default User
// and create then group/community "Default User"
// CWPPropsUtil.DEFUALT_USER_LAYOUT_GROUP = "default.user.layout.group"
Group group = GroupLocalServiceUtil.getGroup(user.getCompanyId(),
PropsUtil.get("default.user.layout.group"));
try ...{
String groupOwnerId = getOwnerId(group.getGroupId(), true);
List privateLayouts = LayoutLocalServiceUtil
.getLayouts(groupOwnerId);
for (Iterator itr = privateLayouts.iterator(); itr.hasNext();) ...{
Layout layout = (Layout) itr.next();
Layout newLayout = copyLayout(layout);
copyPreferences(httpReq, newLayout, layout);
}
} catch (PortalException e) ...{
_log.error("Cannot copy private layouts", e);
} catch (Exception e) ...{
_log.error("Cannot copy public layouts", e);
}
try ...{
String groupOwnerId = getOwnerId(group.getGroupId(), false);
List publicLayouts = LayoutLocalServiceUtil
.getLayouts(groupOwnerId);
for (Iterator itr = publicLayouts.iterator(); itr.hasNext();) ...{
Layout layout = (Layout) itr.next();
Layout newLayout = copyLayout(layout);
copyPreferences(httpReq, newLayout, layout);
}
} catch (PortalException e) ...{
_log.error("Cannot copy public layouts", e);
} catch (Exception e) ...{
_log.error("Cannot copy public layouts", e);
}
}
public void resetLayout(HttpServletRequest httpReq) throws SystemException, PortalException ...{
String ownerId = getOwnerId(user.getGroup().getGroupId(), false);
LayoutLocalServiceUtil.deleteLayouts(ownerId);
PortletPreferencesLocalServiceUtil.deletePortletPreferences(ownerId);
ownerId = getOwnerId(user.getGroup().getGroupId(), true);
LayoutLocalServiceUtil.deleteLayouts(ownerId);
PortletPreferencesLocalServiceUtil.deletePortletPreferences(ownerId);
copyDefaultUserLayout(httpReq);
}
public Layout copyLayout(Layout groupDefaultLayout) throws SystemException,
PortalException ...{
Layout layout = LayoutLocalServiceUtil.addLayout(
userGroup.getGroupId(), user.getUserId(), groupDefaultLayout
.isPrivateLayout(), groupDefaultLayout
.getParentLayoutId(), groupDefaultLayout.getName(user
.getLocale()), groupDefaultLayout.getType(),
groupDefaultLayout.isHidden(), null);
LayoutLocalServiceUtil.updateLayout(layout.getLayoutId(), layout
.getOwnerId(), groupDefaultLayout.getTypeSettings());
layout = LayoutLocalServiceUtil.updateLookAndFeel(layout.getLayoutId(),
layout.getOwnerId(), groupDefaultLayout.getThemeId(),
相关推荐
【Liferay Portal额外研究】 Liferay Portal是一款开源的企业级门户平台,它提供了丰富的功能和高度的可定制性,用于构建企业内部或外部的网站、工作流应用和协作平台。在这个额外研究中,我们将探讨如何在新的...
【Liferay Portal 内容管理】是企业级门户平台Liferay Portal的重要组成部分,它提供了丰富的文档管理和信息发布功能,便于组织内部的信息共享与协作。 在Liferay Portal中,文档管理主要通过【Document Library】...
每个实例可能分别对应不同的功能或场景,例如用户登录、内容展示、互动表单等。为了运行这些实例,你需要在Eclipse中创建一个新的Liferay Portlet项目,并将提供的源代码复制到项目中。确保你的Eclipse已经配置了...
Liferay Portal 是一个开源的企业级门户平台,广泛用于构建复杂的Web应用程序和企业内部协作系统。它提供了丰富的功能,包括内容管理、社交媒体集成、工作流支持以及用户界面定制。本资源集是针对Liferay Portal开发...
作者曾经在2008年至2010年间出版了四本关于Liferay的书籍,并且他也是Liferay与其他技术集成的专家,比如与广告服务器OpenX、不同搜索引擎、企业内容(包括视频、音频、图片、文档、记录和网页内容)、社交媒体以及...
Liferay Portal 6拥有强大的内容管理系统,允许用户轻松创建、编辑和发布各种类型的内容,包括文章、文档、多媒体等。其内置的富文本编辑器和版本控制功能确保了内容的质量和一致性。 ##### 2. 社交媒体集成 平台...
### Liferay Portal 开发指南知识点概述 #### 一、简介 **Liferay Portal** 是一款功能强大的企业级门户平台,支持多种应用集成和技术扩展。它不仅提供了丰富的特性满足企业日常需求,同时也支持高度定制化开发。...
### Liferay Portal的内容和布局详解 #### 一、布局(Layout) **布局**是Liferay Portal中用于管理Portlet的关键概念之一。布局不仅决定着Portlet的呈现方式,还影响着用户的交互体验。在Liferay中,布局是通过一...
Liferay Portal是一款开源的企业级门户平台,它提供了丰富的功能,如内容管理、社交网络、协作工具等,广泛应用于构建智慧社区和企业内部信息系统。 1. **Certus Portal架构** - **Portal规范**:Liferay Portal...
Liferay的桌面概念是指用户登录后看到的第一个页面,可以个性化设置,包含用户常用的应用和服务。品质则涉及界面风格和用户体验,允许用户根据个人喜好调整颜色、字体和其他视觉元素。 ##### 2.5 部署描述文件 ...
Liferay Portal 的内容和布局包括布局、内容和portlet 之间的关系。布局决定了 portal 的外观和布局。内容是 portal 的核心组成部分,包括文本、图片和视频等。portlet 是一个小型的 web 应用程序,提供了特定的功能...
##### 第三节 Liferay Portal 内容和布局 - **布局**: 页面的设计结构。 - **内容**: 页面上显示的信息或功能模块。 - **内容布局与 Portlet 的关系**: 内容通过portlet展示,布局则决定了portlet的位置和样式。 #...
1. **单点登录(Single Sign-On, SSO)**:Liferay Portal支持多种安全技术,如ACL(Access Control Lists)、SSL(Secure Socket Layer)和LDAP(Lightweight Directory Access Protocol),实现用户只需登录一次...
本次研究由 Liferay 工程团队执行,旨在通过一系列用例(包括基础设施门户、协作和内容管理)进行密集调优和测试,以展示 Liferay Portal EE 的可扩展性。 该研究的目标是: - 确定单个物理服务器在定义的测试案例...
搭建Liferay Portal的开发环境是一项细致且复杂的过程,涉及到多个步骤和组件的配合。本文将根据给定的文件信息,详细解析如何从零开始构建一个完整的Liferay开发环境,包括必要的准备、具体步骤以及关键配置。 ###...
Liferay Portal 是一个开源的企业级门户平台,它允许用户创建、管理和定制各种Web应用程序和内容。这个求助主题可能涉及到在使用Liferay Portal过程中遇到的问题,或者是寻求关于如何更有效地利用其特性和功能的建议...
Liferay Portal 数据库介绍 Liferay Portal 数据库是指Liferay Portal系统中存储的所有数据,包括用户信息、组织...以上是Liferay Portal 数据库介绍的相关知识点,包括Layout 表的字段、页面布局的修改和查询语句等。
Liferay是一款开源的Java企业门户框架,它提供了强大的门户服务和企业级功能,如用户管理、权限控制、内容管理等。Liferay支持WSRP(Web Services for Remote Portlets)标准,使得不同系统之间的portlet能够互相...
Liferay Portal是一个开源的企业级内容管理平台,它允许用户创建和管理网站、社区和工作流程。这个压缩包可能包含了该版本下用于数据库管理和优化的SQL脚本。 描述中的内容与标题相同,表明这个资源是专门针对...