We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 40563
    • 21 Posts
    Bonjour,


    J'ai un petit plugin sur l'événement onBeforeDocFormSave et je souhaiterai envoyer un message à l'utilisateur.

    Il existe la fonction $modx->event->output('mon message'); mais qui bloque la sauvegarde du document.

    Je me suis donc tourné vers MODx.msg.status (modExt) mais je parviens pas à voir mon message.

    [...]
    if ($sMsg) {
        $modx->regClientHTMLBlock('<script type="text/javascript">
        Ext.onReady(function() {
            MODx.msg.status({
                title: "'.$sTitle.'"
                ,message: "'.$sMsg.'"
                ,delay: 10
            });
        });
        </script>');
    }
    


    Auriez vous une idée de comment je peux m'y prendre ?

    Merci d'avance [ed. note: shebang last edited this post 10 years, 2 months ago.]
    • Hello,

      Tout d'abord, pourquoi ta solution ne fonctionne pas : tu essaies "d'injecter" du HTML à un moment où ta page est déjà rendue/générée. Le navigateur ne recevra jamais ce contenu et ne pourra donc jamais l'afficher.

      Une éventuelle solution serait d'ajouter ton code JS via l'événement système OnDocFormPrerender (ou OnDocFormRender).
      Tu pourras alors "cibler" le panel ExtJS d'édition de ressource (Ext.getCmp('modx-panel-resource')), puis effectuer ce que tu désires sur les events JS appropriés (beforeSubmit, save ou success).

      J'espère que cela te mettra sur la bonne piste, sinon, n'hésites pas donner plus d'informations sur ce que tu souhaites accomplir.

      Bon courage wink
        • 40563
        • 21 Posts
        Salut Romain,

        Quote from: romain at Jan 17, 2014, 09:31 AM

        Tout d'abord, pourquoi ta solution ne fonctionne pas : tu essaies "d'injecter" du HTML à un moment où ta page est déjà rendue/générée. Le navigateur ne recevra jamais ce contenu et ne pourra donc jamais l'afficher.


        Effectivement, maintenant ça semble plus logique smiley


        Du coup, le plugin j'ai placé mon code sur l'event OnDocFormRender dans lequel j'ai mon JS.
        Et ça fonctionne nickel. Merci !

        Une autre petite question :

        Mon code ressemble à ceci maintenant :

        switch($eventName) {
            case 'OnDocFormSave' :
                [.........]
                break;
            case 'OnDocFormRender' :
                $modx->regClientStartupHTMLBlock('<script type="text/javascript">
                    Ext.onReady(function() {
                        Ext.getCmp("modx-panel-resource").on("success",function(res){
                            Ext.MessageBox.show({
                                title : "Information",
                                msg : "Test de message d`\'information",
                                width : 300,
                                buttons : Ext.MessageBox.OK,
                                icon : Ext.MessageBox.INFO,
                            });
                        });
                    });
                    </script>');
                break;
        }
        


        Si je fait un console.log(res), je vois qu'il y a un attribut result.message.
        Est-il possible depuis l'event OnDocFormSave de passer ce paramètre afin de le récupérer dans le JS ?

        • Hello,

          Non, cela n'est pas possible.

          Le message est retourné depuis le processor (premier argument de modProcessor::success), et il n'y a aucune moyen de définir ce message (qui est toujours empty dans le processor d'update).

          Il semblerait qu'il ne reste qu'à mettre les mains dans ExtJS...
            • 40563
            • 21 Posts
            Merci pour ces précisions