سؤال

لقد قمت للتو بالترقية من 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.
هذا هو خطأ جافا سكريبت الذي تلقيته:

خطأ مطبعي:document.getElementById(...) فارغ @ .../umbraco/plugins/tinymce3/tinymce3tinymceCompress.aspx?rnd=00000000-0000-0000-0000-00000000000&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 الخاص بي مرة أخرى :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top