/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.item.selector.taglib.servlet.taglib;
import com.liferay.item.selector.ItemSelectorReturnType;
import com.liferay.item.selector.ItemSelectorReturnTypeResolver;
import com.liferay.item.selector.constants.ItemSelectorPortletKeys;
import com.liferay.item.selector.taglib.ItemSelectorRepositoryEntryBrowserReturnTypeUtil;
import com.liferay.item.selector.taglib.internal.servlet.ServletContextUtil;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.portlet.PortalPreferences;
import com.liferay.portal.kernel.portlet.PortletPreferencesFactoryUtil;
import com.liferay.portal.kernel.repository.model.RepositoryEntry;
import com.liferay.portal.kernel.util.ArrayUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.util.PropsValues;
import com.liferay.taglib.util.IncludeTag;
import java.util.ArrayList;
import java.util.List;
import javax.portlet.PortletURL;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;
/**
* @author Roberto Díaz
*/
public class RepositoryEntryBrowserTag extends IncludeTag {
public static final String[] DISPLAY_STYLES =
new String[] {"icon", "descriptive", "list"};
/**
* @deprecated As of 1.1.0, with no direct replacement
*/
@Deprecated
public void setDesiredItemSelectorReturnTypes(
List<ItemSelectorReturnType> desiredItemSelectorReturnTypes) {
_desiredItemSelectorReturnTypes = desiredItemSelectorReturnTypes;
}
public void setDisplayStyle(String displayStyle) {
_displayStyle = displayStyle;
}
public void setEmptyResultsMessage(String emptyResultsMessage) {
_emptyResultsMessage = emptyResultsMessage;
}
public void setExtensions(List<String> extensions) {
_extensions = extensions;
}
public void setItemSelectedEventName(String itemSelectedEventName) {
_itemSelectedEventName = itemSelectedEventName;
}
public void setItemSelectorReturnTypeResolver(
ItemSelectorReturnTypeResolver itemSelectorReturnTypeResolver) {
_itemSelectorReturnTypeResolver = itemSelectorReturnTypeResolver;
}
public void setMaxFileSize(long maxFileSize) {
_maxFileSize = maxFileSize;
}
@Override
public void setPageContext(PageContext pageContext) {
super.setPageContext(pageContext);
servletContext = ServletContextUtil.getServletContext();
}
public void setPortletURL(PortletURL portletURL) {
_portletURL = portletURL;
}
public void setRepositoryEntries(List<RepositoryEntry> repositoryEntries) {
_repositoryEntries = repositoryEntries;
}
public void setRepositoryEntriesCount(int repositoryEntriesCount) {
_repositoryEntriesCount = repositoryEntriesCount;
}
public void setShowBreadcrumb(boolean showBreadcrumb) {
_showBreadcrumb = showBreadcrumb;
}
public void setShowDragAndDropZone(boolean showDragAndDropZone) {
_showDragAndDropZone = showDragAndDropZone;
}
public void setTabName(String tabName) {
_tabName = tabName;
}
public void setUploadURL(PortletURL uploadURL) {
_uploadURL = uploadURL;
}
@Override
protected void cleanUp() {
super.cleanUp();
_desiredItemSelectorReturnTypes = null;
_emptyResultsMessage = null;
_displayStyle = null;
_extensions = new ArrayList<>();
_itemSelectedEventName = null;
_maxFileSize = PropsValues.UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE;
_portletURL = null;
_repositoryEntries = new ArrayList<>();
_repositoryEntriesCount = 0;
_showBreadcrumb = false;
_showDragAndDropZone = true;
_tabName = null;
_uploadURL = null;
}
protected String getDisplayStyle() {
PortalPreferences portalPreferences =
PortletPreferencesFactoryUtil.getPortalPreferences(request);
String displayStyle = ParamUtil.getString(request, "displayStyle");
if (Validator.isNotNull(displayStyle)) {
displayStyle = getSafeDisplayStyle(displayStyle);
portalPreferences.setValue(
ItemSelectorPortletKeys.ITEM_SELECTOR, "display-style",
displayStyle);
return displayStyle;
}
if (Validator.isNotNull(_displayStyle)) {
return getSafeDisplayStyle(_displayStyle);
}
return portalPreferences.getValue(
ItemSelectorPortletKeys.ITEM_SELECTOR, "display-style",
DISPLAY_STYLES[0]);
}
@Override
protected String getPage() {
return "/repository_entry_browser/page.jsp";
}
protected String getSafeDisplayStyle(String displayStyle) {
if (ArrayUtil.contains(DISPLAY_STYLES, displayStyle)) {
return displayStyle;
}
return DISPLAY_STYLES[0];
}
@Override
protected void setAttributes(HttpServletRequest request) {
request.setAttribute(
"liferay-item-selector:repository-entry-browser:displayStyle",
getDisplayStyle());
request.setAttribute(
"liferay-item-selector:repository-entry-browser:" +
"emptyResultsMessage",
_getEmptyResultsMessage(request));
if (_desiredItemSelectorReturnTypes != null) {
request.setAttribute(
"liferay-item-selector:repository-entry-browser:" +
"existingFileEntryReturnType",
ItemSelectorRepositoryEntryBrowserReturnTypeUtil.
getFirstAvailableExistingFileEntryReturnType(
_desiredItemSelectorReturnTypes));
}
request.setAttribute(
"liferay-item-selector:repository-entry-browser:extensions",
_extensions);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:" +
"itemSelectedEventName",
_itemSelectedEventName);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:" +
"itemSelectorReturnTypeResolver",
_itemSelectorReturnTypeResolver);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:maxFileSize",
_maxFileSize);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:portletURL",
_portletURL);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:repositoryEntries",
_repositoryEntries);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:" +
"repositoryEntriesCount",
_repositoryEntriesCount);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:showBreadcrumb",
_showBreadcrumb);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:" +
"showDragAndDropZone",
_showDragAndDropZone);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:tabName", _tabName);
request.setAttribute(
"liferay-item-selector:repository-entry-browser:uploadURL",
_uploadURL);
}
private String _getEmptyResultsMessage(HttpServletRequest request) {
if (Validator.isNotNull(_emptyResultsMessage)) {
return _emptyResultsMessage;
}
return LanguageUtil.get(request, "no-results-were-found");
}
private List<ItemSelectorReturnType> _desiredItemSelectorReturnTypes;
private String _displayStyle;
private String _emptyResultsMessage;
private List<String> _extensions = new ArrayList<>();
private String _itemSelectedEventName;
private ItemSelectorReturnTypeResolver _itemSelectorReturnTypeResolver;
private long _maxFileSize =
PropsValues.UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE;
private PortletURL _portletURL;
private List<RepositoryEntry> _repositoryEntries = new ArrayList<>();
private int _repositoryEntriesCount;
private boolean _showBreadcrumb;
private boolean _showDragAndDropZone = true;
private String _tabName;
private PortletURL _uploadURL;
}