Installation de TinyMCE
Télécharger l’archive sur http://tinymce.moxiecode.com/
déplacer le dossier tinymce/jscripts/tiny_mce dans le dossier web/js de votre dossier symfony.
modifier le fichier config/settings.yml
all:
.settings:
rich_text_js_dir: js/tiny_mce
Pour utiliser tinyMCE dans un textarea il suffit de spécifier l’option rich=true
une textarea sans éditeur
'30x30')) ?>
une textarea avec tinyMCE
true,'size' => '30x30')) ?>
Vous n’irez pas plus loin avec TinyMCE car l’upload de fichiers par exemple est un module payant :-/
Heureusement FCKeditor qui lui est libre est configurable avec symfony. Il faut donc pour cela
Télécharger l’archive sur http://www.fckeditor.net/
déplacer le dossier fckeditor dans web/js
modifier le fichier config/settings.yml
all:
.settings:
rich_text_fck_js_dir: js/fckeditor
Pour utiliser FCKeditor dans un textarea il suffit de spécifier l’option rich=fck
'fck','size' => '30x30')) ?>
Pour utiliser une barre d’outil spécifique (« Basic » dans l’exemple)
'fck','tool'=>'Basic','size' => '30x30')) ?>
Pour utiliser l’upload de fichier, éditer web/js/fckeditor/fckconfig.js et rempalcer « asp » par « php » dans les deux lignes suivantes
var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | php
dans web/js/fckeditor/editor/filemanager/browser/default/connectors/php/config.php
et web/js/fckeditor/editor/filemanager/upload/php/config.php il faut activé l’upload explicitement en spécifiant
$Config['Enabled'] = true ;
Jusque là on a pas trop sué …
Mais on est pas au top : tous les utiliusateurs partagent un seul et même répertoire de fichier pour FCK /userfiles/ …
Ce qui serait mieux c’est que les utilisateurs accèdent à un répertoire du genre /userfiles/$username. Pour ça il faudra passer par une variable de session.
Imaginons qu’au moment de se loguer le nom d’utilisateur est stocké dans la session dans un espace de nom suscriber. Ca s’écrit à peu près comme ça dans symfony
$this->setAttribute('username', $user->getUsername(), 'subscriber');
Pour voir un peu comment est structurée une session symfony il suffit de faire afficher la variable $_SESSION dans un tempalte de test. On se rend alors compte qu’on retrouve notre nom d’utilisateur dans
$_SESSION['symfony/user/sfUser/attributes']['subscriber']['username']
La seule solution pour customizer le réperoire du filemanager dynamiquement est de hacker le fichier web/js/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php.
tout en haut du fichier ouvir un session de même nom que celle ouverte par symfony
En effet par défaut PHP ouvrira une session nommée PHPSESSID alors que symfony stocke toutes ces variables dans une session nommée symfony par défaut (modifiable dans apps/myapp/config/factories.yml). le paramètre de session_name foit donc être le même que dans factories.yml pour que cela fonctionne (croyez moi ca se mérite de découvrir des trucs pareil !!)
Juste après
// Get the "UserFiles" path. $GLOBALS["UserFilesPath"] = '' ;
ajouter
$Config['UserFilesPath'] = '/userfiles/'.$_SESSION['symfony/user/sfUser/attributes']['subscriber']['username'];
Et là c’est la grande classe!!
