We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 16732
    • 592 Posts
    J’avoue que je ne comprends vraiment pas l’intérêt de tout ceci ! huh

    Tu hackes MODx pour permettre à un TV d’exécuter un snippet ??!! Où est l’intérêt ??
    Pourquoi ne mets-tu pas directement ton snippet dans la page voulue, la où il pourra récupérer simplement toutes les variables que tu veux.

    Si tu veux vraiment utiliser le dataGrid, je ne me suis pas penché sur la question, mais il doit être possible d’instancier la classe directement dans ton snippet ou au pire insère cette classe dans celui-ci.

    En fait l’utilisation de la TV ne sert qu’à accéder au dataGrid, et ceci en hackant MODx par dessus le marché !

    Ça me parait un peu beaucoup pour générer un pauvre listing !

    Mais peut-être que la subtilité de la chose m’a échappée wink
      • 26604
      • 16 Posts

      J’avoue que je ne comprends vraiment pas l’intérêt de tout ceci ! huh
      cf. http://modxcms.com/forums/index.php/topic,14119.msg92391.html#msg92391

      Tu hackes MODx pour permettre à un TV d’exécuter un snippet ??!! Où est l’intérêt ??
      cf. http://modxcms.com/forums/index.php/topic,14119.msg92391.html#msg92391
      Pourquoi ne mets-tu pas directement ton snippet dans la page voulue, la où il pourra récupérer simplement toutes les variables que tu veux.
      parce que je n’ai pas envie faire moi meme un snippet qui fait du echo de <table> <tr> etc dans tous les sens, alors que le datagrid sait deja faire tout ca, avec en plus une bonne quinzaine de possibilités implementées de parametrage des style, des border, etc ...

      Si tu veux vraiment utiliser le dataGrid, je ne me suis pas penché sur la question, mais il doit être possible d’instancier la classe directement dans ton snippet ou au pire insère cette classe dans celui-ci.
      merci pour ta contribution

      En fait l’utilisation de la TV ne sert qu’à accéder au dataGrid
      quel autre moyen que l’utilisation d’une TV connais tu pour générer un datagrid ?

      et ceci en hackant MODx par dessus le marché !
      héliotrope lui meme (1500+ posts) m’a indiqué le chemin des classes concernées par la fonctionnalité dont j’avais besoin


      Ça me parait un peu beaucoup
      4 lignes rajoutées au framework, c’est beaucoup ?

      pour générer un pauvre listing !
      ben pour l’instant je me sers de cette modif pour générer les résultats de 9 pages de recherches sur mon intranet

      Mais peut-être que la subtilité de la chose m’a échappée wink
      pertinent !

      anthony
        • 11975
        • 2,542 Posts
        Heu,


        héliotrope lui meme (1500+ posts) m’a indiqué le chemin des classes concernées par la fonctionnalité dont j’avais besoin

        Oui mais afin que tu puisses déterminer le type de données à transmettre à la classe dataGrid

        Et comme laurent, je te conseillais


        Si tu as des notions de PHP oublie le widget et écrit un snippet qu ifera ça aussi bien.
        Soit en utilisant la class dataGrid ou makeTable pour générer le tableau.

        Mais bon c’est toi le seul maitre à bord

        :-)
          Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
          • 26604
          • 16 Posts
          Quote from: heliotrope at Apr 25, 2007, 06:12 AM
          Mais bon c’est toi le seul maitre à bord
          pris par le temps, mes 4 lignes de modifs sont la meilleure solution pour moi !
          merci pour tes conseils, heliotrope

          anthony
            • 16732
            • 592 Posts
            Je persiste à penser que ce n’est pas la bonne approche pour générer ce listing et ce même dans une optique de gain de temps.
            Car un snippet custom avec ta requête, couplé directement à la classe dataGrid aurait été bien plus rapide à mettre en place et n’aurait pas touché au core.
              • 26604
              • 16 Posts
              Quote from: laurentc at Apr 25, 2007, 08:06 AM
              un snippet custom avec ta requête, couplé directement à la classe dataGrid aurait été bien plus rapide à mettre en place
              Laurent
              quand tu as 3 minutes dispo, peut tu s’il te plait me coder ce snippet de deux ou 3 lignes que tu evoques, qui instancie la classe Datagrid ?

              il faudrait qu’il ait en entrée :
              la requete SELECT, et les parametres noRecordMsg, columnHeaderClass, cssClass, itemClass, altItemClass, columnHeaderStyle, cssStyle, itemStyle, altItemStyle, columns, fields, colWidths, colAligns, colColors, colTypes, cellPadding, cellSpacing, header, footer, pageSize, pagerLocation, pagerClass, pagerStyle de la classe Datagrid

              merci
              anthony
                • 16732
                • 592 Posts
                Bon pour en finir avec cette discussion voici le snippet :

                N’ayant jamais vu la classe dataGrid il m’a fallu au max 30 min pour le faire et encore au bout de 5 minutes j’avais le snippet avec le bon nombre de lignes mais pas leur contenu , il m’a fallu juste un peu de temps pour comprendre qu’il fallait passer à classe les noms des champs en plus de la ressource .

                Ici il récupère deux valeurs des documents mais il est trés simple de le mettre à ça sauce.

                <?php
                //paramètres de dataGrid à utiliser avec le snippet
                $noRecordMsg = (isset($noRecordMsg))? $noRecordMsg : '';
                $columnHeaderClass = (isset($columnHeaderClass))? $columnHeaderClass : '';
                $cssClass = (isset($cssClass))? $cssClass : '';
                $itemClass = (isset($itemClass))? $itemClass : '';
                $altItemClass = (isset($altItemClass))? $altItemClass : '';
                $columnHeaderStyle = (isset($columnHeaderStyle))? $columnHeaderStyle : '';
                $cssStyle = (isset($cssStyle))? $cssStyle : '';
                $itemStyle = (isset($itemStyle))? $itemStyle : '';
                $altItemStyle = (isset($altItemStyle))? $altItemStyle : '';
                $columns = (isset($columns))? $columns : '';
                //etc...
                
                $fields = 'id, pagetitle';
                
                $result_annonce = $modx->db->select("id, pagetitle", "modx_site_content");
                
                include_once MODX_BASE_PATH."manager/includes/controls/datagrid.class.php";
                
                $grd = new DataGrid('',$result_annonce);
                $grd->noRecordMsg = $noRecordMsg;
                $grd->columnHeaderClass = $columnHeaderClass;
                //etc...
                
                $grd->fields = $fields;
                
                $o = $grd->render();
                
                return $o;
                ?>
                  • 16732
                  • 592 Posts
                  Tiens plus de nouvelles de notre cher ami et même pas un merci pour le temps passé à résoudre son problème laugh
                    • 26604
                    • 16 Posts
                    Quote from: laurentc at Apr 28, 2007, 11:55 AM

                    Tiens plus de nouvelles de notre cher ami et même pas un merci pour le temps passé à résoudre son problème laugh
                    exact, je n’ai meme pas dit merci
                    donc, avec retard, merci laurentc pour ton bout de code, ce qui me manquait c’etait les deux instructions :
                    $result_annonce = $modx->db->select("id, pagetitle", "modx_site_content");
                    ...
                    $grd = new DataGrid('',$result_annonce);

                    j’ai donc terminé le snippet que tu m’avais envoyé, je l’ai nommé snpDataGrid

                    c’est plus facile à utiliser que l’artifice que j’avais bidouillé avec l’utilisation des TV datagrid + le nouveau binding @EVAL_IN_SELECT

                    en plus ca fonctionne sans souci, meme avec une requete SELECT comprenant plein de jointures

                    donc merci encore

                    anthony

                    PS : il faudrait encore que je commente la fin de chaque ligne de la section
                    // ************************ DEBUT ENTREES FACULTATIVES ************************
                    // ************************ FIN ENTREES FACULTATIVES ************************
                    en expliquant le role de chaque parametre ...

                    <?php
                    // DESCRIPTION :
                    // => Ce snippet prend au minimum 4 arguments, et via l'instanciation de la classe DataGrid, il retourne tout
                    //    le code HTML correspondant a une balise TABLE presentant le contenu d'une requete select
                    //
                    // ENTREE OBLIGATOIRES:
                    // $select : la clause select de la requete a executer, mais sans le mot cle SELECT
                    // $from : la clause from de la requete a executer, mais sans le mot cle FROM
                    // $fields : la liste de certains ou tous les noms de champs retournes par l'argument $select, dans l'ordre dans 
                    //           lequel on veut les voir dans la table (les noms de champs doivent etre separes par des virgules)
                    // $columns : le libelle des champs specifies par l'argument $fields, tel que l'on veut le voir affiche dans 
                    //            la ligne d'en-tetes de la table dont le html est retourne par le snippet (les libelles des champs
                    //            doivent etre separes par des virgules)
                    // ENTREE FACULTATIVES:
                    // - $orderby : la clause order by de la requete a executer, mais sans le mot cle ORDER BY
                    // - $limit : la clause limit de la requete a executer, mais sans le mot cle LIMIT
                    // - $where : la clause where de la requete a executer, mais sans le mot cle WHERE
                    // - $pageSize : le nombre d'enregistrement a faire figurer sur chaque page (si pas fourni, alors tous les 
                    //               enregistrements sur une unique page) - valeur par defaut : vide
                    // - $pagerLocation : l'emplacement du pager, utilise si le nombre de resultats de la requete excede la valeur 
                    //                    de l'argument $pageSize (valeurs possibles : top-right, top-left, bottom-left, bottom-right, 
                    //                    both_right, ou both-left) - valeur par defaut : both_right
                    // - pour les autres entrees facultatives, cf. ci dessous dans le debut du code
                    //
                    // SORTIE :
                    // le code HTML d'une balise TABLE contenant le resultat d'une requete SELECT
                    //
                    // EXEMPLE :
                    // $params['select'] = 't1.f1 as CHAMP1, concat(t1.f2,t2.f3) as CHAMP2';
                    // $params['from'] = 'TABLE1 t1, TABLE2 t2';
                    // $params['fields'] = 'CHAMP2, CHAMP1';
                    // $params['columns'] = 'Lib du Champ 2,Lib du Champ 1';
                    // $params['where'] = 't1.f4 = t2.f4 AND t1.f5 = \'toto\'';
                    // $params['pageSize'] = '100';
                    // $params['orderby'] = 'CHAMP2 DESC';
                    // return $modx->runSnippet('snpDataGrid',$params);
                    
                    // ************************ DEBUT ENTREES FACULTATIVES ************************
                    $pageSize = (isset($pageSize))? $pageSize : '';
                    $pagerLocation = (isset($pagerLocation))? $pagerLocation : 'both-right';
                    $noRecordMsg = (isset($noRecordMsg))? $noRecordMsg : 'Aucun enregistrement';
                    $cellPadding = (isset($cellPadding))? $cellPadding : '1';
                    $cellSpacing = (isset($cellSpacing))? $cellSpacing : '1';
                    $columnHeaderClass = (isset($columnHeaderClass))? $columnHeaderClass : '';
                    $cssClass = (isset($cssClass))? $cssClass : '';
                    $itemClass = (isset($itemClass))? $itemClass : '';
                    $altItemClass = (isset($altItemClass))? $altItemClass : '';
                    $columnHeaderStyle = (isset($columnHeaderStyle))? $columnHeaderStyle : '';
                    $cssStyle = (isset($cssStyle))? $cssStyle : '';
                    $itemStyle = (isset($itemStyle))? $itemStyle : '';
                    $altItemStyle = (isset($altItemStyle))? $altItemStyle : '';
                    $colWidths = (isset($colWidths))? $colWidths : '';
                    $colAligns = (isset($colAligns))? $colAligns : '';
                    $colColors = (isset($colColors))? $colColors : '';
                    $colTypes = (isset($colTypes))? $colTypes : '';
                    $header = (isset($header))? $header : '';
                    $footer = (isset($footer))? $footer : '';
                    $pagerClass = (isset($pagerClass))? $pagerClass : '';
                    $pagerStyle = (isset($pagerStyle))? $pagerStyle : '';
                    $orderby = (isset($orderby))? $orderby : '';
                    $limit = (isset($limit))? $limit : '';
                    // ************************ FIN ENTREES FACULTATIVES ************************
                    
                    
                    $result = $modx->db->select($select, $from, $where, $orderby, $limit);
                    
                    include_once MODX_BASE_PATH."manager/includes/controls/datagrid.class.php";
                    
                    $grd = new DataGrid('',$result);
                    $grd->noRecordMsg = $noRecordMsg;
                    $grd->columnHeaderClass = $columnHeaderClass;
                    $grd->cssClass = $cssClass;
                    $grd->itemClass = $itemClass;
                    $grd->altItemClass = $altItemClass;
                    $grd->columnHeaderStyle = $columnHeaderStyle;
                    $grd->cssStyle = $cssStyle;
                    $grd->itemStyle = $itemStyle;
                    $grd->altItemStyle = $altItemStyle;
                    $grd->columns = $columns;
                    $grd->fields = $fields;
                    $grd->colWidths = $colWidths;
                    $grd->colAligns = $colAligns;
                    $grd->colColors = $colColors;
                    $grd->colTypes = $colTypes;
                    $grd->cellPadding = $cellPadding;
                    $grd->cellSpacing = $cellSpacing;
                    $grd->header = $header;
                    $grd->footer = $footer;
                    $grd->pageSize = $pageSize;
                    $grd->pagerLocation = $pagerLocation;
                    $grd->pagerClass = $pagerClass;
                    $grd->pagerStyle = $pagerStyle;
                    $grd->fields = $fields;
                    
                    $o = $grd->render();
                    
                    return $o;
                    ?>