fckeditor_php4.php
上传用户:dbstep
上传日期:2022-08-06
资源大小:2803k
文件大小:6k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

ASP/ASPX

  1. <?php
  2. /*
  3.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  4.  * Copyright (C) 2003-2008 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.  * Check if browser is compatible with FCKeditor.
  29.  * Return true if is compatible.
  30.  *
  31.  * @return boolean
  32.  */
  33. function FCKeditor_IsCompatibleBrowser()
  34. {
  35. if ( isset( $_SERVER ) ) {
  36. $sAgent = $_SERVER['HTTP_USER_AGENT'] ;
  37. }
  38. else {
  39. global $HTTP_SERVER_VARS ;
  40. if ( isset( $HTTP_SERVER_VARS ) ) {
  41. $sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
  42. }
  43. else {
  44. global $HTTP_USER_AGENT ;
  45. $sAgent = $HTTP_USER_AGENT ;
  46. }
  47. }
  48. if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
  49. {
  50. $iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
  51. return ($iVersion >= 5.5) ;
  52. }
  53. else if ( strpos($sAgent, 'Gecko/') !== false )
  54. {
  55. $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
  56. return ($iVersion >= 20030210) ;
  57. }
  58. else if ( strpos($sAgent, 'Opera/') !== false )
  59. {
  60. $fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
  61. return ($fVersion >= 9.5) ;
  62. }
  63. else if ( preg_match( "|AppleWebKit/(d+)|i", $sAgent, $matches ) )
  64. {
  65. $iVersion = $matches[1] ;
  66. return ( $matches[1] >= 522 ) ;
  67. }
  68. else
  69. return false ;
  70. }
  71. class FCKeditor
  72. {
  73. /**
  74.  * Name of the FCKeditor instance.
  75.  *
  76.  * @access protected
  77.  * @var string
  78.  */
  79. var $InstanceName ;
  80. /**
  81.  * Path to FCKeditor relative to the document root.
  82.  *
  83.  * @var string
  84.  */
  85. var $BasePath ;
  86. /**
  87.  * Width of the FCKeditor.
  88.  * Examples: 100%, 600
  89.  *
  90.  * @var mixed
  91.  */
  92. var $Width ;
  93. /**
  94.  * Height of the FCKeditor.
  95.  * Examples: 400, 50%
  96.  *
  97.  * @var mixed
  98.  */
  99. var $Height ;
  100. /**
  101.  * Name of the toolbar to load.
  102.  *
  103.  * @var string
  104.  */
  105. var $ToolbarSet ;
  106. /**
  107.  * Initial value.
  108.  *
  109.  * @var string
  110.  */
  111. var $Value ;
  112. /**
  113.  * This is where additional configuration can be passed.
  114.  * Example:
  115.  * $oFCKeditor->Config['EnterMode'] = 'br';
  116.  *
  117.  * @var array
  118.  */
  119. var $Config ;
  120. /**
  121.  * Main Constructor.
  122.  * Refer to the _samples/php directory for examples.
  123.  *
  124.  * @param string $instanceName
  125.  */
  126. function FCKeditor( $instanceName )
  127. {
  128. $this->InstanceName = $instanceName ;
  129. $this->BasePath = '/fckeditor/' ;
  130. $this->Width = '100%' ;
  131. $this->Height = '200' ;
  132. $this->ToolbarSet = 'Default' ;
  133. $this->Value = '' ;
  134. $this->Config = array() ;
  135. }
  136. /**
  137.  * Display FCKeditor.
  138.  *
  139.  */
  140. function Create()
  141. {
  142. echo $this->CreateHtml() ;
  143. }
  144. /**
  145.  * Return the HTML code required to run FCKeditor.
  146.  *
  147.  * @return string
  148.  */
  149. function CreateHtml()
  150. {
  151. $HtmlValue = htmlspecialchars( $this->Value ) ;
  152. $Html = '' ;
  153. if ( !isset( $_GET ) ) {
  154. global $HTTP_GET_VARS ;
  155. $_GET = $HTTP_GET_VARS ;
  156. }
  157. if ( $this->IsCompatible() )
  158. {
  159. if ( isset( $_GET['fcksource'] ) && $_GET['fcksource'] == "true" )
  160. $File = 'fckeditor.original.html' ;
  161. else
  162. $File = 'fckeditor.html' ;
  163. $Link = "{$this->BasePath}editor/{$File}?InstanceName={$this->InstanceName}" ;
  164. if ( $this->ToolbarSet != '' )
  165. $Link .= "&amp;Toolbar={$this->ToolbarSet}" ;
  166. // Render the linked hidden field.
  167. $Html .= "<input type="hidden" id="{$this->InstanceName}" name="{$this->InstanceName}" value="{$HtmlValue}" style="display:none" />" ;
  168. // Render the configurations hidden field.
  169. $Html .= "<input type="hidden" id="{$this->InstanceName}___Config" value="" . $this->GetConfigFieldString() . "" style="display:none" />" ;
  170. // Render the editor IFRAME.
  171. $Html .= "<iframe id="{$this->InstanceName}___Frame" src="{$Link}" width="{$this->Width}" height="{$this->Height}" frameborder="0" scrolling="no"></iframe>" ;
  172. }
  173. else
  174. {
  175. if ( strpos( $this->Width, '%' ) === false )
  176. $WidthCSS = $this->Width . 'px' ;
  177. else
  178. $WidthCSS = $this->Width ;
  179. if ( strpos( $this->Height, '%' ) === false )
  180. $HeightCSS = $this->Height . 'px' ;
  181. else
  182. $HeightCSS = $this->Height ;
  183. $Html .= "<textarea name="{$this->InstanceName}" rows="4" cols="40" style="width: {$WidthCSS}; height: {$HeightCSS}">{$HtmlValue}</textarea>" ;
  184. }
  185. return $Html ;
  186. }
  187. /**
  188.  * Returns true if browser is compatible with FCKeditor.
  189.  *
  190.  * @return boolean
  191.  */
  192. function IsCompatible()
  193. {
  194. return FCKeditor_IsCompatibleBrowser() ;
  195. }
  196. /**
  197.  * Get settings from Config array as a single string.
  198.  *
  199.  * @access protected
  200.  * @return string
  201.  */
  202. function GetConfigFieldString()
  203. {
  204. $sParams = '' ;
  205. $bFirst = true ;
  206. foreach ( $this->Config as $sKey => $sValue )
  207. {
  208. if ( $bFirst == false )
  209. $sParams .= '&amp;' ;
  210. else
  211. $bFirst = false ;
  212. if ( $sValue === true )
  213. $sParams .= $this->EncodeConfig( $sKey ) . '=true' ;
  214. else if ( $sValue === false )
  215. $sParams .= $this->EncodeConfig( $sKey ) . '=false' ;
  216. else
  217. $sParams .= $this->EncodeConfig( $sKey ) . '=' . $this->EncodeConfig( $sValue ) ;
  218. }
  219. return $sParams ;
  220. }
  221. /**
  222.  * Encode characters that may break the configuration string
  223.  * generated by GetConfigFieldString().
  224.  *
  225.  * @access protected
  226.  * @param string $valueToEncode
  227.  * @return string
  228.  */
  229. function EncodeConfig( $valueToEncode )
  230. {
  231. $chars = array(
  232. '&' => '%26',
  233. '=' => '%3D',
  234. '"' => '%22' ) ;
  235. return strtr( $valueToEncode,  $chars ) ;
  236. }
  237. }