Файл: public/fck/fckeditor.asp
Строк: 211
<?php
<!--
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2004 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 *         http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 *         http://www.fckeditor.net/
 * 
 * File Name: fckeditor.asp
 *     This is the integration file for ASP.
 * 
 *     It defines the FCKeditor class that can be used to create editor
 *     instances in ASP pages on server side.
 * 
 * Version:  2.0 RC3
 * Modified: 2005-02-27 19:16:33
 * 
 * File Authors:
 *         Frederico Caldeira Knabben (fredck@fckeditor.net)
-->
<%
Class FCKeditor
    private sBasePath
    private sInstanceName
    private sWidth
    private sHeight
    private sToolbarSet
    private sValue
    private oConfig
    Private Sub Class_Initialize()
        sBasePath        = "/FCKeditor/"
        sWidth            = "100%"
        sHeight            = "200"
        sToolbarSet        = "Default"
        sValue            = ""
        Set oConfig = CreateObject("Scripting.Dictionary")
    End Sub
    Public Property Let BasePath( basePathValue )
        sBasePath = basePathValue
    End Property
    Public Property Let InstanceName( instanceNameValue )
        sInstanceName = instanceNameValue
    End Property
    Public Property Let Width( widthValue )
        sWidth = widthValue
    End Property
    Public Property Let Height( heightValue )
        sHeight = heightValue
    End Property
    Public Property Let ToolbarSet( toolbarSetValue )
        sToolbarSet = toolbarSetValue
    End Property
    Public Property Let Value( newValue )
        sValue = newValue
    End Property
    Public Property Let Config( configKey, configValue )
        oConfig.Add configKey, configValue
    End Property
    Public Function Create( instanceName )
        Response.Write "<div>"
        If IsCompatible() Then
            Dim sLink
            sLink = sBasePath & "editor/fckeditor.html?InstanceName=" + instanceName
            If (sToolbarSet & "") <> "" Then
                sLink = sLink + "&Toolbar=" & sToolbarSet
            End If
            ' Render the linked hidden field.
            Response.Write "<input type=""hidden"" id=""" & instanceName & """ name=""" & instanceName & """ value=""" & Server.HTMLEncode( sValue ) & """>"
            ' Render the configurations hidden field.
            Response.Write "<input type=""hidden"" id=""" & instanceName & "___Config"" value=""" & GetConfigFieldString() & """>"
            ' Render the editor IFRAME.
            Response.Write "<iframe id=""" & instanceName & "___Frame"" src=""" & sLink & """ width=""" & sWidth & """ height=""" & sHeight & """ frameborder=""no"" scrolling=""no""></iframe>"
        Else
            Dim sWidthCSS, sHeightCSS
            If InStr( sWidth, "%" ) > 0  Then
                sWidthCSS = sWidth
            Else
                sWidthCSS = sWidth & "px"
            End If
            If InStr( sHeight, "%" ) > 0  Then
                sHeightCSS = sHeight
            Else
                sHeightCSS = sHeight & "px"
            End If
            Response.Write "<textarea name=""" & instanceName & """ rows=""4"" cols=""40"" style=""width: " & sWidthCSS & "; height: " & sHeightCSS & """ wrap=""virtual"">" & Server.HTMLEncode( sValue ) & "</textarea>"
        End If
        Response.Write "</div>"
    End Function
    Private Function IsCompatible()
        Dim sAgent
        sAgent = Request.ServerVariables("HTTP_USER_AGENT")
        Dim iVersion
        If InStr(sAgent, "MSIE") > 0 AND InStr(sAgent, "mac") <= 0  AND InStr(sAgent, "Opera") <= 0 Then
            iVersion = CInt( ToNumericFormat( Mid(sAgent, InStr(sAgent, "MSIE") + 5, 3) ) )
            IsCompatible = ( iVersion >= 5.5 )
        ElseIf InStr(sAgent, "Gecko") > 0 Then
            iVersion = CLng( Mid( sAgent, InStr( sAgent, "Gecko/" ) + 6, 8 ) )
            IsCompatible = ( iVersion >= 20030210 )
        Else
            IsCompatible = False
        End If
    End Function
    ' By Agrotic
    ' On ASP, when converting string to numbers, the number decimal separator is localized
    ' so 5.5 will not work on systems were the separator is "," and vice versa.
    Private Function ToNumericFormat( numberStr )
        If IsNumeric( "5.5" ) Then
            ToNumericFormat = Replace( numberStr, ",", ".")
        Else
            ToNumericFormat = Replace( numberStr, ".", ",")
        End If
    End Function
    Private Function GetConfigFieldString()
        Dim sParams
        Dim bFirst
        bFirst = True
        Dim sKey
        For Each sKey in oConfig
            If bFirst = False Then
                sParams = sParams & "&"
            Else
                bFirst = False
            End If
            sParams = sParams & EncodeConfig( sKey ) & "=" & EncodeConfig( oConfig(sKey) )
        Next
        GetConfigFieldString = sParams
    End Function
    
    Private Function EncodeConfig( valueToEncode )
        EncodeConfig = Replace( valueToEncode, "&", "%26" )
        EncodeConfig = Replace( EncodeConfig , "=", "%3D" )
        EncodeConfig = Replace( EncodeConfig , """", "%22" )
    End Function
End Class
%>
?>