Pergunta

Acabei de atualizar do Umbraco 4.7.1 para 6.1.6

Eu tenho um controle TinyMCE na minha seção personalizada.Parou de funcionar após a atualização.
Aqui está parte do meu código para a página na seção personalizada:

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
  }
}

Quando a página é renderizada, a área de texto fica oculta, mas o TinyMCE não é mostrado.
Este é o erro de JavaScript que recebi:

Erro de tipo:document.getElementById (...) é nulo @ .../Umbraco/plugins/tinymce3/tinymce3tinymcecompress.aspx? rnd = 00000000-0000-0000-0000-000000000000 e módulo = gzipmodule & temas = Úmbraco & plugins = contextmenu, noInGoMim, , Umbracocss, Advlink, Umbracoabbed, Charchcker, não comidas, Umbracomacro, Umbracopaste, Umbracolink, Umbracocontextmenu & Languages ​​= EN: 19803

Esta é a linha que está causando o erro (linha 19803)

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

Alguém já experimentou este problema?Alguma idéia de como consertar isso?

Foi útil?

Solução

Depois de mexer nisso, consegui consertar, embora não entenda bem o porquê.

Aparentemente no Umbraco 6.1.6 você tem que adicionar umbraco_toolbar_id manualmente, então adicionei essas 2 linhas

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

para esta função, que se torna

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
}

Isso resolveu.Meu TinyMCE aparece novamente :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top