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 buildPath(LiferayPortletURL portletURL) {
46 String friendlyURLPath = null;
47
48 String strutsAction = GetterUtil.getString(
49 portletURL.getParameter("struts_action"));
50
51 if (strutsAction.equals("/blogs/rss")) {
52 friendlyURLPath = "/blogs/rss";
53 }
54 else if (strutsAction.equals("/blogs/view_entry")) {
55 String entryId = portletURL.getParameter("entryId");
56
57 String urlTitle = portletURL.getParameter("urlTitle");
58
59 if (Validator.isNotNull(entryId)) {
60 friendlyURLPath = "/blogs/" + entryId;
61
62 portletURL.addParameterIncludedInPath("entryId");
63 }
64 else if (Validator.isNotNull(urlTitle)) {
65 friendlyURLPath = "/blogs/" + urlTitle;
66
67 portletURL.addParameterIncludedInPath("urlTitle");
68 }
69 }
70
71 if (Validator.isNotNull(friendlyURLPath)) {
72 portletURL.addParameterIncludedInPath("p_p_id");
73
74 portletURL.addParameterIncludedInPath("struts_action");
75 }
76
77 return friendlyURLPath;
78 }
79
80 public String getMapping() {
81 return _MAPPING;
82 }
83
84 public String getPortletId() {
85 return _PORTLET_ID;
86 }
87
88 public void populateParams(
89 String friendlyURLPath, Map<String, String[]> params) {
90
91 addParam(params, "p_p_id", _PORTLET_ID);
92 addParam(params, "p_p_lifecycle", "0");
93 addParam(params, "p_p_state", WindowState.NORMAL);
94 addParam(params, "p_p_mode", PortletMode.VIEW);
95
96 int x = friendlyURLPath.indexOf("/", 1);
97 int y = friendlyURLPath.length();
98
99 if ((x + 1) == y) {
100 addParam(params, "struts_action", "/blogs/view");
101
102 return;
103 }
104
105 String type = friendlyURLPath.substring(x + 1, y);
106
107 if (type.equals("rss")) {
108 addParam(params, "p_p_lifecycle", "1");
109 addParam(params, "p_p_state", LiferayWindowState.EXCLUSIVE);
110
111 addParam(params, "struts_action", "/blogs/rss");
112 }
113 else if (type.startsWith("trackback/")) {
114 addParam(params, "p_p_lifecycle", "1");
115 addParam(params, "p_p_state", LiferayWindowState.EXCLUSIVE);
116
117 addParam(params, "struts_action", "/blogs/trackback");
118
119 x = type.indexOf("/");
120
121 type = type.substring(x + 1);
122
123 addParam(params, getEntryIdParam(type), type);
124 }
125 else {
126 addParam(params, "struts_action", "/blogs/view_entry");
127
128 addParam(params, getEntryIdParam(type), type);
129 }
130 }
131
132 protected String getEntryIdParam(String type) {
133 if (Validator.isNumber(type)) {
134 return "entryId";
135 }
136 else {
137 return "urlTitle";
138 }
139 }
140
141 private static final String _MAPPING = "blogs";
142
143 private static final String _PORTLET_ID = PortletKeys.BLOGS;
144
145 }