Imports System Imports System.Web Imports System.Web.UI Imports Microsoft.VisualBasic Namespace InnovaStudio Public Class WYSIWYGEditor Inherits System.Web.UI.WebControls.WebControl Implements IPostBackDataHandler Public Event ContentChanged As EventHandler Public Property Content() As String Get Return CType(Me.ViewState("Content"), String) End Get Set(ByVal Value As String) 'Value = Replace(Value, "\", "\") 'Value = Replace(Value, "'", "") 'Value = Replace(Value, vbCrLf, "") Me.ViewState("Content") = Value End Set End Property Private sScriptPath As String = "script/" Public Property scriptPath() As String Get Return sScriptPath End Get Set(ByVal Value As String) sScriptPath = Value End Set End Property Private nDropTopAdjustment As Integer = 0 Public Property DropTopAdjustment() As Integer Get Return nDropTopAdjustment End Get Set(ByVal Value As Integer) nDropTopAdjustment = Value End Set End Property Private nDropLeftAdjustment As Integer = 0 Public Property DropLeftAdjustment() As Integer Get Return nDropLeftAdjustment End Get Set(ByVal Value As Integer) nDropLeftAdjustment = Value End Set End Property Private nDropTopAdjustment_moz As Integer = 0 Public Property DropTopAdjustment_moz() As Integer Get Return nDropTopAdjustment_moz End Get Set(ByVal Value As Integer) nDropTopAdjustment_moz = Value End Set End Property Private nDropLeftAdjustment_moz As Integer = 0 Public Property DropLeftAdjustment_moz() As Integer Get Return nDropLeftAdjustment_moz End Get Set(ByVal Value As Integer) nDropLeftAdjustment_moz = Value End Set End Property Private sStyleSelectionHoverFg As String = "" Public Property styleSelectionHoverFg() As String Get Return sStyleSelectionHoverFg End Get Set(ByVal Value As String) sStyleSelectionHoverFg = Value End Set End Property Private sStyleSelectionHoverBg As String = "" Public Property styleSelectionHoverBg() As String Get Return sStyleSelectionHoverBg End Get Set(ByVal Value As String) sStyleSelectionHoverBg = Value End Set End Property 'Properties ~~~~~~~~~ 'CUSTOM COLORS Private sCustomColors As Array = New String() {} Public Property CustomColors() As Array Get Return sCustomColors End Get Set(ByVal Value As Array) sCustomColors = Value End Set End Property 'ASSET MANAGER Private sAssetManager As String = "" Public Property AssetManager() As String Get Return sAssetManager End Get Set(ByVal Value As String) sAssetManager = Value End Set End Property Private sAssetManagerWidth As String = "" Public Property AssetManagerWidth() As String Get Return sAssetManagerWidth End Get Set(ByVal Value As String) sAssetManagerWidth = Value End Set End Property Private sAssetManagerHeight As String = "" Public Property AssetManagerHeight() As String Get Return sAssetManagerHeight End Get Set(ByVal Value As String) sAssetManagerHeight = Value End Set End Property 'INTERNAL LINK Private sInternalLink As String = "" Public Property InternalLink() As String Get Return sInternalLink End Get Set(ByVal Value As String) sInternalLink = Value End Set End Property Private sInternalLinkWidth As String = "" Public Property InternalLinkWidth() As String Get Return sInternalLinkWidth End Get Set(ByVal Value As String) sInternalLinkWidth = Value End Set End Property Private sInternalLinkHeight As String = "" Public Property InternalLinkHeight() As String Get Return sInternalLinkHeight End Get Set(ByVal Value As String) sInternalLinkHeight = Value End Set End Property 'CONTENT BLOCK Private sContentBlock As String = "" Public Property ContentBlock() As String Get Return sContentBlock End Get Set(ByVal Value As String) sContentBlock = Value End Set End Property Private sContentBlockWidth As String = "" Public Property ContentBlockWidth() As String Get Return sContentBlockWidth End Get Set(ByVal Value As String) sContentBlockWidth = Value End Set End Property Private sContentBlockHeight As String = "" Public Property ContentBlockHeight() As String Get Return sContentBlockHeight End Get Set(ByVal Value As String) sContentBlockHeight = Value End Set End Property Private bContentBlock As Boolean = False 'CUSTOM OBJECT Private sCustomObject As String = "" Public Property CustomObject() As String Get Return sCustomObject End Get Set(ByVal Value As String) sCustomObject = Value End Set End Property Private sCustomObjectWidth As String = "" Public Property CustomObjectWidth() As String Get Return sCustomObjectWidth End Get Set(ByVal Value As String) sCustomObjectWidth = Value End Set End Property Private sCustomObjectHeight As String = "" Public Property CustomObjectHeight() As String Get Return sCustomObjectHeight End Get Set(ByVal Value As String) sCustomObjectHeight = Value End Set End Property 'EXTERNAL CSS Private sCss As String = "" Public Property Css() As String Get Return sCss End Get Set(ByVal Value As String) sCss = Value End Set End Property 'STYLE LIST Private sStyleList As Array = New String(,) {} Public Property StyleList() As Array Get Return sStyleList End Get Set(ByVal Value As Array) sStyleList = Value End Set End Property Private bBtnStyles As Boolean = False Public Property btnStyles() As Boolean Get Return bBtnStyles End Get Set(ByVal Value As Boolean) bBtnStyles = Value End Set End Property 'EDIT SETTINGS Private sEditMode As String = "HTMLBody" 'HTMLBody,XHTMLBody,HTML,XHTML Public Property EditMode() As String Get Return sEditMode End Get Set(ByVal Value As String) sEditMode = Value End Set End Property Private sEditorWidth As String = "" Public Property EditorWidth() As String Get Return sEditorWidth End Get Set(ByVal Value As String) sEditorWidth = Value End Set End Property Private sEditorHeight As String = "" Public Property EditorHeight() As String Get Return sEditorHeight End Get Set(ByVal Value As String) sEditorHeight = Value End Set End Property Private sButtonFeatures As Array = New String() {} Public Property ButtonFeatures() As Array Get Return sButtonFeatures End Get Set(ByVal Value As Array) sButtonFeatures = Value End Set End Property 'PARAGRAPH Private sParagraphList As Array = New String(,) {} Public Property ParagraphList() As Array Get Return sParagraphList End Get Set(ByVal Value As Array) sParagraphList = Value End Set End Property Private bBtnParagraph As Boolean = True Public Property btnParagraph() As Boolean Get Return bBtnParagraph End Get Set(ByVal Value As Boolean) bBtnParagraph = Value End Set End Property 'FONT Private sFontList As Array = New String() {} Public Property FontList() As Array Get Return sFontList End Get Set(ByVal Value As Array) sFontList = Value End Set End Property Private bBtnFont As Boolean = True Public Property btnFont() As Boolean Get Return bBtnFont End Get Set(ByVal Value As Boolean) bBtnFont = Value End Set End Property 'SIZE Private sSizeList As Array = New String(,) {} Public Property SizeList() As Array Get Return sSizeList End Get Set(ByVal Value As Array) sSizeList = Value End Set End Property Private bBtnSize As Boolean = True Public Property btnSize() As Boolean Get Return bBtnSize End Get Set(ByVal Value As Boolean) bBtnSize = Value End Set End Property 'CUSTOM TAG Private sCustomTagList As Array = New String(,) {} Public Property CustomTagList() As Array Get Return sCustomTagList End Get Set(ByVal Value As Array) sCustomTagList = Value End Set End Property 'INITIAL REFRESH Private bInitialRefresh As Boolean = False Public Property InitialRefresh() As Boolean Get Return bInitialRefresh End Get Set(ByVal Value As Boolean) bInitialRefresh = Value End Set End Property 'SOURCE EDITOR Private bBtnHTMLSource As Boolean = False Public Property btnHTMLSource() As Boolean Get Return bBtnHTMLSource End Get Set(ByVal Value As Boolean) bBtnHTMLSource = Value End Set End Property Private bBtnHTMLFullSource As Boolean = False Public Property btnHTMLFullSource() As Boolean Get Return bBtnHTMLFullSource End Get Set(ByVal Value As Boolean) bBtnHTMLFullSource = Value End Set End Property 'Publishing Path Private sPublishingPath As String = "" Public Property PublishingPath() As String Get Return sPublishingPath End Get Set(ByVal Value As String) sPublishingPath = Value End Set End Property 'SpellCheck Mode Private sSpellCheckMode As String = "" Public Property spellCheckMode() As String Get Return sSpellCheckMode End Get Set(ByVal Value As String) sSpellCheckMode = Value End Set End Property 'Custom Buttons Private sCustomButtons As Array = New String(,) {} Public Property CustomButtons() As Array Get Return sCustomButtons End Get Set(ByVal Value As Array) sCustomButtons = Value End Set End Property 'OTHERS Private bBtnSave As Boolean = False Public Property btnSave() As Boolean Get Return bBtnSave End Get Set(ByVal Value As Boolean) bBtnSave = Value End Set End Property Private sOnSave As String = "" Public Property onSave() As String Get Return sOnSave End Get Set(ByVal Value As String) sOnSave = Value End Set End Property Private bBtnPreview As Boolean = True Public Property btnPreview() As Boolean Get Return bBtnPreview End Get Set(ByVal Value As Boolean) bBtnPreview = Value End Set End Property Private bBtnFullScreen As Boolean = True Public Property btnFullScreen() As Boolean Get Return bBtnFullScreen End Get Set(ByVal Value As Boolean) bBtnFullScreen = Value End Set End Property Private sOnFullScreen As String = "" Public Property onFullScreen() As String Get Return sOnFullScreen End Get Set(ByVal Value As String) sOnFullScreen = Value End Set End Property Private sOnNormalScreen As String = "" Public Property onNormalScreen() As String Get Return sOnNormalScreen End Get Set(ByVal Value As String) sOnNormalScreen = Value End Set End Property Private bBtnSearch As Boolean = True Public Property btnSearch() As Boolean Get Return bBtnSearch End Get Set(ByVal Value As Boolean) bBtnSearch = Value End Set End Property Private bBtnTextFormatting As Boolean = True Public Property btnTextFormatting() As Boolean Get Return bBtnTextFormatting End Get Set(ByVal Value As Boolean) bBtnTextFormatting = Value End Set End Property Private bBtnParagraphFormatting As Boolean = True Public Property btnParagraphFormatting() As Boolean Get Return bBtnParagraphFormatting End Get Set(ByVal Value As Boolean) bBtnParagraphFormatting = Value End Set End Property Private bBtnListFormatting As Boolean = True Public Property btnListFormatting() As Boolean Get Return bBtnListFormatting End Get Set(ByVal Value As Boolean) bBtnListFormatting = Value End Set End Property Private bBtnBoxFormatting As Boolean = True Public Property btnBoxFormatting() As Boolean Get Return bBtnBoxFormatting End Get Set(ByVal Value As Boolean) bBtnBoxFormatting = Value End Set End Property Private bBtnCssText As Boolean = True Public Property btnCssText() As Boolean Get Return bBtnCssText End Get Set(ByVal Value As Boolean) bBtnCssText = Value End Set End Property Private bBtnCut As Boolean = True Public Property btnCut() As Boolean Get Return bBtnCut End Get Set(ByVal Value As Boolean) bBtnCut = Value End Set End Property Private bBtnCopy As Boolean = True Public Property btnCopy() As Boolean Get Return bBtnCopy End Get Set(ByVal Value As Boolean) bBtnCopy = Value End Set End Property Private bBtnPaste As Boolean = True Public Property btnPaste() As Boolean Get Return bBtnPaste End Get Set(ByVal Value As Boolean) bBtnPaste = Value End Set End Property Private bBtnUndo As Boolean = True Public Property btnUndo() As Boolean Get Return bBtnUndo End Get Set(ByVal Value As Boolean) bBtnUndo = Value End Set End Property Private bBtnRedo As Boolean = True Public Property btnRedo() As Boolean Get Return bBtnRedo End Get Set(ByVal Value As Boolean) bBtnRedo = Value End Set End Property Private bBtnBold As Boolean = True Public Property btnBold() As Boolean Get Return bBtnBold End Get Set(ByVal Value As Boolean) bBtnBold = Value End Set End Property Private bBtnItalic As Boolean = True Public Property btnItalic() As Boolean Get Return bBtnItalic End Get Set(ByVal Value As Boolean) bBtnItalic = Value End Set End Property Private bBtnUnderline As Boolean = True Public Property btnUnderline() As Boolean Get Return bBtnUnderline End Get Set(ByVal Value As Boolean) bBtnUnderline = Value End Set End Property Private bBtnJustifyLeft As Boolean = True Public Property btnJustifyLeft() As Boolean Get Return bBtnJustifyLeft End Get Set(ByVal Value As Boolean) bBtnJustifyLeft = Value End Set End Property Private bBtnJustifyCenter As Boolean = True Public Property btnJustifyCenter() As Boolean Get Return bBtnJustifyCenter End Get Set(ByVal Value As Boolean) bBtnJustifyCenter = Value End Set End Property Private bBtnJustifyRight As Boolean = True Public Property btnJustifyRight() As Boolean Get Return bBtnJustifyRight End Get Set(ByVal Value As Boolean) bBtnJustifyRight = Value End Set End Property Private bBtnJustifyFull As Boolean = True Public Property btnJustifyFull() As Boolean Get Return bBtnJustifyFull End Get Set(ByVal Value As Boolean) bBtnJustifyFull = Value End Set End Property Private bBtnNumbering As Boolean = True Public Property btnNumbering() As Boolean Get Return bBtnNumbering End Get Set(ByVal Value As Boolean) bBtnNumbering = Value End Set End Property Private bBtnBullets As Boolean = True Public Property btnBullets() As Boolean Get Return bBtnBullets End Get Set(ByVal Value As Boolean) bBtnBullets = Value End Set End Property Private bBtnIndent As Boolean = True Public Property btnIndent() As Boolean Get Return bBtnIndent End Get Set(ByVal Value As Boolean) bBtnIndent = Value End Set End Property Private bBtnOutdent As Boolean = True Public Property btnOutdent() As Boolean Get Return bBtnOutdent End Get Set(ByVal Value As Boolean) bBtnOutdent = Value End Set End Property Private bBtnForeColor As Boolean = True Public Property btnForeColor() As Boolean Get Return bBtnForeColor End Get Set(ByVal Value As Boolean) bBtnForeColor = Value End Set End Property Private bBtnBackColor As Boolean = True Public Property btnBackColor() As Boolean Get Return bBtnBackColor End Get Set(ByVal Value As Boolean) bBtnBackColor = Value End Set End Property Private bBtnHyperlink As Boolean = True Public Property btnHyperlink() As Boolean Get Return bBtnHyperlink End Get Set(ByVal Value As Boolean) bBtnHyperlink = Value End Set End Property Private bBtnBookmark As Boolean = True Public Property btnBookmark() As Boolean Get Return bBtnBookmark End Get Set(ByVal Value As Boolean) bBtnBookmark = Value End Set End Property Private bBtnCharacters As Boolean = True Public Property btnCharacters() As Boolean Get Return bBtnCharacters End Get Set(ByVal Value As Boolean) bBtnCharacters = Value End Set End Property Private bBtnImage As Boolean = True Public Property btnImage() As Boolean Get Return bBtnImage End Get Set(ByVal Value As Boolean) bBtnImage = Value End Set End Property Private bBtnFlash As Boolean = False Public Property btnFlash() As Boolean Get Return bBtnFlash End Get Set(ByVal Value As Boolean) bBtnFlash = Value End Set End Property Private bBtnMedia As Boolean = False Public Property btnMedia() As Boolean Get Return bBtnMedia End Get Set(ByVal Value As Boolean) bBtnMedia = Value End Set End Property Private bBtnTable As Boolean = True Public Property btnTable() As Boolean Get Return bBtnTable End Get Set(ByVal Value As Boolean) bBtnTable = Value End Set End Property Private bBtnGuidelines As Boolean = True Public Property btnGuidelines() As Boolean Get Return bBtnGuidelines End Get Set(ByVal Value As Boolean) bBtnGuidelines = Value End Set End Property Private bBtnAbsolute As Boolean = True Public Property btnAbsolute() As Boolean Get Return bBtnAbsolute End Get Set(ByVal Value As Boolean) bBtnAbsolute = Value End Set End Property Private bBtnPasteWord As Boolean = True Public Property btnPasteWord() As Boolean Get Return bBtnPasteWord End Get Set(ByVal Value As Boolean) bBtnPasteWord = Value End Set End Property Private bBtnLine As Boolean = True Public Property btnLine() As Boolean Get Return bBtnLine End Get Set(ByVal Value As Boolean) bBtnLine = Value End Set End Property Private bBtnForm As Boolean = True Public Property btnForm() As Boolean Get Return bBtnForm End Get Set(ByVal Value As Boolean) bBtnForm = Value End Set End Property Private bBtnRemoveFormat As Boolean = True Public Property btnRemoveFormat() As Boolean Get Return bBtnRemoveFormat End Get Set(ByVal Value As Boolean) bBtnRemoveFormat = Value End Set End Property Private bUseTagSelector As Boolean = True Public Property UseTagSelector() As Boolean Get Return bUseTagSelector End Get Set(ByVal Value As Boolean) bUseTagSelector = Value End Set End Property Private sTagSelectorPosition As String = "bottom" Public Property TagSelectorPosition() As String Get Return sTagSelectorPosition End Get Set(ByVal Value As String) sTagSelectorPosition = Value End Set End Property Private bBtnPasteText As Boolean = False Public Property btnPasteText() As Boolean Get Return bBtnPasteText End Get Set(ByVal Value As Boolean) bBtnPasteText = Value End Set End Property Private bBtnStrikethrough As Boolean = False Public Property btnStrikethrough() As Boolean Get Return bBtnStrikethrough End Get Set(ByVal Value As Boolean) bBtnStrikethrough = Value End Set End Property Private bBtnSuperscript As Boolean = False Public Property btnSuperscript() As Boolean Get Return bBtnSuperscript End Get Set(ByVal Value As Boolean) bBtnSuperscript = Value End Set End Property Private bBtnSubscript As Boolean = False Public Property btnSubscript() As Boolean Get Return bBtnSubscript End Get Set(ByVal Value As Boolean) bBtnSubscript = Value End Set End Property Private bBtnLTR As Boolean = False Public Property btnLTR() As Boolean Get Return bBtnLTR End Get Set(ByVal Value As Boolean) bBtnLTR = Value End Set End Property Private bBtnRTL As Boolean = False Public Property btnRTL() As Boolean Get Return bBtnRTL End Get Set(ByVal Value As Boolean) bBtnRTL = Value End Set End Property Private bBtnClearAll As Boolean = False Public Property btnClearAll() As Boolean Get Return bBtnClearAll End Get Set(ByVal Value As Boolean) bBtnClearAll = Value End Set End Property Private bBtnSpellCheck As Boolean = False Public Property btnSpellCheck() As Boolean Get Return bBtnSpellCheck End Get Set(ByVal Value As Boolean) bBtnSpellCheck = Value End Set End Property Private bBtnPrint As Boolean = False Public Property btnPrint() As Boolean Get Return bBtnPrint End Get Set(ByVal Value As Boolean) bBtnPrint = Value End Set End Property Private bUseDIV As Boolean = True Public Property UseDIV() As Boolean Get Return bUseDIV End Get Set(ByVal Value As Boolean) bUseDIV = Value End Set End Property Private bUseBR As Boolean = False Public Property UseBR() As Boolean Get Return bUseBR End Get Set(ByVal Value As Boolean) bUseBR = Value End Set End Property Private bPreserveSpace As Boolean = False Public Property PreserveSpace() As Boolean Get Return bPreserveSpace End Get Set(ByVal Value As Boolean) bPreserveSpace = Value End Set End Property 'LANGUAGE SETTINGS Private sLanguage As String = "english" 'english, danish, dutch, french, german, ... Public Property Language() As String Get Return sLanguage End Get Set(ByVal Value As String) sLanguage = Value End Set End Property 'ADD-ONS Private bUseCSSBuilder As Boolean = False Public Property UseCSSBuilder() As Boolean Get Return bUseCSSBuilder End Get Set(ByVal Value As Boolean) bUseCSSBuilder = Value End Set End Property '~~~~~~~~~~~~~~~~~~~~ Private Function htmlTop() As String Dim sHTML As String sHTML = "" If InStr(HttpContext.Current.Request.Browser.Type, "IE") Then sHTML += "" Else sHTML += "" End If sHTML += "" & vbCrLf Return sHTML End Function Private Function htmlEditor() As String Dim sItem As String Dim sItems As String Dim i As Integer Dim sHTML As String sHTML = "
" & HttpUtility.HtmlEncode(Me.Content) & "" & vbCrLf sHTML += "" & vbCrLf '*** Content (ClientID <=> UniqueID) *** If Me.ClientID <> Me.UniqueID Then sHTML += "" & vbCrLf End If '*** /Content *** Return sHTML End Function Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs) Page.RegisterClientScriptBlock("clientTop", Me.htmlTop()) Page.RegisterOnSubmitStatement("clientSubmit", "finish_wysiwyg_editing();") End Sub Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) '*** hidden field *** writer.AddAttribute(HtmlTextWriterAttribute.Type, "hidden") writer.AddAttribute(HtmlTextWriterAttribute.Name, Me.UniqueID) writer.AddAttribute(HtmlTextWriterAttribute.Id, Me.UniqueID) writer.RenderBeginTag(HtmlTextWriterTag.Input) writer.RenderEndTag() writer.Write(Me.htmlEditor) End Sub Public Function LoadPostData(ByVal postDataKey As String, ByVal postCollection As System.Collections.Specialized.NameValueCollection) As Boolean Implements System.Web.UI.IPostBackDataHandler.LoadPostData Dim contentOriginal As String = Content Dim contentUpdate As String = postCollection(postDataKey) If contentOriginal Is Nothing Or Not contentUpdate.Equals(contentOriginal) Then Content = contentUpdate Return True End If Return False End Function Public Sub RaisePostDataChangedEvent() Implements System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent OnContentChanged(EventArgs.Empty) End Sub Protected Overridable Sub OnContentChanged(ByVal e As EventArgs) RaiseEvent ContentChanged(Me, e) End Sub End Class End Namespace