PluginProbe
Wp-Insert / 1.5.2
Wp-Insert v1.5.2
trunk 1.0 1.1 1.2 1.2.1 1.2.2 1.3.0 1.3.1 1.3.3 1.4 1.5.0 1.5.1 1.5.2 1.5.3 1.6.0 1.6.1 1.6.2 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 2.0 All 63 releases
wp-insert / fckeditor / fckeditor_php4.php

fckeditor_php4.php in Wp-Insert 1.5.2, at fckeditor/fckeditor_php4.php

263 lines 6.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
4 * Copyright (C) 2003-2009 Frederico Caldeira Knabben
5 *
6 * == BEGIN LICENSE ==
7 *
8 * Licensed under the terms of any of the following licenses at your
9 * choice:
10 *
11 * - GNU General Public License Version 2 or later (the "GPL")
12 * http://www.gnu.org/licenses/gpl.html
13 *
14 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
15 * http://www.gnu.org/licenses/lgpl.html
16 *
17 * - Mozilla Public License Version 1.1 or later (the "MPL")
18 * http://www.mozilla.org/MPL/MPL-1.1.html
19 *
20 * == END LICENSE ==
21 *
22 * This is the integration file for PHP 4.
23 *
24 * It defines the FCKeditor class that can be used to create editor
25 * instances in PHP pages on server side.
26 */
27
28 /**
29 * Check if browser is compatible with FCKeditor.
30 * Return true if is compatible.
31 *
32 * @return boolean
33 */
34 function FCKeditor_IsCompatibleBrowser()
35 {
36 if ( isset( $_SERVER ) ) {
37 $sAgent = $_SERVER['HTTP_USER_AGENT'] ;
38 }
39 else {
40 global $HTTP_SERVER_VARS ;
41 if ( isset( $HTTP_SERVER_VARS ) ) {
42 $sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
43 }
44 else {
45 global $HTTP_USER_AGENT ;
46 $sAgent = $HTTP_USER_AGENT ;
47 }
48 }
49
50 if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
51 {
52 $iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
53 return ($iVersion >= 5.5) ;
54 }
55 else if ( strpos($sAgent, 'Gecko/') !== false )
56 {
57 $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
58 return ($iVersion >= 20030210) ;
59 }
60 else if ( strpos($sAgent, 'Opera/') !== false )
61 {
62 $fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
63 return ($fVersion >= 9.5) ;
64 }
65 else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) )
66 {
67 $iVersion = $matches[1] ;
68 return ( $matches[1] >= 522 ) ;
69 }
70 else
71 return false ;
72 }
73
74 class FCKeditor
75 {
76 /**
77 * Name of the FCKeditor instance.
78 *
79 * @access protected
80 * @var string
81 */
82 var $InstanceName ;
83 /**
84 * Path to FCKeditor relative to the document root.
85 *
86 * @var string
87 */
88 var $BasePath ;
89 /**
90 * Width of the FCKeditor.
91 * Examples: 100%, 600
92 *
93 * @var mixed
94 */
95 var $Width ;
96 /**
97 * Height of the FCKeditor.
98 * Examples: 400, 50%
99 *
100 * @var mixed
101 */
102 var $Height ;
103 /**
104 * Name of the toolbar to load.
105 *
106 * @var string
107 */
108 var $ToolbarSet ;
109 /**
110 * Initial value.
111 *
112 * @var string
113 */
114 var $Value ;
115 /**
116 * This is where additional configuration can be passed.
117 * Example:
118 * $oFCKeditor->Config['EnterMode'] = 'br';
119 *
120 * @var array
121 */
122 var $Config ;
123
124 /**
125 * Main Constructor.
126 * Refer to the _samples/php directory for examples.
127 *
128 * @param string $instanceName
129 */
130 function FCKeditor( $instanceName )
131 {
132 $this->InstanceName = $instanceName ;
133 $this->BasePath = '/fckeditor/' ;
134 $this->Width = '100%' ;
135 $this->Height = '200' ;
136 $this->ToolbarSet = 'Default' ;
137 $this->Value = '' ;
138
139 $this->Config = array() ;
140 }
141
142 /**
143 * Display FCKeditor.
144 *
145 */
146 function Create()
147 {
148 echo $this->CreateHtml() ;
149 }
150
151 /**
152 * Return the HTML code required to run FCKeditor.
153 *
154 * @return string
155 */
156 function CreateHtml()
157 {
158 $HtmlValue = htmlspecialchars( $this->Value ) ;
159
160 $Html = '' ;
161
162 if ( !isset( $_GET ) ) {
163 global $HTTP_GET_VARS ;
164 $_GET = $HTTP_GET_VARS ;
165 }
166
167 if ( $this->IsCompatible() )
168 {
169 if ( isset( $_GET['fcksource'] ) && $_GET['fcksource'] == "true" )
170 $File = 'fckeditor.original.html' ;
171 else
172 $File = 'fckeditor.html' ;
173
174 $Link = "{$this->BasePath}editor/{$File}?InstanceName={$this->InstanceName}" ;
175
176 if ( $this->ToolbarSet != '' )
177 $Link .= "&amp;Toolbar={$this->ToolbarSet}" ;
178
179 // Render the linked hidden field.
180 $Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}\" name=\"{$this->InstanceName}\" value=\"{$HtmlValue}\" style=\"display:none\" />" ;
181
182 // Render the configurations hidden field.
183 $Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}___Config\" value=\"" . $this->GetConfigFieldString() . "\" style=\"display:none\" />" ;
184
185 // Render the editor IFRAME.
186 $Html .= "<iframe id=\"{$this->InstanceName}___Frame\" src=\"{$Link}\" width=\"{$this->Width}\" height=\"{$this->Height}\" frameborder=\"0\" scrolling=\"no\"></iframe>" ;
187 }
188 else
189 {
190 if ( strpos( $this->Width, '%' ) === false )
191 $WidthCSS = $this->Width . 'px' ;
192 else
193 $WidthCSS = $this->Width ;
194
195 if ( strpos( $this->Height, '%' ) === false )
196 $HeightCSS = $this->Height . 'px' ;
197 else
198 $HeightCSS = $this->Height ;
199
200 $Html .= "<textarea name=\"{$this->InstanceName}\" rows=\"4\" cols=\"40\" style=\"width: {$WidthCSS}; height: {$HeightCSS}\">{$HtmlValue}</textarea>" ;
201 }
202
203 return $Html ;
204 }
205
206 /**
207 * Returns true if browser is compatible with FCKeditor.
208 *
209 * @return boolean
210 */
211 function IsCompatible()
212 {
213 return FCKeditor_IsCompatibleBrowser() ;
214 }
215
216 /**
217 * Get settings from Config array as a single string.
218 *
219 * @access protected
220 * @return string
221 */
222 function GetConfigFieldString()
223 {
224 $sParams = '' ;
225 $bFirst = true ;
226
227 foreach ( $this->Config as $sKey => $sValue )
228 {
229 if ( $bFirst == false )
230 $sParams .= '&amp;' ;
231 else
232 $bFirst = false ;
233
234 if ( $sValue === true )
235 $sParams .= $this->EncodeConfig( $sKey ) . '=true' ;
236 else if ( $sValue === false )
237 $sParams .= $this->EncodeConfig( $sKey ) . '=false' ;
238 else
239 $sParams .= $this->EncodeConfig( $sKey ) . '=' . $this->EncodeConfig( $sValue ) ;
240 }
241
242 return $sParams ;
243 }
244
245 /**
246 * Encode characters that may break the configuration string
247 * generated by GetConfigFieldString().
248 *
249 * @access protected
250 * @param string $valueToEncode
251 * @return string
252 */
253 function EncodeConfig( $valueToEncode )
254 {
255 $chars = array(
256 '&' => '%26',
257 '=' => '%3D',
258 '"' => '%22' ) ;
259
260 return strtr( $valueToEncode, $chars ) ;
261 }
262 }
263