Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi

SUJET : Fiche intervention : gestion interligne

Fiche intervention : gestion interligne il y a 11 ans 2 mois #11210

  • Maxime
  • Portrait de Maxime
  • Hors ligne
  • Senior Boarder
  • Messages : 70
  • Remerciements reçus 3
  • Karma: 1
Bonjour,

Sur Dolibarr 2.4, la description d'une action sur le pdf de la fiche d'intervention au modèle soleil présente des interlignes très grands.
Le code en question :
$num = sizeof($fichinter->lignes);
				$i=0;
				if ($num)
				{
					while ($i < $num)
    				{
						$fichinterligne = $fichinter->lignes[$i];

						$valide = $fichinterligne->id ? $fichinterligne->fetch($fichinterligne->id) : 0;
						if ($valide>0)
						{
							$ij = $i+1;
              $pdf->SetXY (20, $tab_top + 16 + $i * 20); 
	                        $pdf->SetFont('Arial','B', 10);
                          $pdf->writeHTMLCell(190, 8, 20, $tab_top + 16 + $i * 20,
	                         //dol_htmlentitiesbr($langs->transnoentities("Date")." : ".dolibarr_print_date($fichinterligne->datei)." - ".$langs->transnoentities("Duration")." : ".ConvertSecondToTime($fichinterligne->duration)), 0, 'J', 0); 
                           "Action n°" . $ij . " (Dur&eacute;e :". dol_htmlentitiesbr(date("H",$fichinterligne->duration) - 1 ."h".date("i",$fichinterligne->duration)."), terminée le ".dolibarr_print_date($fichinterligne->datei). " : "), 0, 'J', 0);
                           $pdf->SetFont('Arial','', 10);
	                         
	                        $pdf->SetXY (20, $tab_top + 22 + $i * 20); 
	                        $pdf->writeHTMLCell(170, 8, 20, $tab_top + 1 + $i * 20,
	                         dol_htmlentitiesbr($fichinterligne->desc,1), 0, 0, 0);
							$tab_height+=20;
						}
						$i++;
					}
				}
Je pensais que cela venait de la fonction dol_htmlentitiesbr, mais elle est utilisée par ailleurs et ne semble pas produire ce problème.
J'utilise FCKEditor, peut-être un problème de filtrage à ce niveau ?
Si vous avez une idée, je suis preneur ;)
Merci
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 mois #11225

  • eldy
  • Portrait de eldy
  • Hors ligne
  • Administrateur
  • Messages : 1054
  • Remerciements reçus 51
  • Karma: 107
Le pb doit etre corrigé en 2.5. A tester...
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 mois #11231

  • Maxime
  • Portrait de Maxime
  • Hors ligne
  • Senior Boarder
  • Messages : 70
  • Remerciements reçus 3
  • Karma: 1
Ok, je regarde la 2.5 dès que j'ai un moment.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 semaines #12508

  • patrickdmz
  • Portrait de patrickdmz
  • Hors ligne
  • Junior Boarder
  • Messages : 39
  • Karma: 0
Je viens de faire le test dans une 2.5.1 sans utiliser FCKEditor et visiblement le résultat est le même :

fichinter.jpg


Je regarde dans pdf_soleil_modules.php mais je ne vois pas bien où changer ce comportement.

Merci.
Dernière édition: il y a 11 ans 2 semaines par patrickdmz.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 semaines #12512

  • patrickdmz
  • Portrait de patrickdmz
  • Hors ligne
  • Junior Boarder
  • Messages : 39
  • Karma: 0
En cherchant un peu, j'ai trouvé que le problème d'interlignes semble venir de la ligne 2062 dans fpdf.php avec le writeHTML. Le second paramètre est à "true" par défaut. En ajoutant un paramètre à la fonction :

function writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=0, $newline=true)

et en changeant la ligne 2062 par

$this->writeHTML($html, $newline, $fill);

Cela corrige le problème d'interligne dans les fiches d'intervention en ajoutant la valeur false à la fin de la ligne 279 de pdf_soleil_modules.php. En revanche, cela change la mise en page. J'ai donc changé la valeur 4 par 6 en ligne 291 :

$pdf->writeHTMLCell(0, 4, 20, $tab_top + 6 + $j * $height,

et 4 par 1 en ligne 296 :

$tab_height+=($height+1);

Enfin, j'ai changé la valeur 16 de $height en ligne 267 par 14.

Cela semble donner de bon résultats à condition de n'avoir qu'une page pour la fiche d'intervention. Ensuite cela part dans tous les sens.

Cette solution n'est pas nécessairement la plus élégante et elle ne solutionne par l'interligne de la description générale de l'intervention. Si une solution plus fiable est trouvée, je suis preneur.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 semaines #12524

  • patrickdmz
  • Portrait de patrickdmz
  • Hors ligne
  • Junior Boarder
  • Messages : 39
  • Karma: 0
Après un peu de recherches, voici une version améliorée de la solution précédente (qui posait des problème de positionnements X,Y dans la page). Je garde les modifications du côté du fpdf.php et je modifie le pdf_soleil_modules.php de la façon suivante :

$ligneprec=0;
if ($num)
{
while ($i < $num)
{
$fichinterligne = $fichinter->lignes[$i];
$valide = $fichinterligne->id ? $fichinterligne->fetch($fichinterligne->id) : 0;
if ($valide>0)
{
$pdf->writeHTMLCell(0,0,0,0,"",0,0,0,false);
$pdf->writeHTMLCell(0, 4, 20, $tab_top + 5*$ligneprec,dol_htmlentitiesbr($outputlangs->transnoentities("Date")." : ".dolibarr_print_date($fichinterligne->datei,'',false,$outputlangs)." - ".$outputlangs->transnoentities("Duration")." : ".ConvertSecondToTime($fichinterligne->duration),1,$outputlangs->charset_output), 0, 0, 0);

$descr = str_replace("é","é",$outputlangs->convToOutputCharset($fichinterligne->desc));
$descr = str_replace("è","è",$descr);
$descr = str_replace("à","à",$descr);
$descr = str_replace("ê","ê",$descr);
$descr = str_replace("ù","ù",$descr);
$descr = str_replace("ô","ô",$descr);
$descr = str_replace("û","û",$descr);
$descr = str_replace("<","<",$descr);
$descr = str_replace(">",">",$descr);
$pdf->writeHTMLCell(0, 3, 20, $tab_top + 4 + 5*$ligneprec,dol_htmlentitiesbr($descrpz,1), 0, 0, 0);
$tab_height+=($height+1);
$ligneprec += floor(strlen($fichinterligne->desc)/130)+2;
$j++;
}
$i++;
}
}

Dans ce code modifié, j'ai été obligé d'ajouter une ligne avec un writeHTMLCell invisible pour éviter les interlignes trops grands. J'ai également ajouté un comptage (très approximatif et il faudra certainement amélioré ce point) du nombre de lignes pour chaque détail de l'intervention. J'ai fixé de façon très arbitraire par rapport à quelques tests le nombre de caractères sur une ligne à 130. Ce comptage des lignes est nécessaire dans mon cas dans la mesure où un intervenant peut être amené à avoir plus de 3 lignes de commentaires qui correspondent à la hauteur fixée à 16 par défaut par détail.

Mes tests me donnent des résultats plutôt bons pour le moment, mais ne connaissant rien au PHP et à la librairie FDPF, je suppose qu'il y a des solutions bien plus universelles et efficaces. Alors si quelqu'un peut me suggérer quelque chose de mieux (notamment au niveau du comptage des lignes) !

Merci.
Dernière édition: il y a 11 ans 2 semaines par patrickdmz.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 semaines #12532

  • eldy
  • Portrait de eldy
  • Hors ligne
  • Administrateur
  • Messages : 1054
  • Remerciements reçus 51
  • Karma: 107
Peux-tu saisir une intervention qui poserais pb sur le site de démo. Je n'arrive pas a reproduire avec la CVS.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 semaines #12544

  • patrickdmz
  • Portrait de patrickdmz
  • Hors ligne
  • Junior Boarder
  • Messages : 39
  • Karma: 0
Sauf erreur de ma part, il n'y a pas d'accès aux fiches d'intervention dans la démo. Ou alors je ne parviens pas à trouver l'accès ! Je suppose que le module n'est pas activé.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 semaines #12547

  • eldy
  • Portrait de eldy
  • Hors ligne
  • Administrateur
  • Messages : 1054
  • Remerciements reçus 51
  • Karma: 107
Exact. J'ai activé le module.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 2 semaines #12564

  • patrickdmz
  • Portrait de patrickdmz
  • Hors ligne
  • Junior Boarder
  • Messages : 39
  • Karma: 0
Bonsoir Eldy, je viens donc de créer une fiche d'intervention sur la démo :

demo.dolibarr.org/fichinter/fiche.php?id=4

Je n'ai pas de problème d'interligne sur la description générale de la fiche, mais en revanche les lignes de détail ne s'affichent pas (uniquement dates et heures). Au passage une petite question : comment faire pour avoir des dates au format français (févr. au lieu de feb par exemple).

Merci de ton aide.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 11 ans 1 semaine #12697

  • patrickdmz
  • Portrait de patrickdmz
  • Hors ligne
  • Junior Boarder
  • Messages : 39
  • Karma: 0
Des nouvelles sur les fiches d'intervention ???
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 10 ans 11 mois #13307

  • hminet
  • Portrait de hminet
J'ai également eu ce problème.
Voici une version du fichier qui pourrait résoudre vos problèmes.
A tester et retester, mais cette version ne prend pas en charge le HTML dans la description / les lignes de l'intervention.

Bon amusement,

Hadrien

Fichier attaché :

Nom du fichier : pdf_soleil-15be072af183ab731db2e7c87373bdc2.txt
Taille du ficher : 13817
Dernière édition: il y a 10 ans 11 mois par hminet. Raison: fichier PHP n'a pas voulu s'uploader :-)
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 10 ans 10 mois #13621

  • diake
  • Portrait de diake
  • Hors ligne
  • Fresh Boarder
  • Messages : 7
  • Karma: 0
Je confirme, ayant eu le même problème et ayant tester le fichier que tu as envoyé, cela fonctionne correctement! (même si les #0 #1 #2 etc...sont pas jolie..) je vais essayer de changer l'écriture aussi...

Merci pour avoir mis à disposition le code source du fichier!
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 10 ans 10 mois #13679

  • vys
  • Portrait de vys
  • Hors ligne
  • Fresh Boarder
  • Messages : 3
  • Karma: 0
bonjour,

je confirme je suis confronté au même pb, les lignes dans la fiche d'intervention n'affichent que date et heure et pas le détail des l'intervention.

Merci à hminet pour le fichier
L'administrateur a désactivé l'accès en écriture pour le public.

Re:Fiche intervention : gestion interligne il y a 10 ans 9 mois #14406

  • nkame
  • Portrait de nkame
Bon, j'avais écrit des explications concernant l'absence des descriptions dans la dernière version de Dolibarr, mais le forum a estimé que je suis trop lent pour les taper. Donc voilà une version corrigée.
Autres modifs :
- réduction de la hauteur de la ligne pour le calcul de la taille du cadre entourant les descriptions
- augmentation du nombre de caractères par ligne pour le calcul de la taille du cadre yadayada ( (210 - 10 - 10) / (9 * 25.4 / 72) * 2.22 pour ceux qui veulent tout savoir)

Fichier attaché :

Nom du fichier : pdf_lune.txt
Taille du ficher : 16384
Dernière édition: il y a 10 ans 9 mois par nkame. Raison: Rajout du fichier que le forum a rejeté au premier post...
L'administrateur a désactivé l'accès en écriture pour le public.