Vous n'êtes pas identifié(e).

Annonce

ATTENTION

  • Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
  • Pensez à mettre à jour votre version de CMS Made Simple. Nous ne faisons de support que sur LA dernière version de CMS Made Simple.
  • Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Dans votre CMS utiliser le menu Administration du site/Informations du système en haut Vue au format texte. Ces informations demandées nous permettent de mieux vous aider
  • Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

#1 24/07/2012 11:37:00

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Nouveau plugin : ponctuation insécable

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  smile

Dernière modification par Jean le Chauve (13/02/2013 22:30:13)

Hors ligne

 

#2 25/07/2012 09:33:59

kraygoon
Membre
Lieu : Pau, France
Inscription : 02/11/2007
Messages : 495
Site Web

Re : Nouveau plugin : ponctuation insécable

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 :

[== JavaScript ==]
{literal}
<script>
alert("Coucou la boite JS !") ;
</script>
{/literal}

Qui devenait :

[== JavaScript ==]
{literal}
<script>
alert("Coucou la boite JS&nbsp;!")&nbsp;;
</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 ?

Hors ligne

#3 25/07/2012 10:22:31

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Re : Nouveau plugin : ponctuation insécable

Salut Kraygoon smile
Effectivement, ça ne fonctionnera pas pour ton code.
Je vais creuser, j'ai déjà ma petite idée.

Hors ligne

#4 25/07/2012 11:51:51

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 038
Site Web

Re : Nouveau plugin : ponctuation insécable

manquerais pas des lignes de code j'ai des erreurs
J'ai rajouté

    $result =''; // initialisation
    $smarty = $template->smarty;

Pour que ça passe


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#5 25/07/2012 18:53:14

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Re : Nouveau plugin : ponctuation insécable

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é.

Dernière modification par Jean le Chauve (25/07/2012 19:23:46)

Hors ligne

#6 25/07/2012 21:47:04

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Re : Nouveau plugin : ponctuation insécable

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/viewtopi … 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.

Dernière modification par Jean le Chauve (25/07/2012 23:40:42)

Hors ligne

#7 26/07/2012 18:32:47

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Re : Nouveau plugin : ponctuation insécable

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 &nbsp;+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/bizbuz … acters.zip
OU

<?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.*)(&nbsp;)([:?!;])(.*</script)#si');
			$replace = array ('&nbsp;$2', '«&nbsp;', '&nbsp;»', '$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&lt;[email protected]&gt;</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

<?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.*)(&nbsp;)([:?!;])(.*</script)#s');
		$replace = array ('&nbsp;$2', '«&nbsp;', '&nbsp;»', '$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&lt;[email protected]&gt;</p>
	<p>Version: 1.0</p>
	<p>
	Change History:<br/>
	None
	</p>
	<?php
}
?>

Dernière modification par Jean le Chauve (06/08/2012 22:58:46)

Hors ligne

#8 27/07/2012 11:35:50

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 038
Site Web

Re : Nouveau plugin : ponctuation insécable

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


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#9 27/07/2012 11:47:45

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Re : Nouveau plugin : ponctuation insécable

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  smile

Dernière modification par Jean le Chauve (27/07/2012 11:48:53)

Hors ligne

#10 27/07/2012 12:02:49

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 038
Site Web

Re : Nouveau plugin : ponctuation insécable

Ha m...de il a changer de nom depuis hier et je ne suis pas réveillé wink 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


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#11 27/07/2012 12:18:00

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Re : Nouveau plugin : ponctuation insécable

Je vérifie que je n'ai pas de nouveau tronqué le code ( big_smile ), puis je te donne le lien pour le zip.

Hors ligne

#12 27/07/2012 12:22:44

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Hors ligne

#13 27/07/2012 14:30:49

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 038
Site Web

Re : Nouveau plugin : ponctuation insécable

Lien pour la 1.11 svn 8200

OK ça marche et même en SVN  -8201-Fr  cool


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#14 27/07/2012 15:12:50

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 686
Site Web

Re : Nouveau plugin : ponctuation insécable

Il avait quand même une GROSSE erreur dans cette expression ; il manquait des crochets de classe dans :
#(<script.*)(&nbsp;)([:|?|!|;])(.*</script)#si
J'en ai profité pour appliquer le plugin dans les modules.
Je mets à jours les codes et zip.

Hors ligne

#15 27/07/2012 18:42:01

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 038
Site Web

Re : Nouveau plugin : ponctuation insécable

>Je mets à jours les codes et zip.
testé en 1.11 Ok


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

Pied de page des forums

  Flux Rss Twitter FaceBook