从“liferay.ics”更改日历导出的名称

时间:2012-05-24 15:42:34

标签: properties calendar liferay

有人知道在导出之前如何更改liferay日历事件的文件名吗? 默认的是“liferay.ics”。

由于 塞布丽娜

1 个答案:

答案 0 :(得分:2)

您可以通过写一个钩子来改变名称。

覆盖位于%liferay_folder%\%your_server%\ webapps \ ROOT \ html \ portlet \ calendar

的export_import.jspf文件
<aui:fieldset label="export">
        <aui:input cssClass="lfr-input-text-container" label="" name="exportFileName" type="text" value="liferay.ics" />
    </aui:fieldset>

更改value属性应该可以解决问题。


Owk在看了一下日历portlet后,看来上面的解决方案只在导出/导入选项卡上可见,而不是从摘要选项卡导出事件时。

负责创建文件的端点:http://www.jarvana.com/jarvana/view/com/liferay/portal/portal-impl/6.1.0/portal-impl-6.1.0-sources.jar!/com/liferay/portlet/calendar/action/ExportEventsAction.java?format=ok

当没有设置名称为exportFileName的portlet参数时,动作会自动将其命名为liferay.ics:

简单易行的修复:

添加(在event_action.jsp中):

<portlet:param name="exportFileName" value="<%= event.getTitle() %>" />

到:

<c:if test="<%= CalEventPermission.contains(permissionChecker, event, ActionKeys.VIEW) %>">
        <portlet:actionURL windowState="<%= LiferayWindowState.EXCLUSIVE.toString() %>" var="exportURL">
            <portlet:param name="struts_action" value="/calendar/export_events" />
            <portlet:param name="redirect" value="<%= currentURL %>" />
            <portlet:param name="eventId" value="<%= String.valueOf(event.getEventId()) %>" />
        </portlet:actionURL>

        <liferay-ui:icon
            image="export"
            url='<%= exportURL %>'
        />
    </c:if>

在ExportEventsAction周围编写一个包装器。 (更多高级预测)

将来需要更多高级操作时,请使用此方法。

包装基本概念:

在你的钩子xml中:

<?xml version="1.0"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.1.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_1_0.dtd">

<hook>

    <custom-jsp-dir>/WEB-INF/jsps/</custom-jsp-dir>
    <struts-action>
        <struts-action-path>/calendar/export_events</struts-action-path>
        <struts-action-impl>aiao.liferay.strutsactions.ExportEventActionWrapper</struts-action-impl>
    </struts-action>
</hook>

你的包装器看起来像这样:

public class ExportEventActionWrapper extends BaseStrutsPortletAction {

    @Override
    public void processAction(StrutsPortletAction originalStrutsPortletAction, PortletConfig portletConfig, ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
        _logger.info("Call To Wrapper");

        //do your magic here...

        originalStrutsPortletAction.processAction(portletConfig, actionRequest, actionResponse);
    }

    private Log _logger = LogFactoryUtil.getLog(ExportEventActionWrapper.class);

}