1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
13   */
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  /**
33   * <a href="IGUtil.java.html"><b><i>View Source</i></b></a>
34   *
35   * @author Brian Wing Shun Chan
36   */
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              //foldersURL.setWindowState(WindowState.MAXIMIZED);
86  
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                     //portletURL.setWindowState(WindowState.MAXIMIZED);
116 
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 + " &raquo; " + 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 + " &raquo; </span>" +
151                 breadcrumbs;
152 
153         if (image != null) {
154             image = image.toEscapedModel();
155 
156             PortletURL imageURL = renderResponse.createRenderURL();
157 
158             //imageURL.setWindowState(WindowState.MAXIMIZED);
159 
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 + " &raquo; " + imageLink;
169         }
170 
171         return breadcrumbs;
172     }
173 
174 }