Пользовательское письмо, отправленное Liferay Form - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь переопределить уведомление по электронной почте, отправленное с помощью Liferay Form. Я следовал за трюками в этой теме: https://community.liferay.com/it/forums/-/message_boards/view_message/104934134. Нет кости. Я успешно добавил пользовательскую реализацию DDLFormEmailNotificationSender. Который зарегистрирован правильно, (с корректным обслуживанием). Если я проверяю зарегистрированный сервис, мой пользовательский DDLFormEmailNotificationSender выходит на первое место. Но когда я отправляю форму, liferay продолжает использовать «обычный» DDLFormEmailNotificationSender, а не мой пользовательский DDLFormEmailNotificationSender. Любые советы и подсказки?

Мой DDLFormEmailNotificationSender выглядит так:

@Component(
    immediate = true,
    property = {
            "service.ranking:Integer=100"
    },
    service = DDLFormEmailNotificationSender.class
)
public class CustomDDLFormEmailNotificationSender extends DDLFormEmailNotificationSender {

    private static final String CUSTOM_TEMPLATE_PATH = "";

    @Override
    protected Template createTemplate(
        PortletRequest portletRequest, DDLRecordSet recordSet,
        DDLRecord record) throws PortalException {

        Template template = TemplateManagerUtil.getTemplate(TemplateConstants.LANG_TYPE_SOY,
        getTemplateResource(CUSTOM_TEMPLATE_PATH), false);

        populateParameters(template, portletRequest, recordSet, record);

        return template;
    }
}

(Я знаю, что CUSTOM_TEMPLATE_PATH сейчас пуст. Но это только для целей тестирования.

Я создал фрагмент для раскрытия приватного пакета, как описано в сообщении на форуме:

Bundle-Name: liferay-xxx-dynamic-data-lists-form-override
Bundle-SymbolicName: liferay.xxx.dynamic.data.lists.form.override
Fragment-Host: com.liferay.dynamic.data.lists.form.web;bundle-version="2.0.15"

Export-Package: com.liferay.dynamic.data.lists.form.web.internal.notification
-jsp: *.jsp,*.jspf
-plugin.jsp: com.liferay.ant.bnd.jsp.JspAnalyzerPlugin
-plugin.resourcebundle: com.liferay.ant.bnd.resource.bundle.ResourceBundleLoaderAnalyzerPlugin
-plugin.sass: com.liferay.ant.bnd.sass.SassAnalyzerPlugin
-sass: *

Итак, вы можете видеть, что я раскрыл пакет "com.liferay.dynamic.data.lists.form.web.internal.notification".

Если я проверяю DDLFormEmailNotificationSender в Apache GOGO:

services | grep DDLFormEmailNotificationSender
{com.liferay.dynamic.data.lists.form.web.internal.notification.DDLFormEmailNotificationSender}={service.ranking=100, component.name=be.xxx.portal.website.form.CustomDDLFormEmailNotificationSender, component.id=519, service.id=299, service.bundleid=757, service.scope=bundle}
{com.liferay.dynamic.data.lists.form.web.internal.notification.DDLFormEmailNotificationSender}={component.name=com.liferay.dynamic.data.lists.form.web.internal.notification.DDLFormEmailNotificationSender, component.id=811, service.id=2629, service.bundleid=143, service.scope=bundle}
true

Я на Liferay 7.0.

1 Ответ

0 голосов
/ 13 ноября 2018

Я получил некоторую поддержку от сообщества Liferay и узнал, как это исправить.

Вышеуказанная конфигурация верна! Но служба (liferay), ссылающаяся на DDLFormEmailNotification, имеет эту статическую / нежелательную ссылку. Мне пришлось создать конфигурационный файл для добавления в мою папку osgi / configs, которая определяет правильную реализацию. (Мой CustomDDLFormEmailNotificationSender).

Мой конфигурационный файл называется: com.liferay.dynamic.data.lists.form.web.internal.portlet.action.AddRecordMVCActionCommand.config

Это потому, что мне нужно настроить команду AddRecordMVCAction. (Настройте ссылки, которые определены там как статические / неохотные).

Содержит:

DDLFormEmailNotificationSender.target="(component.name\=be.xxx.portal.website.form.CustomDDLFormEmailNotificationSender)"

Таким образом, в основном говорится: DDLFormEmailNotificationSender (там есть ссылочное имя), должно быть: be.xxx.portal.website.form.CustomDDLFormEmailNotificationSender.

Убедитесь, что компонент развернут правильно, потому что после настройки нет возврата к исходной реализации. (Если вы удалите эту конфигурацию, osgi будет иметь запасной вариант).

Источник: https://dev.liferay.com/en/develop/tutorials/-/knowledge_base/7-0/overriding-service-references#find-the-component-and-service-reference

Надеюсь, это кому-нибудь поможет.

...