Ticket #7283: 7283_1.patch

File 7283_1.patch, 26.5 KB (added by kaga, 11 years ago)
  • trunk/_dev/msajax.js

     
    2828                        oldPageLoad = window.pageLoad;
    2929
    3030                var fixValues = function () {
    31                         for (i = ids.length; i--;) {
    32                                 var e = document.getElementById(ids[i]);
    33                                 e.value = e.value.replace(/&lt;/g, '<').replace(/&gt;/g, '>');
     31                        if (typeof CKEDITOR == 'undefined'){
     32                                for (i = ids.length; i--;) {
     33                                        var e = document.getElementById(ids[i]);
     34                                        e.value = e.value.replace(/&lt;/g, '<').replace(/&gt;/g, '>');
     35                                }
     36                        }else if(CKEDITOR.env.gecko){
     37                                var span = new CKEDITOR.dom.element( 'span' );
     38                                for (i = ids.length; i--;) {
     39                                        var e = document.getElementById(ids[i]);
     40                                        if(e.value != null && e.value != undefined && (e.value.indexOf('<') ==-1 || e.value.indexOf('>') ==-1)){
     41                                                span.setHtml( e.value );
     42                                                e.value = span.getText();
     43                                        }
     44                                }
    3445                        }
    3546                };
    3647
  • trunk/CKEditor.NET/CKEditorConfig.cs

     
    178178                                if (customName == "ExtraOptions")
    179179                                        foreach (object[] item in (object[])propertyInfo.GetValue(obj, new object[0]))
    180180                                                oc.Append(", ").Append("\"" + item[0].ToString() + "\" : ").Append(item[1].ToString());
     181                                else if (customName == "stylesSet" && ((string[])propertyInfo.GetValue(obj, new object[0])).Length == 1 && !((string[])propertyInfo.GetValue(obj, new object[0]))[0].StartsWith("{"))
     182                                {
     183                                        object staticValueToCompare = staticPropertyInfoDictionary[propertyInfo.Name];
     184                                        if (!campareArray(((string[])propertyInfo.GetValue(obj, new object[0])), (string[])staticValueToCompare))
     185                                        {
     186                                                string[] valueToJSON = (string[])propertyInfo.GetValue(obj, new object[0]);
     187                                                sbJSON.Append("\"" + (string.IsNullOrEmpty(customName) ? propertyInfo.Name : customName) + "\" : ");
     188                                                sbJSON.Append("\"" + EscapeStringForJavaScript(valueToJSON[0]).TrimStart(new char[] { '\'' }).TrimEnd(new char[] { '\'' }) + "\"");
     189                                                sbJSON.Append(", ");
     190                                        }
     191                                        continue;
     192                                }
    181193                                else if (customName == "on" && ((object[])propertyInfo.GetValue(obj, new object[0])).Length > 0)
    182194                                {
    183195                                        object[] objArray = (object[])((object[])propertyInfo.GetValue(obj, new object[0]))[0];
     
    201213                                                        continue;
    202214                                        }
    203215                                        sbJSON.Append("\"" + (string.IsNullOrEmpty(customName) ? propertyInfo.Name : customName) + "\" : ");
     216                                        if (propertyInfo.Name == "toolbar" || propertyInfo.Name == "toolbar_Basic" || propertyInfo.Name == "toolbar_Full")
     217                                        {
     218                                                object toolObj;
     219                                                if (propertyInfo.Name == "toolbar") toolObj = propertyInfo.GetValue(obj, new object[0]);
     220                                                else toolObj = ((object[])propertyInfo.GetValue(obj, new object[0]))[0];
     221                                                if (toolObj.GetType() == typeof(string) && ((string)toolObj).StartsWith("[") && ((string)toolObj).EndsWith("]"))
     222                                                {
     223                                                        isObject = true;
     224                                                        GetFieldOrPropertyValue(ref sbJSON, toolObj, removeEnters, isObject);
     225                                                        sbJSON.Append(", ");
     226                                                        continue;
     227                                                }
     228                                        }
    204229                                        GetFieldOrPropertyValue(ref sbJSON, propertyInfo.GetValue(obj, new object[0]), removeEnters, isObject);
    205230                                        sbJSON.Append(", ");
    206231                                }
     
    446471                /// the contents are to be used.
    447472                /// Default Value: new string[] { "~/contents.css" };
    448473                /// </summary>
    449                 [CKSerializable]
    450474                public string[] contentsCss { get; set; }
     475                [CKSerializable(Name = "contentsCss", IsObject = true)]
     476                private string[] contentsCssSer
     477                {
     478                        get
     479                        {
     480                                List<string> retVal = new List<string>();
     481                                ResolveParameters(contentsCss, retVal, true);
     482                                return retVal.ToArray();
     483                        }
     484                }
    451485
    452486                /// <summary>
    453487                /// The writting direction of the language used to write the editor contents. Allowed values are:
     
    472506                public string contentsLanguage { get; set; }
    473507
    474508                /// <summary>
    475                 /// A comma separated list of plugins that are not related to editor instances. Reserved to plugins that extend the core code only.
    476                 /// There are no ways to override this setting, except by editing the source code of CKEditor (_source/core/config.js).
    477                 /// </summary>
    478                 [CKSerializable]
    479                 public string corePlugins { get; set; }
    480 
    481                 /// <summary>
    482509                /// The style definition to be used to apply the bold style in the text.
    483510                /// Default Value: "{ element : 'strong', overrides : 'b' }"
    484511                /// </summary>
     
    823850                /// For example, "Bigger Font/14px" will be displayed as "Bigger Font" in the list, but will be outputted as "14px".
    824851                /// Default Value: "8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px"
    825852                /// </summary>
    826                 [CKSerializable(IsObject = true)]
     853                [CKSerializable]
    827854                public string fontSize_sizes { get; set; }
    828855
    829856                /// <summary>
     
    9881015                /// List of classes to use for indenting the contents. If it's null, no classes will be used and instead the #indentUnit and #indentOffset properties will be used.
    9891016                /// Default Value: []
    9901017                /// </summary>
    991                 [CKSerializable]
    9921018                public string[] indentClasses { get; set; }
     1019                [CKSerializable(Name = "indentClasses", IsObject = true)]
     1020                private string[] indentClassesSer
     1021                {
     1022                        get
     1023                        {
     1024                                List<string> retVal = new List<string>();
     1025                                ResolveParameters(indentClasses, retVal, true);
     1026                                return retVal.ToArray();
     1027                        }
     1028                }
    9931029
    9941030                /// <summary>
    9951031                /// Size of each indentation step
     
    10941130                /// List of regular expressions to be executed over the input HTML, indicating HTML source code that matched must not present in WYSIWYG mode for editing.
    10951131                /// Default Value: []
    10961132                /// </summary>
    1097                 [CKSerializable(IsObject = true)]
    1098                 public object[] protectedSource { get; set; }
     1133                public string[] protectedSource { get; set; }
    10991134
    11001135                /// <summary>
    11011136                /// The dialog contents to removed. It's a string composed by dialog name and tab name with a colon between them.
     
    14461481                /// Previously this setting was available as config.stylesCombo_stylesSet
    14471482                /// Default Value: ["'default'"]
    14481483                /// </summary>
    1449                 [CKSerializable(IsObject = true)]
    1450                 public string stylesSet { get; set; }
    1451 
     1484                public string[] stylesSet { get; set; }
     1485                [CKSerializable(Name = "stylesSet", IsObject = true)]
     1486                private string[] stylesSetSer
     1487                {
     1488                        get
     1489                        {
     1490                                if (stylesSet != null && stylesSet.Length == 1 && stylesSet[0].Contains("{") && stylesSet[0].Contains("}"))
     1491                                {
     1492                                        stylesSet[0] = stylesSet[0].Replace("\t", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty);
     1493                                        return stylesSet;
     1494                                }
     1495                                List<string> retVal = new List<string>();
     1496                                ResolveParameters(stylesSet, retVal, true);
     1497                                return retVal.ToArray();
     1498                        }
     1499                }
    14521500                /// <summary>
    14531501                /// The editor tabindex value.
    14541502                /// Default Value: 0
     
    14681516                /// The list of templates definition files to load.
    14691517                /// Default Value: new string[] { "~/plugins/templates/templates/default.js" };
    14701518                /// </summary>
    1471                 [CKSerializable]
    14721519                public string[] templates_files { get; set; }
     1520                [CKSerializable(Name = "templates_files", IsObject = true)]
     1521                private string[] templates_filesSer
     1522                {
     1523                        get
     1524                        {
     1525                                List<string> retVal = new List<string>();
     1526                                ResolveParameters(templates_files, retVal, true);
     1527                                return retVal.ToArray();
     1528                        }
     1529                }
    14731530
     1531
    14741532                /// <summary>
    14751533                /// Whether the "Replace actual contents" checkbox is checked by default in the Templates dialog.
    14761534                /// Default Value: true
     
    16751733                        GlobalConfigObj.contentsCss = new string[] { "~/contents.css" };
    16761734                        GlobalConfigObj.contentsLangDirection = contentsLangDirections.Ui;
    16771735                        GlobalConfigObj.contentsLanguage = string.Empty;
    1678                         GlobalConfigObj.corePlugins = string.Empty;
    16791736                        GlobalConfigObj.coreStyles_bold = @"{ element : 'strong', overrides : 'b' }";
    16801737                        GlobalConfigObj.coreStyles_italic = @"{ element : 'em', overrides : 'i' }";
    16811738                        GlobalConfigObj.coreStyles_strike = @"{ element : 'strike' }";
     
    17771834                        GlobalConfigObj.pasteFromWordRemoveStyles = false;
    17781835                        //      todo
    17791836                        //this.plugins = string.Empty;
    1780                         GlobalConfigObj.protectedSource = new object[0];
     1837                        GlobalConfigObj.protectedSource = new string[0];
    17811838                        GlobalConfigObj.removeDialogTabs = string.Empty;
    17821839                        GlobalConfigObj.removeFormatAttributes = "class,style,lang,width,height,align,hspace,valign";
    17831840                        GlobalConfigObj.removeFormatTags = "b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var";
     
    18341891                        GlobalConfigObj.startupMode = StartupMode.Wysiwyg;
    18351892                        GlobalConfigObj.startupOutlineBlocks = false;
    18361893                        GlobalConfigObj.startupShowBorders = true;
    1837                         GlobalConfigObj.stylesSet = "default";
     1894                        GlobalConfigObj.stylesSet = new string[] { "default" };
    18381895                        GlobalConfigObj.tabIndex = 0;
    18391896                        GlobalConfigObj.tabSpaces = 0;
    18401897                        GlobalConfigObj.templates_files = new string[] { "~/plugins/templates/templates/default.js" };
     
    18891946                        this.colorButton_backStyle = CKEditorConfig.GlobalConfig.colorButton_backStyle;
    18901947                        this.colorButton_colors = CKEditorConfig.GlobalConfig.colorButton_colors;
    18911948                        this.colorButton_foreStyle = CKEditorConfig.GlobalConfig.colorButton_foreStyle;
    1892                         this.contentsCss = ResoleResolveUrl(CKEditorConfig.GlobalConfig.contentsCss, editorPath);
     1949                        this.contentsCss = ResolveUrl(CKEditorConfig.GlobalConfig.contentsCss, editorPath);
    18931950                        this.contentsLangDirection = CKEditorConfig.GlobalConfig.contentsLangDirection;
    18941951                        this.contentsLanguage = CKEditorConfig.GlobalConfig.contentsLanguage;
    1895                         this.corePlugins = CKEditorConfig.GlobalConfig.corePlugins;
    18961952                        this.coreStyles_bold = CKEditorConfig.GlobalConfig.coreStyles_bold;
    18971953                        this.coreStyles_italic = CKEditorConfig.GlobalConfig.coreStyles_italic;
    18981954                        this.coreStyles_strike = CKEditorConfig.GlobalConfig.coreStyles_strike;
     
    20042060                        this.stylesSet = CKEditorConfig.GlobalConfig.stylesSet;
    20052061                        this.tabIndex = CKEditorConfig.GlobalConfig.tabIndex;
    20062062                        this.tabSpaces = CKEditorConfig.GlobalConfig.tabSpaces;
    2007                         this.templates_files = ResoleResolveUrl(CKEditorConfig.GlobalConfig.templates_files, editorPath);
     2063                        this.templates_files = ResolveUrl(CKEditorConfig.GlobalConfig.templates_files, editorPath);
    20082064                        this.templates_replaceContent = CKEditorConfig.GlobalConfig.templates_replaceContent;
    20092065                        this.theme = CKEditorConfig.GlobalConfig.theme;
    20102066                        this.toolbar = CKEditorConfig.GlobalConfig.toolbar;
     
    20212077                        if (CKEditorInstanceEventHandler != null)
    20222078                                this.CKEditorInstanceEventHandler = new List<object>(CKEditorConfig.GlobalConfig.CKEditorInstanceEventHandler);
    20232079                }
    2024                 private string[] ResoleResolveUrl(string[] value, string resolvedStr)
     2080                private string[] ResolveUrl(string[] value, string resolvedStr)
    20252081                {
    20262082                        for (int i = 0; i < value.Length; i++)
    20272083                                if (value[i].StartsWith("~") && !value[i].StartsWith(resolvedStr))
    20282084                                        value[i] = resolvedStr + value[i].Replace("~", "");
    20292085                        return value;
    20302086                }
     2087                private void ResolveParameters(string[] parIn, List<string> retVal, bool addAp)
     2088                {
     2089                        foreach (string item in parIn)
     2090                        {
     2091                                if (item.StartsWith("[") || item.EndsWith("]"))
     2092                                        ResolveParameters(item.Trim().Replace("[", string.Empty).Replace("]", string.Empty).Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries), retVal, addAp);
     2093                                else if (addAp && !item.StartsWith("'") && !item.EndsWith("'"))
     2094                                        retVal.Add("'" + item.Trim().Replace("\t", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty) + "'");
     2095                                else
     2096                                        retVal.Add(item.Trim().Replace("\t", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty));
     2097                        }
     2098                }
     2099                private string ResolveParameters(string parIn, bool addAp)
     2100                {
     2101                        if (parIn.StartsWith("[") && parIn.EndsWith("]"))
     2102                                return parIn;
     2103                        else if (addAp && !parIn.StartsWith("'") && !parIn.EndsWith("'"))
     2104                                return "'" + parIn + "'";
     2105                        else
     2106                                return parIn;
     2107                }
    20312108                #endregion
    20322109        }
    20332110}
     2111 No newline at end of file
  • trunk/CKEditor.NET/CKEditorControl.cs

     
    2121        [ToolboxData("<{0}:CKEditorControl runat=server></{0}:CKEditorControl>")]
    2222        [ParseChildren(false)]
    2323        [Designer("CKEditor.NET.CKEditorControlDesigner")]
    24         public class CKEditorControl : TextBox
     24        public class CKEditorControl : TextBox, IPostBackDataHandler
    2525        {
    2626                #region Changed TextBox Property
    2727
     
    3232                {
    3333                        get
    3434                        {
    35                                 if (!string.IsNullOrEmpty(base.Text))
    36                                         base.Text = base.Text.Replace("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&");
    3735                                return base.Text;
    3836                        }
    3937                        set
    4038                        {
    41                                 if (!string.IsNullOrEmpty(value))
    42                                         value = value.Replace("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&");
    4339                                base.Text = value;
    4440                        }
    4541                }
     
    153149
    154150                [Category("CKEditor Other Settings")]
    155151                [Description("The editor tabindex value.")]
    156                 [DefaultValue(typeof(short),"0")]
     152                [DefaultValue(typeof(short), "0")]
    157153                public override short TabIndex { get { return (short)config.tabIndex; } set { config.tabIndex = value; } }
    158154
    159155                #region Encaspulate config
     
    167163                [Description("The minimum height to which the editor can reach using AutoGrow.")]
    168164                [DefaultValue(200)]
    169165                public int AutoGrowMinHeight { get { return config.autoGrow_minHeight; } set { config.autoGrow_minHeight = value; } }
    170                
     166
    171167                [Category("CKEditor Other Settings")]
    172168                [Description("Whether the replaced element (usually a textarea) is to be updated automatically when posting the form containing the editor.")]
    173169                [DefaultValue(true)]
     
    211207                                if (retVal.EndsWith(",")) retVal = retVal.Remove(retVal.Length - 1);
    212208                                return retVal;
    213209                        }
    214                         set { config.contentsCss = value.Split(new char[] { ',' }); }
     210                        set { config.contentsCss = value.Replace("\t", string.Empty).Split(new char[] { ',', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); }
    215211                }
    216212
    217                 [Category("CKEditor Other Settings")][Description(@"The writting direction of the language used to write the editor contents. Allowed values are:
     213                [Category("CKEditor Other Settings")]
     214                [Description(@"The writting direction of the language used to write the editor contents. Allowed values are:
    218215'ui' - which indicate content direction will be the same with the user interface language direction;
    219216'ltr' - for Left-To-Right language (like English);
    220217'rtl' - for Right-To-Left languages (like Arabic).")]
     
    226223                [DefaultValue("")]
    227224                public string ContentsLanguage { get { return config.contentsLanguage; } set { config.contentsLanguage = value; } }
    228225
    229                 [Category("CKEditor Other Settings")][Description(@"A comma separated list of plugins that are not related to editor instances. Reserved to plugins that extend the core code only.
    230 There are no ways to override this setting, except by editing the source code of CKEditor (_source/core/config.js).")]
    231                 [DefaultValue("")]
    232                 public string CorePlugins { get { return config.corePlugins; } set { config.corePlugins = value; } }
    233 
    234226                [Category("CKEditor Basic Settings")]
    235227                [Description(@"The URL path for the custom configuration file to be loaded. If not overloaded with inline configurations, it defaults
    236228to the ""config.js"" file present in the root of the CKEditor installation directory.
     
    463455                [Category("CKEditor Other Settings")]
    464456                [Description("Whether escape HTML when editor update original input element.")]
    465457                [DefaultValue(true)]
    466                 public bool HtmlEncodeOutput {get { return config.htmlEncodeOutput; } set { config.htmlEncodeOutput = value; } }
     458                public bool HtmlEncodeOutput { get { return config.htmlEncodeOutput; } set { config.htmlEncodeOutput = value; } }
    467459
    468460                [Category("CKEditor Other Settings")]
    469461                [Description(@"Whether the editor must output an empty value ("""") if it's contents is made by an empty paragraph only.")]
     
    632624                [DefaultValue(true)]
    633625                public bool StartupShowBorders { get { return config.startupShowBorders; } set { config.startupShowBorders = value; } }
    634626
     627                [PersistenceMode(PersistenceMode.Attribute)]
    635628                [Category("CKEditor Other Settings")]
    636629                [Description(@"The ""styles definition set"" to use in the editor. They will be used in the styles combo and the Style selector of the div container.
    637630The styles may be defined in the page containing the editor, or can be loaded on demand from an external file. In the second case,
     
    639632Otherwise, this setting has the ""name:url"" syntax, making it possible to set the URL from which loading the styles file.
    640633Previously this setting was available as config.stylesCombo_stylesSet")]
    641634                [DefaultValue("default")]
    642                 public string StylesSet { get { return config.stylesSet; } set { config.stylesSet = value; } }
     635                [Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(System.Drawing.Design.UITypeEditor))]
     636                public string StylesSet
     637                {
     638                        get
     639                        {
     640                                string retVal = string.Empty;
     641                                foreach (string item in config.stylesSet) retVal += item + ",";
     642                                if (retVal.EndsWith(",")) retVal = retVal.Remove(retVal.Length - 1);
     643                                return retVal;
     644                        }
     645                        set
     646                        {
     647                                if (value.Contains("{") && value.Contains("}"))
     648                                        config.stylesSet = new string[] { value };
     649                                else
     650                                        config.stylesSet = value.Replace("\t", string.Empty).Split(new char[] { ',', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
     651                        }
     652                }
    643653
    644654                [Category("CKEditor Other Settings")]
    645655                [Description(@"Intructs the editor to add a number of spaces (&nbsp;) to the text when hitting the TAB key.
     
    647657                [DefaultValue(0)]
    648658                public int TabSpaces { get { return config.tabSpaces; } set { config.tabSpaces = value; } }
    649659
    650                 [PersistenceMode(PersistenceMode.Attribute)]
    651660                [Category("CKEditor Other Settings")]
    652661                [Description("The list of templates definition files to load.")]
    653662                [DefaultValue("~/ckeditor/plugins/templates/templates/default.js")]
     
    661670                                if (retVal.EndsWith(",")) retVal = retVal.Remove(retVal.Length - 1);
    662671                                return retVal;
    663672                        }
    664                         set { config.templates_files = value.Split(new char[] { ',' }); }
     673                        set { config.templates_files = value.Replace("\t", string.Empty).Split(new char[] { ',', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); }
    665674                }
    666675
    667676                [Category("CKEditor Other Settings")]
     
    672681                [PersistenceMode(PersistenceMode.Attribute)]
    673682                [Category("CKEditor Basic Settings")]
    674683                [Description("The toolbox (alias toolbar) definition. It is a toolbar name or an array of toolbars (strips), each one being also an array, containing a list of UI items.")]
    675                 [DefaultValue( "Full")]
     684                [DefaultValue("Full")]
    676685                [Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(System.Drawing.Design.UITypeEditor))]
    677686                public string Toolbar
    678687                {
     
    707716                        }
    708717                        set
    709718                        {
    710                                 string[] valueTab = value.Split(new string[] { "\r\n"}, int.MaxValue, StringSplitOptions.RemoveEmptyEntries);
     719                                value = value.Trim();
     720                                if (value.StartsWith("[") && value.EndsWith("]"))
     721                                {
     722                                        config.toolbar = value.Replace("\t", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty);
     723                                        return;
     724                                }
     725                                string[] valueTab = value.Split(new string[] { "\r\n" }, int.MaxValue, StringSplitOptions.RemoveEmptyEntries);
    711726                                if (valueTab.Length == 1 && (valueTab[0] == "Full" || valueTab[0] == "Basic"))
    712727                                {
    713728                                        config.toolbar = valueTab[0];
     
    770785                        }
    771786                        set
    772787                        {
     788                                value = value.Trim();
     789                                if (value.StartsWith("[") && value.EndsWith("]"))
     790                                {
     791                                        config.toolbar_Basic = new object[] { value.Replace("\t", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty) };
     792                                        return;
     793                                }
    773794                                string[] valueTab = value.Split(new string[] { "\r\n" }, int.MaxValue, StringSplitOptions.RemoveEmptyEntries);
    774795                                object[] retVal = new object[valueTab.Length];
    775796                                try
     
    839860                        }
    840861                        set
    841862                        {
     863                                value = value.Trim();
     864                                if (value.StartsWith("[") && value.EndsWith("]"))
     865                                {
     866                                        config.toolbar_Full = new object[] { value.Replace("\t", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty) };
     867                                        return;
     868                                }
    842869                                string[] valueTab = value.Split(new string[] { "\r\n" }, int.MaxValue, StringSplitOptions.RemoveEmptyEntries);
    843870                                object[] retVal = new object[valueTab.Length];
    844871                                try
     
    9991026                {
    10001027                        this.RegisterStartupScript(this.GetType(), "CKEDITOR_BASEPATH", string.Format("window.CKEDITOR_BASEPATH = '{0}/';\n", (this.CKEditorJSFile.StartsWith("~") ? this.ResolveUrl(this.BasePath) : this.BasePath)), true);
    10011028                        this.RegisterStartupScript(this.GetType(), "ckeditor", "<script src=\"" + (this.CKEditorJSFile.StartsWith("~") ? this.ResolveUrl(this.CKEditorJSFile) : this.CKEditorJSFile) + timestamp + "\" type=\"text/javascript\"></script>", false);
    1002                         if (HasMsAjax)
    1003                         {
    1004                                 string scriptInit = string.Empty;
     1029                        string scriptInit = string.Empty;
    10051030
    1006                                 // Sys.Application.add_load does not work on browsers != IE
    1007                                 // http://msdn.microsoft.com/en-us/library/bb386417.aspx
    1008                                 // Check _dev/msajax.js for an uncompressed version (available in CKEditor.Net downloaded from SVN).
    1009                                 scriptInit += @"var CKEditor_Controls=[];function CKEditor_TextBoxEncode(c,d){if(typeof CKEDITOR=='undefined'||typeof CKEDITOR.instances[c]=='undefined'){var e=document.getElementById(c);e.value=e.value.replace(/</g,'&lt;').replace(/>/g,'&gt;');}else{var f=CKEDITOR.instances[c];if(d)f.destroy();else f.updateElement();}};(function(){var c=function(){var d=CKEditor_Controls,e=window.pageLoad,f=function(){for(i=d.length;i--;){var g=document.getElementById(d[i]);g.value=g.value.replace(/&lt;/g,'<').replace(/&gt;/g,'>');}};window.pageLoad=function(g,h){if(h.get_isPartialLoad())f();if(e&&typeof e=='function')e.call(this,g,h);};f();};if(window.addEventListener)window.addEventListener('load',c,false);else if(window.attachEvent)window.attachEvent('onload',c);})();
     1031                        // Sys.Application.add_load does not work on browsers != IE
     1032                        // http://msdn.microsoft.com/en-us/library/bb386417.aspx
     1033                        // Check _dev/msajax.js for an uncompressed version (available in CKEditor.Net downloaded from SVN).
     1034                        scriptInit += @"var CKEditor_Controls=[];function CKEditor_TextBoxEncode(c,d){if(typeof CKEDITOR=='undefined'||typeof CKEDITOR.instances[c]=='undefined'){var e=document.getElementById(c);e.value=e.value.replace(/</g,'&lt;').replace(/>/g,'&gt;');}else{var f=CKEDITOR.instances[c];if(d)f.destroy();else f.updateElement();}};(function(){var c=function(){var d=CKEditor_Controls,e=window.pageLoad,f=function(){if(typeof CKEDITOR == 'undefined'){for(i=d.length;i--;){var g=document.getElementById(d[i]);g.value=g.value.replace(/&lt;/g,'<').replace(/&gt;/g,'>');}}else if(CKEDITOR.env.gecko){var span=new CKEDITOR.dom.element('span');for(i=ids.length;i--;){var e=document.getElementById(ids[i]);if(e.value!=null && e.value!=undefined && (e.value.indexOf('<')!=-1 || e.value.indexOf('>')!=-1)){span.setHtml(e.value);e.value=span.getText();}}}};window.pageLoad=function(g,h){if(h.get_isPartialLoad())f();if(e&&typeof e=='function')e.call(this,g,h);};f();};if(window.addEventListener)window.addEventListener('load',c,false);else if(window.attachEvent)window.attachEvent('onload',c);})();
    10101035";
    1011 
    1012                                 this.RegisterStartupScript(this.GetType(), "CKEditorForNet", scriptInit, true);
    1013                                 this.RegisterStartupScript(this.GetType(), this.ClientID + @"_addControl", string.Format(@"CKEditor_Controls.push('{0}');
     1036                        this.RegisterStartupScript(this.GetType(), "CKEditorForNet", scriptInit, true);
     1037                        this.RegisterStartupScript(this.GetType(), this.ClientID + @"_addControl", string.Format(@"CKEditor_Controls.push('{0}');
    10141038", this.ClientID), true);
    1015                         }
    10161039                        string script = string.Empty;
    10171040                        if (this.config.CKEditorEventHandler != null)
    10181041                                foreach (object[] item in this.config.CKEditorEventHandler)
     
    10201043                                        script += string.Format(@"if(typeof CKEDITOR != 'undefined') CKEDITOR.on('{0}',{1});
    10211044", item[0], item[1]);
    10221045                                }
    1023                         script += string.Format(@"if(typeof CKEDITOR != 'undefined') CKEDITOR.replace('{0}',{1});
     1046                        if (this.config.protectedSource != null && this.config.protectedSource.Length > 0)
     1047                        {
     1048                                string proSour = string.Empty;
     1049                                foreach (string item in this.config.protectedSource)
     1050                                        proSour += @"
     1051ckeditor.config.protectedSource.push( " + item + " );";
     1052                                script += string.Format(@"if(typeof CKEDITOR != 'undefined') {3}
     1053var ckeditor = CKEDITOR.replace('{0}',{1}); {2}
     1054{4}", this.ClientID, prepareJSON(), proSour, "{", "}");
     1055                        }
     1056                        else
     1057                                script += string.Format(@"if(typeof CKEDITOR != 'undefined') CKEDITOR.replace('{0}',{1});
    10241058", this.ClientID, prepareJSON());
    10251059
    1026                         if (HasMsAjax)
    1027                         {
    1028                                 bool isInUpdatePanel = false;
    1029                                 Control con = this.Parent;
    1030                                 if (updatePanel != null)
    1031                                         while (con != null)
     1060                        bool isInUpdatePanel = false;
     1061                        Control con = this.Parent;
     1062                        if (updatePanel != null)
     1063                                while (con != null)
     1064                                {
     1065                                        if (con.GetType() == updatePanel)
    10321066                                        {
    1033                                                 if (con.GetType() == updatePanel)
    1034                                                 {
    1035                                                         isInUpdatePanel = true;
    1036                                                         break;
    1037                                                 }
    1038                                                 con = con.Parent;
     1067                                                isInUpdatePanel = true;
     1068                                                break;
    10391069                                        }
    1040                                 this.RegisterOnSubmitStatement(this.GetType(), "aspintegrator_Postback" + this.ClientID, string.Format("CKEditor_TextBoxEncode('{0}', {1}); ", this.ClientID, isInUpdatePanel ? 1 : 0));
    1041                         }
     1070                                        con = con.Parent;
     1071                                }
     1072                        this.RegisterOnSubmitStatement(this.GetType(), "aspintegrator_Postback" + this.ClientID, string.Format("CKEditor_TextBoxEncode('{0}', {1}); ", this.ClientID, isInUpdatePanel ? 1 : 0));
    10421073                        this.RegisterStartupScript(this.GetType(), "aspintegratorInitial_" + this.ClientID, script, true);
    10431074                }
    10441075
     
    10521083                }
    10531084
    10541085                #endregion
     1086
     1087                #region IPostBackDataHandler
     1088
     1089                bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection)
     1090                {
     1091                        if (this.config.htmlEncodeOutput)
     1092                        {
     1093                                string postedValue = postCollection[postDataKey];
     1094                                postedValue = postedValue.Replace("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&");
     1095                                if (this.Text != postedValue)
     1096                                {
     1097                                        this.Text = postedValue;
     1098                                        return true;
     1099                                }
     1100                        }
     1101                        return false;
     1102                }
     1103
     1104                void IPostBackDataHandler.RaisePostDataChangedEvent() { }
     1105
     1106                #endregion
    10551107        }
    10561108
    10571109        public class CKEditorControlDesigner : System.Web.UI.Design.ControlDesigner
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy