我刚刚从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 ,桌子,雨伞,advlink,雨伞式,拼写检查器,不可编辑,蒙布拉科莫克罗,雨伞,翁布拉科链接,umbracococontextmenu&andarancages = en:19803

这是导致错误的线(线19803)

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

有人遇到这个问题吗?有什么想法如何修复它?

有帮助吗?

解决方案

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

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

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再次出现:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top