django-tinymce: использование разных опций для разных экземпляров - PullRequest
3 голосов
/ 22 февраля 2010

У меня есть модель с HTMLField, которую можно редактировать с помощью элемента управления TinyMCE в админке. Тем не менее, я хотел бы иметь возможность предоставлять различные параметры TinyMCE в зависимости от того, какой экземпляр модели редактируется. Как я могу это сделать?

(Например, если пользователь редактирует экземпляр SimplePage, слаг которого technologies, я хочу, чтобы TinyMCE использовал файл CSS по умолчанию, но если он редактирует SimplePage с слагом ticker, я хотите использовать другой файл CSS.)

1 Ответ

1 голос
/ 25 февраля 2010

Я думаю, у вас есть класс Media в вашем ModelAdmin с дополнительными JavaScript и CSS для администратора (, как здесь ). Ваш JavaScript не знает слаг текущего объекта, давайте изменим это.

Сначала создайте одну из следующих структур каталогов в каталоге шаблонов: «admin / your-app» для приложения или «admin / your-app / your-model» только для конкретной модели ( см. Django документация ).

Затем создайте файл "change_form.html" в этом каталоге и поместите в него что-то похожее на это:

{% extends "admin/change_form.html" %}
{% block extrahead %}
<script type="text/javascript" charset="utf-8">
    var MYAPP_objectSlug = "{{ original.slug|escapejs }}";
</script>
{{ block.super }}
{% endblock %}

Это расширит обычный "change_form.html" администратора и расширит блок extrahead, чтобы установить переменную JavaScript для вашего объекта slug (original - ваш объект).

Теперь адаптируйте файл JavaScript, который делает tinyMCE.init, для использования другого файла на основе CSS. в переменной JavaScript MYAPP_objectSlug.

if (MYAPP_objectSlug == "ticker"){
    var MYAPP_cssFile = "../css/special.css"; // change to your path
} else {
    var MYAPP_cssFile = "../css/default.css"; // change to your path
}

tinyMCE.init({
    ...
    content_css : MYAPP_cssFile,
    ...
});
...