Открытие Rich Text Editor в настраиваемом поле редактора содержимого Sitecore - PullRequest
0 голосов
/ 17 февраля 2012

Я реализую настраиваемое поле в Sitecore для редактора контента, и мне нужно иметь возможность открыть редактор Rich Text и получить оттуда данные. Я не совсем уверен, где искать, и как это сделать.

1 Ответ

2 голосов
/ 04 апреля 2012

Пришлось декомпилировать DLL-библиотеку Sitecore.Kernel, чтобы понять это.

Первое, что нужно сделать, это выделить вызов из Context.ClientPage объекта

Итак, для моей ситуации:

switch (message.Name)
{
    case "richtext:edit":
        Sitecore.Context.ClientPage.Start(this, "EditText");
        break;
}

Затем вам потребуется метод в вашем классе с тем же именем, которое определено в приведенном выше методе Start.Затем вы либо запускаете элемент управления расширенным текстом, если запрос не является обратной передачей, либо обрабатывает опубликованные данные

protected void EditText(ClientPipelineArgs args)
{
    Assert.ArgumentNotNull(args, "args");
    if (args.IsPostBack)
    {
        if (args.Result == null || args.Result == "undefined")
            return;
        var text = args.Result;
        if (text == "__#!$No value$!#__")
            text = string.Empty;
        Value = text;
        UpdateHtml(args); //Function that executes Javascript to update embedded rich text frame
    }
    else
    {
        var richTextEditorUrl = new RichTextEditorUrl
                                    {
                                        Conversion = RichTextEditorUrl.HtmlConversion.DoNotConvert,
                                        Disabled = Disabled,
                                        FieldID = FieldID,
                                        ID = ID,
                                        ItemID = ItemID,
                                        Language = ItemLanguage,
                                        Mode = string.Empty,
                                        Source = Source,
                                        Url = "/sitecore/shell/Controls/Rich Text Editor/EditorPage.aspx",
                                        Value = Value,
                                        Version = ItemVersion
                                    };
        UrlString url = richTextEditorUrl.GetUrl();
        handle = richTextEditorUrl.Handle;
        ID md5Hash = MainUtil.GetMD5Hash(Source + ItemLanguage);
        SheerResponse.Eval("scContent.editRichText(\"" + url + "\", \"" + md5Hash.ToShortID() + "\", " +
                            StringUtil.EscapeJavascriptString(GetDeviceValue(CurrentDevice)) + ")");
        args.WaitForPostBack();
    }
...