001
014
015 package com.liferay.portlet.imagegallerydisplay.util;
016
017 import com.liferay.portal.kernel.portlet.LiferayWindowState;
018 import com.liferay.portal.kernel.repository.model.Folder;
019 import com.liferay.portal.kernel.util.GetterUtil;
020 import com.liferay.portal.kernel.util.ParamUtil;
021 import com.liferay.portal.kernel.util.WebKeys;
022 import com.liferay.portal.theme.ThemeDisplay;
023 import com.liferay.portal.util.PortalUtil;
024 import com.liferay.portlet.PortletPreferencesFactoryUtil;
025 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
026 import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
027
028 import java.util.Collections;
029 import java.util.List;
030
031 import javax.portlet.PortletPreferences;
032 import javax.portlet.PortletURL;
033 import javax.portlet.RenderResponse;
034
035 import javax.servlet.http.HttpServletRequest;
036
037
040 public class IGUtil {
041
042 public static void addPortletBreadcrumbEntries(
043 Folder folder, HttpServletRequest request,
044 RenderResponse renderResponse)
045 throws Exception {
046
047 String mvcRenderCommandName = ParamUtil.getString(
048 request, "mvcRenderCommandName");
049
050 PortletURL portletURL = renderResponse.createRenderURL();
051
052 if (mvcRenderCommandName.equals("/document_library/select_folder")) {
053 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
054 WebKeys.THEME_DISPLAY);
055
056 portletURL.setParameter(
057 "mvcRenderCommandName", mvcRenderCommandName);
058 portletURL.setWindowState(LiferayWindowState.POP_UP);
059
060 PortalUtil.addPortletBreadcrumbEntry(
061 request, themeDisplay.translate("home"), portletURL.toString());
062 }
063 else {
064 portletURL.setParameter(
065 "mvcRenderCommandName", "/image_gallery_display/view");
066 }
067
068 long defaultFolderId = getDefaultFolderId(request);
069
070 List<Folder> ancestorFolders = Collections.emptyList();
071
072 if ((folder != null) && (folder.getFolderId() != defaultFolderId)) {
073 ancestorFolders = folder.getAncestors();
074
075 int indexOfRootFolder = -1;
076
077 for (int i = 0; i < ancestorFolders.size(); i++) {
078 Folder ancestorFolder = ancestorFolders.get(i);
079
080 if (defaultFolderId == ancestorFolder.getFolderId()) {
081 indexOfRootFolder = i;
082 }
083 }
084
085 if (indexOfRootFolder > -1) {
086 ancestorFolders = ancestorFolders.subList(0, indexOfRootFolder);
087 }
088 }
089
090 Collections.reverse(ancestorFolders);
091
092 for (Folder ancestorFolder : ancestorFolders) {
093 portletURL.setParameter(
094 "folderId", String.valueOf(ancestorFolder.getFolderId()));
095
096 PortalUtil.addPortletBreadcrumbEntry(
097 request, ancestorFolder.getName(), portletURL.toString());
098 }
099
100 portletURL.setParameter(
101 "folderId", String.valueOf(folder.getFolderId()));
102
103 PortalUtil.addPortletBreadcrumbEntry(
104 request, folder.getName(), portletURL.toString());
105 }
106
107 public static void addPortletBreadcrumbEntries(
108 long folderId, HttpServletRequest request,
109 RenderResponse renderResponse)
110 throws Exception {
111
112 if (folderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
113 return;
114 }
115
116 Folder folder = DLAppLocalServiceUtil.getFolder(folderId);
117
118 addPortletBreadcrumbEntries(folder, request, renderResponse);
119 }
120
121 protected static long getDefaultFolderId(HttpServletRequest request)
122 throws Exception {
123
124 PortletPreferences portletPreferences =
125 PortletPreferencesFactoryUtil.getPortletPreferences(
126 request, PortalUtil.getPortletId(request));
127
128 return GetterUtil.getLong(
129 portletPreferences.getValue(
130 "rootFolderId",
131 String.valueOf(DLFolderConstants.DEFAULT_PARENT_FOLDER_ID)));
132 }
133
134 }