Ask Questions and Find Answers
Important:
Ask is now read-only. You can review any existing questions and answers, but not add anything new.
But - don't panic! While ask is no more, we've replaced it with discuss - the new Liferay Discussion Forum! Read more here here or just visit the site here:
discuss.liferay.com
How to keep last Document library location in document selector?
Hi,
The objetive is to avoid multiple clicks when the last folder
path used in the process of select of documents to create or edit a
web content is searched.
Steps:
Create or edit a web content
wich structure have a field of document-library or image type.
When the select button is clicked:
If it's the first selection,
showing the default directory.
If already exists a document
selected, show the last directory opened.
How to keep always the
last path selected, regardless if another selector is used in liferay 7.4.
we are tracking a per-user state and Current session.
In Liferay 7.0, we successfully achieved this by customizing the document-library-item-selector-web module. The approach used in 7.0 is outlined below
<%
DLItemSelectorViewDisplayContext
dlItemSelectorViewDisplayContext = (DLItemSelectorViewDisplayContext)request.getAttribute(DLItemSelectorView.DL_ITEM_SELECTOR_VIEW_DISPLAY_CONTEXT);
long folderId =
dlItemSelectorViewDisplayContext.getFolderId(request);
String
lastSelectedFolderId = CookieKeys.getCookie(request, "lastSelectedFolderId");
if(request.getParameter("folderId") == null){
if(lastSelectedFolderId != null &&
lastSelectedFolderId.trim().length() > 0){
try{
long temporaryFolderId =
Long.parseLong(lastSelectedFolderId);
Folder
tempFolder = DLAppServiceUtil.getFolder(temporaryFolderId);
if (tempFolder != null){
folderId =
temporaryFolderId;
}
}catch (Exception
e){
System.out.println("line 55 -
resources/documents.jsp=" + e.getMessage());
}
}
}
%>
<script>
document.cookie =
"lastSelectedFolderId=<%=String.valueOf(folderId)%>;
expires=Thu, 18 Dec 2043 12:00:00 UTC; path=/";
</script>
<%
//This fix for reading from cookies.
PortletURL
portletURL = dlItemSelectorViewDisplayContext.getPortletURL(request,
liferayPortletResponse);
portletURL.setParameter("folderId", String.valueOf(folderId));
PortletURL uploadURL =
dlItemSelectorViewDisplayContext.getUploadURL(request,
liferayPortletResponse);
uploadURL.setParameter("folderId", String.valueOf(folderId));
<liferay-item-selector:repository-entry-browser
emptyResultsMessage='<%= LanguageUtil.get(request,
"there-are-no-documents-or-media-files-in-this-folder")
%>'
itemSelectedEventName="<%=
dlItemSelectorViewDisplayContext.getItemSelectedEventName()
%>"
portletURL="<%= portletURL %>"
repositoryEntries="<%= repositoryEntries %>"
repositoryEntriesCount="<%= repositoryEntriesCount
%>"
showBreadcrumb="<%= true %>"
tabName="<%=
dlItemSelectorViewDisplayContext.getTitle(locale) %>"
uploadURL="<%= uploadURL %>"
/>
Currently, we are attempting a similar approach in Liferay 7.4 by
fetching the last selected folderId and appending it to the portletURL
in the liferay-item-selector, but we have not had any success.
<%
DLItemSelectorViewDisplayContext
dlItemSelectorViewDisplayContext = (DLItemSelectorViewDisplayContext)
request
.getAttribute(DLItemSelectorWebKeys.DL_ITEM_SELECTOR_VIEW_DISPLAY_CONTEXT);
long folderId = 0;
String lastSelectedFolderId =
null;
long temporaryFolderId = 0;
folderId =
dlItemSelectorViewDisplayContext.getFolderId();
System.out.println("folderId-->"+folderId);
lastSelectedFolderId = (String)
session.getAttribute("lastSelectedFolderId");
System.out.println("lastSelectedFolderId-->"+lastSelectedFolderId);
if (request.getParameter("folderId") == null) {
if (lastSelectedFolderId != null &&
lastSelectedFolderId.trim().length() > 0) {
try
{
temporaryFolderId =
Long.parseLong(lastSelectedFolderId);
Folder
tempFolder = DLAppServiceUtil.getFolder(temporaryFolderId);
if (tempFolder != null) {
folderId =
temporaryFolderId;
}
} catch
(Exception e) {
System.out.println("line 55 -
resources/documents.jsp=" + e.getMessage());
}
}
}
session.removeAttribute("lastSelectedFolderId");
session.setAttribute("lastSelectedFolderId", String.valueOf(folderId));
PortletURL portletURL =
dlItemSelectorViewDisplayContext.getPortletURL(liferayPortletResponse);
portletURL.setParameter("folderId", String.valueOf(folderId));
PortletURL uploadURL =
dlItemSelectorViewDisplayContext.getUploadURL(liferayPortletResponse);
uploadURL.setParameter("folderId",
String.valueOf(folderId));
%>
<liferay-item-selector:repository-entry-browser
allowedCreationMenuUIItemKeys="<%=dlItemSelectorViewDisplayContext.getAllowedCreationMenuUIItemKeys()%>"
editImageURL="<%=dlItemSelectorViewDisplayContext.getEditImageURL(liferayPortletResponse)%>"
emptyResultsMessage='<%=LanguageUtil.get(request,
"there-are-no-documents-or-media-files-in-this-folder")%>'
folderId="<%=folderId%>"
itemSelectedEventName="<%=dlItemSelectorViewDisplayContext.getItemSelectedEventName()%>"
itemSelectorReturnTypeResolver="<%=dlItemSelectorViewDisplayContext.getItemSelectorReturnTypeResolver()%>"
portletURL="<%=portletURL%>"
repositoryEntries="<%=dlItemSelectorViewDisplayContext.getRepositoryEntries()%>"
repositoryEntriesCount="<%=dlItemSelectorViewDisplayContext.getRepositoryEntriesCount()%>"
showBreadcrumb="<%=true%>"
showDragAndDropZone="<%=dlItemSelectorViewDisplayContext.isShowDragAndDropZone()%>"
tabName="<%=dlItemSelectorViewDisplayContext.getTitle()%>"
uploadURL="<%=uploadURL%>"
/>
Your suggestions would be greatly appreciated. Thank you...
Powered by Liferay™