1
14
15 package com.liferay.portlet.portletconfiguration.action;
16
17 import com.liferay.portal.kernel.exception.SystemException;
18 import com.liferay.portal.kernel.servlet.SessionErrors;
19 import com.liferay.portal.kernel.util.GetterUtil;
20 import com.liferay.portal.kernel.util.ParamUtil;
21 import com.liferay.portal.kernel.util.Validator;
22 import com.liferay.portal.model.Layout;
23 import com.liferay.portal.model.LayoutTypePortlet;
24 import com.liferay.portal.model.Portlet;
25 import com.liferay.portal.model.PublicRenderParameter;
26 import com.liferay.portal.theme.ThemeDisplay;
27 import com.liferay.portal.util.WebKeys;
28 import com.liferay.portlet.PortletPreferencesFactoryUtil;
29 import com.liferay.portlet.portletconfiguration.util.PublicRenderParameterConfiguration;
30 import com.liferay.portlet.portletconfiguration.util.PublicRenderParameterIdentifierComparator;
31 import com.liferay.portlet.portletconfiguration.util.PublicRenderParameterIdentifierConfigurationComparator;
32
33 import java.util.ArrayList;
34 import java.util.Collections;
35 import java.util.HashMap;
36 import java.util.HashSet;
37 import java.util.List;
38 import java.util.Map;
39 import java.util.Set;
40 import java.util.TreeSet;
41
42 import javax.portlet.PortletPreferences;
43 import javax.portlet.RenderRequest;
44
45
50 public class ActionUtil {
51
52 public static void getLayoutPublicRenderParameters(
53 RenderRequest renderRequest)
54 throws SystemException {
55
56 ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(
57 WebKeys.THEME_DISPLAY);
58
59 Set<String> identifiers = new HashSet<String>();
60
61 Set<PublicRenderParameter> publicRenderParameters =
62 new TreeSet<PublicRenderParameter>(
63 new PublicRenderParameterIdentifierComparator());
64
65 LayoutTypePortlet layoutTypePortlet =
66 themeDisplay.getLayoutTypePortlet();
67
68 List<Portlet> portlets = layoutTypePortlet.getAllPortlets();
69
70 for (Portlet portlet : portlets) {
71 for (PublicRenderParameter publicRenderParameter:
72 portlet.getPublicRenderParameters()) {
73
74 if (!identifiers.contains(
75 publicRenderParameter.getIdentifier())) {
76
77 identifiers.add(publicRenderParameter.getIdentifier());
78
79 publicRenderParameters.add(publicRenderParameter);
80 }
81 }
82 }
83
84 renderRequest.setAttribute(
85 WebKeys.PUBLIC_RENDER_PARAMETERS, publicRenderParameters);
86 }
87
88 public static void getPublicRenderParameterConfigurationList(
89 RenderRequest renderRequest, Portlet portlet)
90 throws Exception {
91
92 ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(
93 WebKeys.THEME_DISPLAY);
94
95 Layout layout = themeDisplay.getLayout();
96
97 PortletPreferences preferences =
98 PortletPreferencesFactoryUtil.getLayoutPortletSetup(
99 layout, portlet.getPortletId());
100
101 Map<String, String> mappings = new HashMap<String, String>();
102
103 if (SessionErrors.isEmpty(renderRequest)) {
104 Set<PublicRenderParameter> publicRenderParameters =
105 (Set<PublicRenderParameter>)renderRequest.getAttribute(
106 WebKeys.PUBLIC_RENDER_PARAMETERS);
107
108 for (PublicRenderParameter publicRenderParameter :
109 publicRenderParameters) {
110
111 String mapping = preferences.getValue(
112 _MAPPING_PREFIX + publicRenderParameter.getIdentifier(),
113 null);
114
115 if (Validator.isNotNull(mapping)) {
116 mappings.put(
117 mapping, publicRenderParameter.getIdentifier());
118 }
119 }
120 }
121 else {
122 for (PublicRenderParameter publicRenderParameter :
123 portlet.getPublicRenderParameters()) {
124
125 String mapping = ParamUtil.getString(
126 renderRequest,
127 _MAPPING_PREFIX + publicRenderParameter.getIdentifier());
128
129 mappings.put(publicRenderParameter.getIdentifier(), mapping);
130 }
131 }
132
133 List<PublicRenderParameterConfiguration>
134 publicRenderParameterConfigurations =
135 new ArrayList<PublicRenderParameterConfiguration>();
136
137 for (PublicRenderParameter publicRenderParameter:
138 portlet.getPublicRenderParameters()) {
139
140 boolean ignore = false;
141
142 String ignoreKey =
143 _IGNORE_PREFIX + publicRenderParameter.getIdentifier();
144
145 if (SessionErrors.isEmpty(renderRequest)) {
146 ignore = GetterUtil.getBoolean(
147 preferences.getValue(ignoreKey, null));
148 }
149 else {
150 ignore = GetterUtil.getBoolean(
151 ParamUtil.getString(renderRequest, ignoreKey));
152 }
153
154 publicRenderParameterConfigurations.add(
155 new PublicRenderParameterConfiguration(
156 publicRenderParameter,
157 mappings.get(publicRenderParameter.getIdentifier()),
158 ignore));
159 }
160
161 Collections.sort(
162 publicRenderParameterConfigurations,
163 new PublicRenderParameterIdentifierConfigurationComparator());
164
165 renderRequest.setAttribute(
166 WebKeys.PUBLIC_RENDER_PARAMETER_CONFIGURATIONS,
167 publicRenderParameterConfigurations);
168 }
169
170 private static final String _IGNORE_PREFIX =
171 PublicRenderParameterConfiguration.IGNORE_PREFIX;
172
173 private static final String _MAPPING_PREFIX =
174 PublicRenderParameterConfiguration.MAPPING_PREFIX;
175
176 }