Django TinyMCE问题

时间:2011-10-12 07:37:21

标签: django tinymce

所有textareas都是内联的,StackedInline

所有textareas在此模型change_view中都能正常工作。但是,当我添加一个新行时,最后一行在textarea中不可编辑。

如果我删除了tunyMCE Init中的模式:“textareas”,它会删除wsgi编辑器,但是当添加新文件时textareas会工作。所以我猜它的tinyMCE打破了它。

但我已将这个tinyMCE文件复制到另一个可以工作的项目中。所以我不知道wtf!

我有这样的设置:

媒体/ JS / TinyMCE的

然后我有模板:

模板/管理/ APP_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 extrahead块中,它也会这样做。

1 个答案:

答案 0 :(得分:0)

嗯,我弄清楚出了什么问题。也许有人遇到同样的问题

问题在于添加一个新行时,texarea不是由tinymce启动的,因为它只会在页面加载时执行一次。完美后悔,因此您需要在添加新行后再次向textarea添加功能。

我就这样做了:

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')
                        );
    });