001: /**
002: * Copyright (c) 2000-2008 Liferay, Inc. All rights reserved.
003: *
004: * Permission is hereby granted, free of charge, to any person obtaining a copy
005: * of this software and associated documentation files (the "Software"), to deal
006: * in the Software without restriction, including without limitation the rights
007: * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
008: * copies of the Software, and to permit persons to whom the Software is
009: * furnished to do so, subject to the following conditions:
010: *
011: * The above copyright notice and this permission notice shall be included in
012: * all copies or substantial portions of the Software.
013: *
014: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
015: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
016: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
017: * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
018: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
019: * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
020: * SOFTWARE.
021: */package com.liferay.portlet.imagegallery.util;
022:
023: import com.liferay.portal.kernel.language.LanguageUtil;
024: import com.liferay.portal.kernel.portlet.LiferayWindowState;
025: import com.liferay.portal.kernel.util.StringPool;
026: import com.liferay.portlet.imagegallery.model.IGFolder;
027: import com.liferay.portlet.imagegallery.model.IGImage;
028: import com.liferay.portlet.imagegallery.service.IGFolderLocalServiceUtil;
029: import com.liferay.portlet.imagegallery.service.IGImageLocalServiceUtil;
030:
031: import javax.portlet.PortletURL;
032: import javax.portlet.RenderRequest;
033: import javax.portlet.RenderResponse;
034: import javax.portlet.WindowState;
035:
036: import javax.servlet.jsp.PageContext;
037:
038: /**
039: * <a href="IGUtil.java.html"><b><i>View Source</i></b></a>
040: *
041: * @author Brian Wing Shun Chan
042: *
043: */
044: public class IGUtil {
045:
046: public static String getBreadcrumbs(long folderId, long imageId,
047: PageContext pageContext, RenderRequest req,
048: RenderResponse res) throws Exception {
049:
050: if (imageId > 0) {
051: IGImage image = IGImageLocalServiceUtil.getImage(imageId);
052:
053: return getBreadcrumbs(image.getFolder(), image,
054: pageContext, req, res);
055: } else {
056: IGFolder folder = null;
057:
058: try {
059: folder = IGFolderLocalServiceUtil.getFolder(folderId);
060: } catch (Exception e) {
061: }
062:
063: return getBreadcrumbs(folder, null, pageContext, req, res);
064: }
065: }
066:
067: public static String getBreadcrumbs(IGFolder folder, IGImage image,
068: PageContext pageContext, RenderRequest req,
069: RenderResponse res) throws Exception {
070:
071: if ((image != null) && (folder == null)) {
072: folder = image.getFolder();
073: }
074:
075: PortletURL foldersURL = res.createRenderURL();
076:
077: WindowState windowState = req.getWindowState();
078:
079: if (windowState.equals(LiferayWindowState.POP_UP)) {
080: foldersURL.setWindowState(LiferayWindowState.POP_UP);
081:
082: foldersURL.setParameter("struts_action",
083: "/image_gallery/select_folder");
084: } else {
085: foldersURL.setWindowState(WindowState.MAXIMIZED);
086:
087: foldersURL.setParameter("struts_action",
088: "/image_gallery/view");
089: }
090:
091: String foldersLink = "<a href=\"" + foldersURL.toString()
092: + "\">" + LanguageUtil.get(pageContext, "folders")
093: + "</a>";
094:
095: if (folder == null) {
096: return foldersLink;
097: }
098:
099: String breadcrumbs = StringPool.BLANK;
100:
101: if (folder != null) {
102: for (int i = 0;; i++) {
103: folder = folder.toEscapedModel();
104:
105: PortletURL portletURL = res.createRenderURL();
106:
107: if (windowState.equals(LiferayWindowState.POP_UP)) {
108: portletURL
109: .setWindowState(LiferayWindowState.POP_UP);
110:
111: portletURL.setParameter("struts_action",
112: "/image_gallery/select_folder");
113: portletURL.setParameter("folderId", String
114: .valueOf(folder.getFolderId()));
115: } else {
116: portletURL.setWindowState(WindowState.MAXIMIZED);
117:
118: portletURL.setParameter("struts_action",
119: "/image_gallery/view");
120: portletURL.setParameter("folderId", String
121: .valueOf(folder.getFolderId()));
122: }
123:
124: String folderLink = "<a href=\""
125: + portletURL.toString() + "\">"
126: + folder.getName() + "</a>";
127:
128: if (i == 0) {
129: breadcrumbs = folderLink;
130: } else {
131: breadcrumbs = folderLink + " » "
132: + breadcrumbs;
133: }
134:
135: if (folder.isRoot()) {
136: break;
137: }
138:
139: folder = IGFolderLocalServiceUtil.getFolder(folder
140: .getParentFolderId());
141: }
142: }
143:
144: breadcrumbs = foldersLink + " » " + breadcrumbs;
145:
146: if (image != null) {
147: image = image.toEscapedModel();
148:
149: PortletURL imageURL = res.createRenderURL();
150:
151: imageURL.setWindowState(WindowState.MAXIMIZED);
152:
153: imageURL.setParameter("struts_action",
154: "/image_gallery/edit_image");
155: imageURL.setParameter("imageId", String.valueOf(image
156: .getImageId()));
157:
158: String imageLink = "<a href=\"" + imageURL.toString()
159: + "\">" + image.getImageId() + "</a>";
160:
161: breadcrumbs = breadcrumbs + " » " + imageLink;
162: }
163:
164: return breadcrumbs;
165: }
166:
167: }
|