Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
24/07/2012, 11:37:00
(Modification du message : 13/02/2013, 22:30:13 par Jean le Chauve.)
La nouvelle version se trouve ici
Il est toujours désagréable de voir un signe de ponctuation tel qu'un : ou un ? se retrouver seul sur une ligne et cela peut se produire ou pas selon la résolution d'écran.
Le seul moyen pour empêcher cela, c'est de remplacer l'espace précédant le signe de ponctuation par une espace insécable :
Ce plugin remplace toutes les espaces ou tab situés avant »:?!; et après « par un espace insécable.
Attention, vérifiez bien que l'encodage de votre éditeur de texte soit en ANSI as UTF-8 si vous copiez le code dans un fichier (sinon, vous risquez d'avoir un problème avec les caractères « et »).
Ce plugin ne modifie en aucun cas votre base de données ou le contenu de vos pages, il agit juste sur le cache.
Si vous avez un global content block comprenant du code et que ce dernier ne fonctionne plus, vous pouvez empêcher le plugin de le modifier en ajoutant une condition && $result[1] != 'nom du globalcontent' dans cette ligne :
if ($result[0] == 'content' || $result[0] == 'globalcontent' || $result[0] == 'template' || strlen($result[0]) == '40')
Enjoy
Messages : 746
Sujets : 9
Inscription : Nov 2007
Réputation :
0
Merci :-)
J'utilisais jusqu'à présent une balise utilisateur qui me faisait tout type d'optimisation sur le texte.
Mais j'étais confronté à un souci d'ajout du code " " dans du JavaScript intégré à mon gabarit ou ma page (sachant que j'applique l'espace insécable sur les points d'exclamation, les points d'interrogation, les points virgules...).
Du genre :
Code : [== JavaScript ==]
{literal}
<script>
alert("Coucou la boite JS !") ;
</script>
{/literal}
Qui devenait :
Code : [== JavaScript ==]
{literal}
<script>
alert("Coucou la boite JS !") ;
</script>
{/literal}
Et là, le code JS ne fonctionnait tout simplement pas... Logique.
Je n'ai pas encore testé ton plugin, mais penses-tu qu'on retombe sur ce même problème ?
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Salut Kraygoon
Effectivement, ça ne fonctionnera pas pour ton code.
Je vais creuser, j'ai déjà ma petite idée.
Messages : 11,019
Sujets : 230
Inscription : Sep 2007
Réputation :
1
manquerais pas des lignes de code j'ai des erreurs
J'ai rajouté
$result =''; // initialisation
$smarty = $template->smarty;
Pour que ça passe
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
25/07/2012, 18:53:14
(Modification du message : 25/07/2012, 19:23:46 par Jean le Chauve.)
Tu as tout à fait raison Jce, le code est tronqué . Il vaut mieux ne pas l'utiliser pour l'instant.
Je suis occupé à l'améliorer pour éviter toute interférence avec des scripts, commentaires additionnels et autres datas. Je mettrai le nouveau code dès qu'il sera terminé.
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
25/07/2012, 21:47:04
(Modification du message : 25/07/2012, 23:40:42 par Jean le Chauve.)
Je crois qu'il y a de nouveau un bug (j'espère que ce n'est pas encore une bêtise) : http://forum.cmsmadesimple.org/viewtopic...79&t=62105
Si c'est bien un bug, dès qu'il sera corrigé, je pourrai mieux cerner l'endroit où les remplacements se font.
[Edit] il s'agit bien d'un bug.
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
26/07/2012, 18:32:47
(Modification du message : 06/08/2012, 22:58:46 par Jean le Chauve.)
Voici les nouveaux codes pour 1.10.3 et pour 1.11 svn 8200+
Ils semblent fonctionner avec les ! et ; comme demandé par Kraygoon (il supprime les +ponctuation ajoutés dans les scripts).
Je ne dis pas qu'il englobe TOUS les cas, mais il évitera un très grand % de ponctuation en tête de ligne.
Lien pour la 1.11 svn 8200+ : http://menus-cmsms-madesimple.be/bizbuzz...acters.zip
OU
Code : <?php
// put into the 'plugins' directory and name it 'postfilter.nonbreaking_characters.php'
function smarty_postfilter_nonbreaking_characters($tpl_output, &$template)
{
$smarty = $template->smarty;
$result = explode(':', $smarty->_current_file);
if (count($result) > 0)
{
if( startswith($result[0],'tmp_') ) $result[0] = 'template';
if ($result[0] == 'content' || $result[0] == 'globalcontent' || $result[0] == 'template' || strlen($result[0]) == '40')
// evaluated template a disparu depuis cmsms 1.10.3 et a été remplacé par une string de 40 caractères
//Si un global content block pose problème, vous empêcher le plugin d'y entrer en ajoutant && $result[1] != 'nom du GCB'
{
$patterns = array ('#\b(\s)+([:?!;])(?=\s|<)#', '#«\s#', '#\s»#', '#(<script.*)( )([:?!;])(.*</script)#si');
$replace = array (' $2', '« ', ' »', '$1 $3$4');
$tpl_output = preg_replace($patterns, $replace, $tpl_output);
}
}
return $tpl_output;
}
function smarty_cms_about_postfilter_nonbreaking_characters()
{
?>
<p>Author: Jean le Chauve<jeanlechauve@gmail.com></p>
<p>Version: 1.0</p>
<p>
Change History:<br/>
None
</p>
<?php
}
?>
Merci de me donner vos retours.
ps : pour insérer des guillemets français, vous pouvez utiliser la combinaison Alt + 174 et Alt + 175
Et la version 1.10.3 : à dézipper dans /plugins
OU
Créer un fichier postfilter.nonbreaking_characters.php avec le code ci-dessous et placez-le dans /plugins
Code : <?php
// put into the 'plugins' directory and name it 'postfilter.nonbreaking_characters.php'
function smarty_cms_postfilter_nonbreaking_characters($tpl_output, &$smarty)
{
$result = explode(':', $smarty->_current_file);
if (count($result) > 0)
{
$patterns = array ('#\b(\s)+([:?!;])(?=\s|<)#', '#«\s#', '#\s»#', '#(<script.*)( )([:?!;])(.*</script)#s');
$replace = array (' $2', '« ', ' »', '$1 $3$4');
if ($result[0] == 'content' || $result[0] == 'temporary template' || $result[0] == 'globalcontent' || $result[0] == 'evaluated template')
//Si un global content block pose problème, vous empêcher le plugin d'y entrer en ajoutant && $result[1] != 'nom du GCB'
{
$tpl_output = preg_replace($patterns, $replace, $tpl_output);
}
}
return $tpl_output;
}
function smarty_cms_about_postfilter_nonbreaking_characters()
{
?>
<p>Author: Jean le Chauve<jeanlechauve@gmail.com></p>
<p>Version: 1.0</p>
<p>
Change History:<br/>
None
</p>
<?php
}
?>
Messages : 11,019
Sujets : 230
Inscription : Sep 2007
Réputation :
1
en v1.11
j'ai erreur sur la partie site Web :
Fatal error: Uncaught exception 'SmartyException' with message 'Unable to load filter Smarty_prefilter_nonbreaking_characters' in \lib\smarty\sysplugins\smarty_internal_filter_handler.php on line 50
( ! ) SmartyException: Unable to load filter Smarty_prefilter_nonbreaking_characters in \lib\smarty\sysplugins\smarty_internal_filter_handler.php on line 50
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
27/07/2012, 11:47:45
(Modification du message : 27/07/2012, 11:48:53 par Jean le Chauve.)
Citation :SmartyException: Unable to load filter Smarty_prefilter_nonbreaking_characters in
Normal, le fichier s'appelle postfilter.nonbreaking_characters.php et pas prefilter.nonbreaking_characters.php
Vérifie dans /plugins et supprime le fichier prefilter.nonbreaking_characters.php
Et merci de le tester
Messages : 11,019
Sujets : 230
Inscription : Sep 2007
Réputation :
1
Ha m...de il a changer de nom depuis hier et je ne suis pas réveillé Donc ça va
mais si je vais sur les pages message d'erreur
cache vidé
Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 22 in \plugins\postfilter.nonbreaking_characters.php on line 14
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Je vérifie que je n'ai pas de nouveau tronqué le code ( ), puis je te donne le lien pour le zip.
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Messages : 11,019
Sujets : 230
Inscription : Sep 2007
Réputation :
1
Citation :Lien pour la 1.11 svn 8200
OK ça marche et même en SVN -8201-Fr
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Il avait quand même une GROSSE erreur dans cette expression ; il manquait des crochets de classe dans :
#(<script.*)(  ([:|?|!|;])(.*</script)#si
J'en ai profité pour appliquer le plugin dans les modules.
Je mets à jours les codes et zip.
Messages : 11,019
Sujets : 230
Inscription : Sep 2007
Réputation :
1
>Je mets à jours les codes et zip.
testé en 1.11 Ok
|