We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 20394
    • 134 Posts
    Bonjour,
    je veux parler d’une fonctionnalité que j’aimerai voir dans ModX.
    En premier lieu, l’onglet Snippets dans "Réglage du document" est un peu curieux (pour ce que j’en comprend). Il donne l’impression de pouvoir sélectionner des snippets alors qu’il s’agit juste d’indiquer quels sont les snippets disponibles pour cette page (me trompe-je ?)

    Voici le comportement que j’aimerai :
    lorsque l’on clique sur le nom d’un snippet, apparait alors à gauche des exemples d’utilisation, ainsi que la liste des paramètres.

    Pour les récupérer de manière automatique, il faudrait faire un regexp ou autre, dans le code du snippet, ceci avant la phrase :
    "End config, the rest takes care of itself",
    Pour les paramètres, capturer les lignes commençant par "$" et ceci avant le signe "=".
    Pour les exemples, capturer les lignes commmençant par "//", des espaces, puis "[[".

      • 20394
      • 134 Posts
      Voici une première approche.
      La boucle for pour afficher les snippets devient :
      for ($i = 0; $i < $limit; $i++) { 
      						$row=mysql_fetch_assoc($rs); 
      						$matches=array();
      						$bmatches=array();
      						preg_match_all('/\/\/\s*(\[\[.*=.*)/',$row['snippet'],$matches);
      						preg_match_all('/\$(.*)=.*isset/',$row['snippet'],$bmatches);
      						echo "<option value='".$row['id']."'";
      						echo " onclick='$(\"snipexpl\").innerHTML=\"";
      						if(count($matches[1])==0) echo addslashes("pas d exemple pour ce snippet");
      						for($j=0;$j<count($matches[1]);$j++){
      							echo addslashes($matches[1][$j]);
      							echo "<br/>";
      						}
      						echo "\";";
      						echo "$(\"snipparam\").innerHTML=\"";
      						if(count($bmatches[1])==0) echo addslashes("pas de paramètres pour ce snippet");
      						for($j=0;$j<count($bmatches[1]);$j++){
      							echo "<span ";
      							echo "title=\\\"";
      							//echo "salut";
      							echo addslashes($bmatches[0][$j]);
      							echo "\\\"";
      							echo ">";
      							echo addslashes($bmatches[1][$j]);
      							echo "</span>";
      							echo "<br/>";
      						}
      						echo "\";'";
      						echo ">";
      						echo $row['name'];
      						echo "</option>";
      					}
      

      puis le deuxième <td> de la table enblobante devient :
      <td valign="top">
      				<div class="tab-pane" id="snipMyPane" style="display:block"> 
      					<script type="text/javascript">
      					tpMyResources = new WebFXTabPane( document.getElementById( "snipMyPane" ) );
      					</script> 
      					<div class="tab-page" id="tabExamSnip"> 
          					<h2 class="tab">Exemples du Snippet</h2> 
          					<script type="text/javascript">tpMyResources.addTabPage( document.getElementById( "tabExamSnip" ) );</script> 
      						<div id="snipexpl">Les exemples pour les snippets</div>
      					</div>
      					<div class="tab-page" id="tabParamSnip"> 
          					<h2 class="tab">Paramètres du Snippet</h2> 
          					<script type="text/javascript">tpMyResources.addTabPage( document.getElementById( "tabParamSnip" ) );</script> 
      						<div id="snipparam">Les paramètres des snippets</div>
      					</div>
      					
      				</div>
      					
      				</td>
      
        • 20394
        • 134 Posts
        Voici un nouveau candidat pour la variable $bmatches :
        preg_match_all('/\$(.*)=.*isset\(\$[^)_]*/',$row['snippet'],$bmatches);
        
          • 6726
          • 7,075 Posts
          Encore des modifs à proposer la dev team à mon avis...

          Même si, attention, le manager est en cours de ré-écriture par Jeff si je ne m’abuse...
          Ceci dit, définitivement une excellente idée !
            .: COO - Commerce Guys - Community Driven Innovation :.


            MODx est l&#39;outil id
            • 20394
            • 134 Posts
            Post mis dans le forum anglais.