1
22
23 package com.liferay.portlet.bookmarks.util;
24
25 import com.liferay.portal.kernel.language.LanguageUtil;
26 import com.liferay.portal.kernel.portlet.LiferayWindowState;
27 import com.liferay.portal.kernel.util.OrderByComparator;
28 import com.liferay.portal.kernel.util.ParamUtil;
29 import com.liferay.portal.kernel.util.StringPool;
30 import com.liferay.portlet.bookmarks.model.BookmarksEntry;
31 import com.liferay.portlet.bookmarks.model.BookmarksFolder;
32 import com.liferay.portlet.bookmarks.service.BookmarksEntryLocalServiceUtil;
33 import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
34 import com.liferay.portlet.bookmarks.util.comparator.EntryCreateDateComparator;
35 import com.liferay.portlet.bookmarks.util.comparator.EntryModifiedDateComparator;
36 import com.liferay.portlet.bookmarks.util.comparator.EntryNameComparator;
37 import com.liferay.portlet.bookmarks.util.comparator.EntryPriorityComparator;
38 import com.liferay.portlet.bookmarks.util.comparator.EntryURLComparator;
39 import com.liferay.portlet.bookmarks.util.comparator.EntryVisitsComparator;
40
41 import javax.portlet.PortletURL;
42 import javax.portlet.RenderRequest;
43 import javax.portlet.RenderResponse;
44 import javax.portlet.WindowState;
45
46 import javax.servlet.jsp.PageContext;
47
48
54 public class BookmarksUtil {
55
56 public static String getBreadcrumbs(
57 long folderId, long entryId, PageContext pageContext,
58 RenderRequest renderRequest, RenderResponse renderResponse)
59 throws Exception {
60
61 if (entryId > 0) {
62 BookmarksEntry entry =
63 BookmarksEntryLocalServiceUtil.getEntry(entryId);
64
65 return getBreadcrumbs(
66 entry.getFolder(), entry, pageContext, renderRequest,
67 renderResponse);
68 }
69 else {
70 BookmarksFolder folder = null;
71
72 try {
73 folder = BookmarksFolderLocalServiceUtil.getFolder(folderId);
74 }
75 catch (Exception e) {
76 }
77
78 return getBreadcrumbs(
79 folder, null, pageContext, renderRequest, renderResponse);
80 }
81 }
82
83 public static String getBreadcrumbs(
84 BookmarksFolder folder, BookmarksEntry entry,
85 PageContext pageContext, RenderRequest renderRequest,
86 RenderResponse renderResponse)
87 throws Exception {
88
89 String strutsAction = ParamUtil.getString(
90 renderRequest, "struts_action");
91
92 boolean selectFolder = strutsAction.equals("/bookmarks/select_folder");
93
94 if ((entry != null) && (folder == null)) {
95 folder = entry.getFolder();
96 }
97
98 PortletURL foldersURL = renderResponse.createRenderURL();
99
100 if (selectFolder) {
101 foldersURL.setWindowState(LiferayWindowState.POP_UP);
102
103 foldersURL.setParameter(
104 "struts_action", "/bookmarks/select_folder");
105 }
106 else {
107 foldersURL.setWindowState(WindowState.MAXIMIZED);
108
109 foldersURL.setParameter("struts_action", "/bookmarks/view");
110 }
111
112 String foldersLink =
113 "<a href=\"" + foldersURL.toString() + "\">" +
114 LanguageUtil.get(pageContext, "folders") + "</a>";
115
116 if (folder == null) {
117 return foldersLink;
118 }
119
120 String breadcrumbs = StringPool.BLANK;
121
122 if (folder != null) {
123 for (int i = 0;; i++) {
124 folder = folder.toEscapedModel();
125
126 PortletURL portletURL = renderResponse.createRenderURL();
127
128 if (selectFolder) {
129 portletURL.setWindowState(LiferayWindowState.POP_UP);
130
131 portletURL.setParameter(
132 "struts_action", "/bookmarks/select_folder");
133 portletURL.setParameter(
134 "folderId", String.valueOf(folder.getFolderId()));
135 }
136 else {
137 portletURL.setWindowState(WindowState.MAXIMIZED);
138
139 portletURL.setParameter("struts_action", "/bookmarks/view");
140 portletURL.setParameter(
141 "folderId", String.valueOf(folder.getFolderId()));
142 }
143
144 String folderLink =
145 "<a href=\"" + portletURL.toString() + "\">" +
146 folder.getName() + "</a>";
147
148 if (i == 0) {
149 breadcrumbs = folderLink;
150 }
151 else {
152 breadcrumbs = folderLink + " » " + breadcrumbs;
153 }
154
155 if (folder.isRoot()) {
156 break;
157 }
158
159 folder = BookmarksFolderLocalServiceUtil.getFolder(
160 folder.getParentFolderId());
161 }
162 }
163
164 breadcrumbs = foldersLink + " » " + breadcrumbs;
165
166 if (entry != null) {
167 entry = entry.toEscapedModel();
168
169 PortletURL entryURL = renderResponse.createRenderURL();
170
171 entryURL.setWindowState(WindowState.MAXIMIZED);
172
173 entryURL.setParameter("struts_action", "/bookmarks/edit_entry");
174 entryURL.setParameter(
175 "entryId", String.valueOf(entry.getEntryId()));
176
177 String entryLink =
178 "<a href=\"" + entryURL.toString() + "\">" +
179 entry.getEntryId() + "</a>";
180
181 breadcrumbs = breadcrumbs + " » " + entryLink;
182 }
183
184 return breadcrumbs;
185 }
186
187 public static OrderByComparator getEntriesOrderByComparator(
188 String orderByCol, String orderByType) {
189
190 boolean orderByAsc = false;
191
192 if (orderByType.equals("asc")) {
193 orderByAsc = true;
194 }
195
196 OrderByComparator orderByComparator = null;
197
198 if (orderByCol.equals("create-date")) {
199 orderByComparator = new EntryCreateDateComparator(orderByAsc);
200 }
201 else if (orderByCol.equals("modified-date")) {
202 orderByComparator = new EntryModifiedDateComparator(orderByAsc);
203 }
204 else if (orderByCol.equals("name")) {
205 orderByComparator = new EntryNameComparator(orderByAsc);
206 }
207 else if (orderByCol.equals("priority")) {
208 orderByComparator = new EntryPriorityComparator(orderByAsc);
209 }
210 else if (orderByCol.equals("url")) {
211 orderByComparator = new EntryURLComparator(orderByAsc);
212 }
213 else if (orderByCol.equals("visits")) {
214 orderByComparator = new EntryVisitsComparator(orderByAsc);
215 }
216
217 return orderByComparator;
218 }
219
220 }