From e07a8fbfd6acdcd704112328bdd3c3f10ddf3410 Mon Sep 17 00:00:00 2001 From: noemi-zamarripa Date: Wed, 2 Oct 2019 14:46:36 -0700 Subject: [PATCH] LPS-101063 vocabulary selector --- .../.lfrbuild-portal | 0 .../asset-vocabularies-selector-web/bnd.bnd | 11 + .../build.gradle | 14 ++ .../package.json | 16 ++ .../AssetVocabulariesSelectorPortletKeys.java | 26 +++ ...setVocabulariesSelectorDisplayContext.java | 183 +++++++++++++++++ ...ulariesSelectorBrowserPortletProvider.java | 39 ++++ .../AssetVocabulariesSelectorPortlet.java | 161 +++++++++++++++ .../AssetVocabulariesSelectorWebUpgrade.java | 34 ++++ .../META-INF/resources/css/tree.scss | 145 ++++++++++++++ .../resources/META-INF/resources/init-ext.jsp | 15 ++ .../resources/META-INF/resources/init.jsp | 39 ++++ .../resources/js/SelectVocabulary.es.js | 188 ++++++++++++++++++ .../resources/js/SelectVocabulary.soy | 55 +++++ .../resources/META-INF/resources/view.jsp | 33 +++ .../resources/content/Language.properties | 1 + .../resources/content/Language_ar.properties | 1 + .../resources/content/Language_bg.properties | 1 + .../resources/content/Language_ca.properties | 1 + .../resources/content/Language_cs.properties | 1 + .../resources/content/Language_da.properties | 1 + .../resources/content/Language_de.properties | 1 + .../resources/content/Language_el.properties | 1 + .../resources/content/Language_en.properties | 1 + .../resources/content/Language_es.properties | 1 + .../resources/content/Language_et.properties | 1 + .../resources/content/Language_eu.properties | 1 + .../resources/content/Language_fa.properties | 1 + .../resources/content/Language_fi.properties | 1 + .../resources/content/Language_fr.properties | 1 + .../resources/content/Language_gl.properties | 1 + .../content/Language_hi_IN.properties | 1 + .../resources/content/Language_hr.properties | 1 + .../resources/content/Language_hu.properties | 1 + .../resources/content/Language_in.properties | 1 + .../resources/content/Language_it.properties | 1 + .../resources/content/Language_iw.properties | 1 + .../resources/content/Language_ja.properties | 1 + .../resources/content/Language_kk.properties | 1 + .../resources/content/Language_ko.properties | 1 + .../resources/content/Language_lo.properties | 1 + .../resources/content/Language_lt.properties | 1 + .../resources/content/Language_nb.properties | 1 + .../resources/content/Language_nl.properties | 1 + .../content/Language_nl_BE.properties | 1 + .../resources/content/Language_pl.properties | 1 + .../content/Language_pt_BR.properties | 1 + .../content/Language_pt_PT.properties | 1 + .../resources/content/Language_ro.properties | 1 + .../resources/content/Language_ru.properties | 1 + .../resources/content/Language_sk.properties | 1 + .../resources/content/Language_sl.properties | 1 + .../content/Language_sr_RS.properties | 1 + .../content/Language_sr_RS_latin.properties | 1 + .../resources/content/Language_sv.properties | 1 + .../content/Language_ta_IN.properties | 1 + .../resources/content/Language_th.properties | 1 + .../resources/content/Language_tr.properties | 1 + .../resources/content/Language_uk.properties | 1 + .../resources/content/Language_vi.properties | 1 + .../content/Language_zh_CN.properties | 1 + .../content/Language_zh_TW.properties | 1 + 62 files changed, 1006 insertions(+) create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/.lfrbuild-portal create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/bnd.bnd create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/build.gradle create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/package.json create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/contants/AssetVocabulariesSelectorPortletKeys.java create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/display/context/AssetVocabulariesSelectorDisplayContext.java create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/portlet/AssetVocabulariesSelectorBrowserPortletProvider.java create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/portlet/AssetVocabulariesSelectorPortlet.java create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/upgrade/AssetVocabulariesSelectorWebUpgrade.java create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/css/tree.scss create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/init-ext.jsp create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/init.jsp create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/js/SelectVocabulary.es.js create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/js/SelectVocabulary.soy create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/view.jsp create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ar.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_bg.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ca.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_cs.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_da.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_de.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_el.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_en.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_es.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_et.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_eu.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fa.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fi.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fr.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_gl.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hi_IN.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hr.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hu.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_in.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_it.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_iw.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ja.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_kk.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ko.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_lo.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_lt.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nb.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nl.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nl_BE.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pl.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pt_BR.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pt_PT.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ro.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ru.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sk.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sl.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sr_RS.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sr_RS_latin.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sv.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ta_IN.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_th.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_tr.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_uk.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_vi.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_zh_CN.properties create mode 100644 modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_zh_TW.properties diff --git a/modules/apps/asset/asset-vocabularies-selector-web/.lfrbuild-portal b/modules/apps/asset/asset-vocabularies-selector-web/.lfrbuild-portal new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/modules/apps/asset/asset-vocabularies-selector-web/bnd.bnd b/modules/apps/asset/asset-vocabularies-selector-web/bnd.bnd new file mode 100644 index 00000000000000..c8bb8fd8ba6e08 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/bnd.bnd @@ -0,0 +1,11 @@ +Bundle-Name: Liferay Asset Vocabularies Selector Web +Bundle-SymbolicName: com.liferay.asset.vocabularies.selector.web +Bundle-Version: 3.0.0 +Provide-Capability:\ + soy;\ + type="asset-vocabularies-selector-web";\ + version:Version="${Bundle-Version}" +Require-Capability:\ + osgi.extender;\ + filter:="(&(osgi.extender=jsp.taglib)(uri=http://liferay.com/tld/soy))" +Web-ContextPath: /asset-vocabularies-selector-web \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/build.gradle b/modules/apps/asset/asset-vocabularies-selector-web/build.gradle new file mode 100644 index 00000000000000..6864906bd01128 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/build.gradle @@ -0,0 +1,14 @@ +dependencies { + compileOnly group: "com.liferay.portal", name: "com.liferay.portal.impl", version: "default" + compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "default" + compileOnly group: "com.liferay.portal", name: "com.liferay.util.taglib", version: "default" + compileOnly group: "javax.portlet", name: "portlet-api", version: "3.0.1" + compileOnly group: "javax.servlet.jsp", name: "javax.servlet.jsp-api", version: "2.3.1" + compileOnly group: "org.apache.felix", name: "org.apache.felix.http.servlet-api", version: "1.1.2" + compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.3.0" + compileOnly project(":apps:frontend-taglib:frontend-taglib") + compileOnly project(":apps:frontend-taglib:frontend-taglib-soy") + compileOnly project(":apps:portal:portal-upgrade-api") + compileOnly project(":core:petra:petra-lang") + compileOnly project(":core:petra:petra-string") +} \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/package.json b/modules/apps/asset/asset-vocabularies-selector-web/package.json new file mode 100644 index 00000000000000..d760af906a5c46 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/package.json @@ -0,0 +1,16 @@ +{ + "dependencies": { + "frontend-js-web": "*", + "metal": "2.16.8", + "metal-component": "2.16.8", + "metal-soy": "2.16.8", + "metal-state": "2.16.8" + }, + "name": "asset-vocabularies-selector-web", + "scripts": { + "build": "liferay-npm-scripts build", + "checkFormat": "liferay-npm-scripts check", + "format": "liferay-npm-scripts fix" + }, + "version": "3.0.0" +} diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/contants/AssetVocabulariesSelectorPortletKeys.java b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/contants/AssetVocabulariesSelectorPortletKeys.java new file mode 100644 index 00000000000000..5a445a5963d567 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/contants/AssetVocabulariesSelectorPortletKeys.java @@ -0,0 +1,26 @@ +/** + * 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.asset.vocabularies.selector.web.internal.contants; + +/** + * @author Raymond Augé + */ +public class AssetVocabulariesSelectorPortletKeys { + + public static final String ASSET_VOCABULARIES_SELECTOR = + "com_liferay_asset_vocabularies_selector_web_portlet_" + + "AssetVocabulariesSelectorPortlet"; + +} \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/display/context/AssetVocabulariesSelectorDisplayContext.java b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/display/context/AssetVocabulariesSelectorDisplayContext.java new file mode 100644 index 00000000000000..70c60b70dc8a71 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/display/context/AssetVocabulariesSelectorDisplayContext.java @@ -0,0 +1,183 @@ +/** + * 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.asset.vocabularies.selector.web.internal.display.context; + +import com.liferay.asset.kernel.model.AssetVocabulary; +import com.liferay.asset.kernel.service.AssetVocabularyLocalService; +import com.liferay.asset.kernel.service.AssetVocabularyService; +import com.liferay.petra.string.StringBundler; +import com.liferay.petra.string.StringPool; +import com.liferay.portal.kernel.exception.PortalException; +import com.liferay.portal.kernel.json.JSONArray; +import com.liferay.portal.kernel.json.JSONFactory; +import com.liferay.portal.kernel.json.JSONObject; +import com.liferay.portal.kernel.language.Language; +import com.liferay.portal.kernel.model.Group; +import com.liferay.portal.kernel.service.GroupLocalService; +import com.liferay.portal.kernel.theme.ThemeDisplay; +import com.liferay.portal.kernel.util.Html; +import com.liferay.portal.kernel.util.ParamUtil; +import com.liferay.portal.kernel.util.Validator; +import com.liferay.portal.kernel.util.WebKeys; + +import java.util.List; + +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author Raymond Augé + */ +public class AssetVocabulariesSelectorDisplayContext { + + public AssetVocabulariesSelectorDisplayContext( + RenderRequest renderRequest, RenderResponse renderResponse, + HttpServletRequest httpServletRequest) { + + _renderRequest = renderRequest; + _renderResponse = renderResponse; + _httpServletRequest = httpServletRequest; + _assetVocabularyService = + (AssetVocabularyService)renderRequest.getAttribute( + "assetVocabularyService"); + _assetVocabularyLocalService = + (AssetVocabularyLocalService)renderRequest.getAttribute( + "assetVocabularyLocalService"); + _groupLocalService = (GroupLocalService)renderRequest.getAttribute( + "groupLocalService"); + _html = (Html)renderRequest.getAttribute("html"); + _jsonFactory = (JSONFactory)renderRequest.getAttribute("jsonFactory"); + _language = (Language)renderRequest.getAttribute("language"); + } + + public String getEventName() { + if (Validator.isNotNull(_eventName)) { + return _eventName; + } + + _eventName = ParamUtil.getString( + _httpServletRequest, "eventName", + _renderResponse.getNamespace() + "selectVocabulary"); + + return _eventName; + } + + public String getSelectedVocabularies() { + if (_selectedVocabularies != null) { + return _selectedVocabularies; + } + + _selectedVocabularies = ParamUtil.getString( + _httpServletRequest, "selectedVocabularies"); + + return _selectedVocabularies; + } + + public JSONArray getVocabulariesJSONArray() throws Exception { + JSONArray jsonArray = _jsonFactory.createJSONArray(); + + ThemeDisplay themeDisplay = + (ThemeDisplay)_httpServletRequest.getAttribute( + WebKeys.THEME_DISPLAY); + + long[] groupIds = getGroupIds(themeDisplay); + + List vocabularies = + _assetVocabularyService.getGroupsVocabularies(groupIds); + + for (AssetVocabulary vocabulary : vocabularies) { + JSONObject jsonObject = _jsonFactory.createJSONObject(); + + jsonObject.put( + "icon", "vocabularies" + ).put( + "id", vocabulary.getVocabularyId() + ).put( + "key", vocabulary.getName() + ).put( + "name", getVocabularyTitle(vocabulary.getVocabularyId()) + ); + + if (getSelectedVocabularies().contains( + String.valueOf(vocabulary.getVocabularyId()))) { + + jsonObject.put("selected", true); + } + + jsonArray.put(jsonObject); + } + + return jsonArray; + } + + public String getVocabularyTitle(long vocabularyId) throws PortalException { + ThemeDisplay themeDisplay = (ThemeDisplay)_renderRequest.getAttribute( + WebKeys.THEME_DISPLAY); + + AssetVocabulary assetVocabulary = + _assetVocabularyLocalService.fetchAssetVocabulary(vocabularyId); + + StringBundler sb = new StringBundler(5); + + String title = assetVocabulary.getTitle(themeDisplay.getLocale()); + + sb.append(_html.escape(title)); + + sb.append(StringPool.SPACE); + sb.append(StringPool.OPEN_PARENTHESIS); + + if (assetVocabulary.getGroupId() == themeDisplay.getCompanyGroupId()) { + sb.append(_language.get(_httpServletRequest, "global")); + } + else { + Group group = _groupLocalService.fetchGroup( + assetVocabulary.getGroupId()); + + sb.append(group.getDescriptiveName(themeDisplay.getLocale())); + } + + sb.append(StringPool.CLOSE_PARENTHESIS); + + return sb.toString(); + } + + private long[] getGroupIds(ThemeDisplay themeDisplay) { + if (_groupIds != null) { + return _groupIds; + } + + return _groupIds = ParamUtil.getLongValues( + _httpServletRequest, "groupIds", + new long[] { + themeDisplay.getCompanyGroupId(), themeDisplay.getScopeGroupId() + }); + } + + private final AssetVocabularyLocalService _assetVocabularyLocalService; + private final AssetVocabularyService _assetVocabularyService; + private String _eventName; + private long[] _groupIds; + private final GroupLocalService _groupLocalService; + private final Html _html; + private final HttpServletRequest _httpServletRequest; + private final JSONFactory _jsonFactory; + private final Language _language; + private final RenderRequest _renderRequest; + private final RenderResponse _renderResponse; + private String _selectedVocabularies; + +} \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/portlet/AssetVocabulariesSelectorBrowserPortletProvider.java b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/portlet/AssetVocabulariesSelectorBrowserPortletProvider.java new file mode 100644 index 00000000000000..87b8555ebfd7ac --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/portlet/AssetVocabulariesSelectorBrowserPortletProvider.java @@ -0,0 +1,39 @@ +/** + * 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.asset.vocabularies.selector.web.internal.portlet; + +import com.liferay.asset.vocabularies.selector.web.internal.contants.AssetVocabulariesSelectorPortletKeys; +import com.liferay.portal.kernel.portlet.BasePortletProvider; +import com.liferay.portal.kernel.portlet.BrowsePortletProvider; + +import org.osgi.service.component.annotations.Component; + +/** + * @author Raymond Augé + */ +@Component( + immediate = true, + property = "model.class.name=com.liferay.asset.kernel.model.AssetVocabulary", + service = BrowsePortletProvider.class +) +public class AssetVocabulariesSelectorBrowserPortletProvider + extends BasePortletProvider implements BrowsePortletProvider { + + @Override + public String getPortletName() { + return AssetVocabulariesSelectorPortletKeys.ASSET_VOCABULARIES_SELECTOR; + } + +} \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/portlet/AssetVocabulariesSelectorPortlet.java b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/portlet/AssetVocabulariesSelectorPortlet.java new file mode 100644 index 00000000000000..f3066f64c5fa22 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/portlet/AssetVocabulariesSelectorPortlet.java @@ -0,0 +1,161 @@ +/** + * 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.asset.vocabularies.selector.web.internal.portlet; + +import com.liferay.asset.kernel.model.AssetVocabulary; +import com.liferay.asset.kernel.service.AssetVocabularyLocalService; +import com.liferay.asset.kernel.service.AssetVocabularyService; +import com.liferay.asset.vocabularies.selector.web.internal.contants.AssetVocabulariesSelectorPortletKeys; +import com.liferay.portal.kernel.json.JSONArray; +import com.liferay.portal.kernel.json.JSONFactory; +import com.liferay.portal.kernel.json.JSONFactoryUtil; +import com.liferay.portal.kernel.json.JSONObject; +import com.liferay.portal.kernel.json.JSONUtil; +import com.liferay.portal.kernel.language.Language; +import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet; +import com.liferay.portal.kernel.service.GroupLocalService; +import com.liferay.portal.kernel.theme.ThemeDisplay; +import com.liferay.portal.kernel.util.GetterUtil; +import com.liferay.portal.kernel.util.Html; +import com.liferay.portal.kernel.util.ParamUtil; +import com.liferay.portal.kernel.util.WebKeys; + +import java.io.IOException; + +import java.util.List; + +import javax.portlet.Portlet; +import javax.portlet.PortletException; +import javax.portlet.PortletRequest; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import javax.portlet.ResourceRequest; +import javax.portlet.ResourceResponse; + +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +/** + * @author Raymond Augé + */ +@Component( + immediate = true, + property = { + "com.liferay.portlet.add-default-resource=true", + "com.liferay.portlet.css-class-wrapper=portlet-asset-vocabularies-selector", + "com.liferay.portlet.header-portlet-css=/css/tree.css", + "com.liferay.portlet.private-request-attributes=false", + "com.liferay.portlet.private-session-attributes=false", + "com.liferay.portlet.render-weight=50", + "com.liferay.portlet.system=true", + "com.liferay.portlet.use-default-template=true", + "javax.portlet.display-name=Asset Vocabularies Selector", + "javax.portlet.init-param.template-path=/META-INF/resources/", + "javax.portlet.init-param.view-template=/view.jsp", + "javax.portlet.name=" + AssetVocabulariesSelectorPortletKeys.ASSET_VOCABULARIES_SELECTOR, + "javax.portlet.resource-bundle=content.Language", + "javax.portlet.security-role-ref=guest,power-user,user" + }, + service = Portlet.class +) +public class AssetVocabulariesSelectorPortlet extends MVCPortlet { + + @Override + public void serveResource( + ResourceRequest resourceRequest, ResourceResponse resourceResponse) + throws IOException, PortletException { + + String resourceID = GetterUtil.getString( + resourceRequest.getResourceID()); + + if (resourceID.equals("getVocabularies")) { + JSONArray jsonArray = JSONFactoryUtil.createJSONArray(); + + ThemeDisplay themeDisplay = + (ThemeDisplay)resourceRequest.getAttribute( + WebKeys.THEME_DISPLAY); + + long[] groupIds = getGroupIds(resourceRequest, themeDisplay); + + List vocabularies = + _assetVocabularyService.getGroupsVocabularies(groupIds); + + for (AssetVocabulary vocabulary : vocabularies) { + JSONObject jsonObject = JSONUtil.put( + "icon", "vocabularies" + ).put( + "id", vocabulary.getVocabularyId() + ).put( + "key", vocabulary.getName() + ).put( + "name", vocabulary.getTitle(themeDisplay.getLocale()) + ); + + jsonArray.put(jsonObject); + } + + writeJSON(resourceRequest, resourceResponse, jsonArray.toString()); + } + else { + super.serveResource(resourceRequest, resourceResponse); + } + } + + @Override + protected void doDispatch( + RenderRequest renderRequest, RenderResponse renderResponse) + throws IOException, PortletException { + + renderRequest.setAttribute( + "assetVocabularyLocalService", _assetVocabularyLocalService); + renderRequest.setAttribute( + "assetVocabularyService", _assetVocabularyService); + renderRequest.setAttribute("groupLocalService", _groupLocalService); + renderRequest.setAttribute("html", _html); + renderRequest.setAttribute("jsonFactory", _jsonFactory); + renderRequest.setAttribute("language", _language); + + super.doDispatch(renderRequest, renderResponse); + } + + private long[] getGroupIds( + PortletRequest portletRequest, ThemeDisplay themeDisplay) { + + return ParamUtil.getLongValues( + portletRequest, "groupIds", + new long[] { + themeDisplay.getCompanyGroupId(), themeDisplay.getScopeGroupId() + }); + } + + @Reference + private AssetVocabularyLocalService _assetVocabularyLocalService; + + @Reference + private AssetVocabularyService _assetVocabularyService; + + @Reference + private GroupLocalService _groupLocalService; + + @Reference + private Html _html; + + @Reference + private JSONFactory _jsonFactory; + + @Reference + private Language _language; + +} \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/upgrade/AssetVocabulariesSelectorWebUpgrade.java b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/upgrade/AssetVocabulariesSelectorWebUpgrade.java new file mode 100644 index 00000000000000..decc4fa14d55f5 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/java/com/liferay/asset/vocabularies/selector/web/internal/upgrade/AssetVocabulariesSelectorWebUpgrade.java @@ -0,0 +1,34 @@ +/** + * 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.asset.vocabularies.selector.web.internal.upgrade; + +import com.liferay.portal.kernel.upgrade.DummyUpgradeStep; +import com.liferay.portal.upgrade.registry.UpgradeStepRegistrator; + +import org.osgi.service.component.annotations.Component; + +/** + * @author Raymond Augé + */ +@Component(immediate = true, service = UpgradeStepRegistrator.class) +public class AssetVocabulariesSelectorWebUpgrade + implements UpgradeStepRegistrator { + + @Override + public void register(Registry registry) { + registry.register("0.0.0", "1.0.0", new DummyUpgradeStep()); + } + +} \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/css/tree.scss b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/css/tree.scss new file mode 100644 index 00000000000000..8b4cf79c6d52b8 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/css/tree.scss @@ -0,0 +1,145 @@ +$navigation-color: #869cad; +$spacer: 1rem; + +.select-vocabulary-filter { + background: #fff; + border-bottom: 1px solid #dee2e6; + margin-bottom: $spacer * 1.5; + padding: $spacer * 0.75; +} + +.vocabulary-tree { + .card { + border: 1px solid #e7e7ed; + box-shadow: none; + color: #6b6c7e; + margin-bottom: 0; + + &:hover { + background-color: #f7f8f9; + border-color: #cdced9; + color: #272833; + } + + &:focus { + box-shadow: 0 0 0 2px white, 0 0 0 4px #80afff; + color: #272833; + } + } + + .card-row-padded { + padding: 8px 12px; + } + + .selected .card { + background-color: #80acff; + border-color: #80acff; + color: #272833; + } + + .disabled { + .card, + .card:hover, + .card:focus { + background-color: #e7e7ed; + border: 1px solid #e7e7ed; + box-shadow: none; + color: #272833; + cursor: not-allowed; + outline: none; + } + } + + .treeview { + margin-left: -15px; + + @media (min-width: 768px) { + margin-left: -54px; + } + } + + .treeview-node { + margin-bottom: 0.5rem; + position: relative; + } + + .treeview-node-main { + float: none; + margin-bottom: 15px; + padding-left: 15px; + position: relative; + + &:not(.disabled) { + cursor: pointer; + } + + @media (min-width: 768px) { + margin-bottom: 24px; + padding-left: 24px; + } + } + + .treeview-nodes { + border-left: 2px solid $navigation-color; + list-style: none; + margin-left: 15px; + padding-left: 0; + + .treeview-nodes { + border-left-style: dashed; + border-left-width: 1px; + } + + @media (min-width: 768px) { + margin-left: 54px; + } + } + + .treeview-node-name { + margin-left: 2px; + } + + .treeview-node-toggler { + background-color: $navigation-color; + border-radius: 3px; + display: inline-block; + height: 14px; + left: 0; + margin-left: -8px; + margin-top: -8px; + position: absolute; + text-align: center; + top: 50%; + width: 14px; + + &:before { + color: #fff; + content: '+'; + display: block; + line-height: 11px; + + .win & { + line-height: 14px; + } + } + } + + .treeview-node-wrapper > .treeview-nodes { + display: none; + } + + .expanded { + > .treeview-node-main > .treeview-node-toggler:before { + content: '-'; + font-size: 21px; + + .win & { + line-height: 11px; + } + } + + > .treeview-nodes { + display: block; + } + } +} diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/init-ext.jsp b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/init-ext.jsp new file mode 100644 index 00000000000000..bd7e580a414ba1 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/init-ext.jsp @@ -0,0 +1,15 @@ +<%-- +/** + * 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. + */ +--%> \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/init.jsp b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/init.jsp new file mode 100644 index 00000000000000..8e4f15824ac7b2 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/init.jsp @@ -0,0 +1,39 @@ +<%-- +/** + * 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. + */ +--%> + +<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> + +<%@ taglib uri="http://liferay.com/tld/frontend" prefix="liferay-frontend" %><%@ +taglib uri="http://liferay.com/tld/soy" prefix="soy" %><%@ +taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %> + +<%@ page import="com.liferay.asset.vocabularies.selector.web.internal.display.context.AssetVocabulariesSelectorDisplayContext" %><%@ +page import="com.liferay.portal.kernel.util.HtmlUtil" %> + +<%@ page import="java.util.HashMap" %><%@ +page import="java.util.Map" %> + + + + + + + +<% +AssetVocabulariesSelectorDisplayContext assetVocabulariesSelectorDisplayContext = new AssetVocabulariesSelectorDisplayContext(renderRequest, renderResponse, request); +%> + +<%@ include file="/init-ext.jsp" %> \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/js/SelectVocabulary.es.js b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/js/SelectVocabulary.es.js new file mode 100644 index 00000000000000..5df7bcf7c5cbb0 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/js/SelectVocabulary.es.js @@ -0,0 +1,188 @@ +/** + * 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. + */ + +import 'frontend-taglib/cards_treeview/CardsTreeview.es'; +import 'metal'; +import 'metal-component'; +import {PortletBase} from 'frontend-js-web'; +import Soy from 'metal-soy'; +import {Config} from 'metal-state'; + +import templates from './SelectVocabulary.soy'; + +/** + * KeyBoardEvent enter key + * @review + * @type {!string} + */ + +const ENTER_KEY = 'Enter'; + +/** + * SelectVocabulary + * + * This component shows a list of available vocabularies to move content in and + * allows to filter them by searching. + */ + +class SelectVocabulary extends PortletBase { + /** + * Filters deep nested nodes based on a filtering value + * + * @type {Array.} nodes + * @type {String} filterVAlue + * @protected + */ + + filterSiblingNodes_(nodes, filterValue) { + let filteredNodes = []; + + nodes.forEach(node => { + if (node.name.toLowerCase().indexOf(filterValue) !== -1) { + filteredNodes.push(node); + } + + if (node.children) { + filteredNodes = filteredNodes.concat( + this.filterSiblingNodes_(node.children, filterValue) + ); + } + }); + + return filteredNodes; + } + + /** + * When the search form is submitted, nothing should happend, + * as filtering is performed on keypress. + * @param {KeyboardEvent} event + * @private + * @review + */ + + _handleSearchFormKeyDown(event) { + if (event.key === ENTER_KEY) { + event.preventDefault(); + event.stopImmediatePropagation(); + } + } + + /** + * Searchs for nodes by name based on a filtering value + * + * @param {!Event} event + * @protected + */ + + _searchNodes(event) { + if (!this.originalNodes) { + this.originalNodes = this.nodes; + } else { + this.nodes = this.originalNodes; + } + + const filterValue = event.delegateTarget.value.toLowerCase(); + + if (filterValue !== '') { + this.viewType = 'flat'; + this.nodes = this.filterSiblingNodes_(this.nodes, filterValue); + } else { + this.viewType = 'tree'; + } + } + + /** + * Fires item selector save event on selected node change + * + * @param {!Event} event + * @protected + */ + + _selectedNodeChange(event) { + const newVal = event.newVal; + let selectedNodes = this.selectedNodes_; + + if (!selectedNodes) { + selectedNodes = []; + } + + if (newVal) { + const data = {}; + newVal.forEach(node => { + data[node.id] = { + key: node.key, + value: node.name, + vocabularyId: node.id + }; + }); + + selectedNodes.forEach(node => { + if (newVal.indexOf(node) === -1) { + data[node.id] = { + key: node.key, + unchecked: true, + value: node.name, + vocabularyId: node.id + }; + } + }); + + selectedNodes = []; + + newVal.forEach(node => { + selectedNodes.push(node); + }); + + this.selectedNodes_ = selectedNodes; + + Liferay.Util.getOpener().Liferay.fire(this.itemSelectorSaveEvent, { + data + }); + } + } +} + +SelectVocabulary.STATE = { + /** + * Event name to fire on node selection + * @type {String} + */ + + itemSelectorSaveEvent: Config.string(), + + /** + * List of nodes + * @type {Array.} + */ + + nodes: Config.array().required(), + + /** + * Theme images root path + * @type {String} + */ + + pathThemeImages: Config.string().required(), + + /** + * Type of view to render. Accepted values are 'tree' and 'flat' + * @type {String} + */ + + viewType: Config.string().value('flat') +}; + +Soy.register(SelectVocabulary, templates); + +export default SelectVocabulary; diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/js/SelectVocabulary.soy b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/js/SelectVocabulary.soy new file mode 100644 index 00000000000000..01014ce7c26653 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/js/SelectVocabulary.soy @@ -0,0 +1,55 @@ +{namespace com.liferay.asset.vocabularies.selector.web.SelectVocabulary} + +/** + * This renders the main element. + */ +{template .render} + {@param nodes: list} + {@param pathThemeImages: string} + {@param? _handleSearchFormKeyDown: any} + {@param? _selectedNodeChange: any} + {@param? namespace: string} + {@param? viewType: string} + +
+ + +
+
+
+ {call liferay.frontend.CardsTreeview.render} + {param events: [ + 'selectedNodesChanged': $_selectedNodeChange + ]/} + {param nodes: $nodes /} + {param pathThemeImages: $pathThemeImages /} + {param viewType: $viewType /} + {/call} +
+
+
+
+{/template} \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/view.jsp b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/view.jsp new file mode 100644 index 00000000000000..bf8478899c06e8 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/META-INF/resources/view.jsp @@ -0,0 +1,33 @@ +<%-- +/** + * 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. + */ +--%> + +<%@ include file="/init.jsp" %> + +<% +Map context = new HashMap<>(); + +context.put("itemSelectorSaveEvent", HtmlUtil.escapeJS(assetVocabulariesSelectorDisplayContext.getEventName())); +context.put("namespace", liferayPortletResponse.getNamespace()); +context.put("nodes", assetVocabulariesSelectorDisplayContext.getVocabulariesJSONArray()); +context.put("pathThemeImages", themeDisplay.getPathThemeImages()); +context.put("viewType", "flat"); +%> + + \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language.properties new file mode 100644 index 00000000000000..93c70684a53c31 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ar.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ar.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ar.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_bg.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_bg.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_bg.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ca.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ca.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ca.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_cs.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_cs.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_cs.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_da.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_da.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_da.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_de.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_de.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_de.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_el.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_el.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_el.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_en.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_en.properties new file mode 100644 index 00000000000000..93c70684a53c31 --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_en.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_es.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_es.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_es.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_et.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_et.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_et.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_eu.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_eu.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_eu.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fa.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fa.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fa.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fi.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fi.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fi.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fr.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fr.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_fr.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_gl.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_gl.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_gl.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hi_IN.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hi_IN.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hi_IN.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hr.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hr.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hr.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hu.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hu.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_hu.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_in.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_in.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_in.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_it.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_it.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_it.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_iw.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_iw.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_iw.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ja.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ja.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ja.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_kk.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_kk.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_kk.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ko.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ko.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ko.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_lo.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_lo.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_lo.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_lt.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_lt.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_lt.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nb.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nb.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nb.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nl.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nl.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nl.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nl_BE.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nl_BE.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_nl_BE.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pl.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pl.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pl.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pt_BR.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pt_BR.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pt_BR.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pt_PT.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pt_PT.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_pt_PT.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ro.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ro.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ro.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ru.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ru.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ru.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sk.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sk.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sk.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sl.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sl.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sl.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sr_RS.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sr_RS.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sr_RS.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sr_RS_latin.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sr_RS_latin.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sr_RS_latin.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sv.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sv.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_sv.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ta_IN.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ta_IN.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_ta_IN.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_th.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_th.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_th.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_tr.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_tr.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_tr.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_uk.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_uk.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_uk.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_vi.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_vi.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_vi.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_zh_CN.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_zh_CN.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_zh_CN.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file diff --git a/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_zh_TW.properties b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_zh_TW.properties new file mode 100644 index 00000000000000..fd6c274b1f939d --- /dev/null +++ b/modules/apps/asset/asset-vocabularies-selector-web/src/main/resources/content/Language_zh_TW.properties @@ -0,0 +1 @@ +javax.portlet.title.com_liferay_asset_vocabularies_selector_web_portlet_AssetVocabulariesSelectorPortlet=Asset Vocabularies Selector (Automatic Copy) \ No newline at end of file