Pb Tinymce : "Define css" utilise le css du theme et non celui défini

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Salut tt le monde,

J'ai un souci avec TinyMCE. J'aimerai pour un certain role utiliser une autre css que celle de mon theme ("style.css"). Pour cela, j'ai créé un profil dans TinyMCE que j'assigne à ce role et j'ai mis :
Editor CSS : define CSS
CSS path : /themes/montheme/macss.css

Lorsque je suis connectée avec le role en question, et que j'édite du contenu, c'est la css "style.css" qui est utilisée et non "macss.css"...

J'ai vu qu'il y avait des bugs ds la 4.6 mais je suis en 5.1. Est-ce un bugs ou ai-je oublié de faire qqchose ? Avez-vous des idées du probleme ?
Merci.

Version de Drupal : 

Ben le souci, c'est que je suis allée voir récemment dans le code, j'y ai mis des print_r. Voici le bout de code en question :

if ($settings['css_setting'] == 'theme') {
$css = $themepath . 'style.css';
if (file_exists($css)) {
$init['content_css'] = $host . $css;
}
}
else if ($settings['css_setting'] == 'self') {
$init['content_css'] = str_replace(array('%h', '%t'), array($host, $themepath), $settings['css_path']);
}
print_r($init['content_css']);
return $init;
}

Et en fait, quand j'update le profil avec "define css" et "css path : /themes/talent/macss.css", le print_r me renvoit toujours "/themes/talent/style.css".
Si je mets des print_r dans les if, ca passe toujours dans le premier if et jamais dans le else...
Ya un souci dans le code je pense, mais j'arrive pas à trouver où...

Alors, ca fonctionne toujours pas.
Ca me renvoit toujours "drupal-5.1/themes/talent/style.css".

Ca rentre toujours dans le if :
if ($settings['css_setting'] == 'theme')
alors que ca devrait rentrer dans :
else if ($settings['css_setting'] == 'self').

Pourtant, dans le code, au niveau du formulaire, j'ai bien :
$form['css']['css_setting'] = array(
...
'#default_value' => $edit->settings['css_setting'] ? $edit->settings['css_setting'] : 'theme',
'#options' => array( 'theme' => t('use theme css'), 'self' => t('define css'), 'none' => t('tinyMCE default')),
'#description' => ...
);

J'ai essayé de changer #default_value en remplacant theme par self, rien n'y fait, ca me donne aussi style.css

Alors en fait, le probleme n'est plus le même.
J'ai codé en dur le nom de ma css. J'ai remplacé :

if ($settings['css_setting'] == 'theme') {
    $css = $themepath . 'style.css';
     ...
  }

par

if ($settings['css_setting'] == 'theme') {
    $css = $themepath . 'mycss.css';
     ...
  }

Et là, j'ai bien l'éditeur TinyMCE qui prend macss.css (même si j'ai choisi "define theme", il ne passe toujours pas dans le else, ce qui est toujours problematique).
Par contre, macss.css n'est utilisée QUE dans l'éditeur... Lorsque je soumet le contenu, la mise en page de mon contenu a changé et respecte style.css.......

Donc lorsque je définis une css dans tinyMCE, ce n'est que pour l'affichage dans l'éditeur et non pour le rendu final ???

Donc lorsque je définis une css dans tinyMCE, ce n'est que pour l'affichage dans l'éditeur et non pour le rendu final ???
Ben oui. Autrement dit, il faut dupliquer les règles CSS dans la feuille de styles de ton site ET dans celle de TinyMCE.

Ok sauf que j'aimerais pour des newsletters une css différente de celle pour le reste du site (qui est donc style.css).
Je sais je suis exigente :) mais on me demande de faire comme ca.
Donc peut-on utiliser deux CSS différentes suivant le type de contenu ?

J'ai essayé d'entrer mon code CSS dans les paramètres de ma catégorie de newsletters mais rien à y faire, ca prend aussi style.css

j'espère que je suis assez claire...

Pour ajouter une CSS spécifique à ta newsletter, tu pourrais créer un fichier CSS appelé newsletter.css que tu mettrais dans le répertoire de ton thème (à côté de style.css, donc).

Puis, dans le corps de la newsletter, tu pourrais ajouter le code suivant :

<?php
 drupal_add_css
(path_to_theme() .'/newsletter.css');
?>

Je n'ai pas testé mais je pense que ça marcherait. L'inconvénient est qu'il faut passer le format d'entrée de ta newsletter sur "PHP Code".