001
014
015 package com.liferay.portlet.documentlibrary.action;
016
017 import com.liferay.portal.NoSuchLayoutException;
018 import com.liferay.portal.kernel.util.ParamUtil;
019 import com.liferay.portal.model.Layout;
020 import com.liferay.portal.model.LayoutConstants;
021 import com.liferay.portal.model.LayoutTypePortlet;
022 import com.liferay.portal.service.LayoutLocalServiceUtil;
023 import com.liferay.portal.util.PortalUtil;
024 import com.liferay.portal.util.PortletKeys;
025 import com.liferay.portlet.PortletURLImpl;
026 import com.liferay.portlet.documentlibrary.model.DLFolder;
027 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
028
029 import javax.portlet.PortletMode;
030 import javax.portlet.PortletRequest;
031 import javax.portlet.PortletURL;
032 import javax.portlet.WindowState;
033
034 import javax.servlet.http.HttpServletRequest;
035 import javax.servlet.http.HttpServletResponse;
036
037 import org.apache.struts.action.Action;
038 import org.apache.struts.action.ActionForm;
039 import org.apache.struts.action.ActionForward;
040 import org.apache.struts.action.ActionMapping;
041
042
045 public class FindFolderAction extends Action {
046
047 public ActionForward execute(
048 ActionMapping mapping, ActionForm form, HttpServletRequest request,
049 HttpServletResponse response)
050 throws Exception {
051
052 try {
053 long plid = ParamUtil.getLong(request, "p_l_id");
054 long groupId = ParamUtil.getLong(request,"groupId");
055 long folderId = ParamUtil.getLong(request, "folderId");
056
057 plid = getPlid(plid, groupId, folderId);
058
059 PortletURL portletURL = new PortletURLImpl(
060 request, PortletKeys.DOCUMENT_LIBRARY, plid,
061 PortletRequest.RENDER_PHASE);
062
063 portletURL.setWindowState(WindowState.NORMAL);
064 portletURL.setPortletMode(PortletMode.VIEW);
065
066 portletURL.setParameter(
067 "struts_action", "/document_library/view");
068 portletURL.setParameter("folderId", String.valueOf(folderId));
069
070 response.sendRedirect(portletURL.toString());
071
072 return null;
073 }
074 catch (Exception e) {
075 PortalUtil.sendError(e, request, response);
076
077 return null;
078 }
079 }
080
081 protected long getPlid(long plid, long groupId, long folderId)
082 throws Exception {
083
084 if (plid != LayoutConstants.DEFAULT_PLID) {
085 try {
086 Layout layout = LayoutLocalServiceUtil.getLayout(plid);
087
088 LayoutTypePortlet layoutTypePortlet =
089 (LayoutTypePortlet)layout.getLayoutType();
090
091 if (layoutTypePortlet.hasPortletId(
092 PortletKeys.DOCUMENT_LIBRARY)) {
093
094 return plid;
095 }
096 }
097 catch (NoSuchLayoutException nsle) {
098 }
099 }
100
101 if (groupId <= 0) {
102 DLFolder folder = DLFolderLocalServiceUtil.getFolder(folderId);
103
104 groupId = folder.getGroupId();
105 }
106
107 plid = PortalUtil.getPlidFromPortletId(
108 groupId, PortletKeys.DOCUMENT_LIBRARY);
109
110 if (plid != LayoutConstants.DEFAULT_PLID) {
111 return plid;
112 }
113 else {
114 throw new NoSuchLayoutException(
115 "No page was found with the Document Library portlet.");
116 }
117 }
118
119 }