/source/Plug-in/fck/fckeditor.pl
http://prosporous.googlecode.com/ · Perl · 144 lines · 97 code · 15 blank · 32 comment · 16 complexity · 2a03f17efb7a6ae329599bd37362d221 MD5 · raw file
- #####
- # FCKeditor - The text editor for Internet - http://www.fckeditor.net
- # Copyright (C) 2003-2007 Frederico Caldeira Knabben
- #
- # == BEGIN LICENSE ==
- #
- # Licensed under the terms of any of the following licenses at your
- # choice:
- #
- # - GNU General Public License Version 2 or later (the "GPL")
- # http://www.gnu.org/licenses/gpl.html
- #
- # - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- # http://www.gnu.org/licenses/lgpl.html
- #
- # - Mozilla Public License Version 1.1 or later (the "MPL")
- # http://www.mozilla.org/MPL/MPL-1.1.html
- #
- # == END LICENSE ==
- #
- # This is the integration file for Perl.
- #####
-
- #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\" style=\"display:none\" />" ;
-
- #// Render the configurations hidden field.
- $cfgstr = &GetConfigFieldString();
- $wk = $InstanceName."___Config";
- $Html .= "<input type=\"hidden\" id=\"$wk\" value=\"$cfgstr\" style=\"display:none\" />" ;
-
- #// Render the editor IFRAME.
- $wk = $InstanceName."___Frame";
- $Html .= "<iframe id=\"$wk\" src=\"$Link\" width=\"$Width\" height=\"$Height\" frameborder=\"0\" 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\">$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) ;
- } elsif($sAgent =~ /Opera\//i) {
- $iVersion = substr($sAgent,index($sAgent,'Opera/') + 6,4);
- return($iVersion >= 9.5) ;
- } elsif($sAgent =~ /AppleWebKit\/(\d+)/i) {
- return($1 >= 522) ;
- } else {
- return(0); # 2.0 PR fix
- }
- }
-
- 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;