Andrew Burgess
Andrew Burgess

Reputation: 5298

Opening Rich Text Editor in custom field of Sitecore Content Editor

I'm implementing a custom field in Sitecore for the Content Editor, and I need to be able to open the Rich Text editor and get the data from there. I'm not really sure where to look though, nor how to go about it.

Upvotes: 0

Views: 1454

Answers (1)

Andrew Burgess
Andrew Burgess

Reputation: 5298

Had to decompile the Sitecore.Kernel DLL in order to figure this out.

First thing is to spin off a call from the Context.ClientPage object

So, for my situation:

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

You will then need to have a method in your class with the same name as defined in the above Start method. Then, you either start the rich text control if the request isn't a postback, or handle the posted data

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();
    }

Upvotes: 2

Related Questions