Ajax Push in top-menu

Locked
diogo.soares
Posts: 24
Joined: 30 Jul 2014, 16:52

22 Jul 2015, 05:06

The menu hangs and crashes, in ajax return. I believe that lack some form of start ripplelink. I've tried putting 'Modena.init();' in onComplete, but not worked.

https://github.com/primefaces/primefaces/issues/550

Code: Select all

<?xml version="1.0" encoding="ISO-8859-1" ?>
<ui:composition
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui">

    <!-- TOPBAR START -->
    <h:form id="formTopMenu">
        <div id="layout-topbar">
            <a id="mobile-menu-button">
                <span class="ButtonLine" id="ButtonLine1"></span>
                <span class="ButtonLine" id="ButtonLine2"></span>
                <span class="ButtonLine" id="ButtonLine3"></span>
            </a>
            <a href="#{applicationParameters}/index.xhtml" id="logo">
                <h:graphicImage name="images/logo.svg" styleClass="Fleft" library="condominio" />
            </a>

            <a id="show-top-menu" class="ShowOnMobile ripplelink"><i class="icon-more_vert" id="active"></i><i class="icon-close DispNone" id="passive"></i> </a>

            <ul id="top-menu">
                <!--
                <li>
                    <a class="ripplelink"><i class="icon-search"></i> <span class="ShowOnMobile">Buscar</span></a>
                    <ul>
                        <li>
                            <a href="#"><i class="icon-search"></i><p:inputText value="{menuUsuarioView.textoPesquisa}"/></a>
                        </li>
                    </ul>
                </li>
                -->
                <ui:fragment id="top-menu_alertas" rendered="#{request.userPrincipal!=null}">
                    <li>
                        <a class="ripplelink"><i class="#{menuUsuarioView.possuiAlerta?'icon-notifications':'icon-notifications_none'}"></i> <span class="Txt">Alertas</span></a>
                        <ul>
                            <li><a href="#{applicationParameters.url}/administracao/mensagens.xhtml"><span class="Blue"><i class="icon-mail Fs30 DispBlock"></i> #{menuUsuarioView.textoMensagens}</span></a></li>
                        </ul>
                    </li>
                </ui:fragment>
                <li>
                    <a href="#" class="ripplelink"><i class="icon-power"></i> <span class="Txt">Sistema</span></a>
                    <ul>
                        <ui:fragment rendered="#{request.userPrincipal==null}">
                            <li><a href="#{applicationParameters.url}/usuario/index.xhtml"><span class="Blue"><i class="icon-vpn_key Fs30 DispBlock"></i> Efetuar login</span></a></li>
                        </ui:fragment>
                        <ui:fragment rendered="#{request.userPrincipal!=null}">
                            <li><a href="#{applicationParameters.url}/logout"><span class="Red"><i class="icon-vpn_key Fs30 DispBlock"></i> Efetuar logout</span></a></li>
                        </ui:fragment>
                    </ul>
                </li>
            </ul>
            <ui:fragment rendered="#{request.userPrincipal!=null}">
                <!-- Se o usuário estiver logado, atualiza os dados da controladora a cada 3 minutos -->
                <p:poll interval="180" listener="#{menuUsuarioView.actionAjaxPush}" update="formTopMenu" />
            </ui:fragment>
        </div>
    </h:form>
    <!-- TOPBAR END -->

</ui:composition>

mert.sincan
Posts: 5281
Joined: 29 Jun 2013, 12:38

24 Jul 2015, 13:49

Thanks for the sample. I think you need to change layout.js.
Please use;

Code: Select all

....     
/* Line 125 */
        //topbar  
        this.topMenu.find('a').click(function(e) { 
            ...

            e.stopPropagation(); // added
            e.preventDefault(); // added
        })
        .on('mouseenter', function() { 
            ....
       });
...

Code: Select all

// in topbar.xhtml
...
       <p:poll interval="180" listener="#{menuUsuarioView.actionAjaxPush}" update="formTopMenu" oncomplete="Modena.init();"/>
...

diogo.soares
Posts: 24
Joined: 30 Jul 2014, 16:52

31 Jul 2015, 17:17

It does not work. the menu was displayed but the links to 'a:href' were blocked.

mert.sincan
Posts: 5281
Joined: 29 Jun 2013, 12:38

04 Aug 2015, 15:19

diogo.soares wrote: the links to 'a:href' were blocked.
Sorry, I saw this bug now. Please try with;
layout.js

Code: Select all

....     
/* Line 125 */
        //topbar  
        this.topMenu.find('a').click(function(e) { 
            ...

            e.stopPropagation(); // added
        })
        .on('mouseenter', function() { 
            ....
       });
...

Code: Select all

// in topbar.xhtml
...
       <p:poll interval="180" listener="#{menuUsuarioView.actionAjaxPush}" update="formTopMenu" oncomplete="Modena.init();"/>
...

diogo.soares
Posts: 24
Joined: 30 Jul 2014, 16:52

05 Aug 2015, 01:33

I solved adding:

//topbar
this.topMenu.find('.ripplelink').click(function(e) {
...
e.stopPropagation(); // added
e.preventDefault(); // added

})

mert.sincan
Posts: 5281
Joined: 29 Jun 2013, 12:38

05 Aug 2015, 08:58

Glad to hear, Good fix ;)

diogo.soares
Posts: 24
Joined: 30 Jul 2014, 16:52

15 Jul 2016, 06:09

After upgrading to modena-2.1.2 topmenu crash.
I need invoke Modena.init(); How to fix?

mert.sincan
Posts: 5281
Joined: 29 Jun 2013, 12:38

15 Jul 2016, 12:43

Please try with;

Code: Select all

<pm:menu widgetVar="myMenu" .../>

... oncomplete="PF('myMenu').init();" />

Locked

Return to “Modena”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 7 guests