• 官方的fckEditor.php源代码


    <?php 
    /*
     * FCKeditor - The text editor for internet
     * Copyright (C) 2003-2005 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/
     * 
     * "Support Open Source software. What about a donation today?"
     * 
     * File Name: fckeditor.php
     *     This is the integration file for PHP.
     *     
     *     It defines the FCKeditor class that can be used to create editor
     *     instances in PHP pages on server side.
     * 
     * File Authors:
     *         Frederico Caldeira Knabben (fredck@fckeditor.net)
     */

    class FCKeditor
    {
        var $InstanceName ;
        var $BasePath ;
        var $Width ;
        var $Height ;
        var $ToolbarSet ;
        var $Value ;
        var $Config ;

        // PHP 5 Constructor (by Marcus Bointon <coolbru@users.sourceforge.net>)
        function __construct( $instanceName )
         {
            $this->InstanceName    = $instanceName ;
            $this->BasePath        = '' ;
            $this->Width        = '100%' ;
            $this->Height        = '300' ;
            $this->ToolbarSet    = 'Default' ;
            $this->Value        = '' ;
            $this->Config    = array() ;
        }
        
        // PHP 4 Contructor
        function FCKeditor( $instanceName )
        {
            $this->__construct( $instanceName ) ;
        }

        function Create()
        {
            echo $this->CreateHtml() ;
        }
        
        function CreateHtml()
        {
            $HtmlValue = htmlspecialchars( $this->Value ) ;

            $Html = '<div>' ;
            
            if ( $this->IsCompatible() )
            {
                if ( isset( $_GET['fcksource'] ) && $_GET['fcksource'] == "true" )
                    $File = 'fckeditor.original.html' ;
                else
                    $File = 'fckeditor.html' ;

                $Link = "{$this->BasePath}editor/{$File}?InstanceName={$this->InstanceName}" ;
                
                if ( $this->ToolbarSet != '' )
                    $Link .= "&amp;Toolbar={$this->ToolbarSet}" ;

                // Render the linked hidden field.
                $Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}\" name=\"{$this->InstanceName}\" value=\"{$HtmlValue}\" style=\"display:none\" />" ;

                // Render the configurations hidden field.
                $Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}___Config\" value=\"" . $this->GetConfigFieldString() . "\" style=\"display:none\" />" ;

                // Render the editor IFRAME.
                $Html .= "<iframe id=\"{$this->InstanceName}___Frame\" src=\"{$Link}\" width=\"{$this->Width}\" height=\"{$this->Height}\" frameborder=\"no\" scrolling=\"no\"></iframe>" ;
            }
            else
            {
                if ( strpos( $this->Width, '%' ) === false )
                    $WidthCSS = $this->Width . 'px' ;
                else
                    $WidthCSS = $this->Width ;

                if ( strpos( $this->Height, '%' ) === false )
                    $HeightCSS = $this->Height . 'px' ;
                else
                    $HeightCSS = $this->Height ;

                $Html .= "<textarea name=\"{$this->InstanceName}\" rows=\"4\" cols=\"40\" style=\" {$WidthCSS}; height: {$HeightCSS}\">{$HtmlValue}</textarea>" ;
            }

            $Html .= '</div>' ;
            
            return $Html ;
        }

        function IsCompatible()
        {
            global $HTTP_USER_AGENT ;

            if ( isset( $HTTP_USER_AGENT ) )
                $sAgent = $HTTP_USER_AGENT ;
            else
                $sAgent = $_SERVER['HTTP_USER_AGENT'] ;

            if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
            {
                $iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
                return ($iVersion >= 5.5) ;
            }
            else if ( strpos($sAgent, 'Gecko/') !== false )
            {
                $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
                return ($iVersion >= 20030210) ;
            }
            else
                return false ;
        }

        function GetConfigFieldString()
        {
            $sParams = '' ;
            $bFirst = true ;

            foreach ( $this->Config as $sKey => $sValue )
            {
                if ( $bFirst == false )
                    $sParams .= '&amp;' ;
                else
                    $bFirst = false ;
                
                if ( $sValue === true )
                    $sParams .= $this->EncodeConfig( $sKey ) . '=true' ;
                else if ( $sValue === false )
                    $sParams .= $this->EncodeConfig( $sKey ) . '=false' ;
                else
                    $sParams .= $this->EncodeConfig( $sKey ) . '=' . $this->EncodeConfig( $sValue ) ;
            }
            
            return $sParams ;
        }

        function EncodeConfig( $valueToEncode )
        {
            $chars = array( 
                '&' => '%26', 
                '=' => '%3D', 
                '"' => '%22' ) ;

            return strtr( $valueToEncode,  $chars ) ;
        }
    }

    ?>
  • 相关阅读:
    C++中内联函数
    剑指offer62:二插搜索树的第k个节点
    剑指offer63:数据流中的中位数
    剑指offer64:滑动窗口的最大值
    剑指offer65:矩阵中的路径
    剑指offer66:机器人的活动范围
    kmean算法C++实现
    【数组】Minimum Size Subarray Sum
    【数组】Missing Number
    【数组】Product of Array Except Self
  • 原文地址:https://www.cnblogs.com/goody9807/p/1070796.html
Copyright © 2020-2023  润新知