1#!/usr/bin/env perl 2 3##### 4# FCKeditor - The text editor for Internet - http://www.fckeditor.net 5# Copyright (C) 2003-2007 Frederico Caldeira Knabben 6# 7# == BEGIN LICENSE == 8# 9# Licensed under the terms of any of the following licenses at your 10# choice: 11# 12# - GNU General Public License Version 2 or later (the "GPL") 13# http://www.gnu.org/licenses/gpl.html 14# 15# - GNU Lesser General Public License Version 2.1 or later (the "LGPL") 16# http://www.gnu.org/licenses/lgpl.html 17# 18# - Mozilla Public License Version 1.1 or later (the "MPL") 19# http://www.mozilla.org/MPL/MPL-1.1.html 20# 21# == END LICENSE == 22# 23# Sample page. 24##### 25 26## START: Hack for Windows (Not important to understand the editor code... Perl specific). 27if(Windows_check()) { 28 chdir(GetScriptPath($0)); 29} 30 31sub Windows_check 32{ 33 # IIS,PWS(NT/95) 34 $www_server_os = $^O; 35 # Win98 & NT(SP4) 36 if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; } 37 # AnHTTPd/Omni/IIS 38 if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; } 39 # Win Apache 40 if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; } 41 if($www_server_os=~ /win/i) { return(1); } 42 return(0); 43} 44 45sub GetScriptPath { 46 local($path) = @_; 47 if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; } 48 $path; 49} 50## END: Hack for IIS 51 52require '../../fckeditor.pl'; 53 54# When $ENV{'PATH_INFO'} cannot be used by perl. 55# $DefRootPath = "/XXXXX/_samples/perl/sample04.cgi"; Please write in script. 56 57my $DefServerPath = ""; 58my $ServerPath; 59 60 $ServerPath = &GetServerPath(); 61 62 if($ENV{'REQUEST_METHOD'} eq "POST") { 63 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); 64 } else { 65 $buffer = $ENV{'QUERY_STRING'}; 66 } 67 @pairs = split(/&/,$buffer); 68 foreach $pair (@pairs) { 69 ($name,$value) = split(/=/,$pair); 70 $value =~ tr/+/ /; 71 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 72 $value =~ s/\t//g; 73 $value =~ s/\r\n/\n/g; 74 $FORM{$name} .= "\0" if(defined($FORM{$name})); 75 $FORM{$name} .= $value; 76 } 77 78#!!Caution javascript \ Quart 79 80 print "Content-type: text/html\n\n"; 81 print <<"_HTML_TAG_"; 82<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 83<html> 84 <head> 85 <title>FCKeditor - Sample</title> 86 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 87 <meta name="robots" content="noindex, nofollow"> 88 <link href="../sample.css" rel="stylesheet" type="text/css" /> 89 <script type="text/javascript"> 90 91function FCKeditor_OnComplete( editorInstance ) 92{ 93 var oCombo = document.getElementById( 'cmbSkins' ) ; 94 95 // Get the active skin. 96 var sSkin = editorInstance.Config['SkinPath'] ; 97 sSkin = sSkin.match(/[^\\/]+(?=\\/\$)/g) ; 98 99 oCombo.value = sSkin ; 100 oCombo.style.visibility = '' ; 101} 102 103function ChangeSkin( skinName ) 104{ 105 window.location.href = window.location.pathname + "?Skin=" + skinName ; 106} 107 108 </script> 109 </head> 110 <body> 111 <h1>FCKeditor - Perl - Sample 4</h1> 112 This sample shows how to change the editor skin. 113 <hr> 114 <table cellpadding="0" cellspacing="0" border="0"> 115 <tr> 116 <td> 117 Select the skin to load: 118 </td> 119 <td> 120 <select id="cmbSkins" onchange="ChangeSkin(this.value);" style="VISIBILITY: hidden"> 121 <option value="default" selected>Default</option> 122 <option value="office2003">Office 2003</option> 123 <option value="silver">Silver</option> 124 </select> 125 </td> 126 </tr> 127 </table> 128 <br> 129 <form action="sampleposteddata.cgi" method="post" target="_blank"> 130_HTML_TAG_ 131 132 #// Automatically calculates the editor base path based on the _samples directory. 133 #// This is usefull only for these samples. A real application should use something like this: 134 #// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value. 135 $sBasePath = $ServerPath; 136 $sBasePath = substr( $sBasePath, 0, index( $sBasePath, "_samples" ) ) ; 137 138 &FCKeditor('FCKeditor1'); 139 $BasePath = $sBasePath; 140 141 if($FORM{'Skin'} ne "") { 142 $Config{'SkinPath'} = $sBasePath . 'editor/skins/' . &specialchar_cnv( $FORM{'Skin'} ) . '/' ; 143 } 144 $Value = '<p>This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.</p>' ; 145 &Create() ; 146 147 print <<"_HTML_TAG_"; 148 <br> 149 <input type="submit" value="Submit"> 150 </form> 151 </body> 152</html> 153_HTML_TAG_ 154 155################ 156#Please use this function, rewriting it depending on a server's environment. 157################ 158sub GetServerPath 159{ 160my $dir; 161 162 if($DefServerPath) { 163 $dir = $DefServerPath; 164 } else { 165 if($ENV{'PATH_INFO'}) { 166 $dir = $ENV{'PATH_INFO'}; 167 } elsif($ENV{'FILEPATH_INFO'}) { 168 $dir = $ENV{'FILEPATH_INFO'}; 169 } 170 } 171 return($dir); 172} 173