Jump to content

Edition de produits n'affiche pas certains éléments


Recommended Posts

Bonsoir à tous.

Je me bats avec un comportement bizarre et agaçant dans le BackOffice (BO), sur une boutique créée en 2013, aujourd'hui en version 1.6.1.23 (environnement standard Gandi Simple Hosting - PHP 5.6.30  et MySQL 5.5.58-38.10-log)

Les 2 caches sont désactivés, par principe, quand je fais évoluer une boutique (contenant/contenu). Je ne les réactive que lorsque le shop est stabilisé.

Si je crée un nouveau produit, aucun souci : tout fonctionne comme prévu. Mais dès que je sauve le produit ou que je le réouvre pour l'éditer, ceci arrive (encore une fois, uniquement dans le BO, je n'ai aucun souci dans la boutique côté clients, le FrontOffice) :

* les images ne sont pas affichées dans le BO et le bouton "Ajouter des fichiers" ne fonctionne pas. Le seul moyen de les faire apparaitre et; au besoin, de pouvoir en ajouter, est de cliquer d'abord sur "Mettre à jour" pour les légendes. Un peu, comme si l'on forçait un rechargement des data...

* dans l'onglet "Associations" pour les catégories, bien que le nombre affiché de catégories choisies soit correct, aucune n'apparait cochée (elles sont pourtant bien présentes dans la base de données). Si je tente de sauver le produit sans recocher les cases, une erreur apparait :

2 erreurs

  1. Le produit doit être au minimum dans une catégorie.
  2. Ce produit doit être dans la catégorie par défaut.

Le seul moyen est donc de recocher les catégories.

=> Si je viens de cliquer "Enregistrer et rester" pas de souci, toutes les infos sont conservées.

=> Si je dois réouvrir le produit depuis le catalogue, les comportements ci-dessus recommencent... Et ceci pour tous les produits du catalogue.

Si qq'un a une idée ???

PS : j'ai pensé à un problème de script, j'ai donc tenté différents tests : copier depuis une sauvegarde complète le dossier JS, le dossier Admin... Au final, j'ai craqué : j'ai supprimé la totalité des dossiers et fichiers et restauré un backup propre... et cela n'a rien changé...

DJM

Edited by DJM
ajout de tags / typo (see edit history)
Link to comment
Share on other sites

Effectivement @julie Multi vous avez 100% raison, TinyMCE est inactif également dans toutes les zones d'édition de texte chez moi. L'habitude de saisir en HTML directement fait que je ne l'avais pas remarqué...

Tout ceci me fait penser à un problème d'initialisation de scripts... Mais j'avoue que je sèche pour savoir où chercher...

Pour la petite histoire j'ai tenté de recopier le dossier /JS de la racine depuis une sauvegarde clean, rien.

La version en cours du BO et de la boutique dans sa totalité est une restauration "from scratch", après suppression de la totalité du site...

Une installation "clean" sur un serveur de test n'a pas ce souci...

A suivre...

DJM

Link to comment
Share on other sites

@julie Multi votre remarque m'a donné une idée... J'avais déjà recopié le dossier /JS, mais n'avais pas encore inspecté son contenu... Là je viens de comparer son contenu entre la boutique active et ma version "clean"... il y a des différences assez étranges, par exemple un dossier /tiny_mce et dossier /tinymce etc... je vais tenter ce soir une substitution des 2 et verrai ce qu'il se passe...

A suivre...

DJM

Link to comment
Share on other sites

J'ai effectué plusieurs tests.

En fait, en comparant mon dossier /JS avec celui d'une nouvelle installation propre, j'ai remarqué qu'il y avait plein de "vieux" dossiers/fichiers provenant des anciennes installations et laissés là suite aux mises à jour (et a priori, inutilisés).

J'ai donc supprimé ce dossier /JS et l'ai remplacé par celui provenant de mon installation "propre"...

Ai réaccéder au BO et FO, sans aucun souci, mais problèmes non réglés.

J'ai donc activé le mode "affichage des erreurs" pour voir si au moins un message ou une alerte s'affichait => rien !

Je confirme avoir toujours les mêmes problèmes observés, à savoir :

* TinyMCE ne s'affiche pas pour les zones d'édition textuelle, ni en création, ni en édition de produits, et pas non plus pour le CMS.

* les catégories associées ne sont pas cochées à l'édition d'un produit existant, bien que le nombre d'associations soit bon. Si l'on enregistre sans cocher, on affiche une alerte du BO.

* les images ne s'affichent pas et il n'est pas possible d'en ajouter sur un produit existant, sauf à forcer la réécriture des légendes (à noter d'ailleurs que cela fait aussi réapparaitre les coches sur les catégories !!!).

Qui a une idée de ce qu'il faudrait tester ? Merci d'avance...

DJM

Link to comment
Share on other sites

Hello, je continue donc mes tests...

Ayant activé la console dév de Firefox, j'ouvre une page produit et ce qui était prévisible s'affiche :

Échec du chargement pour l’élément <script> dont la source est « https://www.steveshehan.com/shop/js/admin/tinymce.inc.js ». index.php:109:1
ReferenceError: tinySetup is not defined index.php:1850:3

Ce qui doit correspondre à ces appels :

<script type="text/javascript" src="/shop/js/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript" src="/shop/js/admin/tinymce.inc.js"></script>

Sachant que les 2 fichiers sont bien présents.

Et donc ce code ne s'éxécute pas :

// Execute when tab Informations has finished loading
	tabs_manager.onLoad('Informations', function(){
		tinySetup({
			editor_selector :"autoload_rte",
			setup : function(ed) {
				ed.on('init', function(ed)
				{
					if (typeof ProductMultishop.load_tinymce[ed.target.id] != 'undefined')
					{
						if (typeof ProductMultishop.load_tinymce[ed.target.id])
							tinyMCE.get(ed.target.id).hide();
						else
							tinyMCE.get(ed.target.id).show();
					}
				});

Les 2 autres problème (images et catégories) ne génèrent aucune erreur.

L'édition d'une page CMS renvoie les mêmes erreurs, mais à des lignes et du code d'initialisation différents.

Remarque : il est possible que la non initialisation des librairies de Tiny_MCE empêche le chargement de fonctions/scripts subséquents, d'où les autres comportements atypiques.

DJM

PS: j'ai désactivé tous mes adblockers et autres systèmes de protection. J'ai le même souci dans Firefox et Chrome.

PS2 : en faisant de plus amples recherches (en anglais), ce "phénomène" semble exister depuis un certain temps

PS3 : pour mémoire, j'ai déjà recopié un dossier /JS propre, cf. messages précédents.

Link to comment
Share on other sites

Je continue à investiguer...

Suis passé sous la console de dev de Chrome et j'ai obtenu d'autres informations.

A priori, l'appel de <script type="text/javascript" src="/shop/js/admin/tinymce.inc.js"></script> renvoie une erreur "net::ERR_ABORTED 403" (GET https://www.steveshehan.com/shop/js/admin/tinymce.inc.js 403) et effectivement l'ouverture de https://www.steveshehan.com/shop/js/admin/tinymce.inc.js

va afficher

Forbidden
You don't have permission to access /shop/js/admin/tinymce.inc.js on this server.

alors même que j'ai accès aux autres fichiers du dossier... et à ce même fichier sur une autre installation "propre" de PrestaShop... Grrrrrrrrrr !

J'ai vérifié les droits : 644 / dossier 755 - ai testé en 700 idem. Les droits sont bien affectés à Owner & Group.

Rien vu de particulier dans .htaccess ou robots.txt (j'ai tenté d'y rajouter une directive Allow: */js/*.js pour voir... sans résultat)

Là, je sèche... Il doit bien y avoir un truc auquel je n'ai pas pensé et qui bloque l'accès à ce fichier, #@@$# !! Un "deny" qui traine qqpart pour les fichiers de ce dossier .inc.js suite aux updates de la boutique au fil du temps...

=> Si je renomme le fichier tinymce.inc.js en tinymce_inc.js => je n'ai plus d'erreur 403 !

En conclusion, et je sais que ce n'est pas terrible comme manière de faire (je tenterai un override plus tard), suis allé modifier "AdminProductsController.php" où j'ai modifié le nom d'appel du fichier comme ci-dessus.

$this->addJS(array(
                _PS_JS_DIR_.'admin/products.js',
                _PS_JS_DIR_.'admin/attributes.js',
                _PS_JS_DIR_.'admin/price.js',
                _PS_JS_DIR_.'tiny_mce/tiny_mce.js',
                _PS_JS_DIR_.'admin/tinymce_inc.js',
                _PS_JS_DIR_.'admin/dnd.js',
                _PS_JS_DIR_.'jquery/ui/jquery.ui.progressbar.min.js',
                _PS_JS_DIR_.'vendor/spin.js',
                _PS_JS_DIR_.'vendor/ladda.js'
            ));

Et bien sûr, les images et catégories sont bien là !!! @julie Multi voilà un "contournement" !!! [mais attention à la prochaine mise à jour !]

Par contre, je n'ai pas trouvé le "Controller" qui fait l'appel équivalent pour le CMS pour l'initialisation de tinyMCE...

Hope this helps

DJM

Link to comment
Share on other sites

  • 2 years later...

Bonjour,

Une réponse tardive. Je viens d'avoir le même problème et ça été résolu en mettant sur ce fichier /site/js/admintinymce.inc.js cette commande qui avait disparu:

{
    if (typeof tinyMCE === 'undefined') {
        setTimeout(function() {
            tinySetup(config);
        }, 100);
        return;
    }

Tu m'a bien mis sur la piste, merci !

Phil

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...