001
014
015 package com.liferay.portlet.sites.action;
016
017 import com.liferay.portal.kernel.portlet.PortletLayoutListener;
018 import com.liferay.portal.kernel.util.Constants;
019 import com.liferay.portal.kernel.util.ParamUtil;
020 import com.liferay.portal.kernel.util.WebKeys;
021 import com.liferay.portal.model.Group;
022 import com.liferay.portal.model.Layout;
023 import com.liferay.portal.model.LayoutTypePortlet;
024 import com.liferay.portal.model.Portlet;
025 import com.liferay.portal.model.PortletPreferencesIds;
026 import com.liferay.portal.service.GroupLocalServiceUtil;
027 import com.liferay.portal.service.LayoutServiceUtil;
028 import com.liferay.portal.service.PortletLocalServiceUtil;
029 import com.liferay.portal.service.PortletPreferencesLocalServiceUtil;
030 import com.liferay.portal.theme.ThemeDisplay;
031 import com.liferay.portal.util.PortalUtil;
032 import com.liferay.portal.util.PortletKeys;
033 import com.liferay.portlet.PortletPreferencesFactoryUtil;
034 import com.liferay.sites.kernel.util.SitesUtil;
035
036 import java.util.List;
037
038 import javax.portlet.PortletPreferences;
039 import javax.portlet.PortletRequest;
040
041 import javax.servlet.http.HttpServletRequest;
042
043
046 public class ActionUtil {
047
048 public static void copyPreferences(
049 HttpServletRequest request, Layout targetLayout,
050 Layout sourceLayout)
051 throws Exception {
052
053 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
054 WebKeys.THEME_DISPLAY);
055
056 LayoutTypePortlet sourceLayoutTypePortlet =
057 (LayoutTypePortlet)sourceLayout.getLayoutType();
058
059 List<String> sourcePortletIds = sourceLayoutTypePortlet.getPortletIds();
060
061 for (String sourcePortletId : sourcePortletIds) {
062
063
064
065 PortletPreferencesIds portletPreferencesIds =
066 PortletPreferencesFactoryUtil.getPortletPreferencesIds(
067 request, targetLayout, sourcePortletId);
068
069 PortletPreferencesLocalServiceUtil.getPreferences(
070 portletPreferencesIds);
071
072 PortletPreferencesIds sourcePortletPreferencesIds =
073 PortletPreferencesFactoryUtil.getPortletPreferencesIds(
074 request, sourceLayout, sourcePortletId);
075
076 PortletPreferences sourcePreferences =
077 PortletPreferencesLocalServiceUtil.getPreferences(
078 sourcePortletPreferencesIds);
079
080 PortletPreferencesLocalServiceUtil.updatePreferences(
081 portletPreferencesIds.getOwnerId(),
082 portletPreferencesIds.getOwnerType(),
083 portletPreferencesIds.getPlid(),
084 portletPreferencesIds.getPortletId(), sourcePreferences);
085
086
087
088 PortletPreferences targetPreferences =
089 PortletPreferencesLocalServiceUtil.getPreferences(
090 themeDisplay.getCompanyId(),
091 PortletKeys.PREFS_OWNER_ID_DEFAULT,
092 PortletKeys.PREFS_OWNER_TYPE_LAYOUT, targetLayout.getPlid(),
093 sourcePortletId);
094
095 sourcePreferences =
096 PortletPreferencesLocalServiceUtil.getPreferences(
097 themeDisplay.getCompanyId(),
098 PortletKeys.PREFS_OWNER_ID_DEFAULT,
099 PortletKeys.PREFS_OWNER_TYPE_LAYOUT, sourceLayout.getPlid(),
100 sourcePortletId);
101
102 PortletPreferencesLocalServiceUtil.updatePreferences(
103 PortletKeys.PREFS_OWNER_ID_DEFAULT,
104 PortletKeys.PREFS_OWNER_TYPE_LAYOUT, targetLayout.getPlid(),
105 sourcePortletId, sourcePreferences);
106
107 SitesUtil.updateLayoutScopes(
108 themeDisplay.getUserId(), sourceLayout, targetLayout,
109 sourcePreferences, targetPreferences, sourcePortletId,
110 themeDisplay.getLanguageId());
111
112 Portlet sourcePortlet = PortletLocalServiceUtil.getPortletById(
113 sourceLayout.getCompanyId(), sourcePortletId);
114
115 PortletLayoutListener sourcePortletLayoutListener =
116 sourcePortlet.getPortletLayoutListenerInstance();
117
118 if (sourcePortletLayoutListener != null) {
119 sourcePortletLayoutListener.onAddToLayout(
120 sourcePortletId, targetLayout.getPlid());
121 }
122 }
123 }
124
125 public static void copyPreferences(
126 PortletRequest portletRequest, Layout targetLayout,
127 Layout sourceLayout)
128 throws Exception {
129
130 HttpServletRequest request = PortalUtil.getHttpServletRequest(
131 portletRequest);
132
133 copyPreferences(request, targetLayout, sourceLayout);
134 }
135
136 public static Group getGroup(HttpServletRequest request) throws Exception {
137 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
138 WebKeys.THEME_DISPLAY);
139
140 String cmd = ParamUtil.getString(request, Constants.CMD);
141
142 long groupId = ParamUtil.getLong(request, "groupId");
143
144 Group group = null;
145
146 if (groupId > 0) {
147 group = GroupLocalServiceUtil.getGroup(groupId);
148 }
149 else if (!cmd.equals(Constants.ADD)) {
150 group = themeDisplay.getSiteGroup();
151 }
152
153 request.setAttribute(WebKeys.GROUP, group);
154
155 return group;
156 }
157
158 public static Group getGroup(PortletRequest portletRequest)
159 throws Exception {
160
161 HttpServletRequest request = PortalUtil.getHttpServletRequest(
162 portletRequest);
163
164 return getGroup(request);
165 }
166
167 public static void removePortletIds(
168 HttpServletRequest request, Layout layout)
169 throws Exception {
170
171 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
172 WebKeys.THEME_DISPLAY);
173
174 LayoutTypePortlet layoutTypePortlet =
175 (LayoutTypePortlet)layout.getLayoutType();
176
177 List<String> portletIds = layoutTypePortlet.getPortletIds();
178
179 for (String portletId : portletIds) {
180 layoutTypePortlet.removePortletId(
181 themeDisplay.getUserId(), portletId);
182 }
183
184 LayoutServiceUtil.updateLayout(
185 layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(),
186 layout.getTypeSettings());
187 }
188
189 public static void removePortletIds(
190 PortletRequest portletRequest, Layout layout)
191 throws Exception {
192
193 HttpServletRequest request = PortalUtil.getHttpServletRequest(
194 portletRequest);
195
196 removePortletIds(request, layout);
197 }
198
199 }