0

エクスポート前にliferayカレンダーイベントのファイル名を変更する方法を知っている人はいますか? デフォルトは「liferay.ics」です。

ありがとうサブリナ

4

1 に答える 1

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 属性を変更するとうまくいくはずです。


カレンダー ポートレットをもう少し詳しく見てみると、上記のソリューションは、[概要] タブからイベントをエクスポートするときではなく、[エクスポート/インポート] タブにのみ表示されるようです。

ファイルの作成を担当するエンドポイント: 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 という名前のポートレット パラメータが設定されていない場合、アクションによって自動的に 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);

}
于 2012-05-24T21:52:26.460 に答える