我没有时间去考虑这个更彻底,所以我敢肯定有一个更好的解决方案,但是这似乎为我(与Django的格拉佩利2.3.5和Django的测试工作-tinymce 1.5.1a2。
我假设你正在使用堆叠内联。
您必须覆盖从格拉佩利模板,templates/admin/edit_inline/stacked.html
。 在for循环迭代过inline_admin_formset|formsetsort:sortable_field_name
吧船尾呃嵌套的for循环迭代过inline_admin_form
,添加这段代码:
{% if forloop.last %}
<script type="text/javascript">
if (tinyMCE != undefined) {
django.jQuery('textarea', '.empty-form').each(function() {
tinyMCE.execCommand('mceRemoveControl', false, django.jQuery(this).attr('id'));
});
}
</script>
{% endif %}
应该禁用在隐藏的“空形式”的textarea元素,通过内联初始化的JavaScript渲染为TinyMCE的插件TinyMCE的控制(S )。
在原始grappelli模板133行周围的某处,您会看到grp_inline()
的调用。添加/修改参数:
$("#{{ inline_admin_formset.formset.prefix }}-group").grp_inline({
prefix: "{{ inline_admin_formset.formset.prefix }}",
onBeforeRemoved: function(f) {
if (tinyMCE != undefined) {
// make sure tinyMCE instances in empty-form are inactive
django.jQuery('textarea', '.empty-form').each(function() {
tinyMCE.execCommand('mceRemoveControl', false, django.jQuery(this).attr('id'));
});
}
},
[...]
onAfterAdded: function(form) {
if (tinyMCE != undefined) {
// re-initialise tinyMCE instances
$('textarea', form).each(function(k,v) {
var tid = $(this).attr('id');
tinyMCE.execCommand('mceRemoveControl', false, tid);
tinyMCE.execCommand('mceAddControl', false, tid);
});
// make sure tinyMCE instances in empty-form are inactive
django.jQuery('textarea', '.empty-form').each(function() {
tinyMCE.execCommand('mceRemoveControl', false, django.jQuery(this).attr('id'));
});
}
[...]
}
[...]
如果使用sortables,你想也想在内嵌的文本域禁用TinyMCE的控制被拖动。外观为sortable()
初始化,并修改了“开始”回调:
start: function(evt, ui) {
ui.placeholder.height(ui.item.height() + 12);
if (tinyMCE != undefined) {
// make sure tinyMCE instances in empty-form are inactive
$('textarea', ui.item).each(function(k,v) {
var tid = $(this).attr('id');
tinyMCE.execCommand('mceRemoveControl', false, tid);
});
}
},
[...]
这应该给了粗略的想法如何解决这个问题,讨厌...
有没有人知道如何解决这个问题? – kelvinfix 2011-05-03 12:41:16
我遇到了同样的问题。任何更新? – 2011-09-07 20:38:54