001
014
015 package com.liferay.taglib.ui;
016
017 import com.liferay.portal.kernel.portletdisplaytemplate.PortletDisplayTemplateManagerUtil;
018 import com.liferay.portal.kernel.servlet.taglib.ui.BreadcrumbEntry;
019 import com.liferay.portal.kernel.servlet.taglib.ui.BreadcrumbUtil;
020 import com.liferay.portal.kernel.util.ArrayUtil;
021 import com.liferay.portal.kernel.util.Validator;
022 import com.liferay.portal.kernel.util.WebKeys;
023 import com.liferay.portal.theme.ThemeDisplay;
024 import com.liferay.taglib.util.IncludeTag;
025
026 import java.util.ArrayList;
027 import java.util.Collections;
028 import java.util.List;
029
030 import javax.servlet.http.HttpServletRequest;
031
032
035 public class BreadcrumbTag extends IncludeTag {
036
037 public void setDdmTemplateGroupId(long ddmTemplateGroupId) {
038 _ddmTemplateGroupId = ddmTemplateGroupId;
039 }
040
041 public void setDdmTemplateKey(String ddmTemplateKey) {
042 _ddmTemplateKey = ddmTemplateKey;
043 }
044
045 public void setShowCurrentGroup(boolean showCurrentGroup) {
046 _showCurrentGroup = showCurrentGroup;
047 }
048
049 public void setShowGuestGroup(boolean showGuestGroup) {
050 _showGuestGroup = showGuestGroup;
051 }
052
053 public void setShowLayout(boolean showLayout) {
054 _showLayout = showLayout;
055 }
056
057 public void setShowParentGroups(boolean showParentGroups) {
058 _showParentGroups = showParentGroups;
059 }
060
061 public void setShowPortletBreadcrumb(boolean showPortletBreadcrumb) {
062 _showPortletBreadcrumb = showPortletBreadcrumb;
063 }
064
065 @Override
066 protected void cleanUp() {
067 _ddmTemplateGroupId = 0;
068 _ddmTemplateKey = null;
069 _showCurrentGroup = true;
070 _showGuestGroup = false;
071 _showLayout = true;
072 _showParentGroups = true;
073 _showPortletBreadcrumb = true;
074 }
075
076 protected List<BreadcrumbEntry> getBreadcrumbEntries(
077 HttpServletRequest request) {
078
079 List<BreadcrumbEntry> breadcrumbEntries = Collections.emptyList();
080
081 List<Integer> breadcrumbEntryTypes = new ArrayList<>();
082
083 if (_showCurrentGroup) {
084 breadcrumbEntryTypes.add(BreadcrumbUtil.ENTRY_TYPE_CURRENT_GROUP);
085 }
086
087 if (_showGuestGroup) {
088 breadcrumbEntryTypes.add(BreadcrumbUtil.ENTRY_TYPE_GUEST_GROUP);
089 }
090
091 if (_showLayout) {
092 breadcrumbEntryTypes.add(BreadcrumbUtil.ENTRY_TYPE_LAYOUT);
093 }
094
095 if (_showParentGroups) {
096 breadcrumbEntryTypes.add(BreadcrumbUtil.ENTRY_TYPE_PARENT_GROUP);
097 }
098
099 if (_showPortletBreadcrumb) {
100 breadcrumbEntryTypes.add(BreadcrumbUtil.ENTRY_TYPE_PORTLET);
101 }
102
103 try {
104 breadcrumbEntries = BreadcrumbUtil.getBreadcrumbEntries(
105 request, ArrayUtil.toIntArray(breadcrumbEntryTypes));
106 }
107 catch (Exception e) {
108 }
109
110 return breadcrumbEntries;
111 }
112
113 protected String getDisplayStyle() {
114 if (Validator.isNotNull(_ddmTemplateKey)) {
115 return PortletDisplayTemplateManagerUtil.getDisplayStyle(
116 _ddmTemplateKey);
117 }
118
119 return null;
120 }
121
122 protected long getDisplayStyleGroupId() {
123 if (_ddmTemplateGroupId > 0) {
124 return _ddmTemplateGroupId;
125 }
126
127 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
128 WebKeys.THEME_DISPLAY);
129
130 return themeDisplay.getScopeGroupId();
131 }
132
133 @Override
134 protected String getPage() {
135 return _PAGE;
136 }
137
138 @Override
139 protected void setAttributes(HttpServletRequest request) {
140 request.setAttribute(
141 "liferay-ui:breadcrumb:breadcrumbEntries",
142 getBreadcrumbEntries(request));
143 request.setAttribute(
144 "liferay-ui:breadcrumb:displayStyle", getDisplayStyle());
145 request.setAttribute(
146 "liferay-ui:breadcrumb:displayStyleGroupId",
147 getDisplayStyleGroupId());
148 }
149
150 private static final String _PAGE = "/html/taglib/ui/breadcrumb/page.jsp";
151
152 private long _ddmTemplateGroupId;
153 private String _ddmTemplateKey;
154 private boolean _showCurrentGroup = true;
155 private boolean _showGuestGroup;
156 private boolean _showLayout = true;
157 private boolean _showParentGroups = true;
158 private boolean _showPortletBreadcrumb = true;
159
160 }