Вопрос

Я только что обновился с 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, которую я получил:

Ошибка типа:document.getElementById(...) имеет значение 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 вручную, поэтому я добавил эти 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
}

Это все исправило.Снова появляется мой крошечный файл :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top