Hello all,
I am new to Telerik RadControls and currently I am working on RadEditor Control for the application I am developing using ASP.Net 3.5 Ajax... I would like to know whether is it possible to "Add textbox to RadEditor's Tool Collection"
I did go through the forums and found threads about using custom tools as well as adding custom controls to radeditor toolbars.But it didnt work for me.The problem that I am facing is rendering the "CustomRenderedTool" from the toolsfile.xml. I does show a icon with a tooltip of "CustomRenderedTool" but when I am trying to initialize Radeditor Tool using RadEditorToolInitializer, it not working fro me...
Here is the sample code that I am using...
I am new to Telerik RadControls and currently I am working on RadEditor Control for the application I am developing using ASP.Net 3.5 Ajax... I would like to know whether is it possible to "Add textbox to RadEditor's Tool Collection"
| <%@ Page Language="C#" MasterPageFile="~/Layout3columnHeader.Master" AutoEventWireup="true" |
| CodeBehind="~/welcomeScreen.aspx.cs" Inherits="Waivenet.welcomeScreen" %> |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
| <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> |
| <asp:Content ID="headContent" ContentPlaceHolderID="headph" runat="server"> |
| <script type="text/javascript"> |
| //<![CDATA[ |
| /************************************************ |
| * |
| * Tool with custom rendering |
| * |
| ************************************************/ |
| var defaultoInputWidthValue = "set Width..."; |
| var defaultoInputHeightValue = "set Height..."; |
| var defaultoInputUrlValue = "add URL..."; |
| if ("undefined" == typeof(RadEditorToolInitializer)) |
| { |
| var RadEditorToolInitializer = {}; |
| } |
| /* RadEditorToolInitializer is a global object that contains initializer functions for custom tools */ |
| RadEditorToolInitializer["CustomRenderedTool"] = function (toolArgs) |
| { |
| function CustomRenderedTool(toolArgs) |
| { |
| this.Controller = toolArgs.Controller; |
| this.Name = toolArgs.Name; |
| } |
| CustomRenderedTool.prototype.Create = function() |
| { |
| var oInputWidth = document.createElement ("INPUT"); |
| oInputWidth.type = "text"; |
| oInputWidth.style.width = "75px"; |
| oInputWidth.value = defaultoInputWidthValue; |
| oInputWidth.onclick = function(){if (this.value == defaultoInputWidthValue)this.value = ""}; |
| var oInputHeight = document.createElement ("INPUT"); |
| oInputHeight.type = "text"; |
| oInputHeight.style.width = "75px"; |
| oInputHeight.value = defaultoInputHeightValue; |
| oInputHeight.onclick = function(){if (this.value == defaultoInputHeightValue)this.value = ""}; |
| var oInputUrl = document.createElement ("INPUT"); |
| oInputUrl.type = "text"; |
| oInputUrl.style.width = "90px"; |
| oInputUrl.value = defaultoInputUrlValue; |
| oInputUrl.onclick = function(){if (this.value == defaultoInputUrlValue)this.value = ""}; |
| var oButton = document.createElement ("INPUT"); |
| oButton.type = "button"; |
| oButton.value= "Insert!"; |
| oButton.className = "RadEButton"; |
| var controller = this.Controller; |
| var toolObject = new Object(); |
| toolObject.widthHolder = oInputWidth; |
| toolObject.heightHolder = oInputHeight; |
| toolObject.className = "CustomRenderedTool"; |
| toolObject.urlHolder = oInputUrl; |
| oButton.onclick= function anon (e) |
| { |
| controller.Fire("CustomRenderedTool", toolObject); |
| return false; |
| }; |
| var oHolder = document.createElement ("DIV"); |
| oHolder.appendChild (oInputWidth); |
| oHolder.appendChild (oInputHeight); |
| oHolder.appendChild (oInputUrl); |
| oHolder.appendChild (oButton); |
| return oHolder; |
| return oButton; |
| }; |
| return new CustomRenderedTool (toolArgs); |
| }; |
| //]]> |
| </script> |
| </asp:Content> |
| <asp:Content ID="menuContent" ContentPlaceHolderID="menuph" runat="server"> |
| <div id="cusotmizeScreenDiv" style="float: right; margin-top: 3.5%;"> |
| <asp:Panel ID="cmsPanel" runat="server" ScrollBars="Auto" GroupingText="Content Management"> |
| <asp:CheckBoxList ID="cblCustomizeLayout" runat="server"> |
| </asp:CheckBoxList> |
| <br /> |
| <asp:Button ID="btEnable" runat="server" Text="Enable Selected" OnClick="btEnableClick" |
| ToolTip="Click to enable the status of the seletced blocks" /> |
| <br /> |
| <br /> |
| <asp:Button ID="btDisable" runat="server" Text="Disable Selected" OnClick="btDisableClick" |
| ToolTip="Click to disable the status of the seletced blocks" /> |
| </asp:Panel> |
| </div> |
| </asp:Content> |
| <asp:Content ID="mainContent" ContentPlaceHolderID="mainph" runat="server"> |
| <script type="text/javascript"> |
| function setStyle(editor, args) { |
| var style = editor.get_contentArea().style; |
| style.backgroundImage = "none"; |
| style.backgroundColor = "white"; |
| style.color = "black"; |
| style.fontFamily = "Tahoma"; |
| style.fontSize = 12 + "px"; |
| } |
| </script> |
| <div id="WelcomeMessage" runat="server" style="position: relative; float: left; width: 48%; |
| height: 30%; left: 1%; top: 1%; margin-right: 1.5%; margin-top: 1%;" visible="false"> |
| <asp:Panel ID="welcomePanel" runat="server" ScrollBars="Auto" GroupingText="Welcome Message" |
| Width="100%" Height="100%" Font-Bold="false"> |
| <asp:Label ID="lbWelcomeMsg" runat="server" Text=""></asp:Label> |
| <br /> |
| <asp:Button ID="btCusotmize" runat="server" Text="Customize Welcome Message" Width="185px" |
| Visible="true" OnClick="btCustomizeWelcomeMsgClick" /> |
| <telerik:RadEditor ID="welcomeEditor" runat="server" Skin="Web20" Width="100%" Height="100%" |
| OnClientLoad="setStyle" Style="overflow: auto" ToolbarMode="Default" EditModes="Design,Preview" |
| ToolsFile="~/ToolsFiles/WelcomeBlockTools.xml"> |
| </telerik:RadEditor> |
| <telerik:RadCodeBlock ID="welcomeCodeBlock" runat="server"> |
| <script type="text/javascript"> |
| //<![CDATA[ |
| /* Implementation of the Submit command, declared in the editor's DefaultTools.xml file! */ |
| if ("undefined" != typeof (Telerik.Web.UI.Editor)) { |
| Telerik.Web.UI.Editor.CommandList["Submit"] = function(submit, editor, args) { |
| $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("updateWelcomeMsg"); |
| }; |
| /* Implementation of the Cancel command, declared in the editor's DefaultTools.xml file! */ |
| Telerik.Web.UI.Editor.CommandList["Cancel"] = function(cancel, editor, args) { |
| $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("cancelEditWelcomeMsg"); |
| }; |
| } |
| //]]> |
| </script> |
| </telerik:RadCodeBlock> |
| </asp:Panel> |
| </div> |
| <div id="News" runat="server" style="position: relative; height: 30%; float: left; |
| width: 48%; left: 1%; top: 1%; margin-right: 1.5%; margin-top: 1%; overflow: auto" |
| visible="false"> |
| <asp:Panel ID="newsPanel" runat="server" ScrollBars="Auto" GroupingText="News" Width="100%" |
| Height="100%"> |
| <asp:Label ID="lbNews" runat="server" Text=""></asp:Label> |
| <br /> |
| <asp:Button ID="btPostNews" Text="Post News" runat="server" OnClick="btPostNewsClick" /> |
| <br /> |
| <table id="tblHolder" cellspacing="0" cellpadding="2" border="0" runat="server"> |
| <tr> |
| <td> |
| <asp:Label ID="lbNewsExpDt" runat="server" Text="News Expiry Date:" Visible="false"></asp:Label> |
| </td> |
| <td> |
| <asp:TextBox ID="tbNewsExpDt" runat="server" Visible="false"></asp:TextBox> |
| </td> |
| </tr> |
| </table> |
| <telerik:RadEditor ID="newsEditor" runat="server" Skin="Web20" Width="100%" Height="100%" |
| OnClientLoad="setStyle" Style="overflow: auto" ToolbarMode="Default" EditModes="Design,Preview" |
| ToolsFile="~/ToolsFiles/NewsBlockTools.xml" ToolsWidth="100%"> |
| </telerik:RadEditor> |
| <telerik:RadCodeBlock ID="newsCodeBlock" runat="server"> |
| <script type="text/javascript"> |
| //<![CDATA[ |
| /* Implementation of the CustomRenderedTool command, declared in the NewsBlockTools.xml file! */ |
| if ("undefined" != typeof (Telerik.Web.UI.Editor)) { |
| Telerik.Web.UI.Editor.CommandList["CustomRenderedTool"] = function(commandName, editor, oTool) { |
| var linkToPaste = ""; |
| var selectionText = editor.get_html(); |
| if (selectionText == "") { |
| selectionText = oTool.urlHolder.value; |
| } |
| var reDimension = /^\d+(px|pt)?$/ig; |
| var width = oTool.widthHolder.value; |
| if (!width.match(reDimension)) { |
| alert('Please, provide a valid width!'); |
| return; |
| } |
| var height = oTool.heightHolder.value; |
| if (!height.match(reDimension)) { |
| alert('Please, provide a valid height!'); |
| return; |
| } |
| var url = oTool.urlHolder.value; |
| if (!url.match(/^(http|file|ftp):\/\//ig)) { |
| alert('Please, provide a valid url!\nUrls should begin with a protocol name, like http://www.telerik.com,'); |
| return; |
| } |
| linkToPaste = "<a href=\"#\" onclick=\"javascript:window.open('" + url + |
| "', '_blank', 'width=" + width + |
| ",height=" + height + |
| "');\">" + selectionText + "</a>" |
| editor.PasteHtml(linkToPaste); |
| }; |
| /* Implementation of the Post command, declared in the editor's PostNewsTools.xml file! */ |
| Telerik.Web.UI.Editor.CommandList["Post"] = function(newsPost, editor, args) { |
| $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("postNews"); |
| }; |
| /* Implementation of the Post command, declared in the editor's PostNewsTools.xml file! */ |
| Telerik.Web.UI.Editor.CommandList["Cancel Post"] = function(cancelPost, editor, args) { |
| $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("cancelPostNews"); |
| }; |
| } |
| //]]> |
| </script> |
| </telerik:RadCodeBlock> |
| </asp:Panel> |
| </div> |
I did go through the forums and found threads about using custom tools as well as adding custom controls to radeditor toolbars.But it didnt work for me.The problem that I am facing is rendering the "CustomRenderedTool" from the toolsfile.xml. I does show a icon with a tooltip of "CustomRenderedTool" but when I am trying to initialize Radeditor Tool using RadEditorToolInitializer, it not working fro me...
Here is the sample code that I am using...
