gpt4 book ai didi

升级到 Umbraco 6 后 TinyMCE 错误

转载 作者:行者123 更新时间:2023-12-02 21:44:07 25 4
gpt4 key购买 nike

我刚刚从 Umbraco 4.7.1 升级到 6.1.6

我的自定义部分中有一个 TinyMCE 控件。升级后它停止工作。
以下是自定义部分中页面的部分代码:

public partial class MyCustomPage : UmbracoEnsuredPage
{
private TinyMCE txtLongDesc;

protected UmbracoPanel UmbPanel { get { return Web.FindControlRecursive(Master, "umpContent") as UmbracoPanel; } }

protected override void Page_Init(object sender, EventArgs e)
{
base.Page_Init(sender, e);

PutTinyMce(ref txtLongDesc, "txtLongDesc", phLongDesc, UmbPanel);
}

public static void PutTinyMce(ref TinyMCE control, string controlId, PlaceHolder placeHolder, UmbracoPanel panel)
{
DataTypeDefinition d = DataTypeDefinition.GetDataTypeDefinition(2710); // My custom TinyMCE DataType

control = (umbraco.editorControls.tinyMCE3.TinyMCE)d.DataType.DataEditor;
control.ID = controlId;
placeHolder.Controls.Add(control);
panel.Menu.NewElement("div", "umbTinymceMenu_" + control.ClientID, "tinymceMenuBar", 0); // Add TinyMCE controls to menu bar
}
}

渲染页面时,文本区域被隐藏,但 TinyMCE 未显示。
这是我得到的 JavaScript 错误:

TypeError: document.getElementById(...) is null @ .../umbraco/plugins/tinymce3/tinymce3tinymceCompress.aspx?rnd=00000000-0000-0000-0000-000000000000&module=gzipmodule&themes=umbraco&plugins=contextmenu,umbracoimg,paste,inlinepopups,table,umbracocss,advlink,umbracoembed,spellchecker,noneditable,umbracomacro,umbracopaste,umbracolink,umbracocontextmenu&languages=en:19803

这是导致错误的行(第 19803 行)

document.getElementById(ed.getParam("umbraco_toolbar_id", "*")).appendChild(c);

有人遇到过这个问题吗?知道如何修复它吗?

最佳答案

摆弄它之后,我设法修复了它,尽管我不太明白为什么。

显然在 Umbraco 6.1.6 中你必须手动添加 umbraco_toolbar_id,所以我添加了这两行

control.ClientIDMode = ClientIDMode.Static;
control.config.Add("umbraco_toolbar_id", "umbTinymceMenu_" + control.ClientID);

这个函数,变成了

public static void PutTinyMce(ref TinyMCE control, string controlId, PlaceHolder placeHolder, UmbracoPanel panel)
{
DataTypeDefinition d = DataTypeDefinition.GetDataTypeDefinition(Static.DTD_ID_SMALL_RTE); // Custom TinyMCE DataType

control = (umbraco.editorControls.tinyMCE3.TinyMCE)d.DataType.DataEditor;
control.ID = controlId;
control.ClientIDMode = ClientIDMode.Static;
control.config.Add("umbraco_toolbar_id", "umbTinymceMenu_" + control.ClientID);
placeHolder.Controls.Add(control);
panel.Menu.NewElement("div", "umbTinymceMenu_" + control.ClientID, "tinymceMenuBar", 0); // Add TinyMCE controls to menu bar
}

这解决了它。我的 TinyMCE 又出现了:)

关于升级到 Umbraco 6 后 TinyMCE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com