1
22
23 package com.liferay.portlet.blogs;
24
25 import com.liferay.portal.kernel.portlet.BaseFriendlyURLMapper;
26 import com.liferay.portal.kernel.portlet.LiferayPortletURL;
27 import com.liferay.portal.kernel.portlet.LiferayWindowState;
28 import com.liferay.portal.kernel.util.GetterUtil;
29 import com.liferay.portal.kernel.util.Validator;
30 import com.liferay.portal.util.PortletKeys;
31
32 import java.util.Map;
33
34 import javax.portlet.PortletMode;
35 import javax.portlet.WindowState;
36
37
43 public class BlogsFriendlyURLMapper extends BaseFriendlyURLMapper {
44
45 public String getMapping() {
46 return _MAPPING;
47 }
48
49 public String getPortletId() {
50 return _PORTLET_ID;
51 }
52
53 public String buildPath(LiferayPortletURL portletURL) {
54 String friendlyURLPath = null;
55
56 String strutsAction = GetterUtil.getString(
57 portletURL.getParameter("struts_action"));
58
59 if (strutsAction.equals("/blogs/rss")) {
60 friendlyURLPath = "/blogs/rss";
61 }
62 else if (strutsAction.equals("/blogs/view_entry")) {
63 String entryId = portletURL.getParameter("entryId");
64
65 String urlTitle = portletURL.getParameter("urlTitle");
66
67 if (Validator.isNotNull(entryId)) {
68 friendlyURLPath = "/blogs/" + entryId;
69
70 portletURL.addParameterIncludedInPath("entryId");
71 }
72 else if (Validator.isNotNull(urlTitle)) {
73 friendlyURLPath = "/blogs/" + urlTitle;
74
75 portletURL.addParameterIncludedInPath("urlTitle");
76 }
77 }
78
79 if (Validator.isNotNull(friendlyURLPath)) {
80 portletURL.addParameterIncludedInPath("p_p_id");
81 portletURL.addParameterIncludedInPath("struts_action");
82 }
83
84 return friendlyURLPath;
85 }
86
87 public void populateParams(
88 String friendlyURLPath, Map<String, String[]> params) {
89
90 addParam(params, "p_p_id", _PORTLET_ID);
91 addParam(params, "p_p_lifecycle", "0");
92 addParam(params, "p_p_state", WindowState.NORMAL);
93 addParam(params, "p_p_mode", PortletMode.VIEW);
94
95 int x = friendlyURLPath.indexOf("/", 1);
96 int y = friendlyURLPath.length();
97
98 if ((x + 1) == y) {
99 addParam(params, "struts_action", "/blogs/view");
100
101 return;
102 }
103
104 String type = friendlyURLPath.substring(x + 1, y);
105
106 if (type.equals("rss")) {
107 addParam(params, "p_p_lifecycle", "1");
108 addParam(params, "p_p_state", LiferayWindowState.EXCLUSIVE);
109
110 addParam(params, "struts_action", "/blogs/rss");
111 }
112 else {
113 addParam(params, "struts_action", "/blogs/view_entry");
114
115 if (Validator.isNumber(type)) {
116 String entryId = type;
117
118 addParam(params, "entryId", entryId);
119 }
120 else {
121 String urlTitle = type;
122
123 addParam(params, "urlTitle", urlTitle);
124 }
125 }
126 }
127
128 private static final String _MAPPING = "blogs";
129
130 private static final String _PORTLET_ID = PortletKeys.BLOGS;
131
132 }