fck_image.js
上传用户:wlfwy2004
上传日期:2016-12-12
资源大小:33978k
文件大小:11k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. /*
  2.  * FCKeditor - The text editor for internet
  3.  * Copyright (C) 2003-2005 Frederico Caldeira Knabben
  4.  * 
  5.  * Licensed under the terms of the GNU Lesser General Public License:
  6.  *  http://www.opensource.org/licenses/lgpl-license.php
  7.  * 
  8.  * For further information visit:
  9.  *  http://www.fckeditor.net/
  10.  * 
  11.  * File Name: fck_image.js
  12.  *  Scripts related to the Image dialog window (see fck_image.html).
  13.  * 
  14.  * File Authors:
  15.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  16.  */
  17. var oEditor = window.parent.InnerDialogLoaded() ;
  18. var FCK = oEditor.FCK ;
  19. var FCKLang = oEditor.FCKLang ;
  20. var FCKConfig = oEditor.FCKConfig ;
  21. var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
  22. //#### Dialog Tabs
  23. // Set the dialog tabs.
  24. window.parent.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
  25. if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
  26. window.parent.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
  27. if ( FCKConfig.ImageUpload )
  28. window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
  29. if ( !FCKConfig.ImageDlgHideAdvanced )
  30. window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
  31. // Function called when a dialog tag is selected.
  32. function OnDialogTabChange( tabCode )
  33. {
  34. ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
  35. ShowE('divLink' , ( tabCode == 'Link' ) ) ;
  36. ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
  37. ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
  38. }
  39. // Get the selected image (if available).
  40. var oImage = FCK.Selection.GetSelectedElement() ;
  41. if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
  42. oImage = null ;
  43. // Get the active link.
  44. var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
  45. var oImageOriginal ;
  46. function UpdateOriginal( resetSize )
  47. {
  48. oImageOriginal = document.createElement( 'IMG' ) ; // new Image() ;
  49. if ( resetSize )
  50. {
  51. oImageOriginal.onload = function()
  52. {
  53. this.onload = null ;
  54. ResetSizes() ;
  55. }
  56. }
  57. oImageOriginal.src = GetE('imgPreview').src ;
  58. }
  59. window.onload = function()
  60. {
  61. // Translate the dialog box texts.
  62. oEditor.FCKLanguageManager.TranslatePage(document) ;
  63. GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
  64. GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
  65. // Load the selected element information (if any).
  66. LoadSelection() ;
  67. // Show/Hide the "Browse Server" button.
  68. GetE('tdBrowse').style.display = FCKConfig.ImageBrowser ? '' : 'none' ;
  69. GetE('divLnkBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
  70. UpdateOriginal() ;
  71. // Set the actual uploader URL.
  72. if ( FCKConfig.ImageUpload )
  73. GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
  74. window.parent.SetAutoSize( true ) ;
  75. // Activate the "OK" button.
  76. window.parent.SetOkButton( true ) ;
  77. }
  78. function LoadSelection()
  79. {
  80. if ( ! oImage ) return ;
  81. var sUrl = GetAttribute( oImage, 'src', '' ) ;
  82. // TODO: Wait stable version and remove the following commented lines.
  83. // if ( sUrl.startsWith( FCK.BaseUrl ) )
  84. // sUrl = sUrl.remove( 0, FCK.BaseUrl.length ) ;
  85. GetE('txtUrl').value    = sUrl ;
  86. GetE('txtAlt').value    = GetAttribute( oImage, 'alt', '' ) ;
  87. GetE('txtVSpace').value = GetAttribute( oImage, 'vspace', '' ) ;
  88. GetE('txtHSpace').value = GetAttribute( oImage, 'hspace', '' ) ;
  89. GetE('txtBorder').value = GetAttribute( oImage, 'border', '' ) ;
  90. GetE('cmbAlign').value = GetAttribute( oImage, 'align', '' ) ;
  91. if ( oImage.style.pixelWidth > 0 )
  92. GetE('txtWidth').value  = oImage.style.pixelWidth ;
  93. else
  94. GetE('txtWidth').value  = GetAttribute( oImage, "width", '' ) ;
  95. if ( oImage.style.pixelHeight > 0 )
  96. GetE('txtHeight').value  = oImage.style.pixelHeight ;
  97. else
  98. GetE('txtHeight').value = GetAttribute( oImage, "height", '' ) ;
  99. // Get Advances Attributes
  100. GetE('txtAttId').value = oImage.id ;
  101. GetE('cmbAttLangDir').value = oImage.dir ;
  102. GetE('txtAttLangCode').value = oImage.lang ;
  103. GetE('txtAttTitle').value = oImage.title ;
  104. GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;
  105. GetE('txtLongDesc').value = oImage.longDesc ;
  106. if ( oEditor.FCKBrowserInfo.IsIE )
  107. GetE('txtAttStyle').value = oImage.style.cssText ;
  108. else
  109. GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;
  110. if ( oLink )
  111. {
  112. GetE('txtLnkUrl').value = oLink.getAttribute('href',2) ;
  113. GetE('cmbLnkTarget').value = oLink.target ;
  114. }
  115. UpdatePreview() ;
  116. }
  117. //#### The OK button was hit.
  118. function Ok()
  119. {
  120. if ( GetE('txtUrl').value.length == 0 )
  121. {
  122. window.parent.SetSelectedTab( 'Info' ) ;
  123. GetE('txtUrl').focus() ;
  124. alert( FCKLang.DlgImgAlertUrl ) ;
  125. return false ;
  126. }
  127. var bHasImage = ( oImage != null ) ;
  128. if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )
  129. {
  130. if ( confirm( 'Do you want to transform the selected image on a image button?' ) )
  131. oImage = null ;
  132. }
  133. else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )
  134. {
  135. if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )
  136. oImage = null ;
  137. }
  138. if ( !bHasImage )
  139. {
  140. if ( bImageButton )
  141. {
  142. oImage = FCK.EditorDocument.createElement( 'INPUT' ) ;
  143. oImage.type = 'image' ;
  144. oImage = FCK.InsertElementAndGetIt( oImage ) ;
  145. }
  146. else
  147. oImage = FCK.CreateElement( 'IMG' ) ;
  148. }
  149. else
  150. oEditor.FCKUndo.SaveUndoStep() ;
  151. UpdateImage( oImage ) ;
  152. var sLnkUrl = GetE('txtLnkUrl').value.trim() ;
  153. if ( sLnkUrl.length == 0 )
  154. {
  155. if ( oLink )
  156. FCK.ExecuteNamedCommand( 'Unlink' ) ;
  157. }
  158. else
  159. {
  160. if ( oLink ) // Modifying an existent link.
  161. oLink.href = sLnkUrl ;
  162. else // Creating a new link.
  163. {
  164. if ( !bHasImage )
  165. oEditor.FCKSelection.SelectNode( oImage ) ;
  166. oLink = oEditor.FCK.CreateLink( sLnkUrl ) ;
  167. if ( !bHasImage )
  168. {
  169. oEditor.FCKSelection.SelectNode( oLink ) ;
  170. oEditor.FCKSelection.Collapse( false ) ;
  171. }
  172. }
  173. SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
  174. }
  175. return true ;
  176. }
  177. function UpdateImage( e, skipId )
  178. {
  179. e.src = GetE('txtUrl').value ;
  180. SetAttribute( e, "alt"   , GetE('txtAlt').value ) ;
  181. SetAttribute( e, "width" , GetE('txtWidth').value ) ;
  182. SetAttribute( e, "height", GetE('txtHeight').value ) ;
  183. SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
  184. SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
  185. SetAttribute( e, "border", GetE('txtBorder').value ) ;
  186. SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
  187. // Advances Attributes
  188. if ( ! skipId )
  189. SetAttribute( e, 'id', GetE('txtAttId').value ) ;
  190. SetAttribute( e, 'dir' , GetE('cmbAttLangDir').value ) ;
  191. SetAttribute( e, 'lang' , GetE('txtAttLangCode').value ) ;
  192. SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
  193. SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ;
  194. SetAttribute( e, 'longDesc' , GetE('txtLongDesc').value ) ;
  195. if ( oEditor.FCKBrowserInfo.IsIE )
  196. e.style.cssText = GetE('txtAttStyle').value ;
  197. else
  198. SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
  199. }
  200. function UpdatePreview()
  201. {
  202. if ( GetE('txtUrl').value.length == 0 )
  203. GetE('lnkPreview').style.display = 'none' ;
  204. else
  205. {
  206. UpdateImage( GetE('imgPreview'), true ) ;
  207. if ( GetE('txtLnkUrl').value.trim().length > 0 )
  208. GetE('lnkPreview').href = 'javascript:void(null);' ;
  209. else
  210. SetAttribute( GetE('lnkPreview'), 'href', '' ) ;
  211. GetE('lnkPreview').style.display = '' ;
  212. }
  213. }
  214. var bLockRatio = true ;
  215. function SwitchLock( lockButton )
  216. {
  217. bLockRatio = !bLockRatio ;
  218. lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
  219. lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
  220. if ( bLockRatio )
  221. {
  222. if ( GetE('txtWidth').value.length > 0 )
  223. OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
  224. else
  225. OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
  226. }
  227. }
  228. // Fired when the width or height input texts change
  229. function OnSizeChanged( dimension, value )
  230. {
  231. // Verifies if the aspect ration has to be mantained
  232. if ( oImageOriginal && bLockRatio )
  233. {
  234. if ( value.length == 0 || isNaN( value ) )
  235. {
  236. GetE('txtHeight').value = GetE('txtWidth').value = '' ;
  237. return ;
  238. }
  239. if ( dimension == 'Width' )
  240. GetE('txtHeight').value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value  / oImageOriginal.width ) ) ;
  241. else
  242. GetE('txtWidth').value  = value == 0 ? 0 : Math.round( oImageOriginal.width  * ( value / oImageOriginal.height ) ) ;
  243. }
  244. UpdatePreview() ;
  245. }
  246. // Fired when the Reset Size button is clicked
  247. function ResetSizes()
  248. {
  249. if ( ! oImageOriginal ) return ;
  250. GetE('txtWidth').value  = oImageOriginal.width ;
  251. GetE('txtHeight').value = oImageOriginal.height ;
  252. UpdatePreview() ;
  253. }
  254. function BrowseServer()
  255. {
  256. OpenServerBrowser(
  257. 'Image',
  258. FCKConfig.ImageBrowserURL,
  259. FCKConfig.ImageBrowserWindowWidth,
  260. FCKConfig.ImageBrowserWindowHeight ) ;
  261. }
  262. function LnkBrowseServer()
  263. {
  264. OpenServerBrowser(
  265. 'Link',
  266. FCKConfig.LinkBrowserURL,
  267. FCKConfig.LinkBrowserWindowWidth,
  268. FCKConfig.LinkBrowserWindowHeight ) ;
  269. }
  270. function OpenServerBrowser( type, url, width, height )
  271. {
  272. sActualBrowser = type ;
  273. var iLeft = (screen.width  - width) / 2 ;
  274. var iTop  = (screen.height - height) / 2 ;
  275. var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes" ;
  276. sOptions += ",width=" + width ;
  277. sOptions += ",height=" + height ;
  278. sOptions += ",left=" + iLeft ;
  279. sOptions += ",top=" + iTop ;
  280. var oWindow = window.open( url, "FCKBrowseWindow", sOptions ) ;
  281. }
  282. var sActualBrowser ;
  283. function SetUrl( url, width, height, alt )
  284. {
  285. if ( sActualBrowser == 'Link' )
  286. {
  287. GetE('txtLnkUrl').value = url ;
  288. UpdatePreview() ;
  289. }
  290. else
  291. {
  292. GetE('txtUrl').value = url ;
  293. GetE('txtWidth').value = width ? width : '' ;
  294. GetE('txtHeight').value = height ? height : '' ;
  295. if ( alt )
  296. GetE('txtAlt').value = alt;
  297. UpdatePreview() ;
  298. UpdateOriginal( true ) ;
  299. }
  300. window.parent.SetSelectedTab( 'Info' ) ;
  301. }
  302. function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
  303. {
  304. switch ( errorNumber )
  305. {
  306. case 0 : // No errors
  307. alert( 'Your file has been successfully uploaded' ) ;
  308. break ;
  309. case 1 : // Custom error
  310. alert( customMsg ) ;
  311. return ;
  312. case 101 : // Custom warning
  313. alert( customMsg ) ;
  314. break ;
  315. case 201 :
  316. alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
  317. break ;
  318. case 202 :
  319. alert( 'Invalid file type' ) ;
  320. return ;
  321. case 203 :
  322. alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
  323. return ;
  324. default :
  325. alert( 'Error on file upload. Error number: ' + errorNumber ) ;
  326. return ;
  327. }
  328. sActualBrowser = ''
  329. SetUrl( fileUrl ) ;
  330. GetE('frmUpload').reset() ;
  331. }
  332. var oUploadAllowedExtRegex = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
  333. var oUploadDeniedExtRegex = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
  334. function CheckUpload()
  335. {
  336. var sFile = GetE('txtUploadFile').value ;
  337. if ( sFile.length == 0 )
  338. {
  339. alert( 'Please select a file to upload' ) ;
  340. return false ;
  341. }
  342. if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
  343. ( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
  344. {
  345. OnUploadCompleted( 202 ) ;
  346. return false ;
  347. }
  348. return true ;
  349. }