1   /**
2    * Copyright (c) 2000-2009 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   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portlet.imagegallery.util;
21  
22  import com.liferay.portal.kernel.language.LanguageUtil;
23  import com.liferay.portal.kernel.portlet.LiferayWindowState;
24  import com.liferay.portal.kernel.util.StringPool;
25  import com.liferay.portlet.imagegallery.model.IGFolder;
26  import com.liferay.portlet.imagegallery.model.IGImage;
27  import com.liferay.portlet.imagegallery.service.IGFolderLocalServiceUtil;
28  import com.liferay.portlet.imagegallery.service.IGImageLocalServiceUtil;
29  
30  import javax.portlet.PortletURL;
31  import javax.portlet.RenderRequest;
32  import javax.portlet.RenderResponse;
33  import javax.portlet.WindowState;
34  
35  import javax.servlet.jsp.PageContext;
36  
37  /**
38   * <a href="IGUtil.java.html"><b><i>View Source</i></b></a>
39   *
40   * @author Brian Wing Shun Chan
41   *
42   */
43  public class IGUtil {
44  
45      public static String getBreadcrumbs(
46              long folderId, long imageId, PageContext pageContext,
47              RenderRequest renderRequest, RenderResponse renderResponse)
48          throws Exception {
49  
50          if (imageId > 0) {
51              IGImage image = IGImageLocalServiceUtil.getImage(imageId);
52  
53              return getBreadcrumbs(
54                  image.getFolder(), image, pageContext, renderRequest,
55                  renderResponse);
56          }
57          else {
58              IGFolder folder = null;
59  
60              try {
61                  folder = IGFolderLocalServiceUtil.getFolder(folderId);
62              }
63              catch (Exception e) {
64              }
65  
66              return getBreadcrumbs(
67                  folder, null, pageContext, renderRequest, renderResponse);
68          }
69      }
70  
71      public static String getBreadcrumbs(
72              IGFolder folder, IGImage image, PageContext pageContext,
73              RenderRequest renderRequest, RenderResponse renderResponse)
74          throws Exception {
75  
76          if ((image != null) && (folder == null)) {
77              folder = image.getFolder();
78          }
79  
80          PortletURL foldersURL = renderResponse.createRenderURL();
81  
82          WindowState windowState = renderRequest.getWindowState();
83  
84          if (windowState.equals(LiferayWindowState.POP_UP)) {
85              foldersURL.setWindowState(LiferayWindowState.POP_UP);
86  
87              foldersURL.setParameter(
88                  "struts_action", "/image_gallery/select_folder");
89          }
90          else {
91              //foldersURL.setWindowState(WindowState.MAXIMIZED);
92  
93              foldersURL.setParameter("struts_action", "/image_gallery/view");
94          }
95  
96          String foldersLink =
97              "<a href=\"" + foldersURL.toString() + "\">" +
98                  LanguageUtil.get(pageContext, "folders") + "</a>";
99  
100         if (folder == null) {
101             return "<span class=\"first last\">" + foldersLink + "</span>";
102         }
103 
104         String breadcrumbs = StringPool.BLANK;
105 
106         if (folder != null) {
107             for (int i = 0;; i++) {
108                 folder = folder.toEscapedModel();
109 
110                 PortletURL portletURL = renderResponse.createRenderURL();
111 
112                 if (windowState.equals(LiferayWindowState.POP_UP)) {
113                     portletURL.setWindowState(LiferayWindowState.POP_UP);
114 
115                     portletURL.setParameter(
116                         "struts_action", "/image_gallery/select_folder");
117                     portletURL.setParameter(
118                         "folderId", String.valueOf(folder.getFolderId()));
119                 }
120                 else {
121                     //portletURL.setWindowState(WindowState.MAXIMIZED);
122 
123                     portletURL.setParameter(
124                         "struts_action", "/image_gallery/view");
125                     portletURL.setParameter(
126                         "folderId", String.valueOf(folder.getFolderId()));
127                 }
128 
129                 String folderLink =
130                     "<a href=\"" + portletURL.toString() + "\">" +
131                         folder.getName() + "</a>";
132 
133                 if (i == 0) {
134                     if (image != null) {
135                         breadcrumbs += folderLink;
136                     }
137                     else {
138                         breadcrumbs =
139                             "<span class=\"last\">" + folderLink + "</span>";
140                     }
141                 }
142                 else {
143                     breadcrumbs = folderLink + " &raquo; " + breadcrumbs;
144                 }
145 
146                 if (folder.isRoot()) {
147                     break;
148                 }
149 
150                 folder = IGFolderLocalServiceUtil.getFolder(
151                     folder.getParentFolderId());
152             }
153         }
154 
155         breadcrumbs =
156             "<span class=\"first\">" + foldersLink + " &raquo; </span>" +
157                 breadcrumbs;
158 
159         if (image != null) {
160             image = image.toEscapedModel();
161 
162             PortletURL imageURL = renderResponse.createRenderURL();
163 
164             //imageURL.setWindowState(WindowState.MAXIMIZED);
165 
166             imageURL.setParameter("struts_action", "/image_gallery/edit_image");
167             imageURL.setParameter(
168                 "imageId", String.valueOf(image.getImageId()));
169 
170             String imageLink =
171                 "<span class=\"last\"><a href=\"" + imageURL.toString() +
172                     "\">" + image.getImageId() + "</a></span>";
173 
174             breadcrumbs = breadcrumbs + " &raquo; " + imageLink;
175         }
176 
177         return breadcrumbs;
178     }
179 
180 }