Bug d'affichage image dans le backoffice

Version stable courante
téléchargement osCSS 1.2.2 RC

Bug d'affichage image dans le backoffice

Messagepar albator1932 » Lun 11 Oct 2010, 23:06

Bonjour,

Sur mon osCSS 1.2.2 rc1 fraîchement installé j'ai plein d'images qui ne s'affichent pas (les boutons graphiques en fait on dirait) pourtant j'ai vérifié et ils sont présents sur le serveur, voici ce que ça donne à la place :

Image

Une idée d'où ça peut provenir ?
albator1932
Membre actif
 
Messages: 12
Inscription: Mer 01 Avr 2009, 16:28

Re: Bug d'affichage image dans le backoffice

Messagepar oscim » Mar 12 Oct 2010, 14:59

Peut être nous donner le liens vers l'image ?

Il ne doit pas être bon, certaianement une erreur dans les chemin
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Re: Bug d'affichage image dans le backoffice

Messagepar cynic- » Mar 12 Oct 2010, 17:58

Je pense à un souci dans admin/includes/configure.php
Vérifier dans le code source le chemin complet de l'image introuvable. Peut-être un "/" manquant ou en trop
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Re: Bug d'affichage image dans le backoffice

Messagepar albator1932 » Mar 12 Oct 2010, 20:01

cynic- a écrit:Je pense à un souci dans admin/includes/configure.php
Vérifier dans le code source le chemin complet de l'image introuvable. Peut-être un "/" manquant ou en trop


J'ai pensé à ça mais dans configure.php rien ne semble déconner et dans le code source ça génère des

Code: Tout sélectionner
<span class="errorText">Dossier!</span>


Extrait de mon configure.php :

Code: Tout sélectionner
define('DIR_WS_IMAGES', 'images/');
define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');
define('DIR_WS_CATALOG_IMAGES', DIR_WS_CATALOG . 'images/');


En plus ça ne le fait pas absolument toutes les images du backoffice, certaines comme le bouton "insérer" sur la création d'un produit ou "sauver" sur la création d'une catégorie s'affichent normalement, je n'y comprends rien

Code du bouton "sauver" sur la création d'une catégorie (alors qu'il est juste à coté d'un bouton annuler qui lui ne s'affiche pas) :

Code: Tout sélectionner
<input type="image" src="includes/languages/french/images/buttons/button_save.gif" border="0" alt="Sauvegarder" title=" Sauvegarder ">
albator1932
Membre actif
 
Messages: 12
Inscription: Mer 01 Avr 2009, 16:28

Re: Bug d'affichage image dans le backoffice

Messagepar oscim » Mar 12 Oct 2010, 21:45

Je n'ai plus de php4 sous la main; Et, le maintient de cette version n'est plus vraiement d'actu :(

Cela dit, je crois me souvenir que dans les dernière remontées, des modifs on été faite sur les appels au tep_image par ayatus.

Et je crois aussi me souvenir qu'il y avait un petit soucis sur le calcul du chemin des image entre le front et le back!

Peut tu nous montrer le code de la function tep_images de la lib general, ou de html_ouptut.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Re: Bug d'affichage image dans le backoffice

Messagepar albator1932 » Mar 12 Oct 2010, 22:52

Voici le code de tep_image de admin/includes/functions/html_output.php :

Code: Tout sélectionner
// The HTML image wrapper function
  function tep_image($src, $alt = '', $width = '', $height = '', $params = '') {
//  error_reporting(E_ALL);

  if (strpos($src, DIR_WS_CATALOG) === false) $src_dir = DIR_FS_ADMIN . $src;
  else $src_dir = DIR_FS_CATALOG . substr ($src, (strrpos (DIR_WS_CATALOG , '/'))+1);

  if (!@is_file($src_dir) || empty($src_dir)) {
    if (empty($alt)) return '<span class="errorText">Image Error !</span>';
    else return '<span class="errorText">' . tep_output_string($alt) . '!</span>';
  }
  elseif ( ($imagedata = getimagesize($src_dir)) == false || !$imagedata[2] || $imagedata[2] > 3){
    if (empty($alt)) return '<span class="errorText">Ce format d\'image n\'est pas autorisé !</span>';
    else return '<span class="errorText">' . tep_output_string($alt) . '!</span>';
  }
  else {
      $image_size = tep_aspectratio($src, $imagedata[0], $imagedata[1], $width, $height);
      $width = $image_size["width"];
      $height = $image_size["height"];
      if (function_exists('imagecreatetruecolor') && CONFIG_CALCULATE_IMAGE_SIZE == 'true' && $width != $imagedata[0] && $height != $imagedata[1]) {
        $src = thumbimage($src, $width, $height, $imagedata[0], $imagedata[1], $imagedata[2], DIR_WS_IMAGES . 'imagecache/');
      }
  }

  $image = '<img src="' . tep_output_string($src) . '" alt="' . tep_output_string($alt) . '" width="' . tep_output_string($width) . '" height="' . tep_output_string($height) . '"';
  if (tep_not_null($alt)) $image .= ' title=" ' . tep_output_string($alt) . ' "';
  if (tep_not_null($params)) $image .= ' ' . tep_output_string($params);
  $image .= '/>';

  return $image;
}


Dans admin/includes/functions/general.php, j'ai trouvé la fonction tep_info_image :

Code: Tout sélectionner
  function tep_info_image($image, $alt, $width = '', $height = '') {
    if (tep_not_null($image) && (file_exists(DIR_FS_CATALOG_IMAGES . $image)) ) {
      $image = tep_image(DIR_WS_CATALOG_IMAGES . $image, $alt, $width, $height);
    } else {
      $image = TEXT_IMAGE_NONEXISTENT;
    }

    return $image;
  }
albator1932
Membre actif
 
Messages: 12
Inscription: Mer 01 Avr 2009, 16:28

Re: Bug d'affichage image dans le backoffice

Messagepar oscim » Mer 13 Oct 2010, 11:48

Il me semble qu'il y a un soucis de détection de chemin entre les image du BO et FO .

En fait cette fonction doit déterminer si l'image appartient au dossier admin/images ou au /image public.


Ce bout de code vient de la V2, mais tu n'as pas la constante définis dans te configure que sont
DIR_FS_ADMIN.

Donc cette constante , tu la remplace par un truc du genre DIR_FS_CATALOG.DIR_WS_ADMIN

A remettre dans ta function tep_image , en remplacement de la determination actuel..
Code: Tout sélectionner
      if (strpos($src, DIR_WS_ADMIN) >0 || ( strpos($src, DIR_WS_IMAGES) ==0  && file_exists(DIR_FS_ADMIN.$src) ) ) $src_dir = DIR_FS_ADMIN . $src;
      else  $src_dir = DIR_FS_CATALOG . substr ($src, (strrpos (DIR_WS_CATALOG , '/')));
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Re: Bug d'affichage image dans le backoffice

Messagepar albator1932 » Mer 13 Oct 2010, 20:01

J'ai effectué la modification et bingo ! une immense partie des images sont revenues à l'exception des boutons :shock:

Par exemple sur la page de création d'article j'ai bien toutes les images pour le gras, l'italique et tout ça (que je n'avais pas avant) par contre j'ai toujours pas les boutons Editer, Supprimer, Déplacer, Copier, etc.

Sont-ils chargés autrement ? Il me semble que c'est géré par langue pour les boutons étant donné le texte qui est dessus, donc peut-être que la fonction qui rapatrie ces boutons souffre du même problème ?

EDIT : ça serait pas cette fonction ?

Code: Tout sélectionner
// The HTML form submit button wrapper function
// Outputs a button in the selected language
  function tep_image_submit($image, $alt = '', $parameters = '') {
    global $language;

    $image_submit = '<input type="image" src="' . tep_output_string(DIR_WS_LANGUAGES . $language . '/images/buttons/' . $image) . '" border="0" alt="' . tep_output_string($alt) . '"';

    if (tep_not_null($alt)) $image_submit .= ' title=" ' . tep_output_string($alt) . ' "';

    if (tep_not_null($parameters)) $image_submit .= ' ' . $parameters;

    $image_submit .= '>';

    return $image_submit;
  }
albator1932
Membre actif
 
Messages: 12
Inscription: Mer 01 Avr 2009, 16:28

Re: Bug d'affichage image dans le backoffice

Messagepar Ayatus » Lun 18 Oct 2010, 08:44

Après quelques tests, il semblerait manifestement que ton php tourne en safe mode.
Ce mode de fonctionnement apporte plus de problème qu'il en évite, en l'occurrence le mod php_imagick si il est présent ne pourra pas traiter correctement le redimensionnement des images gif.

Voici une solution.
Dans un premier temps on revient en arrière :
Code: Tout sélectionner
  function tep_image($src, $alt = '', $width = '', $height = '', $params = '') {
//  error_reporting(E_ALL);

  if (strpos($src, DIR_WS_CATALOG) === false) $src_dir = DIR_FS_ADMIN . $src;
  else $src_dir = DIR_FS_CATALOG . substr ($src, (strrpos (DIR_WS_CATALOG , '/'))+1);
...
 

puis on modifie la fonction thumbimage
Code: Tout sélectionner
function thumbimage ($image, $width, $height, $width_src, $height_scr, $format, $cachedir){
//  error_reporting(E_ALL);

  $jpegquality = 95; //définir la qualité des aperçus en JPEG

  umask(0);
  !is_dir ($cachedir) ? mkdir ($cachedir, 0777) : @chmod ($cachedir, 0777);

  $image_src = $image;

  if (strpos($image, DIR_WS_CATALOG) === false) $image = DIR_FS_ADMIN . $image;
  else $image = DIR_FS_CATALOG . substr ($image, (strrpos (DIR_WS_CATALOG , '/'))+1);

  $types = array (=> "gif", "jpeg", "png");

  $thumb = $width.'x'.$height.'_'.basename($image).'_'.md5($image).'.'.(($types[$format]=="jpeg") ? "jpg" : $types[$format]);
  $thumbfile = $cachedir.$thumb;
  if (file_exists ($thumbfile)) {
    $thumbdata = getimagesize ($thumbfile);
    $thumbdata[0] == $width && $thumbdata[1] == $height ? $iscached = true : $iscached = false;
    if (@filemtime($thumbfile) < @filemtime($image)) $iscached = false;
  }
  else  $iscached = false;


  if (!$iscached)  $makethumb = ($width_src > $width || $height_scr > $height) ?  true : false;
  else $makethumb = false;

  if ($makethumb) {
    if (PHP_VERSION < 5) !is_dir ($cachedir) ? tep_createdir($cachedir) : @chmod ($cachedir, 0777);
    else !is_dir ($cachedir) ? mkdir($cachedir, 0777, true) : @chmod ($cachedir, 0777);

    if ($types[$format] == "gif" && class_exists('Imagick') && ini_get('safe_mode')==0) {
      $thumb_gif = new Imagick($image);
      foreach ($thumb_gif as $frame) {
        $frame->thumbnailImage($width, $height);
        $frame->setImagePage($width, $height, 0, 0);
      }
      $thumb_gif->writeImages($thumbfile, true);
    }
    else {
      $image = call_user_func("imagecreatefrom".$types[$format], $image);
      $thumb = imagecreatetruecolor ($width, $height);
      imagealphablending($thumb, false);
      imagesavealpha($thumb, true);
      $trans_color = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
      imagefill($thumb, 0, 0, $trans_color);
      imagecopyresampled ($thumb, $image, 0, 0, 0, 0, $width, $height, $width_src, $height_scr);

      if ($types[$format] == "jpeg")  call_user_func("image".$types[$format], $thumb, $thumbfile, $jpegquality);
      else call_user_func("image".$types[$format], $thumb, $thumbfile);
      imagedestroy ($image);
      imagedestroy ($thumb);
    }
    $image = $thumbfile;
  }
  else {
    $iscached
    
? $image = $thumbfile
    
: $image = $image_src;
  }
  return $image;
}
 
Avatar de l’utilisateur
Ayatus
Site Admin
 
Messages: 280
Inscription: Sam 19 Avr 2008, 17:23


Retourner vers osCSS 1.2.2 RC

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron