Liferay 如何以编程方式指向DAM显示portlet的根文件夹
如何通过programmatically.PFA image将其中一个文件夹设置为文档和媒体显示portlet的根文件夹 Liferay主要版本 您的问题被标记为Liferay 6和Liferay 7。这两个版本截然不同。这个答案假设您使用的是Liferay 6.x,因为您询问的是DDMportlet,而不是OSGI模块 以编程方式将该输入资源设置为默认文件夹需要在文档库显示portlet中为JSP创建JavaServer页面挂钩。在详细介绍之前,我将简要说明如何创建JSP钩子Liferay 如何以编程方式指向DAM显示portlet的根文件夹,liferay,liferay-6,liferay-7,Liferay,Liferay 6,Liferay 7,如何通过programmatically.PFA image将其中一个文件夹设置为文档和媒体显示portlet的根文件夹 Liferay主要版本 您的问题被标记为Liferay 6和Liferay 7。这两个版本截然不同。这个答案假设您使用的是Liferay 6.x,因为您询问的是DDMportlet,而不是OSGI模块 以编程方式将该输入资源设置为默认文件夹需要在文档库显示portlet中为JSP创建JavaServer页面挂钩。在详细介绍之前,我将简要说明如何创建JSP钩子 创建一个钩子
创建一个钩子 从命令行终端导航到插件SDK的hooks文件夹。要创建钩子项目,必须执行创建脚本。以下是执行脚本时要遵循的格式: 在Linux和Mac OS X上,您可以输入与本例中类似的命令: 在Windows上,您可以输入与本例类似的命令: Liferay IDE的新建项目向导和创建脚本在插件SDK的hooks文件夹中生成钩子项目。插件SDK会自动将“-hook”附加到项目名称中 您需要安装ApacheAnt才能使其工作。如果需要安装,请参考以下文档
重写JSP 现在您已经成功创建了一个钩子插件,我们需要覆盖必要的文件。对于这个钩子,我们特别需要两个文件
- html/portlet/document\u library\u display/configuration.jsp
- html/portlet/document_library/init.jsp
<aui:field-wrapper label="root-folder">
<div class="input-append">
<liferay-ui:input-resource id="rootFolderName" url="<%= rootFolderName %>" />
<aui:button name="openFolderSelectorButton" value="select" />
<%
String taglibRemoveFolder = "Liferay.Util.removeFolderSelection('rootFolderId', 'rootFolderName', '" + renderResponse.getNamespace() + "');";
%>
<aui:button disabled="<%= rootFolderId <= 0 %>" name="removeFolderButton" onClick="<%= taglibRemoveFolder %>" value="remove" />
</div>
</aui:field-wrapper>
这段代码基本上是说我们要将rootFolderName初始化为空。但是,如果rootFolderId设置为大于0,则
结论 如果您想在默认情况下以编程方式将rootFolderName设置为您选择的文件夹,您可以做一些事情。最简单的方法是获取文件夹的id并像这样修改代码
long folderIdConstant = 999999L; // place folder id here
long rootFolderId = PrefsParamUtil.getLong(portletPreferences, request, "rootFolderId", folderIdConstant );
这将以编程方式设置默认根文件夹。现在就开始构建和部署。我会有一个很好的指针,但会等到你采取行动
create.bat doc-lib-disp-hook "Document Library Display Hook"
<aui:field-wrapper label="root-folder">
<div class="input-append">
<liferay-ui:input-resource id="rootFolderName" url="<%= rootFolderName %>" />
<aui:button name="openFolderSelectorButton" value="select" />
<%
String taglibRemoveFolder = "Liferay.Util.removeFolderSelection('rootFolderId', 'rootFolderName', '" + renderResponse.getNamespace() + "');";
%>
<aui:button disabled="<%= rootFolderId <= 0 %>" name="removeFolderButton" onClick="<%= taglibRemoveFolder %>" value="remove" />
</div>
</aui:field-wrapper>
<liferay-ui:input-resource id="rootFolderName" url="<%= rootFolderName %>" />
String portletResource = ParamUtil.getString(request, "portletResource");
if (layout.isTypeControlPanel()) {
portletPreferences = PortletPreferencesLocalServiceUtil.getPreferences(themeDisplay.getCompanyId(), scopeGroupId, PortletKeys.PREFS_OWNER_TYPE_GROUP, 0, PortletKeys.DOCUMENT_LIBRARY, null);
}
long rootFolderId = PrefsParamUtil.getLong(portletPreferences, request, "rootFolderId", DLFolderConstants.DEFAULT_PARENT_FOLDER_ID);
String rootFolderName = StringPool.BLANK;
if (rootFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
try {
Folder rootFolder = DLAppLocalServiceUtil.getFolder(rootFolderId);
rootFolderName = rootFolder.getName();
}
catch (NoSuchFolderException nsfe) {
}
}
long folderIdConstant = 999999L; // place folder id here
long rootFolderId = PrefsParamUtil.getLong(portletPreferences, request, "rootFolderId", folderIdConstant );