Файл: public/fck/fckeditor.pl
Строк: 96
<?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.pl
#      This is the integration file for Perl.
#  
#  Version:  2.0 RC3
#  Modified: 2005-02-28 15:50:35
#  
#  File Authors:
#          Takashi Yamaguchi (jack@omakase.net)
#####
#my $InstanceName;
#my $BasePath;
#my $Width;
#my $Height;
#my $ToolbarSet;
#my $Value;
#my %Config;
sub FCKeditor
{
    local($instanceName) = @_;
    $InstanceName    = $instanceName;
    $BasePath        = '/FCKeditor/';
    $Width            = '100%';
    $Height            = '200';
    $ToolbarSet        = 'Default';
    $Value            = '';
}
sub Create
{
    print &CreateHtml();
}
sub specialchar_cnv
{
    local($ch) = @_;
    $ch =~ s/&/&/g;        # &
    $ch =~ s/"/"/g;    #"
    $ch =~ s/'/'/g;    # '
    $ch =~ s/</</g;        # <
    $ch =~ s/>/>/g;        # >
    return($ch);
}
sub CreateHtml
{
    $HtmlValue = &specialchar_cnv($Value);
    $Html = '<div>' ;
    if(&IsCompatible()) {
        $Link = $BasePath . "editor/fckeditor.html?InstanceName=$InstanceName";
        if($ToolbarSet ne '') {
            $Link .= "&Toolbar=$ToolbarSet";
        }
        #// Render the linked hidden field.
        $Html .= "<input type="hidden" id="$InstanceName" name="$InstanceName" value="$HtmlValue">" ;
        #// Render the configurations hidden field.
        $cfgstr = &GetConfigFieldString();
        $wk = $InstanceName."___Config";
        $Html .= "<input type="hidden" id="$wk" value="$cfgstr">" ;
        #// Render the editor IFRAME.
        $wk = $InstanceName."___Frame";
        $Html .= "<iframe id="$wk" src="$Link" width="$Width" height="$Height" frameborder="no" scrolling="no"></iframe>";
    } else {
        if($Width =~ /%/g){
            $WidthCSS = $Width;
        } else {
            $WidthCSS = $Width . 'px';
        }
        if($Height =~ /%/g){
            $HeightCSS = $Height;
        } else {
            $HeightCSS = $Height . 'px';
        }
        $Html .= "<textarea name="$InstanceName" rows="4" cols="40" style="width: $WidthCSS; height: $HeightCSS" wrap="virtual">$HtmlValue</textarea>";
    }
    $Html .= '</div>';
    return($Html);
}
sub IsCompatible
{
    $sAgent = $ENV{'HTTP_USER_AGENT'};
    if(($sAgent =~ /MSIE/i) && !($sAgent =~ /mac/i) && !($sAgent =~ /Opera/i)) {
        $iVersion = substr($sAgent,index($sAgent,'MSIE') + 5,3);
        return($iVersion >= 5.5) ;
    } elsif($sAgent =~ /Gecko/i) {
        $iVersion = substr($sAgent,index($sAgent,'Gecko/') + 6,8);
        return($iVersion >= 20030210) ;
    } else {
        return(1);
    }
}
sub GetConfigFieldString
{
    $sParams = '';
    $bFirst = 0;
    foreach $sKey (keys %Config) {
        $sValue = $Config{$sKey};
        if($bFirst == 1) {
            $sParams .= '&';
        } else {
            $bFirst = 1;
        }
        $k = &specialchar_cnv($sKey);
        $v = &specialchar_cnv($sValue);
        if($sValue eq "true") {
            $sParams .= "$k=true";
        } elsif($sValue eq "false") {
            $sParams .= "$k=false";
        } else {
            $sParams .= "$k=$v";
        }
    }
    return($sParams);
}
1;
?>