1
22
23 package com.liferay.portal.events;
24
25 import com.liferay.portal.kernel.events.Action;
26 import com.liferay.portal.kernel.events.ActionException;
27 import com.liferay.portal.kernel.log.Log;
28 import com.liferay.portal.kernel.log.LogFactoryUtil;
29 import com.liferay.portal.kernel.util.GetterUtil;
30 import com.liferay.portal.kernel.util.Randomizer;
31 import com.liferay.portal.model.Group;
32 import com.liferay.portal.model.GroupConstants;
33 import com.liferay.portal.model.Layout;
34 import com.liferay.portal.model.LayoutTypePortlet;
35 import com.liferay.portal.service.GroupLocalServiceUtil;
36 import com.liferay.portal.service.LayoutLocalServiceUtil;
37 import com.liferay.portal.theme.ThemeDisplay;
38 import com.liferay.portal.util.WebKeys;
39
40 import java.util.List;
41
42 import javax.servlet.http.HttpServletRequest;
43 import javax.servlet.http.HttpServletResponse;
44
45
50 public class RandomLayoutAction extends Action {
51
52 public void run(HttpServletRequest request, HttpServletResponse response)
53 throws ActionException {
54
55 try {
56
57
59 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
60 WebKeys.THEME_DISPLAY);
61
62 if (!themeDisplay.isSignedIn()) {
63 return;
64 }
65
66
68 String requestURI = GetterUtil.getString(request.getRequestURI());
69
70 if (!requestURI.endsWith("/portal/layout")) {
71 return;
72 }
73
74
77 Layout layout = themeDisplay.getLayout();
78
79 if (layout == null) {
80 return;
81 }
82
83 Group generalGuestGroup = GroupLocalServiceUtil.getGroup(
84 themeDisplay.getCompanyId(), GroupConstants.GUEST);
85
86 List<Layout> layouts = LayoutLocalServiceUtil.getLayouts(
87 generalGuestGroup.getGroupId(), false);
88
89 if (layouts.size() > 0) {
90 Layout randomLayout = layouts.get(
91 Randomizer.getInstance().nextInt(layouts.size()));
92
93 themeDisplay.setLayout(randomLayout);
94 themeDisplay.setLayoutTypePortlet(
95 (LayoutTypePortlet)randomLayout.getLayoutType());
96
97 request.setAttribute(WebKeys.LAYOUT, randomLayout);
98 }
99 }
100 catch (Exception e) {
101 _log.error(e, e);
102
103 throw new ActionException(e);
104 }
105 }
106
107 private static Log _log =
108 LogFactoryUtil.getLog(RandomLookAndFeelAction.class);
109
110 }