IMCE

Drupal: incompatibilità tra i moduli fb e IMCE - e.root is undefined

Il modulo IMCE è un modulo per Drupal che consente un efficace trasferimento dei file e soprattutto delle immagini su di un sito Drupal ed è integrato con quasi tutti gli editor WYSIWYG disponibile per questo CMS.

Il modulo fb è un modulo per Drupal che consente di integrare le API pubbliche di Facebook all'interno del CMS.

Istallando questi due moduli insieme si ottine un malfunzionamento del modulo IMCE. In particolare i pulsanti della toolbar di IMCE non vengono più visualizzati, impedendo così, in effetti il trasferimento dei file dal disco locale al sito. Tutto questo è generato da un errore Javascript, causato dalle API di facebook. L'errore generato è: e.root is undefined.

Il problema si verifica perchè IMCE utilizza un tema personalizzato di drupal per la visualizzazione delle sue pagine che non aggiunge un particolare elemento html, cui le API Facebook fanno riferimento. Questo elemento altro non è che un div con id uguale a fb-root, cioè <div id="fb-root"></div>.

Questo è anche evidenziato in questo thread http://forum.developers.facebook.net/viewtopic.php?pid=221947 .

Come quick fix al problema abbiamo realizzato un piccolo modulo da installare ed attivare. Questo modulo utilizza la possibilità messa a disposizone da IMCE di utilizzare delle funzioni hook per inserire codice arbitrario all'interno delle pagine generate da questo modulo Queste hook devono essere registrate all'interno della variabile Drupal imce_custom_content.

Questo è proprio quello che fa questo piccolo modulo che trovate in allegato alla pagina.