Mercurial > moin > 1.9
view wiki/htdocs/applets/FCKeditor/fckeditor.pl @ 5130:287faf79876f
upgrade FCKeditor from 2.6.4 to 2.6.4.1 (security update, see comments below)
The security issue fixed in 2.6.4.1 had no relevance to the FCKeditor features
used by MoinMoin. Thus we were not in a hurry to incorporate this and push out
a new moin release with it. But as a new moin release is pending now anyway,
we include the latest FCKeditor release now anyway, just to have everything
up-to-date. :)
author | Thomas Waldmann <tw AT waldmann-edv DOT de> |
---|---|
date | Sun, 06 Sep 2009 15:12:11 +0200 |
parents | 1d37117f8ca6 |
children |
line wrap: on
line source
##### # FCKeditor - The text editor for Internet - http://www.fckeditor.net # Copyright (C) 2003-2009 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 = '' ; 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>"; } 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;