web-dev-qa-db-fra.com

CKEditor est manquant lors de la modification d'une page, mais fonctionne correctement lors de la création d'une nouvelle page

Sur notre site drupal 7, nous avons installé CKEditor. Il fonctionne très bien lors de la création de nouveau contenu, mais il ne s'active pas correctement lorsque vous modifiez la même page plus tard. Il se comporte comme s'il y avait aucun éditeur installé et donne juste une zone de texte standard avec la source.

Si je clique sur "Modifier le résumé", il apparaîtra généralement dans la zone de texte du résumé (mais pas toujours).

Pourquoi CKEditor n'apparaît-il pas pour la zone de texte Corps?

Notez que je ne sélectionne pas "passer à l'éditeur de texte brut". Si je le fais, et si je vois CKEditor sur "Modifier le résumé", cliquer sur "basculer vers l'éditeur de texte brut" masque correctement le CKEditor pour le champ de texte Résumé. En cliquant sur "basculer vers l'éditeur de texte enrichi", vous restaurez également CKEditor pour le résumé, mais la zone de texte principale du corps agit toujours comme si elle utilisait un éditeur de texte brut.

Nouvelle page - Affichage de CKEditor

ckeditor showing


Modifier la page - CKEditor manquant

ckeditor missing


Modifier le résumé de la page - Affichage de CKEditor (mais toujours manquant pour la zone de texte du corps - non affiché sur la capture d'écran)

ckeditor showing for summary


Edit: Plus de détails sur le problème exact, j'ai trouvé que la raison pour laquelle une nouvelle page charge ckeditor, alors que l'édition ne le fait pas, est parce que la zone de texte est vide. Si j'ajoute du texte à la nouvelle page, je passe à "l'éditeur de texte brut", puis j'essaye de revenir à "l'éditeur de texte enrichi", puis CKEditor ne se charge pas.

De même, si j'efface les données de la zone de texte lors de la modification d'une page et que je change d'éditeur de texte, CKEditor se charge.

Une erreur 500 est renvoyée, provoquant le non-chargement de CKEditor. Lorsqu'il y a du texte, le passage à "l'éditeur de texte enrichi" provoque un appel AJAX au serveur pour valider ou traiter les données de la zone de texte. Comme il échoue, CKEditor ne se charge jamais.

Mais s'il n'y a rien dans la zone de texte, l'appel AJAX ne se produit jamais (et donc aucun 500 n'est renvoyé), donc CKEditor se charge très bien. C'est aussi pourquoi CKEditor se charge dans le résumé: il n'a pas de données.

5
Stephen Schrauger

Dans ma situation, la solution était double.

Plusieurs versions de CKEditor dans différents emplacements

Premièrement, la principale raison était due au fait que plusieurs versions de CKEditor étaient installées à différents endroits.

Lorsque vous installez le module CKEditor, vous devez également télécharger le code CKEditor réel séparément. Il peut être installé dans le dossier modules/ckeditor ou dans les bibliothèques. J'avais mis à jour le module ainsi que le code, mais l'ancienne version persistait dans le dossier des bibliothèques. Parfois, CKEditor se chargeait, et d'autres fois non. Cela était probablement dû à un chargement de la bibliothèque CKEditor en premier.

La suppression de toutes les références en double et l'effacement du cache ont fonctionné. CKEditor a de nouveau été chargé sur la plupart de nos sous-sites.

Code buggy sur le serveur provoquant une erreur 500

Le deuxième problème était dû à un code php défectueux sur l'un de nos sous-sites. Pour une raison quelconque, une page non liée comprenait d'autres PHP et était en quelque sorte appelée lorsque CKEditor a effectué l'appel AJAX au serveur. Le serveur a répondu avec une erreur 500 , et les journaux d'erreurs montrent que cette page non liée était en quelque sorte appelée et échouait.

J'ai supprimé la référence au code buggy et CKEditor a de nouveau travaillé pour cette page.

Je ne sais toujours pas comment ce code était appelé. C'était une simple page avec une seule ligne de php, y compris un fichier différent. Pourtant, CKEditor n'a pas réussi à se charger sur chaque page du sous-site, pas seulement sur cette page. Je crains de ne pas avoir suffisamment de compréhension des Drupal internes).

4
Stephen Schrauger

Une autre chose qui pourrait provoquer ce comportement est d'avoir du code php dans les nœuds, par exemple des redirections effectuées avec du code php dans le champ body. Si tel est le cas, vous devez utiliser un module de redirections externes, car l'utilisation de redirections php dans les champs de nœuds ne causera que des problèmes.

Le problème semble également être actif dans la file d'attente des problèmes du module .

2
Andrei

J'ai eu le même problème, ckeditor a travaillé lors de la création de nouveau contenu mais pas lors de l'édition.

Une inspection de code a montré quelques erreurs de module choisies (7.x-2.0-beta4)

Impossible de charger la ressource: le serveur a répondu avec un état de 404 (introuvable) http://example.com/sites/all/libraries/chosen/chosen.jquery.min.js?v=1.1.

Attr.specified est déconseillé. Sa valeur est toujours vraie. jquery.js? v = 1.4.4: 52

TypeError non capturé: undefined n'est pas une fonction choisie.js? V = 1.1.0: 60

Mon problème était que j'avais extrait le fichier Chosen.tar.gz qui n'a pas le fichier .js, vous avez besoin du code choisi .Zip dans vos bibliothèques.

2
Alauddin

J'ai résolu ce problème en utilisant ce qui suit;

Au départ, j'avais les paramètres par défaut et Alternate jQuery @ 1.10 et non CKEditor en intégralité ou filtré.

Drupal7.32

Bootstrap7.x-3.0

CKEditor Module 7.x-1.16

  • Pas de paramètres spéciaux

mise à jour jQuery Module 7.x-2.4

  • Version par défaut de jQuery 1.8
  • Version jQuery alternative 1.8
  • jQuery et jQuery UI CDN = jQuery, google ou MS

Passer à 1,8 était l'astuce. haussement d'épaules ... Je ne sais pas où trouver la version que j'ai installée. :-)

Granite-moi!

1
Granitize

Merci pour cela. J'ai eu le même problème où mon éditeur n'apparaissait pas sur les formulaires de noeud et mon choix n'était pas non plus. En regardant dans la console Firebug, je pouvais voir des erreurs JS liées à certains JS que j'ajoutais avec le crochet suivant:

function module_page_build($page) {
  $node = menu_get_object();
  if ($node) {
    drupal_add_js(drupal_get_path('module', 'module') .'/some-js.js');
  }
}

Ma vérification de $ node n'est évidemment pas suffisante car cela est vrai sur les formulaires d'édition de node. Ma solution sera d'ajouter quelques chèques supplémentaires ici. Peut-être simplement en utilisant is_admin ().

1
klidifia

J'ai résolu ce problème en suivant les étapes ci-dessous:

Aller à Content type -> Basic page -> Manage fields -> body

Sélectionnez maintenant "Plain Text" en dessous de "Text processing "puis enregistrez. Encore une fois, je suis passé de" Plain text" à "Filtered Text ". Maintenant, ça marche.

Je pense qu'ici, le concept principal est simplement de cliquer sur le bouton "Save"

1
Ameer Khan

J'ai eu cela sur certains nœuds mais pas sur d'autres; le problème était une erreur 403 déclenchée sur certaines pages avec l'appel ajax à/ckeditor/xss ... mod_security lançait l'erreur 403 en raison du contenu de la publication. Dans mon cas particulier, c'était à cause d'extraits de code javascript dans le contenu de la page (chargeurs et calibreurs de widgets, etc.), mais cela peut être déclenché par d'autres choses.

Comme solution de contournement, je pouvais couper le contenu du champ, basculer en mode WYSIWYG, puis CKEditor se chargeait. Ensuite, je pouvais basculer le bouton "Source" sur CKEditor, et coller le code, puis revenir en mode WYSIWYG et éditer comme d'habitude, et enregistrer. Lors de l'édition la prochaine fois, il faudrait refaire cela.

Je pense qu'une solution pourrait être d'exclure le chemin/ckeditor/xss du filtrage mod_security ... ne désactivez certainement pas mod_security complètement, sauf pour résoudre ce problème.

D'autres causes de ce problème et des solutions de contournement sont discutées ici: https://www.drupal.org/node/2069871 ... merci à "75th Trombone" sur drupal.org pour la suggestion sur mod_security , ce qui s'est également avéré être la cause dans mon cas.

0
Aaron Wallentine