Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LPS-64462 Categories should use Lexicon tables in list view #37906

Closed
wants to merge 8 commits into from
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,32 @@

package com.liferay.asset.categories.admin.web.display.context;

import com.liferay.asset.kernel.AssetRendererFactoryRegistryUtil;
import com.liferay.asset.kernel.model.AssetCategory;
import com.liferay.asset.kernel.model.AssetCategoryConstants;
import com.liferay.asset.kernel.model.AssetCategoryDisplay;
import com.liferay.asset.kernel.model.AssetRendererFactory;
import com.liferay.asset.kernel.model.AssetVocabulary;
import com.liferay.asset.kernel.model.AssetVocabularyDisplay;
import com.liferay.asset.kernel.model.ClassType;
import com.liferay.asset.kernel.model.ClassTypeReader;
import com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil;
import com.liferay.asset.kernel.service.AssetCategoryServiceUtil;
import com.liferay.asset.kernel.service.AssetVocabularyLocalServiceUtil;
import com.liferay.asset.kernel.service.AssetVocabularyServiceUtil;
import com.liferay.portal.kernel.dao.search.EmptyOnClickRowChecker;
import com.liferay.portal.kernel.dao.search.SearchContainer;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.portlet.PortletURLUtil;
import com.liferay.portal.kernel.search.Sort;
import com.liferay.portal.kernel.security.permission.ResourceActionsUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portlet.asset.util.comparator.AssetCategoryCreateDateComparator;
Expand Down Expand Up @@ -58,6 +68,59 @@ public AssetCategoriesDisplayContext(
_request = request;
}

public String getAssetType(AssetVocabulary vocabulary)
throws PortalException {

ThemeDisplay themeDisplay = (ThemeDisplay)_request.getAttribute(
WebKeys.THEME_DISPLAY);

long[] selectedClassNameIds = vocabulary.getSelectedClassNameIds();
long[] selectedClassTypePKs = vocabulary.getSelectedClassTypePKs();

StringBundler sb = new StringBundler();

for (int i = 0; i < selectedClassNameIds.length; i++) {
long classNameId = selectedClassNameIds[i];
long classTypePK = selectedClassTypePKs[i];

String name = LanguageUtil.get(_request, "all-asset-types");

if (classNameId != AssetCategoryConstants.ALL_CLASS_NAME_ID) {
if (classTypePK != -1) {
AssetRendererFactory<?> assetRendererFactory =
AssetRendererFactoryRegistryUtil.
getAssetRendererFactoryByClassNameId(classNameId);

ClassTypeReader classTypeReader =
assetRendererFactory.getClassTypeReader();

ClassType classType = classTypeReader.getClassType(
classTypePK, themeDisplay.getLocale());

name = classType.getName();
}
else {
name = ResourceActionsUtil.getModelResource(
themeDisplay.getLocale(),
PortalUtil.getClassName(classNameId));
}
}

sb.append(name);

if (vocabulary.isRequired(classNameId, classTypePK)) {
sb.append(StringPool.SPACE);
sb.append(StringPool.STAR);
}

sb.append(StringPool.COMMA);
}

sb.setIndex(sb.index() - 1);

return sb.toString();
}

public String getCategoriesRedirect() {
String redirect = ParamUtil.getString(_request, "redirect");

Expand Down Expand Up @@ -331,6 +394,14 @@ public SearchContainer getVocabulariesSearchContainer()
scopeGroupId, true, vocabulariesSearchContainer.getStart(),
vocabulariesSearchContainer.getEnd(),
vocabulariesSearchContainer.getOrderByComparator());

if (vocabulariesCount == 0) {
vocabulariesCount =
AssetVocabularyServiceUtil.getGroupVocabulariesCount(
scopeGroupId);

vocabulariesSearchContainer.setTotal(vocabulariesCount);
}
}

vocabulariesSearchContainer.setResults(vocabularies);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ page import="com.liferay.portal.kernel.util.ListUtil" %><%@
page import="com.liferay.portal.kernel.util.ParamUtil" %><%@
page import="com.liferay.portal.kernel.util.PortalUtil" %><%@
page import="com.liferay.portal.kernel.util.PredicateFilter" %><%@
page import="com.liferay.portal.kernel.util.StringBundler" %><%@
page import="com.liferay.portal.kernel.util.StringPool" %><%@
page import="com.liferay.portal.kernel.util.StringUtil" %><%@
page import="com.liferay.portal.kernel.util.Validator" %><%@
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ PortalUtil.addPortletBreadcrumbEntry(request, LanguageUtil.get(request, "vocabul
</liferay-frontend:management-bar-filters>

<liferay-frontend:management-bar-display-buttons
displayViews='<%= new String[] {"list"} %>'
displayViews='<%= new String[] {"icon", "descriptive", "list"} %>'
portletURL="<%= PortletURLUtil.clone(renderResponse.createRenderURL(), liferayPortletResponse) %>"
selectedDisplayStyle="<%= assetCategoriesDisplayContext.getDisplayStyle() %>"
/>
Expand Down Expand Up @@ -97,92 +97,110 @@ PortalUtil.addPortletBreadcrumbEntry(request, LanguageUtil.get(request, "vocabul
<portlet:param name="vocabularyId" value="<%= String.valueOf(vocabulary.getVocabularyId()) %>" />
</portlet:renderURL>

<liferay-ui:search-container-column-text
cssClass="content-column name-column title-column"
href="<%= rowURL %>"
name="name"
truncate="<%= true %>"
value="<%= HtmlUtil.escape(vocabulary.getTitle(locale)) %>"
/>

<liferay-ui:search-container-column-text
cssClass="content-column description-column"
name="description"
truncate="<%= true %>"
value="<%= HtmlUtil.escape(vocabulary.getDescription(locale)) %>"
/>

<liferay-ui:search-container-column-date
cssClass="create-date-column text-column"
name="create-date"
property="createDate"
/>

<liferay-ui:search-container-column-text
cssClass="number-of-categories-column"
name="number-of-categories"
value="<%= String.valueOf(vocabulary.getCategoriesCount()) %>"
/>

<liferay-ui:search-container-column-text
cssClass="asset-type-column text-column"
name="asset-type"
>

<%
long[] selectedClassNameIds = vocabulary.getSelectedClassNameIds();
long[] selectedClassTypePKs = vocabulary.getSelectedClassTypePKs();

for (int i = 0; i < selectedClassNameIds.length; i++) {
long classNameId = selectedClassNameIds[i];
long classTypePK = selectedClassTypePKs[i];

String name = LanguageUtil.get(request, "all-asset-types");

if (classNameId != AssetCategoryConstants.ALL_CLASS_NAME_ID) {
if (classTypePK != -1) {
AssetRendererFactory<?> assetRendererFactory = AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassNameId(classNameId);

ClassTypeReader classTypeReader = assetRendererFactory.getClassTypeReader();

ClassType classType = classTypeReader.getClassType(classTypePK, locale);

name = classType.getName();
}
else {
name = ResourceActionsUtil.getModelResource(locale, PortalUtil.getClassName(classNameId));
}
}

StringBundler sb = new StringBundler();

sb.append(name);

if (vocabulary.isRequired(classNameId, classTypePK)) {
sb.append(StringPool.SPACE);
sb.append(StringPool.STAR);
}

if ((i + 1) < selectedClassNameIds.length) {
sb.append(StringPool.COMMA);
}
%>

<%= sb.toString() %>

<%
}
%>

</liferay-ui:search-container-column-text>

<liferay-ui:search-container-column-jsp
cssClass="list-group-item-field"
path="/vocabulary_action.jsp"
/>
<c:choose>
<c:when test='<%= Validator.equals(assetCategoriesDisplayContext.getDisplayStyle(), "descriptive") %>'>
<liferay-ui:search-container-column-icon
icon="categories"
toggleRowChecker="<%= true %>"
/>

<liferay-ui:search-container-column-text
colspan="<%= 2 %>"
>
<h6 class="text-default">
<liferay-ui:message arguments="<%= LanguageUtil.getTimeDescription(request, System.currentTimeMillis() - vocabulary.getCreateDate().getTime(), true) %>" key="x-ago" translateArguments="<%= false %>" />
</h6>

<h5>
<aui:a href="<%= (rowURL != null) ? rowURL.toString() : null %>"><%= HtmlUtil.escape(vocabulary.getTitle(locale)) %></aui:a>
</h5>

<h6 class="text-default">
<%= HtmlUtil.escape(vocabulary.getDescription(locale)) %>
</h6>

<h6 class="text-default">
<strong><liferay-ui:message key="number-of-categories" /></strong>: <%= vocabulary.getCategoriesCount() %>
</h6>

<h6 class="text-default">
<strong><liferay-ui:message key="asset-type" /></strong>: <%= assetCategoriesDisplayContext.getAssetType(vocabulary) %>
</h6>
</liferay-ui:search-container-column-text>

<liferay-ui:search-container-column-jsp
path="/vocabulary_action.jsp"
/>
</c:when>
<c:when test='<%= Validator.equals(assetCategoriesDisplayContext.getDisplayStyle(), "icon") %>'>

<%
row.setCssClass("col-md-2 col-sm-4 col-xs-6");
%>

<liferay-ui:search-container-column-text>
<liferay-frontend:icon-vertical-card
actionJsp="/vocabulary_action.jsp"
actionJspServletContext="<%= application %>"
icon="categories"
resultRow="<%= row %>"
rowChecker="<%= searchContainer.getRowChecker() %>"
subtitle="<%= vocabulary.getDescription() %>"
title="<%= vocabulary.getName() %>"
>
<liferay-frontend:vertical-card-header>
<liferay-ui:message arguments="<%= LanguageUtil.getTimeDescription(request, System.currentTimeMillis() - vocabulary.getCreateDate().getTime(), true) %>" key="x-ago" translateArguments="<%= false %>" />
</liferay-frontend:vertical-card-header>

<liferay-frontend:vertical-card-footer>
<%= assetCategoriesDisplayContext.getAssetType(vocabulary) %>
</liferay-frontend:vertical-card-footer>
</liferay-frontend:icon-vertical-card>
</liferay-ui:search-container-column-text>
</c:when>
<c:when test='<%= Validator.equals(assetCategoriesDisplayContext.getDisplayStyle(), "list") %>'>
<liferay-ui:search-container-column-text
cssClass="content-column name-column title-column"
href="<%= rowURL %>"
name="name"
truncate="<%= true %>"
value="<%= HtmlUtil.escape(vocabulary.getTitle(locale)) %>"
/>

<liferay-ui:search-container-column-text
cssClass="content-column description-column"
name="description"
truncate="<%= true %>"
value="<%= HtmlUtil.escape(vocabulary.getDescription(locale)) %>"
/>

<liferay-ui:search-container-column-date
cssClass="create-date-column text-column"
name="create-date"
property="createDate"
/>

<liferay-ui:search-container-column-text
cssClass="number-of-categories-column"
name="number-of-categories"
value="<%= String.valueOf(vocabulary.getCategoriesCount()) %>"
/>

<liferay-ui:search-container-column-text
cssClass="asset-type-column text-column"
name="asset-type"
value="<%= assetCategoriesDisplayContext.getAssetType(vocabulary) %>"
/>

<liferay-ui:search-container-column-jsp
cssClass="list-group-item-field"
path="/vocabulary_action.jsp"
/>
</c:when>
</c:choose>
</liferay-ui:search-container-row>

<liferay-ui:search-iterator markupView="lexicon" />
<liferay-ui:search-iterator displayStyle="<%= assetCategoriesDisplayContext.getDisplayStyle() %>" markupView="lexicon" />
</liferay-ui:search-container>
</aui:form>

Expand Down