升级到 Umbraco 6 后 TinyMCE 错误

标签 tinymce umbraco umbraco6

我刚刚从 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/

相关文章:

asp.net-mvc - 获取 UmbracoContext.Current 的值为 null

html - Umbraco 富文本编辑器不保存 html 标签 <code> (将其转换为 <p> (版本 6)

Javascript:需要解决方法:Internet Explorer 在更改 href 时更改链接文本

TinyMCE 增加字体系列下拉字体大小

umbraco - 您如何在 umbraco 中创建新闻文件?

.net - 在 Umbraco 中设置 errorPage

javascript - 如何为每个编辑器添加不同配置的多个 TinyMCE 编辑器?

javascript - 防止 TinyMCE/Internet Explorer 将 URL 转换为链接

c# - Azure 云服务上的 Umbraco 7.0.2 - 访问路径 'E:\sitesroot\1\config\applications.config' 被拒绝

c# - 在 Umbraco 6 MVC 网站中显示内容管理图像