CRM项目总结-封装PortletURLUtil
package com.ebizwindow.crm.utils; import java.security.Key;
import java.util.List; import javax.portlet.ActionRequest;
import javax.portlet.PortletMode;
import javax.portlet.PortletModeException;
import javax.portlet.PortletRequest;
import javax.portlet.PortletURL;
import javax.portlet.WindowState;
import javax.portlet.WindowStateException;
import javax.servlet.http.HttpServletRequest; import com.ebizwindow.crm.constants.PortletIDs;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.HttpUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.UnicodeProperties;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.Layout;
import com.liferay.portal.model.PortletConstants;
import com.liferay.portal.model.User;
import com.liferay.portal.service.LayoutLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.PortletURLFactoryUtil;
import com.liferay.util.Encryptor;
import com.liferay.util.EncryptorException; /**
* @author Ivan Li
*
*/
public class PortletURLUtil { private static Log _log = LogFactoryUtil.getLog(PortletURLUtil.class); public static String getPortletURLWithinCurrentPage(
PortletRequest portletRequest, String portletId, int lifeCycle,
String windowState, String portletMode) throws PortalException,
SystemException {
String portletURL = null; HttpServletRequest request = PortalUtil
.getHttpServletRequest(portletRequest); ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); String targetPortletId = null;
String rootPortletId = PortletConstants.getRootPortletId(portletId); Layout layout = themeDisplay.getLayout();
if (layout != null) { UnicodeProperties typeSettings = layout.getTypeSettingsProperties(); labelBreak: for (String key : typeSettings.keySet()) {
String value = typeSettings.get(key);
int idx = value.indexOf(rootPortletId);
if (idx >= 0) {
String[] portletIds = StringUtil.split(value);
for (String id : portletIds) {
if (id.contains(rootPortletId)) {
targetPortletId = id;
break labelBreak;
}
}
}
} StringBuilder sb = new StringBuilder();
String layoutURL = PortalUtil.getLayoutFriendlyURL(layout,
themeDisplay); sb.append(layoutURL);
sb.append(StringPool.QUESTION).append("p_p_id")
.append(StringPool.EQUAL).append(targetPortletId);
sb.append(StringPool.AMPERSAND).append("p_p_lifecycle")
.append(StringPool.EQUAL).append(lifeCycle);
sb.append(StringPool.AMPERSAND).append("p_p_state")
.append(StringPool.EQUAL).append(windowState);
sb.append(StringPool.AMPERSAND).append("p_p_mode")
.append(StringPool.EQUAL).append(portletMode); portletURL = sb.toString(); } else {
_log.debug("Get portlet URL by portletId within the current page!");
}
return portletURL;
} public static String getPortletURLByUserId(PortletRequest portletRequest,
long userId, String portletId) throws PortalException,
SystemException {
User user = UserLocalServiceUtil.getUserById(userId);
long groupId = user.getGroup().getGroupId(); return getPortletURLByGroupId(portletRequest, groupId, portletId, 1,
WindowState.MAXIMIZED.toString(), PortletMode.VIEW.toString());
} public static String getPortletURLByGroupId(PortletRequest portletRequest,
long groupId, String portletId, int lifeCycle, String state,
String mode) throws SystemException, PortalException {
String portletURL = null;
Layout selectedLayout = null;
String targetPortletId = null;
String rootPortletId = PortletConstants.getRootPortletId(portletId);
List<Layout> layouts = LayoutLocalServiceUtil
.getLayouts(groupId, false);
if (layouts != null) {
labelBreak: for (Layout layout : layouts) {
UnicodeProperties typeSettings = layout
.getTypeSettingsProperties();
for (String key : typeSettings.keySet()) {
String value = typeSettings.get(key);
int idx = value.indexOf(rootPortletId);
if (idx >= 0) {
String[] portletIds = StringUtil.split(value);
for (String id : portletIds) {
if (id.contains(rootPortletId)) {
selectedLayout = layout;
targetPortletId = id;
break labelBreak;
}
}
}
}
}
} if (selectedLayout != null) {
StringBuilder sb = new StringBuilder();
// HttpServletRequest request =
// PortalUtil.getHttpServletRequest(portletRequest);
ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest
.getAttribute(WebKeys.THEME_DISPLAY);
String layoutURL = PortalUtil.getLayoutFriendlyURL(selectedLayout,
themeDisplay); sb.append(layoutURL); // sb.append(StringPool.QUESTION).append("p_auth").append(StringPool.EQUAL);
// sb.append(processValue(null, AuthTokenUtil.getToken(request))); sb.append(StringPool.QUESTION).append("p_p_id")
.append(StringPool.EQUAL).append(targetPortletId);
sb.append(StringPool.AMPERSAND).append("p_p_lifecycle")
.append(StringPool.EQUAL).append(lifeCycle);
sb.append(StringPool.AMPERSAND).append("p_p_state")
.append(StringPool.EQUAL).append(state);
sb.append(StringPool.AMPERSAND).append("p_p_mode")
.append(StringPool.EQUAL).append(mode); portletURL = sb.toString();
} else {
_log.debug("Get Portlet URL By UserId and portletId with empty result!");
} return portletURL;
} public static PortletURL getPortletURL(ActionRequest actionRequest)
throws PortalException, SystemException {
long groupId = PortalUtil.getScopeGroupId(actionRequest);
String portletId = PortalUtil.getPortletId(actionRequest);
long plid = PortalUtil.getPlidFromPortletId(groupId, portletId);
PortletURL redirectURL = PortletURLFactoryUtil.create(
PortalUtil.getHttpServletRequest(actionRequest), portletId,
plid, PortletRequest.ACTION_PHASE);
try {
redirectURL.setPortletMode(actionRequest.getPortletMode());
redirectURL.setWindowState(actionRequest.getWindowState());
} catch (PortletModeException e) {
_log.error(e);
} catch (WindowStateException e) {
_log.error(e);
}
return redirectURL;
} public static PortletURL getPortletURL(PortletRequest actionRequest)
throws PortalException, SystemException {
long groupId = PortalUtil.getScopeGroupId(actionRequest);
String portletId = PortalUtil.getPortletId(actionRequest);
long plid = PortalUtil.getPlidFromPortletId(groupId, portletId);
PortletURL redirectURL = PortletURLFactoryUtil.create(
PortalUtil.getHttpServletRequest(actionRequest), portletId,
plid, PortletRequest.ACTION_PHASE);
try {
redirectURL.setPortletMode(actionRequest.getPortletMode());
redirectURL.setWindowState(actionRequest.getWindowState());
} catch (PortletModeException e) {
_log.error(e);
} catch (WindowStateException e) {
_log.error(e);
}
return redirectURL;
} public static PortletURL getPortletURLInLayout(ActionRequest actionRequest) {
String portletId = PortalUtil.getPortletId(actionRequest); ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest
.getAttribute(WebKeys.THEME_DISPLAY);
Layout layout = themeDisplay.getLayout();
long plid = layout.getPlid(); PortletURL redirectURL = PortletURLFactoryUtil.create(
PortalUtil.getHttpServletRequest(actionRequest), portletId,
plid, PortletRequest.ACTION_PHASE);
try {
redirectURL.setPortletMode(actionRequest.getPortletMode());
redirectURL.setWindowState(actionRequest.getWindowState());
} catch (PortletModeException e) {
_log.error(e);
} catch (WindowStateException e) {
_log.error(e);
} _log.debug("redirectURL : " + redirectURL.toString());
return redirectURL;
} public static String getObjDetailURL(PortletRequest portletRequest,
String portletId, long entityId) throws SystemException,
PortalException {
long groupId = PortalUtil.getScopeGroupId(portletRequest);
int lifeCycle = 1;
String windowState = WindowState.NORMAL.toString();
String portletMode = PortletMode.VIEW.toString();
String detailURL = PortletURLUtil.getPortletURLByGroupId(
portletRequest, groupId, portletId, lifeCycle, windowState,
portletMode);
if (portletId.equals(PortletIDs.CUSTOMER_DETAIL)) {
detailURL = detailURL + "&customerId=" + entityId;
} else if (portletId.equals(PortletIDs.CONTACT_DETAIL)) {
detailURL = detailURL + "&contactId=" + entityId;
} else if (portletId.equals(PortletIDs.MARKET_DETAIL)) {
detailURL = detailURL + "&marketId=" + entityId;
} else if (portletId.equals(PortletIDs.CLUE_DETAIL)) {
detailURL = detailURL + "&clueId=" + entityId;
} else if (portletId.equals(PortletIDs.OPPORTUNITY_DETAIL)) {
detailURL = detailURL + "&opportunityId=" + entityId;
} else if (portletId.equals(PortletIDs.QUOTATION_DETAIL)) {
detailURL = detailURL + ""ationId=" + entityId;
} else if (portletId.equals(PortletIDs.CONTRACT_DETAIL)) {
detailURL = detailURL + "&contractId=" + entityId;
} else if (portletId.equals(PortletIDs.ACTIVITY_DETAIL)) {
detailURL = detailURL + "&activityId=" + entityId;
} else if (portletId.equals(PortletIDs.PRODUCT)) {
detailURL = detailURL + "&productIds" + entityId;
} else if (portletId.equals(PortletIDs.ORDER_DETAIL)) {
detailURL = detailURL + "&orderId=" + entityId;
}
detailURL = detailURL + "&operation=load";
return detailURL;
} @SuppressWarnings("unused")
private static String processValue(Key key, String value) {
if (key == null) {
return HttpUtil.encodeURL(value);
} else {
try {
return HttpUtil.encodeURL(Encryptor.encrypt(key, value));
} catch (EncryptorException ee) {
return value;
}
}
} public static String getReturnUrl(ActionRequest actionRequest, String portletId, String layoutId)
throws PortalException, SystemException {
long groupId = PortalUtil.getScopeGroupId(actionRequest);
int lifeCycle = 0;
String portletMode = PortletMode.VIEW.toString();
String windowState = WindowState.NORMAL.toString();
String url = getPortletURLByGroupId(actionRequest, groupId, portletId, lifeCycle, windowState, portletMode);
StringBuffer sb = new StringBuffer(url);
sb.append("&layoutId=").append(layoutId)
.append("&fileLarge=fileLarge");
return sb.toString();
} }
CRM项目总结-封装PortletURLUtil的更多相关文章
- crm项目整理
		
crm项目整理 一.开发背景 由于公司人员的增多,原来通过excel表格存取方式过于繁琐,而且对于公司人员的调配和绩效考核等不能做到精确处理,所以开发crm系统,开始开发只是针对销售人员和客户,后 ...
 - crm项目整理概要
		
一.开发背景 由于公司人员的增多,原来通过excel表格存取方式过于繁琐,而且对于公司人员的调配和绩效考核等不能做到精确处理,所以开发crm系统,开始开发只是针对销售人员和客户,后面陆续加上一些操作, ...
 - crm项目-stark组件分析
		
############### stark组件 ################ """ 这个stark组件是非常神奇的 1,独立的一个组件 2,没有mod ...
 - 某CRM项目招投标工作的感悟
		
最近参与了某公司的CRM项目招标工作, 由于此项目涉及到的二级单位比较多,以及项目金额比较大,所以此招标工作从准备到宣布中标一直持续了大概3个月时间,中间过程发生了一些颇有意思的事情,因为保密的原因无 ...
 - CRM项目总结
		
CRM项目总结 一:开发背景 在公司日益扩大的过程中,不可避免的会伴随着更多问题出现. 对外 : 如何更好的管理客户与公司的关系?如何更及时的了解客户日益发展的需求变 ...
 - CRM项目之RBAC权限组件-day26
		
写在前面 上课第26天,打卡: 世间安得双全法 不负如来不负卿 s17day26 CRM项目 项目概要:XX公司CRM - 权限管理,公共组件,app ***** - 熟悉增删改查,Low *** - ...
 - 读《31天学会CRM项目开发》记录2 - 企业信息管理系统
		
在信息技术的快速推动下,企业如果依然利用传统的管理方式,以人为主,那效率便会大打折扣.在此背景下,企业信息化系统得 到了高速发展.如我们常见的ERP系统.MES系统,都是提高公司运行效率,降低运营以及 ...
 - 读《31天学会CRM项目开发》记录1 - 认识软件开发
		
今天闲来无事,心中又对软件开发充满了向往和憧憬.一直认为实践是检验真知的唯一标准,也是快速提升的绝密方法,是巩固基础加深基础的好去处.故在JD上搜了下软件开发,看到了这本<31天学会CRM项目开 ...
 - Linux下运行crm项目
		
虚拟环境运行crm项目 1.进入虚拟环境 2.解决crm项目运行所需的依赖环境 1.手动解决 pip3 install django==1.11.14 pip3 install pymysql pip ...
 
随机推荐
- Big Spatio temporal Data(R-tree Index and NN & RNN & Skyline)
			
一.简单介绍大数据技术产物 “大数据”一词首先出现在2008年9月<Nature>杂志发表的一篇名为“Big Data: Wikiomics”的文章上(Mitch,2008).“大数据科学 ...
 - 如何设置select只读不可编辑且select的值可传递
			
1. <select style="width:195px" name="role" id="role" onfocus=" ...
 - How arduino IDE works?
			
test.ino void setup() { pinMode(,OUTPUT); } void loop() { digitalWrite(,HIGH); delay(); digitalWrite ...
 - [工具]   f.lux – 随时间改变屏幕色温护眼
			
f.lux 是一款根据时间变化来改变屏幕色温的软件.让你在深夜也能感受到太阳的温暖,顺便还有助于睡眠. 在 f.lux 里,首先设置一个适合你的变化色温范围,白天的色温控制在 6500K 以下,晚上的 ...
 - 【Android】Android import和export使用说明 及 export报错:jarlist.cache: Resource is out of sync with the file syst解决
			
在Android开发export项目时发现有时会报错,内容如下: Problems were encountered during export: Error exporting PalmIdent ...
 - react+babel+webpack初试
			
在上一篇,我们简单学习了webpack学习,现在这里我们简单学习一下react+babel+webpack,进行编译react语法jsx以及结合es6写法. 这里我就简单的直接上demo: packa ...
 - MPD大会北京上海两站圆满落幕
			
MPD大会北京上海两站圆满落幕 由麦思博(MSUP)主办的亚太软件研发团队管理峰会(以下简称MPD大会)分别于6月15及6月22日在北京.上海成功举办.国内外知名软件.互联网行业项目领头人及业内从业人 ...
 - python3学习笔记(1)_string
			
#python学习笔记 17/07/07 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- #r"" 引号当中的字符串不转义 #练习 # ...
 - ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解
			
感谢一路走来默默陪伴和支持的你~~~ -------------------欢迎来访,拒绝转载------------------- 在之前的利用Python分析GP服务运行结果的输出路径 & ...
 - 币安Binance API Websocket
			
本文介绍币安Binance API Websocket General WSS information The base endpoint is: wss://stream.binance.com:9 ...