Как я могу создать ссылку / кнопку, которая открывает журнал по умолчанию в форме / портлете в портлете Liferay JSF? - PullRequest
0 голосов
/ 29 мая 2018

Liferay имеет ссылку Вход , по которой можно щелкнуть, чтобы открыть журнал в форме / портлете.Я хочу эмулировать эту ссылку в моем портлете.Я попытался настроить портлет входа в систему для всплывающего сообщения в модальном диалоговом окне , но он не вел себя так же, как всплывающее окно входа по умолчанию.В частности, всплывающее окно не исчезло, когда я вошел в систему (вместо этого само всплывающее окно было перенаправлено в другое представление).Как вывести всплывающую форму для входа в систему по умолчанию, чтобы она исчезала при входе пользователя в систему.

1 Ответ

0 голосов
/ 29 мая 2018

Чтобы создать ссылку с тем же поведением, что и по умолчанию Вход , необходимо использовать плагин Liferay.SignInModal.

Сначала необходимо создать h:ouputLink, который указывает на /c/portal/login и включает идентификатор макета. * Если JavaScript по какой-то причине не работает, эта ссылка обеспечит хорошее аварийное поведение, отправив пользователя на страницу входа через GET и перенаправив его обратно на текущую страницу послепользователь входит в систему.

<h:outputLink id="logInLink" binding="#{logInLink}"
    value="/c/portal/login?p_l_id=#{bean.getPlid(request)}">
    <h:outputText value="Log In/Register" />
</h:outputLink>

Далее вам нужно вставить модальный знак в эту ссылку:

<h:outputScript>
    AUI().use('liferay-sign-in-modal', 'event-outside', 'transition', function(A) {
        A.one('##{logInLink.clientId}'.replace(/:/g,'\\:'))
            .plug(Liferay.SignInModal);
    });
</h:outputScript>

Теперь ваша ссылка для входа / входа будет вести себя точно так же, как по умолчаниюверсия.Всплывающее окно должно закрыться, как только пользователь войдет в систему.

* Чтобы получить текущий идентификатор макета, используйте такой метод:

public long getPlid(PortletRequest portletRequest) {
    ThemeDisplay themeDisplay =
        (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);
    Layout layout = themeDisplay.getLayout();
    return layout.getPlid();
}
...