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