Проблемы с Django TinyMCE - PullRequest
       6

Проблемы с Django TinyMCE

1 голос
/ 12 октября 2011

Все текстовые области встроены, StackedInline

Все текстовые области работают нормально в этой модели change_view.НО, когда я добавляю новую строку, последняя строка недоступна для редактирования в текстовой области.

Если я удаляю режим: "textareas" в TunyMCE Init, то он безоговорочно удаляет редактор wsgi, но тогда текстовые области работают, когдадобавление новых.Поэтому я предполагаю, что его tinyMCE сломает его.

Но я скопировал эти файлы tinyMCE из другого проекта, где он работает.Так что я не знаю wtf!

У меня есть моя настройка tinymce, такая как:

media / js / tinymce

, тогда у меня в шаблонах:

templates/admin/app_name/model_name/change_form.html

, и это мой change_form.html

{% extends "admin/change_form.html" %}
{% load i18n %}

{% block extrahead %}{{ block.super }}
{% url 'admin:jsi18n' as jsi18nurl %}
<script type="text/javascript" src="{{ jsi18nurl|default:"../../../jsi18n/" }}"></script>
{{ media }}

<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
function CustomFileBrowser(field_name, url, type, win) {

    var cmsURL = "/admin/filebrowser/browse/?pop=2";
    cmsURL = cmsURL + "&type=" + type;

    tinyMCE.activeEditor.windowManager.open({
        file: cmsURL,
        width: 850,  // Your dimensions may differ - toy around with them!
        height: 650,
        resizable: "yes",
        scrollbars: "yes",
        inline: "no",  // This parameter only has an effect if you use the inlinepopups plugin!
        close_previous: "no",
    }, {
        window: win,
        input: field_name,
        editor_id: tinyMCE.selectedInstance.editorId,
    });
    return false;
};

    tinyMCE.init({
        // add these two lines for absolute urls
        remove_script_host : false,
        convert_urls : false,
        // General options
        mode : "textareas",
        theme : "advanced",
        plugins : "safari,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media",
        file_browser_callback: 'CustomFileBrowser',
        // Theme options
        theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|styleselect,formatselect,|,undo,redo,|,link,unlink,image,code",
        theme_advanced_buttons3 : "",
        theme_advanced_buttons4 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        // theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : false,
        width:300,
        height:300,
    });

</script>

{% endblock %}

{% block object-tools %}
{% if change %}{% if not is_popup %}
  <ul class="object-tools">
    <li><a href="history/" class="historylink">{% trans "History" %}</a></li>
    {% if has_absolute_url %}
        <li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">
            {% trans "View on site" %}</a>
        </li>
        <li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/html/" class="viewsitelink">
            {% trans "View source" %}</a>
        </li>
    {% endif%}
  </ul>
{% endif %}{% endif %}
{% endblock %}

Даже если я делаю это в textareas.js и включаю его в дополнительный заголовок chnage_form.htmlзаблокировать это делает то же самое.

1 Ответ

0 голосов
/ 12 октября 2011

Ну, я понял, что случилось. Возможно, кто-то сталкивается с той же проблемой

При добавлении новой строки проблема заключается в том, что texarea не инициируется tinymce, потому что он делает это только один раз, когда загружаются страницы. Создает идеальный смысл, поэтому вам нужно снова добавить функциональность в текстовую область после добавления новой строки.

Вот как я это сделал:

change_form.html, добавил это в конец файла

$(".add-row a").click(function () {
        // this is the span that the current wsgi editor is in, so I remove it
        $($(this).parent().prev().prev().find("span")[2]s).remove();
        // Now I display the original textarea
        $(this).parent().prev().prev().find("textarea").show();
        // and Finaly lets add MCE control to this area.
        tinyMCE.execCommand(
                            'mceAddControl',
                            false,
                            $(this).parent().prev().prev().find("textarea").attr('id')
                        );
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...