More in this section
Forums / Sitefinity SDK / RADEditor in custom designer IE error

RADEditor in custom designer IE error

The forums are in read-only mode. In case that you want to directly contact the Progress Sitefinity team use the support center. In our Google Plus group you can find more than one thousand Sitefinity developers discussing different topics. For the Stack Overflow threads don’t forget to use the “Sitefinity” tag.
2 posts, 0 answered
  1. Victor
    Victor avatar
    15 posts
    Registered:
    24 Mar 2011
    29 Mar 2011
    Link to this post
    I think I may have posted this to the wrong forum, initially so I am copying it here (sorry)

    I have successfully gotten the the RADEditor to appear in a custom designer in SiteFinity 4.0 using Firefox.
    However in IE, I get a javascript error:

    Line: 2
    Char:1
    Error: 'parent.sys.Application' is null or is not an object
    Code: 0


    Any ideas??

    Here's my .js code below.

    /// <reference name="MicrosoftAjax.js"/>
    /// <reference name="Telerik.Sitefinity.Resources.Scripts.jquery-1.3.2.min-vsdoc2.js" assembly="Telerik.Sitefinity.Resources"/>
    Type.registerNamespace("iDBControls");
     
    iDBControls.MixedHTMLDesigner = function (element) {
        iDBControls.MixedHTMLDesigner.initializeBase(this, [element]);
     
        this._parentDesigner = null;
        this._googleAnalyticsCodeTextField = null;
        this._scriptEmbedPositionChoiceField = null;
        this._toogleGroupSettingsDelegate = null;
    }
     
    iDBControls.MixedHTMLDesigner.prototype = {
        /* --------------------------------- set up and tear down --------------------------------- */
         
        initialize: function () {
            iDBControls.MixedHTMLDesigner.callBaseMethod(this, 'initialize');
     
             
            this._toogleGroupSettingsDelegate = Function.createDelegate(this, function () {
                dialogBase.resizeToContent();
            });
     
            //jQuery("#expanderDesignSettings").click(this._toogleDesignSettingsDelegate);
            jQuery(".sfExpandableSection a").click(this._toogleGroupSettingsDelegate).click(function(){
            $(this).parents(".sfExpandableSection:first").toggleClass("sfExpandedSection");
            });
        },
     
        dispose: function () {
            iDBControls.MixedHTMLDesigner.callBaseMethod(this, 'dispose');
        },
     
        /* --------------------------------- public methods --------------------------------- */
        // implementation of IControlDesigner: Forces the control to refersh from the control Data
        refreshUI: function () {
            //this._refreshMode = true;
            var data = this.get_controlData();
            try
            {
                $find(jQuery("#rdeEditorID").html()).set_html(data.HTML)
            }
     
            catch(e)
            {
                //$find(jQuery("#rdeEditorID").html()).set_html("")
            }
        },
     
        // implementation of IControlDesigner: forces the designer view to apply the changes on UI to the control Data
        applyChanges: function () {
             
            var controlData = this.get_controlData();
            controlData.HTML=GetHtmlSelection();
             
             
     
        },
        get_controlData: function () {
            return this.get_propertyEditor().get_control();
        },
        _getSelectedChoice: function (groupName) {
            return jQuery(this.get_element()).find("input[name='" + groupName + "']:checked").val();
        },
        _clickRadioChoice: function (groupName, value) {
            return jQuery(this.get_element()).find("input[name='" + groupName + "'][value='" + value + "']").click();
        },
        /* --------------------------------- event handlers --------------------------------- */
     
        /* --------------------------------- private methods --------------------------------- */
     
        /* --------------------------------- properties --------------------------------- */
     
        // gets the reference to the propertyEditor control
        get_propertyEditor: function () {
            return this._propertyEditor;
        },
        // sets the reference fo the propertyEditor control
        set_propertyEditor: function (value) {
            this._propertyEditor = value;
        },
     
        //get_googleAnalyticsCodeTextField: function () { return this._googleAnalyticsCodeTextField; },
        //set_googleAnalyticsCodeTextField: function (value) { this._googleAnalyticsCodeTextField = value; }
    }
     
    iDBControls.MixedHTMLDesigner.registerClass('iDBControls.MixedHTMLDesigner', Telerik.Sitefinity.Web.UI.ControlDesign.ControlDesignerBase);
     
    if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
     
     
     
     
     
     
    function GetHtmlSelection()
    {
    try
    {
        
       var html=$find(jQuery("#rdeEditorID").html()).get_html()
        
       return html
       }
     
     
       catch(e)
       {
       //alert(e)
       }
    }

    This is my .ascx:
    <%@ Control Language="C#"%>
    <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
     
    <%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI" TagPrefix="sitefinity" %>
      
    <sitefinity:ResourceLinks ID="resourcesLinks" runat="server">
        <sitefinity:ResourceFile AssemblyInfo="iDBControls.MixedHTML, iDBControls" Name="iDBControls.Resources.Stylesheets.Designer.css" Static="true"/>
      
    </sitefinity:ResourceLinks>
    <div class="sfContentViews">
    This is the place1
     
             
            <div id="rdeEditorID" style="display:none;"><asp:Literal ID="litECID" runat="server" ></asp:Literal></div>
     
            <telerik:RadEditor ID="rdEditor" runat="server" Editable="true" >
            </telerik:RadEditor>
     
    This is the place too
    </div>

    And finally, the .cs file:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Telerik.Sitefinity.Web.UI.ControlDesign;
    using Telerik.Sitefinity.Web.UI;
    using System.Web.UI;
    using Telerik.Web.UI;
     
    using System.Web.UI.WebControls;
     
     
     
    namespace iDBControls
    {
        class MixedHTMLDesigner: ControlDesignerBase
        {
            protected override void InitializeControls(GenericContainer container)
            {
                base.DesignerMode = ControlDesignerModes.Simple;
            }
     
            protected override string LayoutTemplateName
            {
                get
                {
                    return "iDBControls.Resources.MixedHTMLDesigner.ascx";
                }
            }
     
            protected override HtmlTextWriterTag TagKey
            {
                get
                {
                    //Use div wrapper tag to make easier common styling. This will surround the layout template with a div tag.
                    return HtmlTextWriterTag.Div;
                }
            }
     
             
     
            public override IEnumerable<System.Web.UI.ScriptReference> GetScriptReferences()
            {
                var res = new List<ScriptReference>(base.GetScriptReferences());
                var assemblyName = this.GetType().Assembly.GetName().ToString();
                res.Add(new ScriptReference("iDBControls.Resources.MixedHTMLJS.js", assemblyName));
                return res.ToArray();
            }
     
     
          
     
            protected virtual Literal litECID
            {
                get
                {
                    return base.Container.GetControl<Literal>("litECID", true);
                }
            }
     
            protected virtual RadEditor rdEditor
            {
                get
                {
                    return base.Container.GetControl<RadEditor>("rdEditor", true);
                }
            }
     
            protected override void  RenderContents(HtmlTextWriter writer)
            {
                    this.litECID.Text= rdEditor.ClientID;
                    rdEditor.Content = "&nbsp;";
                     base.RenderContents(writer);
            }
         
                 
         
        }
    }
  2. Victor
    Victor avatar
    15 posts
    Registered:
    24 Mar 2011
    30 Mar 2011
    Link to this post
    Aaaaaaaaaahhhhhhhhhhhhhh!

    So....

    It turns out that's there a type/bug in the NewsRotator file "RotatorDesigner.js" that I used as an example.

    Lines 92 & 93 are commented out but  there is an extra comma that should have been commented out that wasn't, this seems to only cause a problem in IE.

    Once I commented out the comma, everything worked.

    I hope this saves someone ALOT of time!
2 posts, 0 answered