1
14
15 package com.liferay.portlet.imagegallery.util;
16
17 import com.liferay.portal.kernel.language.LanguageUtil;
18 import com.liferay.portal.kernel.portlet.LiferayWindowState;
19 import com.liferay.portal.kernel.util.StringPool;
20 import com.liferay.portlet.imagegallery.model.IGFolder;
21 import com.liferay.portlet.imagegallery.model.IGImage;
22 import com.liferay.portlet.imagegallery.service.IGFolderLocalServiceUtil;
23 import com.liferay.portlet.imagegallery.service.IGImageLocalServiceUtil;
24
25 import javax.portlet.PortletURL;
26 import javax.portlet.RenderRequest;
27 import javax.portlet.RenderResponse;
28 import javax.portlet.WindowState;
29
30 import javax.servlet.jsp.PageContext;
31
32
37 public class IGUtil {
38
39 public static String getBreadcrumbs(
40 long folderId, long imageId, PageContext pageContext,
41 RenderRequest renderRequest, RenderResponse renderResponse)
42 throws Exception {
43
44 if (imageId > 0) {
45 IGImage image = IGImageLocalServiceUtil.getImage(imageId);
46
47 return getBreadcrumbs(
48 image.getFolder(), image, pageContext, renderRequest,
49 renderResponse);
50 }
51 else {
52 IGFolder folder = null;
53
54 try {
55 folder = IGFolderLocalServiceUtil.getFolder(folderId);
56 }
57 catch (Exception e) {
58 }
59
60 return getBreadcrumbs(
61 folder, null, pageContext, renderRequest, renderResponse);
62 }
63 }
64
65 public static String getBreadcrumbs(
66 IGFolder folder, IGImage image, PageContext pageContext,
67 RenderRequest renderRequest, RenderResponse renderResponse)
68 throws Exception {
69
70 if ((image != null) && (folder == null)) {
71 folder = image.getFolder();
72 }
73
74 PortletURL foldersURL = renderResponse.createRenderURL();
75
76 WindowState windowState = renderRequest.getWindowState();
77
78 if (windowState.equals(LiferayWindowState.POP_UP)) {
79 foldersURL.setWindowState(LiferayWindowState.POP_UP);
80
81 foldersURL.setParameter(
82 "struts_action", "/image_gallery/select_folder");
83 }
84 else {
85
87 foldersURL.setParameter("struts_action", "/image_gallery/view");
88 }
89
90 String foldersLink =
91 "<a href=\"" + foldersURL.toString() + "\">" +
92 LanguageUtil.get(pageContext, "folders") + "</a>";
93
94 if (folder == null) {
95 return "<span class=\"first last\">" + foldersLink + "</span>";
96 }
97
98 String breadcrumbs = StringPool.BLANK;
99
100 if (folder != null) {
101 for (int i = 0;; i++) {
102 folder = folder.toEscapedModel();
103
104 PortletURL portletURL = renderResponse.createRenderURL();
105
106 if (windowState.equals(LiferayWindowState.POP_UP)) {
107 portletURL.setWindowState(LiferayWindowState.POP_UP);
108
109 portletURL.setParameter(
110 "struts_action", "/image_gallery/select_folder");
111 portletURL.setParameter(
112 "folderId", String.valueOf(folder.getFolderId()));
113 }
114 else {
115
117 portletURL.setParameter(
118 "struts_action", "/image_gallery/view");
119 portletURL.setParameter(
120 "folderId", String.valueOf(folder.getFolderId()));
121 }
122
123 String folderLink =
124 "<a href=\"" + portletURL.toString() + "\">" +
125 folder.getName() + "</a>";
126
127 if (i == 0) {
128 if (image != null) {
129 breadcrumbs += folderLink;
130 }
131 else {
132 breadcrumbs =
133 "<span class=\"last\">" + folderLink + "</span>";
134 }
135 }
136 else {
137 breadcrumbs = folderLink + " » " + breadcrumbs;
138 }
139
140 if (folder.isRoot()) {
141 break;
142 }
143
144 folder = IGFolderLocalServiceUtil.getFolder(
145 folder.getParentFolderId());
146 }
147 }
148
149 breadcrumbs =
150 "<span class=\"first\">" + foldersLink + " » </span>" +
151 breadcrumbs;
152
153 if (image != null) {
154 image = image.toEscapedModel();
155
156 PortletURL imageURL = renderResponse.createRenderURL();
157
158
160 imageURL.setParameter("struts_action", "/image_gallery/edit_image");
161 imageURL.setParameter(
162 "imageId", String.valueOf(image.getImageId()));
163
164 String imageLink =
165 "<span class=\"last\"><a href=\"" + imageURL.toString() +
166 "\">" + image.getImageId() + "</a></span>";
167
168 breadcrumbs = breadcrumbs + " » " + imageLink;
169 }
170
171 return breadcrumbs;
172 }
173
174 }