bcms_content_syncing 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (657) hide show
  1. data/{README → README.markdown} +5 -0
  2. metadata +6 -661
  3. data/.gitignore +0 -13
  4. data/COPYRIGHT.txt +0 -23
  5. data/GPL.txt +0 -674
  6. data/Rakefile +0 -34
  7. data/VERSION +0 -1
  8. data/bcms_content_syncing.gemspec +0 -710
  9. data/config/boot.rb +0 -110
  10. data/config/database.yml +0 -22
  11. data/config/environment.rb +0 -42
  12. data/config/environments/development.rb +0 -18
  13. data/config/environments/production.rb +0 -31
  14. data/config/environments/test.rb +0 -29
  15. data/config/initializers/backtrace_silencers.rb +0 -7
  16. data/config/initializers/inflections.rb +0 -10
  17. data/config/initializers/init_module.rb +0 -1
  18. data/config/initializers/mime_types.rb +0 -5
  19. data/config/initializers/new_rails_defaults.rb +0 -21
  20. data/config/initializers/session_store.rb +0 -15
  21. data/config/locales/en.yml +0 -5
  22. data/config/routes.rb +0 -45
  23. data/db/seeds.rb +0 -7
  24. data/doc/README_FOR_APP +0 -2
  25. data/public/404.html +0 -30
  26. data/public/422.html +0 -30
  27. data/public/500.html +0 -30
  28. data/public/bcms/ckeditor/ckeditor.js +0 -108
  29. data/public/bcms/ckeditor/config.js +0 -18
  30. data/public/bcms/ckeditor/core/_bootstrap.js +0 -64
  31. data/public/bcms/ckeditor/core/ajax.js +0 -143
  32. data/public/bcms/ckeditor/core/ckeditor.js +0 -96
  33. data/public/bcms/ckeditor/core/ckeditor_base.js +0 -190
  34. data/public/bcms/ckeditor/core/ckeditor_basic.js +0 -241
  35. data/public/bcms/ckeditor/core/command.js +0 -70
  36. data/public/bcms/ckeditor/core/commanddefinition.js +0 -72
  37. data/public/bcms/ckeditor/core/config.js +0 -287
  38. data/public/bcms/ckeditor/core/dom.js +0 -21
  39. data/public/bcms/ckeditor/core/dom/document.js +0 -210
  40. data/public/bcms/ckeditor/core/dom/documentfragment.js +0 -49
  41. data/public/bcms/ckeditor/core/dom/domobject.js +0 -204
  42. data/public/bcms/ckeditor/core/dom/element.js +0 -1384
  43. data/public/bcms/ckeditor/core/dom/elementpath.js +0 -104
  44. data/public/bcms/ckeditor/core/dom/event.js +0 -137
  45. data/public/bcms/ckeditor/core/dom/node.js +0 -649
  46. data/public/bcms/ckeditor/core/dom/nodelist.js +0 -23
  47. data/public/bcms/ckeditor/core/dom/range.js +0 -1668
  48. data/public/bcms/ckeditor/core/dom/text.js +0 -123
  49. data/public/bcms/ckeditor/core/dom/walker.js +0 -411
  50. data/public/bcms/ckeditor/core/dom/window.js +0 -96
  51. data/public/bcms/ckeditor/core/dtd.js +0 -200
  52. data/public/bcms/ckeditor/core/editor.js +0 -650
  53. data/public/bcms/ckeditor/core/editor_basic.js +0 -178
  54. data/public/bcms/ckeditor/core/env.js +0 -219
  55. data/public/bcms/ckeditor/core/event.js +0 -335
  56. data/public/bcms/ckeditor/core/eventInfo.js +0 -120
  57. data/public/bcms/ckeditor/core/focusmanager.js +0 -123
  58. data/public/bcms/ckeditor/core/htmlparser.js +0 -212
  59. data/public/bcms/ckeditor/core/htmlparser/basicwriter.js +0 -140
  60. data/public/bcms/ckeditor/core/htmlparser/cdata.js +0 -44
  61. data/public/bcms/ckeditor/core/htmlparser/comment.js +0 -59
  62. data/public/bcms/ckeditor/core/htmlparser/element.js +0 -196
  63. data/public/bcms/ckeditor/core/htmlparser/filter.js +0 -233
  64. data/public/bcms/ckeditor/core/htmlparser/fragment.js +0 -434
  65. data/public/bcms/ckeditor/core/htmlparser/text.js +0 -55
  66. data/public/bcms/ckeditor/core/imagecacher.js +0 -58
  67. data/public/bcms/ckeditor/core/lang.js +0 -147
  68. data/public/bcms/ckeditor/core/loader.js +0 -238
  69. data/public/bcms/ckeditor/core/plugindefinition.js +0 -66
  70. data/public/bcms/ckeditor/core/plugins.js +0 -82
  71. data/public/bcms/ckeditor/core/resourcemanager.js +0 -233
  72. data/public/bcms/ckeditor/core/scriptloader.js +0 -194
  73. data/public/bcms/ckeditor/core/skins.js +0 -185
  74. data/public/bcms/ckeditor/core/test.js +0 -184
  75. data/public/bcms/ckeditor/core/themes.js +0 -18
  76. data/public/bcms/ckeditor/core/tools.js +0 -531
  77. data/public/bcms/ckeditor/core/ui.js +0 -106
  78. data/public/bcms/ckeditor/core/xml.js +0 -165
  79. data/public/bcms/ckeditor/editor.js +0 -51
  80. data/public/bcms/ckeditor/lang/_languages.js +0 -82
  81. data/public/bcms/ckeditor/lang/_translationstatus.txt +0 -59
  82. data/public/bcms/ckeditor/lang/af.js +0 -674
  83. data/public/bcms/ckeditor/lang/ar.js +0 -674
  84. data/public/bcms/ckeditor/lang/bg.js +0 -674
  85. data/public/bcms/ckeditor/lang/bn.js +0 -674
  86. data/public/bcms/ckeditor/lang/bs.js +0 -674
  87. data/public/bcms/ckeditor/lang/ca.js +0 -674
  88. data/public/bcms/ckeditor/lang/cs.js +0 -674
  89. data/public/bcms/ckeditor/lang/da.js +0 -674
  90. data/public/bcms/ckeditor/lang/de.js +0 -674
  91. data/public/bcms/ckeditor/lang/el.js +0 -674
  92. data/public/bcms/ckeditor/lang/en-au.js +0 -674
  93. data/public/bcms/ckeditor/lang/en-ca.js +0 -674
  94. data/public/bcms/ckeditor/lang/en-uk.js +0 -674
  95. data/public/bcms/ckeditor/lang/en.js +0 -674
  96. data/public/bcms/ckeditor/lang/eo.js +0 -674
  97. data/public/bcms/ckeditor/lang/es.js +0 -674
  98. data/public/bcms/ckeditor/lang/et.js +0 -674
  99. data/public/bcms/ckeditor/lang/eu.js +0 -674
  100. data/public/bcms/ckeditor/lang/fa.js +0 -674
  101. data/public/bcms/ckeditor/lang/fi.js +0 -674
  102. data/public/bcms/ckeditor/lang/fo.js +0 -674
  103. data/public/bcms/ckeditor/lang/fr-ca.js +0 -674
  104. data/public/bcms/ckeditor/lang/fr.js +0 -674
  105. data/public/bcms/ckeditor/lang/gl.js +0 -674
  106. data/public/bcms/ckeditor/lang/gu.js +0 -674
  107. data/public/bcms/ckeditor/lang/he.js +0 -674
  108. data/public/bcms/ckeditor/lang/hi.js +0 -674
  109. data/public/bcms/ckeditor/lang/hr.js +0 -674
  110. data/public/bcms/ckeditor/lang/hu.js +0 -674
  111. data/public/bcms/ckeditor/lang/is.js +0 -674
  112. data/public/bcms/ckeditor/lang/it.js +0 -674
  113. data/public/bcms/ckeditor/lang/ja.js +0 -674
  114. data/public/bcms/ckeditor/lang/km.js +0 -674
  115. data/public/bcms/ckeditor/lang/ko.js +0 -674
  116. data/public/bcms/ckeditor/lang/lt.js +0 -674
  117. data/public/bcms/ckeditor/lang/lv.js +0 -674
  118. data/public/bcms/ckeditor/lang/mn.js +0 -674
  119. data/public/bcms/ckeditor/lang/ms.js +0 -674
  120. data/public/bcms/ckeditor/lang/nb.js +0 -674
  121. data/public/bcms/ckeditor/lang/nl.js +0 -674
  122. data/public/bcms/ckeditor/lang/no.js +0 -674
  123. data/public/bcms/ckeditor/lang/pl.js +0 -674
  124. data/public/bcms/ckeditor/lang/pt-br.js +0 -674
  125. data/public/bcms/ckeditor/lang/pt.js +0 -674
  126. data/public/bcms/ckeditor/lang/ro.js +0 -674
  127. data/public/bcms/ckeditor/lang/ru.js +0 -674
  128. data/public/bcms/ckeditor/lang/sk.js +0 -674
  129. data/public/bcms/ckeditor/lang/sl.js +0 -674
  130. data/public/bcms/ckeditor/lang/sr-latn.js +0 -674
  131. data/public/bcms/ckeditor/lang/sr.js +0 -674
  132. data/public/bcms/ckeditor/lang/sv.js +0 -674
  133. data/public/bcms/ckeditor/lang/th.js +0 -674
  134. data/public/bcms/ckeditor/lang/tr.js +0 -674
  135. data/public/bcms/ckeditor/lang/uk.js +0 -674
  136. data/public/bcms/ckeditor/lang/vi.js +0 -674
  137. data/public/bcms/ckeditor/lang/zh-cn.js +0 -674
  138. data/public/bcms/ckeditor/lang/zh.js +0 -674
  139. data/public/bcms/ckeditor/plugins/about/dialogs/about.js +0 -73
  140. data/public/bcms/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  141. data/public/bcms/ckeditor/plugins/about/plugin.js +0 -22
  142. data/public/bcms/ckeditor/plugins/basicstyles/plugin.js +0 -50
  143. data/public/bcms/ckeditor/plugins/blockquote/plugin.js +0 -301
  144. data/public/bcms/ckeditor/plugins/button/plugin.js +0 -264
  145. data/public/bcms/ckeditor/plugins/clipboard/dialogs/paste.js +0 -167
  146. data/public/bcms/ckeditor/plugins/clipboard/plugin.js +0 -208
  147. data/public/bcms/ckeditor/plugins/colorbutton/plugin.js +0 -202
  148. data/public/bcms/ckeditor/plugins/contextmenu/plugin.js +0 -178
  149. data/public/bcms/ckeditor/plugins/dialog/dialogDefinition.js +0 -315
  150. data/public/bcms/ckeditor/plugins/dialog/plugin.js +0 -2742
  151. data/public/bcms/ckeditor/plugins/dialogui/plugin.js +0 -1319
  152. data/public/bcms/ckeditor/plugins/domiterator/plugin.js +0 -354
  153. data/public/bcms/ckeditor/plugins/editingblock/plugin.js +0 -236
  154. data/public/bcms/ckeditor/plugins/elementspath/plugin.js +0 -182
  155. data/public/bcms/ckeditor/plugins/enterkey/plugin.js +0 -324
  156. data/public/bcms/ckeditor/plugins/entities/plugin.js +0 -200
  157. data/public/bcms/ckeditor/plugins/fakeobjects/plugin.js +0 -111
  158. data/public/bcms/ckeditor/plugins/filebrowser/plugin.js +0 -383
  159. data/public/bcms/ckeditor/plugins/find/dialogs/find.js +0 -843
  160. data/public/bcms/ckeditor/plugins/find/plugin.js +0 -46
  161. data/public/bcms/ckeditor/plugins/flash/dialogs/flash.js +0 -682
  162. data/public/bcms/ckeditor/plugins/flash/images/placeholder.png +0 -0
  163. data/public/bcms/ckeditor/plugins/flash/plugin.js +0 -165
  164. data/public/bcms/ckeditor/plugins/floatpanel/plugin.js +0 -325
  165. data/public/bcms/ckeditor/plugins/font/plugin.js +0 -227
  166. data/public/bcms/ckeditor/plugins/format/plugin.js +0 -191
  167. data/public/bcms/ckeditor/plugins/forms/dialogs/button.js +0 -135
  168. data/public/bcms/ckeditor/plugins/forms/dialogs/checkbox.js +0 -138
  169. data/public/bcms/ckeditor/plugins/forms/dialogs/form.js +0 -177
  170. data/public/bcms/ckeditor/plugins/forms/dialogs/hiddenfield.js +0 -91
  171. data/public/bcms/ckeditor/plugins/forms/dialogs/radio.js +0 -135
  172. data/public/bcms/ckeditor/plugins/forms/dialogs/select.js +0 -541
  173. data/public/bcms/ckeditor/plugins/forms/dialogs/textarea.js +0 -114
  174. data/public/bcms/ckeditor/plugins/forms/dialogs/textfield.js +0 -193
  175. data/public/bcms/ckeditor/plugins/forms/plugin.js +0 -193
  176. data/public/bcms/ckeditor/plugins/horizontalrule/plugin.js +0 -35
  177. data/public/bcms/ckeditor/plugins/htmldataprocessor/plugin.js +0 -373
  178. data/public/bcms/ckeditor/plugins/htmlwriter/plugin.js +0 -289
  179. data/public/bcms/ckeditor/plugins/iframedialog/plugin.js +0 -136
  180. data/public/bcms/ckeditor/plugins/image/dialogs/image.js +0 -1225
  181. data/public/bcms/ckeditor/plugins/image/plugin.js +0 -64
  182. data/public/bcms/ckeditor/plugins/indent/plugin.js +0 -323
  183. data/public/bcms/ckeditor/plugins/justify/plugin.js +0 -164
  184. data/public/bcms/ckeditor/plugins/keystrokes/plugin.js +0 -217
  185. data/public/bcms/ckeditor/plugins/link/dialogs/anchor.js +0 -98
  186. data/public/bcms/ckeditor/plugins/link/dialogs/link.js +0 -1217
  187. data/public/bcms/ckeditor/plugins/link/images/anchor.gif +0 -0
  188. data/public/bcms/ckeditor/plugins/link/plugin.js +0 -188
  189. data/public/bcms/ckeditor/plugins/list/plugin.js +0 -570
  190. data/public/bcms/ckeditor/plugins/listblock/plugin.js +0 -231
  191. data/public/bcms/ckeditor/plugins/maximize/plugin.js +0 -267
  192. data/public/bcms/ckeditor/plugins/menu/plugin.js +0 -377
  193. data/public/bcms/ckeditor/plugins/menubutton/plugin.js +0 -93
  194. data/public/bcms/ckeditor/plugins/newpage/plugin.js +0 -65
  195. data/public/bcms/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  196. data/public/bcms/ckeditor/plugins/pagebreak/plugin.js +0 -96
  197. data/public/bcms/ckeditor/plugins/panel/plugin.js +0 -330
  198. data/public/bcms/ckeditor/plugins/panelbutton/plugin.js +0 -140
  199. data/public/bcms/ckeditor/plugins/pastefromword/dialogs/pastefromword.js +0 -307
  200. data/public/bcms/ckeditor/plugins/pastefromword/plugin.js +0 -54
  201. data/public/bcms/ckeditor/plugins/pastetext/dialogs/pastetext.js +0 -65
  202. data/public/bcms/ckeditor/plugins/pastetext/plugin.js +0 -142
  203. data/public/bcms/ckeditor/plugins/popup/plugin.js +0 -62
  204. data/public/bcms/ckeditor/plugins/preview/plugin.js +0 -97
  205. data/public/bcms/ckeditor/plugins/print/plugin.js +0 -41
  206. data/public/bcms/ckeditor/plugins/removeformat/plugin.js +0 -132
  207. data/public/bcms/ckeditor/plugins/resize/plugin.js +0 -115
  208. data/public/bcms/ckeditor/plugins/richcombo/plugin.js +0 -357
  209. data/public/bcms/ckeditor/plugins/save/plugin.js +0 -55
  210. data/public/bcms/ckeditor/plugins/scayt/dialogs/options.js +0 -494
  211. data/public/bcms/ckeditor/plugins/scayt/dialogs/toolbar.css +0 -71
  212. data/public/bcms/ckeditor/plugins/scayt/plugin.js +0 -511
  213. data/public/bcms/ckeditor/plugins/selection/plugin.js +0 -1072
  214. data/public/bcms/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  215. data/public/bcms/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  216. data/public/bcms/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  217. data/public/bcms/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  218. data/public/bcms/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  219. data/public/bcms/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  220. data/public/bcms/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  221. data/public/bcms/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  222. data/public/bcms/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  223. data/public/bcms/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  224. data/public/bcms/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  225. data/public/bcms/ckeditor/plugins/showblocks/plugin.js +0 -153
  226. data/public/bcms/ckeditor/plugins/smiley/dialogs/smiley.js +0 -219
  227. data/public/bcms/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  228. data/public/bcms/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  229. data/public/bcms/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  230. data/public/bcms/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  231. data/public/bcms/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  232. data/public/bcms/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  233. data/public/bcms/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  234. data/public/bcms/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  235. data/public/bcms/ckeditor/plugins/smiley/images/heart.gif +0 -0
  236. data/public/bcms/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  237. data/public/bcms/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  238. data/public/bcms/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  239. data/public/bcms/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  240. data/public/bcms/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  241. data/public/bcms/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  242. data/public/bcms/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  243. data/public/bcms/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  244. data/public/bcms/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  245. data/public/bcms/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  246. data/public/bcms/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  247. data/public/bcms/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  248. data/public/bcms/ckeditor/plugins/smiley/plugin.js +0 -74
  249. data/public/bcms/ckeditor/plugins/sourcearea/plugin.js +0 -185
  250. data/public/bcms/ckeditor/plugins/specialchar/dialogs/specialchar.js +0 -362
  251. data/public/bcms/ckeditor/plugins/specialchar/plugin.js +0 -29
  252. data/public/bcms/ckeditor/plugins/styles/plugin.js +0 -1242
  253. data/public/bcms/ckeditor/plugins/stylescombo/plugin.js +0 -295
  254. data/public/bcms/ckeditor/plugins/stylescombo/styles/default.js +0 -85
  255. data/public/bcms/ckeditor/plugins/tab/plugin.js +0 -266
  256. data/public/bcms/ckeditor/plugins/table/dialogs/table.js +0 -550
  257. data/public/bcms/ckeditor/plugins/table/plugin.js +0 -70
  258. data/public/bcms/ckeditor/plugins/tabletools/dialogs/tableCell.js +0 -328
  259. data/public/bcms/ckeditor/plugins/tabletools/plugin.js +0 -701
  260. data/public/bcms/ckeditor/plugins/templates/dialogs/templates.js +0 -170
  261. data/public/bcms/ckeditor/plugins/templates/plugin.js +0 -99
  262. data/public/bcms/ckeditor/plugins/templates/templates/default.js +0 -94
  263. data/public/bcms/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  264. data/public/bcms/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  265. data/public/bcms/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  266. data/public/bcms/ckeditor/plugins/toolbar/plugin.js +0 -412
  267. data/public/bcms/ckeditor/plugins/uicolor/dialogs/uicolor.js +0 -203
  268. data/public/bcms/ckeditor/plugins/uicolor/lang/en.js +0 -15
  269. data/public/bcms/ckeditor/plugins/uicolor/plugin.js +0 -35
  270. data/public/bcms/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  271. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  272. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  273. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  274. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  275. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/yui.css +0 -15
  276. data/public/bcms/ckeditor/plugins/uicolor/yui/yui.js +0 -71
  277. data/public/bcms/ckeditor/plugins/undo/plugin.js +0 -490
  278. data/public/bcms/ckeditor/plugins/wsc/dialogs/ciframe.html +0 -49
  279. data/public/bcms/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +0 -52
  280. data/public/bcms/ckeditor/plugins/wsc/dialogs/wsc.css +0 -83
  281. data/public/bcms/ckeditor/plugins/wsc/dialogs/wsc.js +0 -169
  282. data/public/bcms/ckeditor/plugins/wsc/plugin.js +0 -32
  283. data/public/bcms/ckeditor/plugins/wysiwygarea/plugin.js +0 -636
  284. data/public/bcms/ckeditor/skins/kama/dialog.css +0 -742
  285. data/public/bcms/ckeditor/skins/kama/editor.css +0 -21
  286. data/public/bcms/ckeditor/skins/kama/elementspath.css +0 -68
  287. data/public/bcms/ckeditor/skins/kama/icons.css +0 -309
  288. data/public/bcms/ckeditor/skins/kama/icons.png +0 -0
  289. data/public/bcms/ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  290. data/public/bcms/ckeditor/skins/kama/images/dialog_sides.png +0 -0
  291. data/public/bcms/ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  292. data/public/bcms/ckeditor/skins/kama/images/mini.gif +0 -0
  293. data/public/bcms/ckeditor/skins/kama/images/noimage.png +0 -0
  294. data/public/bcms/ckeditor/skins/kama/images/sprites.png +0 -0
  295. data/public/bcms/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  296. data/public/bcms/ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  297. data/public/bcms/ckeditor/skins/kama/mainui.css +0 -139
  298. data/public/bcms/ckeditor/skins/kama/menu.css +0 -179
  299. data/public/bcms/ckeditor/skins/kama/panel.css +0 -203
  300. data/public/bcms/ckeditor/skins/kama/presets.css +0 -49
  301. data/public/bcms/ckeditor/skins/kama/reset.css +0 -78
  302. data/public/bcms/ckeditor/skins/kama/richcombo.css +0 -260
  303. data/public/bcms/ckeditor/skins/kama/skin.js +0 -291
  304. data/public/bcms/ckeditor/skins/kama/templates.css +0 -71
  305. data/public/bcms/ckeditor/skins/kama/toolbar.css +0 -384
  306. data/public/bcms/ckeditor/skins/office2003/dialog.css +0 -643
  307. data/public/bcms/ckeditor/skins/office2003/editor.css +0 -21
  308. data/public/bcms/ckeditor/skins/office2003/elementspath.css +0 -68
  309. data/public/bcms/ckeditor/skins/office2003/icons.css +0 -309
  310. data/public/bcms/ckeditor/skins/office2003/icons.png +0 -0
  311. data/public/bcms/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  312. data/public/bcms/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  313. data/public/bcms/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  314. data/public/bcms/ckeditor/skins/office2003/images/mini.gif +0 -0
  315. data/public/bcms/ckeditor/skins/office2003/images/noimage.png +0 -0
  316. data/public/bcms/ckeditor/skins/office2003/images/sprites.png +0 -0
  317. data/public/bcms/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  318. data/public/bcms/ckeditor/skins/office2003/mainui.css +0 -97
  319. data/public/bcms/ckeditor/skins/office2003/menu.css +0 -175
  320. data/public/bcms/ckeditor/skins/office2003/panel.css +0 -198
  321. data/public/bcms/ckeditor/skins/office2003/presets.css +0 -49
  322. data/public/bcms/ckeditor/skins/office2003/reset.css +0 -78
  323. data/public/bcms/ckeditor/skins/office2003/richcombo.css +0 -279
  324. data/public/bcms/ckeditor/skins/office2003/skin.js +0 -77
  325. data/public/bcms/ckeditor/skins/office2003/templates.css +0 -71
  326. data/public/bcms/ckeditor/skins/office2003/toolbar.css +0 -442
  327. data/public/bcms/ckeditor/skins/v2/dialog.css +0 -653
  328. data/public/bcms/ckeditor/skins/v2/editor.css +0 -21
  329. data/public/bcms/ckeditor/skins/v2/elementspath.css +0 -68
  330. data/public/bcms/ckeditor/skins/v2/icons.css +0 -309
  331. data/public/bcms/ckeditor/skins/v2/icons.png +0 -0
  332. data/public/bcms/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  333. data/public/bcms/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  334. data/public/bcms/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  335. data/public/bcms/ckeditor/skins/v2/images/mini.gif +0 -0
  336. data/public/bcms/ckeditor/skins/v2/images/noimage.png +0 -0
  337. data/public/bcms/ckeditor/skins/v2/images/sprites.png +0 -0
  338. data/public/bcms/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  339. data/public/bcms/ckeditor/skins/v2/images/toolbar_start.gif +0 -0
  340. data/public/bcms/ckeditor/skins/v2/mainui.css +0 -112
  341. data/public/bcms/ckeditor/skins/v2/menu.css +0 -178
  342. data/public/bcms/ckeditor/skins/v2/panel.css +0 -198
  343. data/public/bcms/ckeditor/skins/v2/presets.css +0 -50
  344. data/public/bcms/ckeditor/skins/v2/reset.css +0 -78
  345. data/public/bcms/ckeditor/skins/v2/richcombo.css +0 -275
  346. data/public/bcms/ckeditor/skins/v2/skin.js +0 -73
  347. data/public/bcms/ckeditor/skins/v2/templates.css +0 -71
  348. data/public/bcms/ckeditor/skins/v2/toolbar.css +0 -399
  349. data/public/bcms/ckeditor/tests/_assets/sample.css +0 -4
  350. data/public/bcms/ckeditor/tests/_assets/sample.js +0 -1
  351. data/public/bcms/ckeditor/tests/_assets/sample.txt +0 -1
  352. data/public/bcms/ckeditor/tests/_assets/sample.xml +0 -5
  353. data/public/bcms/ckeditor/tests/_assets/sample_xml.txt +0 -5
  354. data/public/bcms/ckeditor/tests/core/_editor/custom_config_1.js +0 -10
  355. data/public/bcms/ckeditor/tests/core/_editor/custom_config_2.js +0 -9
  356. data/public/bcms/ckeditor/tests/core/ajax.html +0 -163
  357. data/public/bcms/ckeditor/tests/core/bootstrap.html +0 -66
  358. data/public/bcms/ckeditor/tests/core/ckeditor.html +0 -160
  359. data/public/bcms/ckeditor/tests/core/dom/document.html +0 -126
  360. data/public/bcms/ckeditor/tests/core/dom/documentfragment.html +0 -292
  361. data/public/bcms/ckeditor/tests/core/dom/element.html +0 -637
  362. data/public/bcms/ckeditor/tests/core/dom/node.html +0 -164
  363. data/public/bcms/ckeditor/tests/core/dom/range.html +0 -2411
  364. data/public/bcms/ckeditor/tests/core/dom/text.html +0 -128
  365. data/public/bcms/ckeditor/tests/core/dom/walker.html +0 -340
  366. data/public/bcms/ckeditor/tests/core/dom/window.html +0 -53
  367. data/public/bcms/ckeditor/tests/core/editor.html +0 -123
  368. data/public/bcms/ckeditor/tests/core/env.html +0 -52
  369. data/public/bcms/ckeditor/tests/core/event.html +0 -487
  370. data/public/bcms/ckeditor/tests/core/htmlparser/fragment.html +0 -188
  371. data/public/bcms/ckeditor/tests/core/htmlparser/htmlparser.html +0 -91
  372. data/public/bcms/ckeditor/tests/core/plugins.html +0 -45
  373. data/public/bcms/ckeditor/tests/core/plugins/myplugins/sample/my_plugin.js +0 -3
  374. data/public/bcms/ckeditor/tests/core/scriptloader.html +0 -52
  375. data/public/bcms/ckeditor/tests/core/tools.html +0 -170
  376. data/public/bcms/ckeditor/tests/core/xml.html +0 -150
  377. data/public/bcms/ckeditor/tests/plugins/domiterator/domiterator.html +0 -236
  378. data/public/bcms/ckeditor/tests/plugins/htmldataprocessor/htmldataprocessor.html +0 -386
  379. data/public/bcms/ckeditor/tests/plugins/link/link.html +0 -123
  380. data/public/bcms/ckeditor/tests/plugins/list/list.html +0 -217
  381. data/public/bcms/ckeditor/tests/plugins/selection/selection.html +0 -49
  382. data/public/bcms/ckeditor/tests/plugins/styles/styles.html +0 -596
  383. data/public/bcms/ckeditor/tests/test.css +0 -81
  384. data/public/bcms/ckeditor/tests/test.js +0 -93
  385. data/public/bcms/ckeditor/tests/testall.html +0 -114
  386. data/public/bcms/ckeditor/tests/yuitest.js +0 -75
  387. data/public/bcms/ckeditor/themes/default/theme.js +0 -232
  388. data/public/bcms/content_syncing/README +0 -1
  389. data/public/favicon.ico +0 -0
  390. data/public/images/cms/administration/user_browser_bg.gif +0 -0
  391. data/public/images/cms/bg.png +0 -0
  392. data/public/images/cms/bl_curve.png +0 -0
  393. data/public/images/cms/bottom_cap.png +0 -0
  394. data/public/images/cms/bottom_cap_content.png +0 -0
  395. data/public/images/cms/browse.gif +0 -0
  396. data/public/images/cms/browser_media_logo.png +0 -0
  397. data/public/images/cms/browsercms_logo.png +0 -0
  398. data/public/images/cms/buttons/button.png +0 -0
  399. data/public/images/cms/buttons/button_bg.png +0 -0
  400. data/public/images/cms/buttons/button_cap.png +0 -0
  401. data/public/images/cms/buttons/button_cap_h.png +0 -0
  402. data/public/images/cms/buttons/button_cap_off.gif +0 -0
  403. data/public/images/cms/buttons/button_cap_off_middle.gif +0 -0
  404. data/public/images/cms/buttons/button_h.png +0 -0
  405. data/public/images/cms/buttons/button_left_bg.png +0 -0
  406. data/public/images/cms/buttons/button_off.png +0 -0
  407. data/public/images/cms/buttons/button_off_middle.png +0 -0
  408. data/public/images/cms/buttons/delete_x.png +0 -0
  409. data/public/images/cms/buttons/delete_x_disabled.png +0 -0
  410. data/public/images/cms/buttons/delete_x_h.png +0 -0
  411. data/public/images/cms/buttons/sm_button.gif +0 -0
  412. data/public/images/cms/buttons/sm_button_2.gif +0 -0
  413. data/public/images/cms/buttons/sm_button_2_h.gif +0 -0
  414. data/public/images/cms/buttons/sm_button_h.gif +0 -0
  415. data/public/images/cms/containers/add.gif +0 -0
  416. data/public/images/cms/containers/alpha.png +0 -0
  417. data/public/images/cms/containers/beta.png +0 -0
  418. data/public/images/cms/containers/delete.gif +0 -0
  419. data/public/images/cms/containers/down.gif +0 -0
  420. data/public/images/cms/containers/edit.gif +0 -0
  421. data/public/images/cms/containers/up.gif +0 -0
  422. data/public/images/cms/containers/view.gif +0 -0
  423. data/public/images/cms/content_bg.gif +0 -0
  424. data/public/images/cms/dashboard/bottom_cap.png +0 -0
  425. data/public/images/cms/dashboard/bottom_cap_content.png +0 -0
  426. data/public/images/cms/dashboard/header_bg.gif +0 -0
  427. data/public/images/cms/dashboard/header_left_bg.gif +0 -0
  428. data/public/images/cms/dashboard/table_header_bg.gif +0 -0
  429. data/public/images/cms/dashboard/top_cap.png +0 -0
  430. data/public/images/cms/dashed.gif +0 -0
  431. data/public/images/cms/datepicker/clear.gif +0 -0
  432. data/public/images/cms/datepicker/close.gif +0 -0
  433. data/public/images/cms/dk_button_l.gif +0 -0
  434. data/public/images/cms/dk_button_r.gif +0 -0
  435. data/public/images/cms/dot.png +0 -0
  436. data/public/images/cms/draft_status.gif +0 -0
  437. data/public/images/cms/gray_long_bg.gif +0 -0
  438. data/public/images/cms/icons/actions/add.png +0 -0
  439. data/public/images/cms/icons/actions/config.png +0 -0
  440. data/public/images/cms/icons/actions/connect.png +0 -0
  441. data/public/images/cms/icons/actions/delete.png +0 -0
  442. data/public/images/cms/icons/actions/down.png +0 -0
  443. data/public/images/cms/icons/actions/edit.png +0 -0
  444. data/public/images/cms/icons/actions/folder.png +0 -0
  445. data/public/images/cms/icons/actions/folder_add.png +0 -0
  446. data/public/images/cms/icons/actions/folder_delete.png +0 -0
  447. data/public/images/cms/icons/actions/folder_edit.png +0 -0
  448. data/public/images/cms/icons/actions/folder_move.png +0 -0
  449. data/public/images/cms/icons/actions/folder_open.png +0 -0
  450. data/public/images/cms/icons/actions/history.png +0 -0
  451. data/public/images/cms/icons/actions/home.png +0 -0
  452. data/public/images/cms/icons/actions/left.png +0 -0
  453. data/public/images/cms/icons/actions/link.png +0 -0
  454. data/public/images/cms/icons/actions/page.png +0 -0
  455. data/public/images/cms/icons/actions/page_add.png +0 -0
  456. data/public/images/cms/icons/actions/page_edit.png +0 -0
  457. data/public/images/cms/icons/actions/page_move.png +0 -0
  458. data/public/images/cms/icons/actions/redo.png +0 -0
  459. data/public/images/cms/icons/actions/refresh.png +0 -0
  460. data/public/images/cms/icons/actions/right.png +0 -0
  461. data/public/images/cms/icons/actions/root_folder.png +0 -0
  462. data/public/images/cms/icons/actions/root_link.png +0 -0
  463. data/public/images/cms/icons/actions/root_page.png +0 -0
  464. data/public/images/cms/icons/actions/undo.png +0 -0
  465. data/public/images/cms/icons/actions/up.png +0 -0
  466. data/public/images/cms/icons/actions/view.png +0 -0
  467. data/public/images/cms/icons/file_types/doc.png +0 -0
  468. data/public/images/cms/icons/file_types/file.png +0 -0
  469. data/public/images/cms/icons/file_types/gif.png +0 -0
  470. data/public/images/cms/icons/file_types/htm.png +0 -0
  471. data/public/images/cms/icons/file_types/pdf.png +0 -0
  472. data/public/images/cms/icons/file_types/ppt.png +0 -0
  473. data/public/images/cms/icons/file_types/swf.png +0 -0
  474. data/public/images/cms/icons/file_types/txt.png +0 -0
  475. data/public/images/cms/icons/file_types/xls.png +0 -0
  476. data/public/images/cms/icons/file_types/xml.png +0 -0
  477. data/public/images/cms/icons/file_types/zip.png +0 -0
  478. data/public/images/cms/icons/status/archived.gif +0 -0
  479. data/public/images/cms/icons/status/draft.gif +0 -0
  480. data/public/images/cms/icons/status/hidden.gif +0 -0
  481. data/public/images/cms/icons/status/locked.gif +0 -0
  482. data/public/images/cms/icons/status/published.gif +0 -0
  483. data/public/images/cms/icons/status/unlocked.gif +0 -0
  484. data/public/images/cms/icons/user.png +0 -0
  485. data/public/images/cms/login_bg.jpg +0 -0
  486. data/public/images/cms/login_bottom.jpg +0 -0
  487. data/public/images/cms/login_top.gif +0 -0
  488. data/public/images/cms/lt_button_bg.gif +0 -0
  489. data/public/images/cms/lt_button_l.gif +0 -0
  490. data/public/images/cms/lt_button_r.gif +0 -0
  491. data/public/images/cms/menu.png +0 -0
  492. data/public/images/cms/menu/block_cap_h.gif +0 -0
  493. data/public/images/cms/menu/bottom_cap.png +0 -0
  494. data/public/images/cms/menu/bottom_cap_menu.png +0 -0
  495. data/public/images/cms/menu/bottom_cap_menu_first.png +0 -0
  496. data/public/images/cms/menu/menu_header_first_bg.gif +0 -0
  497. data/public/images/cms/menu/selected_block_cap.gif +0 -0
  498. data/public/images/cms/menu/top_cap.png +0 -0
  499. data/public/images/cms/menu/top_cap_menu_header.png +0 -0
  500. data/public/images/cms/menu_h.gif +0 -0
  501. data/public/images/cms/menu_header.png +0 -0
  502. data/public/images/cms/menu_open.png +0 -0
  503. data/public/images/cms/menu_open_bg.gif +0 -0
  504. data/public/images/cms/nav.png +0 -0
  505. data/public/images/cms/nav/on_bg.gif +0 -0
  506. data/public/images/cms/nav_admin.gif +0 -0
  507. data/public/images/cms/nav_admin_h.gif +0 -0
  508. data/public/images/cms/nav_admin_on.gif +0 -0
  509. data/public/images/cms/nav_cap.png +0 -0
  510. data/public/images/cms/nav_cap_h.gif +0 -0
  511. data/public/images/cms/nav_content_library.gif +0 -0
  512. data/public/images/cms/nav_content_library_h.gif +0 -0
  513. data/public/images/cms/nav_content_library_on.gif +0 -0
  514. data/public/images/cms/nav_dash.gif +0 -0
  515. data/public/images/cms/nav_dash_h.gif +0 -0
  516. data/public/images/cms/nav_dash_on.gif +0 -0
  517. data/public/images/cms/nav_h.gif +0 -0
  518. data/public/images/cms/nav_sitemap.gif +0 -0
  519. data/public/images/cms/nav_sitemap_h.gif +0 -0
  520. data/public/images/cms/nav_sitemap_on.gif +0 -0
  521. data/public/images/cms/page_toolbar/page_toolbar_bg.gif +0 -0
  522. data/public/images/cms/page_toolbar/page_toolbar_inset_bg.gif +0 -0
  523. data/public/images/cms/page_toolbar/page_toolbar_inset_draft_bg.gif +0 -0
  524. data/public/images/cms/page_toolbar/page_toolbar_inset_draft_l.gif +0 -0
  525. data/public/images/cms/page_toolbar/page_toolbar_inset_draft_r.gif +0 -0
  526. data/public/images/cms/page_toolbar/page_toolbar_inset_l.gif +0 -0
  527. data/public/images/cms/page_toolbar/page_toolbar_inset_published_bg.gif +0 -0
  528. data/public/images/cms/page_toolbar/page_toolbar_inset_published_l.gif +0 -0
  529. data/public/images/cms/page_toolbar/page_toolbar_inset_published_r.gif +0 -0
  530. data/public/images/cms/page_toolbar/page_toolbar_inset_r.gif +0 -0
  531. data/public/images/cms/page_toolbar/page_toolbar_l.gif +0 -0
  532. data/public/images/cms/page_toolbar/page_toolbar_r.gif +0 -0
  533. data/public/images/cms/page_toolbar/status_draft_bg.gif +0 -0
  534. data/public/images/cms/page_toolbar/status_draft_l.gif +0 -0
  535. data/public/images/cms/page_toolbar/status_l.gif +0 -0
  536. data/public/images/cms/page_toolbar/status_published_bg.gif +0 -0
  537. data/public/images/cms/page_toolbar/status_published_l.gif +0 -0
  538. data/public/images/cms/page_toolbar/visual_editor_bg.gif +0 -0
  539. data/public/images/cms/page_toolbar/visual_editor_end.gif +0 -0
  540. data/public/images/cms/page_toolbar/visual_editor_r.gif +0 -0
  541. data/public/images/cms/page_toolbar/visual_editor_state_bg.gif +0 -0
  542. data/public/images/cms/pages/add_connectable.gif +0 -0
  543. data/public/images/cms/pages/connect_connectable.gif +0 -0
  544. data/public/images/cms/pages/container_border.gif +0 -0
  545. data/public/images/cms/pages/container_border_l.gif +0 -0
  546. data/public/images/cms/pages/container_border_r.gif +0 -0
  547. data/public/images/cms/pages/delete_connectable.gif +0 -0
  548. data/public/images/cms/pages/down_connectable.gif +0 -0
  549. data/public/images/cms/pages/down_connectable_disabled.gif +0 -0
  550. data/public/images/cms/pages/edit_connectable.gif +0 -0
  551. data/public/images/cms/pages/edit_connectable_2.gif +0 -0
  552. data/public/images/cms/pages/show_connectable.gif +0 -0
  553. data/public/images/cms/pages/up_connectable.gif +0 -0
  554. data/public/images/cms/pages/up_connectable_disabled.gif +0 -0
  555. data/public/images/cms/pagination/first.gif +0 -0
  556. data/public/images/cms/pagination/first_h.gif +0 -0
  557. data/public/images/cms/pagination/input.gif +0 -0
  558. data/public/images/cms/pagination/last.gif +0 -0
  559. data/public/images/cms/pagination/last_h.gif +0 -0
  560. data/public/images/cms/pagination/next.gif +0 -0
  561. data/public/images/cms/pagination/next_h.gif +0 -0
  562. data/public/images/cms/pagination/previous.gif +0 -0
  563. data/public/images/cms/pagination/previous_h.gif +0 -0
  564. data/public/images/cms/published_status.gif +0 -0
  565. data/public/images/cms/search.png +0 -0
  566. data/public/images/cms/search_submit.gif +0 -0
  567. data/public/images/cms/search_submit_h.gif +0 -0
  568. data/public/images/cms/searchbox_gradient.gif +0 -0
  569. data/public/images/cms/select_bg.gif +0 -0
  570. data/public/images/cms/select_bg_2.gif +0 -0
  571. data/public/images/cms/sitemap/bottom_cap.png +0 -0
  572. data/public/images/cms/sitemap/buffer_caps.png +0 -0
  573. data/public/images/cms/sitemap/contract.png +0 -0
  574. data/public/images/cms/sitemap/corners.gif +0 -0
  575. data/public/images/cms/sitemap/corners_hover.gif +0 -0
  576. data/public/images/cms/sitemap/divider.gif +0 -0
  577. data/public/images/cms/sitemap/expand.png +0 -0
  578. data/public/images/cms/sitemap/gradient.gif +0 -0
  579. data/public/images/cms/sitemap/gray_contract.png +0 -0
  580. data/public/images/cms/sitemap/gray_expand.png +0 -0
  581. data/public/images/cms/sitemap/no_contents.png +0 -0
  582. data/public/images/cms/sitemap/site_root_cap.png +0 -0
  583. data/public/images/cms/sitemap/tooltip.gif +0 -0
  584. data/public/images/cms/sitemap/top_cap_content.png +0 -0
  585. data/public/images/cms/solid.gif +0 -0
  586. data/public/images/cms/table/bl.gif +0 -0
  587. data/public/images/cms/table/br.gif +0 -0
  588. data/public/images/cms/table/divider.gif +0 -0
  589. data/public/images/cms/table/td_cap_first_h.gif +0 -0
  590. data/public/images/cms/table/td_cap_first_s.gif +0 -0
  591. data/public/images/cms/table/td_cap_last_h.gif +0 -0
  592. data/public/images/cms/table/td_cap_last_s.gif +0 -0
  593. data/public/images/cms/table/td_last_bg.gif +0 -0
  594. data/public/images/cms/table/th_bg.gif +0 -0
  595. data/public/images/cms/table/th_divider.gif +0 -0
  596. data/public/images/cms/table/th_last_bg.gif +0 -0
  597. data/public/images/cms/table/tl.gif +0 -0
  598. data/public/images/cms/table/tr.gif +0 -0
  599. data/public/images/cms/table/tr_bg.gif +0 -0
  600. data/public/images/cms/thickbox/loadingAnimation.gif +0 -0
  601. data/public/images/cms/thickbox/macFFBgHack.png +0 -0
  602. data/public/images/cms/toolbar_bg.png +0 -0
  603. data/public/images/cms/top_cap.png +0 -0
  604. data/public/images/cms/top_cap_content.png +0 -0
  605. data/public/images/cms/top_cap_menu_header.png +0 -0
  606. data/public/images/cms/user_search_submit.gif +0 -0
  607. data/public/images/cms/usercontrols_bg.png +0 -0
  608. data/public/images/cms/usercontrols_bg_cap.png +0 -0
  609. data/public/images/rails.png +0 -0
  610. data/public/javascripts/application.js +0 -2
  611. data/public/javascripts/cms/application.js +0 -148
  612. data/public/javascripts/cms/content_library.js +0 -36
  613. data/public/javascripts/cms/sitemap.js +0 -438
  614. data/public/javascripts/controls.js +0 -963
  615. data/public/javascripts/dragdrop.js +0 -973
  616. data/public/javascripts/effects.js +0 -1128
  617. data/public/javascripts/jquery-ui.js +0 -591
  618. data/public/javascripts/jquery.contextMenu.js +0 -211
  619. data/public/javascripts/jquery.cookie.js +0 -96
  620. data/public/javascripts/jquery.dimensions.js +0 -119
  621. data/public/javascripts/jquery.js +0 -11
  622. data/public/javascripts/jquery.selectbox-0.5.js +0 -209
  623. data/public/javascripts/jquery.taglist.js +0 -136
  624. data/public/javascripts/jquery.thickbox.js +0 -10
  625. data/public/javascripts/prototype.js +0 -4320
  626. data/public/robots.txt +0 -5
  627. data/public/site/customconfig.js +0 -1
  628. data/public/stylesheets/cms/administration.css +0 -91
  629. data/public/stylesheets/cms/application.css +0 -166
  630. data/public/stylesheets/cms/block.css +0 -26
  631. data/public/stylesheets/cms/buttons.css +0 -120
  632. data/public/stylesheets/cms/content_library.css +0 -139
  633. data/public/stylesheets/cms/content_types.css +0 -4
  634. data/public/stylesheets/cms/dashboard.css +0 -118
  635. data/public/stylesheets/cms/data_table.css +0 -156
  636. data/public/stylesheets/cms/date_picker.css +0 -73
  637. data/public/stylesheets/cms/form_layout.css +0 -279
  638. data/public/stylesheets/cms/jquery.contextMenu.css +0 -61
  639. data/public/stylesheets/cms/login.css +0 -78
  640. data/public/stylesheets/cms/menu.css +0 -116
  641. data/public/stylesheets/cms/nav.css +0 -99
  642. data/public/stylesheets/cms/page_toolbar.css +0 -135
  643. data/public/stylesheets/cms/reset.css +0 -46
  644. data/public/stylesheets/cms/selectbox.css +0 -56
  645. data/public/stylesheets/cms/sitemap.css +0 -390
  646. data/public/stylesheets/cms/taglist.css +0 -18
  647. data/public/stylesheets/cms/thickbox.css +0 -163
  648. data/script/about +0 -4
  649. data/script/console +0 -3
  650. data/script/dbconsole +0 -3
  651. data/script/destroy +0 -3
  652. data/script/generate +0 -3
  653. data/script/performance/benchmarker +0 -3
  654. data/script/performance/profiler +0 -3
  655. data/script/plugin +0 -3
  656. data/script/runner +0 -3
  657. data/script/server +0 -3
@@ -1,2742 +0,0 @@
1
- /*
2
- Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
3
- For licensing, see LICENSE.html or http://ckeditor.com/license
4
- */
5
-
6
- /**
7
- * @fileOverview The floating dialog plugin.
8
- */
9
-
10
- CKEDITOR.plugins.add( 'dialog',
11
- {
12
- requires : [ 'dialogui' ]
13
- });
14
-
15
- /**
16
- * No resize for this dialog.
17
- * @constant
18
- */
19
- CKEDITOR.DIALOG_RESIZE_NONE = 0;
20
-
21
- /**
22
- * Only allow horizontal resizing for this dialog, disable vertical resizing.
23
- * @constant
24
- */
25
- CKEDITOR.DIALOG_RESIZE_WIDTH = 1;
26
-
27
- /**
28
- * Only allow vertical resizing for this dialog, disable horizontal resizing.
29
- * @constant
30
- */
31
- CKEDITOR.DIALOG_RESIZE_HEIGHT = 2;
32
-
33
- /*
34
- * Allow the dialog to be resized in both directions.
35
- * @constant
36
- */
37
- CKEDITOR.DIALOG_RESIZE_BOTH = 3;
38
-
39
- (function()
40
- {
41
- function isTabVisible( tabId )
42
- {
43
- return !!this._.tabs[ tabId ][ 0 ].$.offsetHeight;
44
- }
45
-
46
- function getPreviousVisibleTab()
47
- {
48
- var tabId = this._.currentTabId,
49
- length = this._.tabIdList.length,
50
- tabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, tabId ) + length;
51
-
52
- for ( var i = tabIndex - 1 ; i > tabIndex - length ; i-- )
53
- {
54
- if ( isTabVisible.call( this, this._.tabIdList[ i % length ] ) )
55
- return this._.tabIdList[ i % length ];
56
- }
57
-
58
- return null;
59
- }
60
-
61
- function getNextVisibleTab()
62
- {
63
- var tabId = this._.currentTabId,
64
- length = this._.tabIdList.length,
65
- tabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, tabId );
66
-
67
- for ( var i = tabIndex + 1 ; i < tabIndex + length ; i++ )
68
- {
69
- if ( isTabVisible.call( this, this._.tabIdList[ i % length ] ) )
70
- return this._.tabIdList[ i % length ];
71
- }
72
-
73
- return null;
74
- }
75
-
76
- // Stores dialog related data from skin definitions. e.g. margin sizes.
77
- var skinData = {};
78
-
79
- /**
80
- * This is the base class for runtime dialog objects. An instance of this
81
- * class represents a single named dialog for a single editor instance.
82
- * @param {Object} editor The editor which created the dialog.
83
- * @param {String} dialogName The dialog's registered name.
84
- * @constructor
85
- * @example
86
- * var dialogObj = new CKEDITOR.dialog( editor, 'smiley' );
87
- */
88
- CKEDITOR.dialog = function( editor, dialogName )
89
- {
90
- // Load the dialog definition.
91
- var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ];
92
- if ( !definition )
93
- {
94
- console.log( 'Error: The dialog "' + dialogName + '" is not defined.' );
95
- return;
96
- }
97
-
98
- // Completes the definition with the default values.
99
- definition = CKEDITOR.tools.extend( definition( editor ), defaultDialogDefinition );
100
-
101
- // Clone a functionally independent copy for this dialog.
102
- definition = CKEDITOR.tools.clone( definition );
103
-
104
- // Create a complex definition object, extending it with the API
105
- // functions.
106
- definition = new definitionObject( this, definition );
107
-
108
- // Fire the "dialogDefinition" event, making it possible to customize
109
- // the dialog definition.
110
- this.definition = definition = CKEDITOR.fire( 'dialogDefinition',
111
- {
112
- name : dialogName,
113
- definition : definition
114
- }
115
- , editor ).definition;
116
-
117
- var doc = CKEDITOR.document;
118
-
119
- var themeBuilt = editor.theme.buildDialog( editor );
120
-
121
- // Initialize some basic parameters.
122
- this._ =
123
- {
124
- editor : editor,
125
- element : themeBuilt.element,
126
- name : dialogName,
127
- contentSize : { width : 0, height : 0 },
128
- size : { width : 0, height : 0 },
129
- updateSize : false,
130
- contents : {},
131
- buttons : {},
132
- accessKeyMap : {},
133
-
134
- // Initialize the tab and page map.
135
- tabs : {},
136
- tabIdList : [],
137
- currentTabId : null,
138
- currentTabIndex : null,
139
- pageCount : 0,
140
- lastTab : null,
141
- tabBarMode : false,
142
-
143
- // Initialize the tab order array for input widgets.
144
- focusList : [],
145
- currentFocusIndex : 0,
146
- hasFocus : false
147
- };
148
-
149
- this.parts = themeBuilt.parts;
150
-
151
- // Set the startup styles for the dialog, avoiding it enlarging the
152
- // page size on the dialog creation.
153
- this.parts.dialog.setStyles(
154
- {
155
- position : CKEDITOR.env.ie6Compat ? 'absolute' : 'fixed',
156
- top : 0,
157
- left: 0,
158
- visibility : 'hidden'
159
- });
160
-
161
- // Call the CKEDITOR.event constructor to initialize this instance.
162
- CKEDITOR.event.call( this );
163
-
164
- // Initialize load, show, hide, ok and cancel events.
165
- if ( definition.onLoad )
166
- this.on( 'load', definition.onLoad );
167
-
168
- if ( definition.onShow )
169
- this.on( 'show', definition.onShow );
170
-
171
- if ( definition.onHide )
172
- this.on( 'hide', definition.onHide );
173
-
174
- if ( definition.onOk )
175
- {
176
- this.on( 'ok', function( evt )
177
- {
178
- if ( definition.onOk.call( this, evt ) === false )
179
- evt.data.hide = false;
180
- });
181
- }
182
-
183
- if ( definition.onCancel )
184
- {
185
- this.on( 'cancel', function( evt )
186
- {
187
- if ( definition.onCancel.call( this, evt ) === false )
188
- evt.data.hide = false;
189
- });
190
- }
191
-
192
- var me = this;
193
-
194
- // Iterates over all items inside all content in the dialog, calling a
195
- // function for each of them.
196
- var iterContents = function( func )
197
- {
198
- var contents = me._.contents,
199
- stop = false;
200
-
201
- for ( var i in contents )
202
- {
203
- for ( var j in contents[i] )
204
- {
205
- stop = func.call( this, contents[i][j] );
206
- if ( stop )
207
- return;
208
- }
209
- }
210
- };
211
-
212
- this.on( 'ok', function( evt )
213
- {
214
- iterContents( function( item )
215
- {
216
- if ( item.validate )
217
- {
218
- var isValid = item.validate( this );
219
-
220
- if ( typeof isValid == 'string' )
221
- {
222
- alert( isValid );
223
- isValid = false;
224
- }
225
-
226
- if ( isValid === false )
227
- {
228
- if ( item.select )
229
- item.select();
230
- else
231
- item.focus();
232
-
233
- evt.data.hide = false;
234
- evt.stop();
235
- return true;
236
- }
237
- }
238
- });
239
- }, this, null, 0 );
240
-
241
- this.on( 'cancel', function( evt )
242
- {
243
- iterContents( function( item )
244
- {
245
- if ( item.isChanged() )
246
- {
247
- if ( !confirm( editor.lang.common.confirmCancel ) )
248
- evt.data.hide = false;
249
- return true;
250
- }
251
- });
252
- }, this, null, 0 );
253
-
254
- this.parts.close.on( 'click', function( evt )
255
- {
256
- if ( this.fire( 'cancel', { hide : true } ).hide !== false )
257
- this.hide();
258
- }, this );
259
-
260
- function changeFocus( forward )
261
- {
262
- var focusList = me._.focusList,
263
- offset = forward ? 1 : -1;
264
- if ( focusList.length < 1 )
265
- return;
266
-
267
- var currentIndex = ( me._.currentFocusIndex + offset + focusList.length ) % focusList.length;
268
- while ( !focusList[ currentIndex ].isFocusable() )
269
- {
270
- currentIndex = ( currentIndex + offset + focusList.length ) % focusList.length;
271
- if ( currentIndex == me._.currentFocusIndex )
272
- break;
273
- }
274
- focusList[ currentIndex ].focus();
275
- }
276
-
277
- function focusKeydownHandler( evt )
278
- {
279
- // If I'm not the top dialog, ignore.
280
- if ( me != CKEDITOR.dialog._.currentTop )
281
- return;
282
-
283
- var keystroke = evt.data.getKeystroke(),
284
- processed = false;
285
- if ( keystroke == 9 || keystroke == CKEDITOR.SHIFT + 9 )
286
- {
287
- var shiftPressed = ( keystroke == CKEDITOR.SHIFT + 9 );
288
-
289
- // Handling Tab and Shift-Tab.
290
- if ( me._.tabBarMode )
291
- {
292
- // Change tabs.
293
- var nextId = shiftPressed ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me );
294
- me.selectPage( nextId );
295
- me._.tabs[ nextId ][ 0 ].focus();
296
- }
297
- else
298
- {
299
- // Change the focus of inputs.
300
- changeFocus( !shiftPressed );
301
- }
302
-
303
- processed = true;
304
- }
305
- else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode )
306
- {
307
- // Alt-F10 puts focus into the current tab item in the tab bar.
308
- me._.tabBarMode = true;
309
- me._.tabs[ me._.currentTabId ][ 0 ].focus();
310
- processed = true;
311
- }
312
- else if ( ( keystroke == 37 || keystroke == 39 ) && me._.tabBarMode )
313
- {
314
- // Arrow keys - used for changing tabs.
315
- nextId = ( keystroke == 37 ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ) );
316
- me.selectPage( nextId );
317
- me._.tabs[ nextId ][ 0 ].focus();
318
- processed = true;
319
- }
320
-
321
- if ( processed )
322
- {
323
- evt.stop();
324
- evt.data.preventDefault();
325
- }
326
- }
327
-
328
- // Add the dialog keyboard handlers.
329
- this.on( 'show', function()
330
- {
331
- CKEDITOR.document.on( 'keydown', focusKeydownHandler, this, null, 0 );
332
-
333
- if ( CKEDITOR.env.ie6Compat )
334
- {
335
- var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
336
- coverDoc.on( 'keydown', focusKeydownHandler, this, null, 0 );
337
- }
338
- } );
339
- this.on( 'hide', function()
340
- {
341
- CKEDITOR.document.removeListener( 'keydown', focusKeydownHandler );
342
- } );
343
- this.on( 'iframeAdded', function( evt )
344
- {
345
- var doc = new CKEDITOR.dom.document( evt.data.iframe.$.contentWindow.document );
346
- doc.on( 'keydown', focusKeydownHandler, this, null, 0 );
347
- } );
348
-
349
- // Auto-focus logic in dialog.
350
- this.on( 'show', function()
351
- {
352
- if ( !this._.hasFocus )
353
- {
354
- this._.currentFocusIndex = -1;
355
- changeFocus( true );
356
-
357
- /*
358
- * IE BUG: If the initial focus went into a non-text element (e.g. button),
359
- * then IE would still leave the caret inside the editing area.
360
- */
361
- if ( this._.editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
362
- {
363
- var $selection = editor.document.$.selection,
364
- $range = $selection.createRange();
365
-
366
- if ( $range )
367
- {
368
- if ( $range.parentElement && $range.parentElement().ownerDocument == editor.document.$
369
- || $range.item && $range.item( 0 ).ownerDocument == editor.document.$ )
370
- {
371
- var $myRange = document.body.createTextRange();
372
- $myRange.moveToElementText( this.getElement().getFirst().$ );
373
- $myRange.collapse( true );
374
- $myRange.select();
375
- }
376
- }
377
- }
378
- }
379
- }, this, null, 0xffffffff );
380
-
381
- // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (#2661).
382
- // This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken.
383
- if ( CKEDITOR.env.ie6Compat )
384
- {
385
- this.on( 'load', function( evt )
386
- {
387
- var outer = this.getElement(),
388
- inner = outer.getFirst();
389
- inner.remove();
390
- inner.appendTo( outer );
391
- }, this );
392
- }
393
-
394
- initDragAndDrop( this );
395
- initResizeHandles( this );
396
-
397
- // Insert the title.
398
- ( new CKEDITOR.dom.text( definition.title, CKEDITOR.document ) ).appendTo( this.parts.title );
399
-
400
- // Insert the tabs and contents.
401
- for ( var i = 0 ; i < definition.contents.length ; i++ )
402
- this.addPage( definition.contents[i] );
403
-
404
- var tabRegex = /cke_dialog_tab(\s|$|_)/,
405
- tabOuterRegex = /cke_dialog_tab(\s|$)/;
406
- this.parts['tabs'].on( 'click', function( evt )
407
- {
408
- var target = evt.data.getTarget(), firstNode = target, id, page;
409
-
410
- // If we aren't inside a tab, bail out.
411
- if ( !( tabRegex.test( target.$.className ) || target.getName() == 'a' ) )
412
- return;
413
-
414
- // Find the outer <td> container of the tab.
415
- id = target.$.id.substr( 0, target.$.id.lastIndexOf( '_' ) );
416
- this.selectPage( id );
417
-
418
- if ( this._.tabBarMode )
419
- {
420
- this._.tabBarMode = false;
421
- this._.currentFocusIndex = -1;
422
- changeFocus( true );
423
- }
424
-
425
- evt.data.preventDefault();
426
- }, this );
427
-
428
- // Insert buttons.
429
- var buttonsHtml = [],
430
- buttons = CKEDITOR.dialog._.uiElementBuilders.hbox.build( this,
431
- {
432
- type : 'hbox',
433
- className : 'cke_dialog_footer_buttons',
434
- widths : [],
435
- children : definition.buttons
436
- }, buttonsHtml ).getChild();
437
- this.parts.footer.setHtml( buttonsHtml.join( '' ) );
438
-
439
- for ( i = 0 ; i < buttons.length ; i++ )
440
- this._.buttons[ buttons[i].id ] = buttons[i];
441
-
442
- CKEDITOR.skins.load( editor, 'dialog' );
443
- };
444
-
445
- // Focusable interface. Use it via dialog.addFocusable.
446
- function Focusable( dialog, element, index ) {
447
- this.element = element;
448
- this.focusIndex = index;
449
- this.isFocusable = function()
450
- {
451
- return true;
452
- };
453
- this.focus = function()
454
- {
455
- dialog._.currentFocusIndex = this.focusIndex;
456
- this.element.focus();
457
- };
458
- // Bind events
459
- element.on( 'keydown', function( e )
460
- {
461
- if ( e.data.getKeystroke() in { 32:1, 13:1 } )
462
- this.fire( 'click' );
463
- } );
464
- element.on( 'focus', function()
465
- {
466
- this.fire( 'mouseover' );
467
- } );
468
- element.on( 'blur', function()
469
- {
470
- this.fire( 'mouseout' );
471
- } );
472
- }
473
-
474
- CKEDITOR.dialog.prototype =
475
- {
476
- /**
477
- * Resizes the dialog.
478
- * @param {Number} width The width of the dialog in pixels.
479
- * @param {Number} height The height of the dialog in pixels.
480
- * @function
481
- * @example
482
- * dialogObj.resize( 800, 640 );
483
- */
484
- resize : (function()
485
- {
486
- return function( width, height )
487
- {
488
- if ( this._.contentSize && this._.contentSize.width == width && this._.contentSize.height == height )
489
- return;
490
-
491
- CKEDITOR.dialog.fire( 'resize',
492
- {
493
- dialog : this,
494
- skin : this._.editor.skinName,
495
- width : width,
496
- height : height
497
- }, this._.editor );
498
-
499
- this._.contentSize = { width : width, height : height };
500
- this._.updateSize = true;
501
- };
502
- })(),
503
-
504
- /**
505
- * Gets the current size of the dialog in pixels.
506
- * @returns {Object} An object with "width" and "height" properties.
507
- * @example
508
- * var width = dialogObj.getSize().width;
509
- */
510
- getSize : function()
511
- {
512
- if ( !this._.updateSize )
513
- return this._.size;
514
- var element = this._.element.getFirst();
515
- var size = this._.size = { width : element.$.offsetWidth || 0, height : element.$.offsetHeight || 0};
516
-
517
- // If either the offsetWidth or offsetHeight is 0, the element isn't visible.
518
- this._.updateSize = !size.width || !size.height;
519
-
520
- return size;
521
- },
522
-
523
- /**
524
- * Moves the dialog to an (x, y) coordinate relative to the window.
525
- * @function
526
- * @param {Number} x The target x-coordinate.
527
- * @param {Number} y The target y-coordinate.
528
- * @example
529
- * dialogObj.move( 10, 40 );
530
- */
531
- move : (function()
532
- {
533
- var isFixed;
534
- return function( x, y )
535
- {
536
- // The dialog may be fixed positioned or absolute positioned. Ask the
537
- // browser what is the current situation first.
538
- var element = this._.element.getFirst();
539
- if ( isFixed === undefined )
540
- isFixed = element.getComputedStyle( 'position' ) == 'fixed';
541
-
542
- if ( isFixed && this._.position && this._.position.x == x && this._.position.y == y )
543
- return;
544
-
545
- // Save the current position.
546
- this._.position = { x : x, y : y };
547
-
548
- // If not fixed positioned, add scroll position to the coordinates.
549
- if ( !isFixed )
550
- {
551
- var scrollPosition = CKEDITOR.document.getWindow().getScrollPosition();
552
- x += scrollPosition.x;
553
- y += scrollPosition.y;
554
- }
555
-
556
- element.setStyles(
557
- {
558
- 'left' : ( x > 0 ? x : 0 ) + 'px',
559
- 'top' : ( y > 0 ? y : 0 ) + 'px'
560
- });
561
- };
562
- })(),
563
-
564
- /**
565
- * Gets the dialog's position in the window.
566
- * @returns {Object} An object with "x" and "y" properties.
567
- * @example
568
- * var dialogX = dialogObj.getPosition().x;
569
- */
570
- getPosition : function(){ return CKEDITOR.tools.extend( {}, this._.position ); },
571
-
572
- /**
573
- * Shows the dialog box.
574
- * @example
575
- * dialogObj.show();
576
- */
577
- show : function()
578
- {
579
- if ( this._.editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
580
- this._.editor.getSelection().lock();
581
-
582
- // Insert the dialog's element to the root document.
583
- var element = this._.element;
584
- var definition = this.definition;
585
- if ( !( element.getParent() && element.getParent().equals( CKEDITOR.document.getBody() ) ) )
586
- element.appendTo( CKEDITOR.document.getBody() );
587
- else
588
- return;
589
-
590
- // FIREFOX BUG: Fix vanishing caret for Firefox 2 or Gecko 1.8.
591
- if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
592
- {
593
- var dialogElement = this.parts.dialog;
594
- dialogElement.setStyle( 'position', 'absolute' );
595
- setTimeout( function()
596
- {
597
- dialogElement.setStyle( 'position', 'fixed' );
598
- }, 0 );
599
- }
600
-
601
-
602
- // First, set the dialog to an appropriate size.
603
- this.resize( definition.minWidth, definition.minHeight );
604
-
605
- // Select the first tab by default.
606
- this.selectPage( this.definition.contents[0].id );
607
-
608
- // Reset all inputs back to their default value.
609
- this.reset();
610
-
611
- // Set z-index.
612
- if ( CKEDITOR.dialog._.currentZIndex === null )
613
- CKEDITOR.dialog._.currentZIndex = this._.editor.config.baseFloatZIndex;
614
- this._.element.getFirst().setStyle( 'z-index', CKEDITOR.dialog._.currentZIndex += 10 );
615
-
616
- // Maintain the dialog ordering and dialog cover.
617
- // Also register key handlers if first dialog.
618
- if ( CKEDITOR.dialog._.currentTop === null )
619
- {
620
- CKEDITOR.dialog._.currentTop = this;
621
- this._.parentDialog = null;
622
- addCover( this._.editor );
623
-
624
- CKEDITOR.document.on( 'keydown', accessKeyDownHandler );
625
- CKEDITOR.document.on( 'keyup', accessKeyUpHandler );
626
- }
627
- else
628
- {
629
- this._.parentDialog = CKEDITOR.dialog._.currentTop;
630
- var parentElement = this._.parentDialog.getElement().getFirst();
631
- parentElement.$.style.zIndex -= Math.floor( this._.editor.config.baseFloatZIndex / 2 );
632
- CKEDITOR.dialog._.currentTop = this;
633
- }
634
-
635
- // Register the Esc hotkeys.
636
- registerAccessKey( this, this, '\x1b', null, function()
637
- {
638
- this.getButton( 'cancel' ) && this.getButton( 'cancel' ).click();
639
- } );
640
-
641
- // Reset the hasFocus state.
642
- this._.hasFocus = false;
643
-
644
- // Rearrange the dialog to the middle of the window.
645
- CKEDITOR.tools.setTimeout( function()
646
- {
647
- var viewSize = CKEDITOR.document.getWindow().getViewPaneSize();
648
- var dialogSize = this.getSize();
649
-
650
- // We're using definition size for initial position because of
651
- // offten corrupted data in offsetWidth at this point. (#4084)
652
- this.move( ( viewSize.width - definition.minWidth ) / 2, ( viewSize.height - dialogSize.height ) / 2 );
653
-
654
- this.parts.dialog.setStyle( 'visibility', '' );
655
-
656
- // Execute onLoad for the first show.
657
- this.fireOnce( 'load', {} );
658
- this.fire( 'show', {} );
659
-
660
- // Save the initial values of the dialog.
661
- this.foreach( function( contentObj ) { contentObj.setInitValue && contentObj.setInitValue(); } );
662
-
663
- },
664
- 100, this );
665
- },
666
-
667
- /**
668
- * Executes a function for each UI element.
669
- * @param {Function} fn Function to execute for each UI element.
670
- * @returns {CKEDITOR.dialog} The current dialog object.
671
- */
672
- foreach : function( fn )
673
- {
674
- for ( var i in this._.contents )
675
- {
676
- for ( var j in this._.contents[i] )
677
- fn( this._.contents[i][j]);
678
- }
679
- return this;
680
- },
681
-
682
- /**
683
- * Resets all input values in the dialog.
684
- * @example
685
- * dialogObj.reset();
686
- * @returns {CKEDITOR.dialog} The current dialog object.
687
- */
688
- reset : (function()
689
- {
690
- var fn = function( widget ){ if ( widget.reset ) widget.reset(); };
691
- return function(){ this.foreach( fn ); return this; };
692
- })(),
693
-
694
- setupContent : function()
695
- {
696
- var args = arguments;
697
- this.foreach( function( widget )
698
- {
699
- if ( widget.setup )
700
- widget.setup.apply( widget, args );
701
- });
702
- },
703
-
704
- commitContent : function()
705
- {
706
- var args = arguments;
707
- this.foreach( function( widget )
708
- {
709
- if ( widget.commit )
710
- widget.commit.apply( widget, args );
711
- });
712
- },
713
-
714
- /**
715
- * Hides the dialog box.
716
- * @example
717
- * dialogObj.hide();
718
- */
719
- hide : function()
720
- {
721
- this.fire( 'hide', {} );
722
-
723
- // Remove the dialog's element from the root document.
724
- var element = this._.element;
725
- if ( !element.getParent() )
726
- return;
727
-
728
- element.remove();
729
- this.parts.dialog.setStyle( 'visibility', 'hidden' );
730
-
731
- // Unregister all access keys associated with this dialog.
732
- unregisterAccessKey( this );
733
-
734
- // Maintain dialog ordering and remove cover if needed.
735
- if ( !this._.parentDialog )
736
- removeCover();
737
- else
738
- {
739
- var parentElement = this._.parentDialog.getElement().getFirst();
740
- parentElement.setStyle( 'z-index', parseInt( parentElement.$.style.zIndex, 10 ) + Math.floor( this._.editor.config.baseFloatZIndex / 2 ) );
741
- }
742
- CKEDITOR.dialog._.currentTop = this._.parentDialog;
743
-
744
- // Deduct or clear the z-index.
745
- if ( !this._.parentDialog )
746
- {
747
- CKEDITOR.dialog._.currentZIndex = null;
748
-
749
- // Remove access key handlers.
750
- CKEDITOR.document.removeListener( 'keydown', accessKeyDownHandler );
751
- CKEDITOR.document.removeListener( 'keyup', accessKeyUpHandler );
752
-
753
- var editor = this._.editor;
754
- editor.focus();
755
-
756
- if ( editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
757
- editor.getSelection().unlock( true );
758
- }
759
- else
760
- CKEDITOR.dialog._.currentZIndex -= 10;
761
-
762
-
763
- // Reset the initial values of the dialog.
764
- this.foreach( function( contentObj ) { contentObj.resetInitValue && contentObj.resetInitValue(); } );
765
- },
766
-
767
- /**
768
- * Adds a tabbed page into the dialog.
769
- * @param {Object} contents Content definition.
770
- * @example
771
- */
772
- addPage : function( contents )
773
- {
774
- var pageHtml = [],
775
- titleHtml = contents.label ? ' title="' + CKEDITOR.tools.htmlEncode( contents.label ) + '"' : '',
776
- elements = contents.elements,
777
- vbox = CKEDITOR.dialog._.uiElementBuilders.vbox.build( this,
778
- {
779
- type : 'vbox',
780
- className : 'cke_dialog_page_contents',
781
- children : contents.elements,
782
- expand : !!contents.expand,
783
- padding : contents.padding,
784
- style : contents.style || 'width: 100%; height: 100%;'
785
- }, pageHtml );
786
-
787
- // Create the HTML for the tab and the content block.
788
- var page = CKEDITOR.dom.element.createFromHtml( pageHtml.join( '' ) );
789
- var tab = CKEDITOR.dom.element.createFromHtml( [
790
- '<a class="cke_dialog_tab"',
791
- ( this._.pageCount > 0 ? ' cke_last' : 'cke_first' ),
792
- titleHtml,
793
- ( !!contents.hidden ? ' style="display:none"' : '' ),
794
- ' id="', contents.id + '_', CKEDITOR.tools.getNextNumber(), '"' +
795
- ' href="javascript:void(0)"',
796
- ' hidefocus="true">',
797
- contents.label,
798
- '</a>'
799
- ].join( '' ) );
800
-
801
- // If only a single page exist, a different style is used in the central pane.
802
- if ( this._.pageCount === 0 )
803
- this.parts.dialog.addClass( 'cke_single_page' );
804
- else
805
- this.parts.dialog.removeClass( 'cke_single_page' );
806
-
807
- // Take records for the tabs and elements created.
808
- this._.tabs[ contents.id ] = [ tab, page ];
809
- this._.tabIdList.push( contents.id );
810
- this._.pageCount++;
811
- this._.lastTab = tab;
812
-
813
- var contentMap = this._.contents[ contents.id ] = {},
814
- cursor,
815
- children = vbox.getChild();
816
-
817
- while ( ( cursor = children.shift() ) )
818
- {
819
- contentMap[ cursor.id ] = cursor;
820
- if ( typeof( cursor.getChild ) == 'function' )
821
- children.push.apply( children, cursor.getChild() );
822
- }
823
-
824
- // Attach the DOM nodes.
825
-
826
- page.setAttribute( 'name', contents.id );
827
- page.appendTo( this.parts.contents );
828
-
829
- tab.unselectable();
830
- this.parts.tabs.append( tab );
831
-
832
- // Add access key handlers if access key is defined.
833
- if ( contents.accessKey )
834
- {
835
- registerAccessKey( this, this, 'CTRL+' + contents.accessKey,
836
- tabAccessKeyDown, tabAccessKeyUp );
837
- this._.accessKeyMap[ 'CTRL+' + contents.accessKey ] = contents.id;
838
- }
839
- },
840
-
841
- /**
842
- * Activates a tab page in the dialog by its id.
843
- * @param {String} id The id of the dialog tab to be activated.
844
- * @example
845
- * dialogObj.selectPage( 'tab_1' );
846
- */
847
- selectPage : function( id )
848
- {
849
- // Hide the non-selected tabs and pages.
850
- for ( var i in this._.tabs )
851
- {
852
- var tab = this._.tabs[i][0],
853
- page = this._.tabs[i][1];
854
- if ( i != id )
855
- {
856
- tab.removeClass( 'cke_dialog_tab_selected' );
857
- page.hide();
858
- }
859
- }
860
-
861
- var selected = this._.tabs[id];
862
- selected[0].addClass( 'cke_dialog_tab_selected' );
863
- selected[1].show();
864
- this._.currentTabId = id;
865
- this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id );
866
- },
867
-
868
- /**
869
- * Hides a page's tab away from the dialog.
870
- * @param {String} id The page's Id.
871
- * @example
872
- * dialog.hidePage( 'tab_3' );
873
- */
874
- hidePage : function( id )
875
- {
876
- var tab = this._.tabs[id] && this._.tabs[id][0];
877
- if ( !tab )
878
- return;
879
- tab.hide();
880
- },
881
-
882
- /**
883
- * Unhides a page's tab.
884
- * @param {String} id The page's Id.
885
- * @example
886
- * dialog.showPage( 'tab_2' );
887
- */
888
- showPage : function( id )
889
- {
890
- var tab = this._.tabs[id] && this._.tabs[id][0];
891
- if ( !tab )
892
- return;
893
- tab.show();
894
- },
895
-
896
- /**
897
- * Gets the root DOM element of the dialog.
898
- * @returns {CKEDITOR.dom.element} The &lt;span&gt; element containing this dialog.
899
- * @example
900
- * var dialogElement = dialogObj.getElement().getFirst();
901
- * dialogElement.setStyle( 'padding', '5px' );
902
- */
903
- getElement : function()
904
- {
905
- return this._.element;
906
- },
907
-
908
- /**
909
- * Gets the name of the dialog.
910
- * @returns {String} The name of this dialog.
911
- * @example
912
- * var dialogName = dialogObj.getName();
913
- */
914
- getName : function()
915
- {
916
- return this._.name;
917
- },
918
-
919
- /**
920
- * Gets a dialog UI element object from a dialog page.
921
- * @param {String} pageId id of dialog page.
922
- * @param {String} elementId id of UI element.
923
- * @example
924
- * @returns {CKEDITOR.ui.dialog.uiElement} The dialog UI element.
925
- */
926
- getContentElement : function( pageId, elementId )
927
- {
928
- return this._.contents[pageId][elementId];
929
- },
930
-
931
- /**
932
- * Gets the value of a dialog UI element.
933
- * @param {String} pageId id of dialog page.
934
- * @param {String} elementId id of UI element.
935
- * @example
936
- * @returns {Object} The value of the UI element.
937
- */
938
- getValueOf : function( pageId, elementId )
939
- {
940
- return this.getContentElement( pageId, elementId ).getValue();
941
- },
942
-
943
- /**
944
- * Sets the value of a dialog UI element.
945
- * @param {String} pageId id of the dialog page.
946
- * @param {String} elementId id of the UI element.
947
- * @param {Object} value The new value of the UI element.
948
- * @example
949
- */
950
- setValueOf : function( pageId, elementId, value )
951
- {
952
- return this.getContentElement( pageId, elementId ).setValue( value );
953
- },
954
-
955
- /**
956
- * Gets the UI element of a button in the dialog's button row.
957
- * @param {String} id The id of the button.
958
- * @example
959
- * @returns {CKEDITOR.ui.dialog.button} The button object.
960
- */
961
- getButton : function( id )
962
- {
963
- return this._.buttons[ id ];
964
- },
965
-
966
- /**
967
- * Simulates a click to a dialog button in the dialog's button row.
968
- * @param {String} id The id of the button.
969
- * @example
970
- * @returns The return value of the dialog's "click" event.
971
- */
972
- click : function( id )
973
- {
974
- return this._.buttons[ id ].click();
975
- },
976
-
977
- /**
978
- * Disables a dialog button.
979
- * @param {String} id The id of the button.
980
- * @example
981
- */
982
- disableButton : function( id )
983
- {
984
- return this._.buttons[ id ].disable();
985
- },
986
-
987
- /**
988
- * Enables a dialog button.
989
- * @param {String} id The id of the button.
990
- * @example
991
- */
992
- enableButton : function( id )
993
- {
994
- return this._.buttons[ id ].enable();
995
- },
996
-
997
- /**
998
- * Gets the number of pages in the dialog.
999
- * @returns {Number} Page count.
1000
- */
1001
- getPageCount : function()
1002
- {
1003
- return this._.pageCount;
1004
- },
1005
-
1006
- /**
1007
- * Gets the editor instance which opened this dialog.
1008
- * @returns {CKEDITOR.editor} Parent editor instances.
1009
- */
1010
- getParentEditor : function()
1011
- {
1012
- return this._.editor;
1013
- },
1014
-
1015
- /**
1016
- * Gets the element that was selected when opening the dialog, if any.
1017
- * @returns {CKEDITOR.dom.element} The element that was selected, or null.
1018
- */
1019
- getSelectedElement : function()
1020
- {
1021
- return this.getParentEditor().getSelection().getSelectedElement();
1022
- },
1023
-
1024
- /**
1025
- * Adds element to dialog's focusable list.
1026
- *
1027
- * @param {CKEDITOR.dom.element} element
1028
- * @param {Number} [index]
1029
- */
1030
- addFocusable: function( element, index ) {
1031
- if ( typeof index == 'undefined' )
1032
- {
1033
- index = this._.focusList.length;
1034
- this._.focusList.push( new Focusable( this, element, index ) );
1035
- }
1036
- else
1037
- {
1038
- this._.focusList.splice( index, 0, new Focusable( this, element, index ) );
1039
- for ( var i = index + 1 ; i < this._.focusList.length ; i++ )
1040
- this._.focusList[ i ].focusIndex++;
1041
- }
1042
- }
1043
- };
1044
-
1045
- CKEDITOR.tools.extend( CKEDITOR.dialog,
1046
- /**
1047
- * @lends CKEDITOR.dialog
1048
- */
1049
- {
1050
- /**
1051
- * Registers a dialog.
1052
- * @param {String} name The dialog's name.
1053
- * @param {Function|String} dialogDefinition
1054
- * A function returning the dialog's definition, or the URL to the .js file holding the function.
1055
- * The function should accept an argument "editor" which is the current editor instance, and
1056
- * return an object conforming to {@link CKEDITOR.dialog.dialogDefinition}.
1057
- * @example
1058
- * @see CKEDITOR.dialog.dialogDefinition
1059
- */
1060
- add : function( name, dialogDefinition )
1061
- {
1062
- // Avoid path registration from multiple instances override definition.
1063
- if ( !this._.dialogDefinitions[name]
1064
- || typeof dialogDefinition == 'function' )
1065
- this._.dialogDefinitions[name] = dialogDefinition;
1066
- },
1067
-
1068
- exists : function( name )
1069
- {
1070
- return !!this._.dialogDefinitions[ name ];
1071
- },
1072
-
1073
- getCurrent : function()
1074
- {
1075
- return CKEDITOR.dialog._.currentTop;
1076
- },
1077
-
1078
- /**
1079
- * The default OK button for dialogs. Fires the "ok" event and closes the dialog if the event succeeds.
1080
- * @static
1081
- * @field
1082
- * @example
1083
- * @type Function
1084
- */
1085
- okButton : (function()
1086
- {
1087
- var retval = function( editor, override )
1088
- {
1089
- override = override || {};
1090
- return CKEDITOR.tools.extend( {
1091
- id : 'ok',
1092
- type : 'button',
1093
- label : editor.lang.common.ok,
1094
- 'class' : 'cke_dialog_ui_button_ok',
1095
- onClick : function( evt )
1096
- {
1097
- var dialog = evt.data.dialog;
1098
- if ( dialog.fire( 'ok', { hide : true } ).hide !== false )
1099
- dialog.hide();
1100
- }
1101
- }, override, true );
1102
- };
1103
- retval.type = 'button';
1104
- retval.override = function( override )
1105
- {
1106
- return CKEDITOR.tools.extend( function( editor ){ return retval( editor, override ); },
1107
- { type : 'button' }, true );
1108
- };
1109
- return retval;
1110
- })(),
1111
-
1112
- /**
1113
- * The default cancel button for dialogs. Fires the "cancel" event and closes the dialog if no UI element value changed.
1114
- * @static
1115
- * @field
1116
- * @example
1117
- * @type Function
1118
- */
1119
- cancelButton : (function()
1120
- {
1121
- var retval = function( editor, override )
1122
- {
1123
- override = override || {};
1124
- return CKEDITOR.tools.extend( {
1125
- id : 'cancel',
1126
- type : 'button',
1127
- label : editor.lang.common.cancel,
1128
- 'class' : 'cke_dialog_ui_button_cancel',
1129
- onClick : function( evt )
1130
- {
1131
- var dialog = evt.data.dialog;
1132
- if ( dialog.fire( 'cancel', { hide : true } ).hide !== false )
1133
- dialog.hide();
1134
- }
1135
- }, override, true );
1136
- };
1137
- retval.type = 'button';
1138
- retval.override = function( override )
1139
- {
1140
- return CKEDITOR.tools.extend( function( editor ){ return retval( editor, override ); },
1141
- { type : 'button' }, true );
1142
- };
1143
- return retval;
1144
- })(),
1145
-
1146
- /**
1147
- * Registers a dialog UI element.
1148
- * @param {String} typeName The name of the UI element.
1149
- * @param {Function} builder The function to build the UI element.
1150
- * @example
1151
- */
1152
- addUIElement : function( typeName, builder )
1153
- {
1154
- this._.uiElementBuilders[ typeName ] = builder;
1155
- }
1156
- });
1157
-
1158
- CKEDITOR.dialog._ =
1159
- {
1160
- uiElementBuilders : {},
1161
-
1162
- dialogDefinitions : {},
1163
-
1164
- currentTop : null,
1165
-
1166
- currentZIndex : null
1167
- };
1168
-
1169
- // "Inherit" (copy actually) from CKEDITOR.event.
1170
- CKEDITOR.event.implementOn( CKEDITOR.dialog );
1171
- CKEDITOR.event.implementOn( CKEDITOR.dialog.prototype, true );
1172
-
1173
- var defaultDialogDefinition =
1174
- {
1175
- resizable : CKEDITOR.DIALOG_RESIZE_NONE,
1176
- minWidth : 600,
1177
- minHeight : 400,
1178
- buttons : [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ]
1179
- };
1180
-
1181
- // Tool function used to return an item from an array based on its id
1182
- // property.
1183
- var getById = function( array, id, recurse )
1184
- {
1185
- for ( var i = 0, item ; ( item = array[ i ] ) ; i++ )
1186
- {
1187
- if ( item.id == id )
1188
- return item;
1189
- if ( recurse && item[ recurse ] )
1190
- {
1191
- var retval = getById( item[ recurse ], id, recurse ) ;
1192
- if ( retval )
1193
- return retval;
1194
- }
1195
- }
1196
- return null;
1197
- };
1198
-
1199
- // Tool function used to add an item into an array.
1200
- var addById = function( array, newItem, nextSiblingId, recurse, nullIfNotFound )
1201
- {
1202
- if ( nextSiblingId )
1203
- {
1204
- for ( var i = 0, item ; ( item = array[ i ] ) ; i++ )
1205
- {
1206
- if ( item.id == nextSiblingId )
1207
- {
1208
- array.splice( i, 0, newItem );
1209
- return newItem;
1210
- }
1211
-
1212
- if ( recurse && item[ recurse ] )
1213
- {
1214
- var retval = addById( item[ recurse ], newItem, nextSiblingId, recurse, true );
1215
- if ( retval )
1216
- return retval;
1217
- }
1218
- }
1219
-
1220
- if ( nullIfNotFound )
1221
- return null;
1222
- }
1223
-
1224
- array.push( newItem );
1225
- return newItem;
1226
- };
1227
-
1228
- // Tool function used to remove an item from an array based on its id.
1229
- var removeById = function( array, id, recurse )
1230
- {
1231
- for ( var i = 0, item ; ( item = array[ i ] ) ; i++ )
1232
- {
1233
- if ( item.id == id )
1234
- return array.splice( i, 1 );
1235
- if ( recurse && item[ recurse ] )
1236
- {
1237
- var retval = removeById( item[ recurse ], id, recurse );
1238
- if ( retval )
1239
- return retval;
1240
- }
1241
- }
1242
- return null;
1243
- };
1244
-
1245
- /**
1246
- * This class is not really part of the API. It is the "definition" property value
1247
- * passed to "dialogDefinition" event handlers.
1248
- * @constructor
1249
- * @name CKEDITOR.dialog.dialogDefinitionObject
1250
- * @extends CKEDITOR.dialog.dialogDefinition
1251
- * @example
1252
- * CKEDITOR.on( 'dialogDefinition', function( evt )
1253
- * {
1254
- * var definition = evt.data.definition;
1255
- * var content = definition.getContents( 'page1' );
1256
- * ...
1257
- * } );
1258
- */
1259
- var definitionObject = function( dialog, dialogDefinition )
1260
- {
1261
- // TODO : Check if needed.
1262
- this.dialog = dialog;
1263
-
1264
- // Transform the contents entries in contentObjects.
1265
- var contents = dialogDefinition.contents;
1266
- for ( var i = 0, content ; ( content = contents[i] ) ; i++ )
1267
- contents[ i ] = new contentObject( dialog, content );
1268
-
1269
- CKEDITOR.tools.extend( this, dialogDefinition );
1270
- };
1271
-
1272
- definitionObject.prototype =
1273
- /** @lends CKEDITOR.dialog.dialogDefinitionObject.prototype */
1274
- {
1275
- /**
1276
- * Gets a content definition.
1277
- * @param {String} id The id of the content definition.
1278
- * @returns {CKEDITOR.dialog.contentDefinition} The content definition
1279
- * matching id.
1280
- */
1281
- getContents : function( id )
1282
- {
1283
- return getById( this.contents, id );
1284
- },
1285
-
1286
- /**
1287
- * Gets a button definition.
1288
- * @param {String} id The id of the button definition.
1289
- * @returns {CKEDITOR.dialog.buttonDefinition} The button definition
1290
- * matching id.
1291
- */
1292
- getButton : function( id )
1293
- {
1294
- return getById( this.buttons, id );
1295
- },
1296
-
1297
- /**
1298
- * Adds a content definition object under this dialog definition.
1299
- * @param {CKEDITOR.dialog.contentDefinition} contentDefinition The
1300
- * content definition.
1301
- * @param {String} [nextSiblingId] The id of an existing content
1302
- * definition which the new content definition will be inserted
1303
- * before. Omit if the new content definition is to be inserted as
1304
- * the last item.
1305
- * @returns {CKEDITOR.dialog.contentDefinition} The inserted content
1306
- * definition.
1307
- */
1308
- addContents : function( contentDefinition, nextSiblingId )
1309
- {
1310
- return addById( this.contents, contentDefinition, nextSiblingId );
1311
- },
1312
-
1313
- /**
1314
- * Adds a button definition object under this dialog definition.
1315
- * @param {CKEDITOR.dialog.buttonDefinition} buttonDefinition The
1316
- * button definition.
1317
- * @param {String} [nextSiblingId] The id of an existing button
1318
- * definition which the new button definition will be inserted
1319
- * before. Omit if the new button definition is to be inserted as
1320
- * the last item.
1321
- * @returns {CKEDITOR.dialog.buttonDefinition} The inserted button
1322
- * definition.
1323
- */
1324
- addButton : function( buttonDefinition, nextSiblingId )
1325
- {
1326
- return addById( this.buttons, buttonDefinition, nextSiblingId );
1327
- },
1328
-
1329
- /**
1330
- * Removes a content definition from this dialog definition.
1331
- * @param {String} id The id of the content definition to be removed.
1332
- * @returns {CKEDITOR.dialog.contentDefinition} The removed content
1333
- * definition.
1334
- */
1335
- removeContents : function( id )
1336
- {
1337
- removeById( this.contents, id );
1338
- },
1339
-
1340
- /**
1341
- * Removes a button definition from the dialog definition.
1342
- * @param {String} id The id of the button definition to be removed.
1343
- * @returns {CKEDITOR.dialog.buttonDefinition} The removed button
1344
- * definition.
1345
- */
1346
- removeButton : function( id )
1347
- {
1348
- removeById( this.buttons, id );
1349
- }
1350
- };
1351
-
1352
- /**
1353
- * This class is not really part of the API. It is the template of the
1354
- * objects representing content pages inside the
1355
- * CKEDITOR.dialog.dialogDefinitionObject.
1356
- * @constructor
1357
- * @name CKEDITOR.dialog.contentDefinitionObject
1358
- * @example
1359
- * CKEDITOR.on( 'dialogDefinition', function( evt )
1360
- * {
1361
- * var definition = evt.data.definition;
1362
- * var content = definition.getContents( 'page1' );
1363
- * content.remove( 'textInput1' );
1364
- * ...
1365
- * } );
1366
- */
1367
- function contentObject( dialog, contentDefinition )
1368
- {
1369
- this._ =
1370
- {
1371
- dialog : dialog
1372
- };
1373
-
1374
- CKEDITOR.tools.extend( this, contentDefinition );
1375
- }
1376
-
1377
- contentObject.prototype =
1378
- /** @lends CKEDITOR.dialog.contentDefinitionObject.prototype */
1379
- {
1380
- /**
1381
- * Gets a UI element definition under the content definition.
1382
- * @param {String} id The id of the UI element definition.
1383
- * @returns {CKEDITOR.dialog.uiElementDefinition}
1384
- */
1385
- get : function( id )
1386
- {
1387
- return getById( this.elements, id, 'children' );
1388
- },
1389
-
1390
- /**
1391
- * Adds a UI element definition to the content definition.
1392
- * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition The
1393
- * UI elemnet definition to be added.
1394
- * @param {String} nextSiblingId The id of an existing UI element
1395
- * definition which the new UI element definition will be inserted
1396
- * before. Omit if the new button definition is to be inserted as
1397
- * the last item.
1398
- * @returns {CKEDITOR.dialog.uiElementDefinition} The element
1399
- * definition inserted.
1400
- */
1401
- add : function( elementDefinition, nextSiblingId )
1402
- {
1403
- return addById( this.elements, elementDefinition, nextSiblingId, 'children' );
1404
- },
1405
-
1406
- /**
1407
- * Removes a UI element definition from the content definition.
1408
- * @param {String} id The id of the UI element definition to be
1409
- * removed.
1410
- * @returns {CKEDITOR.dialog.uiElementDefinition} The element
1411
- * definition removed.
1412
- * @example
1413
- */
1414
- remove : function( id )
1415
- {
1416
- removeById( this.elements, id, 'children' );
1417
- }
1418
- };
1419
-
1420
- function initDragAndDrop( dialog )
1421
- {
1422
- var lastCoords = null,
1423
- abstractDialogCoords = null,
1424
- element = dialog.getElement().getFirst(),
1425
- editor = dialog.getParentEditor(),
1426
- magnetDistance = editor.config.dialog_magnetDistance,
1427
- margins = skinData[ editor.skinName ].margins || [ 0, 0, 0, 0 ];
1428
-
1429
- function mouseMoveHandler( evt )
1430
- {
1431
- var dialogSize = dialog.getSize(),
1432
- viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(),
1433
- x = evt.data.$.screenX,
1434
- y = evt.data.$.screenY,
1435
- dx = x - lastCoords.x,
1436
- dy = y - lastCoords.y,
1437
- realX, realY;
1438
-
1439
- lastCoords = { x : x, y : y };
1440
- abstractDialogCoords.x += dx;
1441
- abstractDialogCoords.y += dy;
1442
-
1443
- if ( abstractDialogCoords.x + margins[3] < magnetDistance )
1444
- realX = - margins[3];
1445
- else if ( abstractDialogCoords.x - margins[1] > viewPaneSize.width - dialogSize.width - magnetDistance )
1446
- realX = viewPaneSize.width - dialogSize.width + margins[1];
1447
- else
1448
- realX = abstractDialogCoords.x;
1449
-
1450
- if ( abstractDialogCoords.y + margins[0] < magnetDistance )
1451
- realY = - margins[0];
1452
- else if ( abstractDialogCoords.y - margins[2] > viewPaneSize.height - dialogSize.height - magnetDistance )
1453
- realY = viewPaneSize.height - dialogSize.height + margins[2];
1454
- else
1455
- realY = abstractDialogCoords.y;
1456
-
1457
- dialog.move( realX, realY );
1458
-
1459
- evt.data.preventDefault();
1460
- }
1461
-
1462
- function mouseUpHandler( evt )
1463
- {
1464
- CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler );
1465
- CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler );
1466
-
1467
- if ( CKEDITOR.env.ie6Compat )
1468
- {
1469
- var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
1470
- coverDoc.removeListener( 'mousemove', mouseMoveHandler );
1471
- coverDoc.removeListener( 'mouseup', mouseUpHandler );
1472
- }
1473
- }
1474
-
1475
- dialog.parts.title.on( 'mousedown', function( evt )
1476
- {
1477
- dialog._.updateSize = true;
1478
-
1479
- lastCoords = { x : evt.data.$.screenX, y : evt.data.$.screenY };
1480
-
1481
- CKEDITOR.document.on( 'mousemove', mouseMoveHandler );
1482
- CKEDITOR.document.on( 'mouseup', mouseUpHandler );
1483
- abstractDialogCoords = dialog.getPosition();
1484
-
1485
- if ( CKEDITOR.env.ie6Compat )
1486
- {
1487
- var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
1488
- coverDoc.on( 'mousemove', mouseMoveHandler );
1489
- coverDoc.on( 'mouseup', mouseUpHandler );
1490
- }
1491
-
1492
- evt.data.preventDefault();
1493
- }, dialog );
1494
- }
1495
-
1496
- function initResizeHandles( dialog )
1497
- {
1498
- var definition = dialog.definition,
1499
- minWidth = definition.minWidth || 0,
1500
- minHeight = definition.minHeight || 0,
1501
- resizable = definition.resizable,
1502
- margins = skinData[ dialog.getParentEditor().skinName ].margins || [ 0, 0, 0, 0 ];
1503
-
1504
- function topSizer( coords, dy )
1505
- {
1506
- coords.y += dy;
1507
- }
1508
-
1509
- function rightSizer( coords, dx )
1510
- {
1511
- coords.x2 += dx;
1512
- }
1513
-
1514
- function bottomSizer( coords, dy )
1515
- {
1516
- coords.y2 += dy;
1517
- }
1518
-
1519
- function leftSizer( coords, dx )
1520
- {
1521
- coords.x += dx;
1522
- }
1523
-
1524
- var lastCoords = null,
1525
- abstractDialogCoords = null,
1526
- magnetDistance = dialog._.editor.config.magnetDistance,
1527
- parts = [ 'tl', 't', 'tr', 'l', 'r', 'bl', 'b', 'br' ];
1528
-
1529
- function mouseDownHandler( evt )
1530
- {
1531
- var partName = evt.listenerData.part, size = dialog.getSize();
1532
- abstractDialogCoords = dialog.getPosition();
1533
- CKEDITOR.tools.extend( abstractDialogCoords,
1534
- {
1535
- x2 : abstractDialogCoords.x + size.width,
1536
- y2 : abstractDialogCoords.y + size.height
1537
- } );
1538
- lastCoords = { x : evt.data.$.screenX, y : evt.data.$.screenY };
1539
-
1540
- CKEDITOR.document.on( 'mousemove', mouseMoveHandler, dialog, { part : partName } );
1541
- CKEDITOR.document.on( 'mouseup', mouseUpHandler, dialog, { part : partName } );
1542
-
1543
- if ( CKEDITOR.env.ie6Compat )
1544
- {
1545
- var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
1546
- coverDoc.on( 'mousemove', mouseMoveHandler, dialog, { part : partName } );
1547
- coverDoc.on( 'mouseup', mouseUpHandler, dialog, { part : partName } );
1548
- }
1549
-
1550
- evt.data.preventDefault();
1551
- }
1552
-
1553
- function mouseMoveHandler( evt )
1554
- {
1555
- var x = evt.data.$.screenX,
1556
- y = evt.data.$.screenY,
1557
- dx = x - lastCoords.x,
1558
- dy = y - lastCoords.y,
1559
- viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(),
1560
- partName = evt.listenerData.part;
1561
-
1562
- if ( partName.search( 't' ) != -1 )
1563
- topSizer( abstractDialogCoords, dy );
1564
- if ( partName.search( 'l' ) != -1 )
1565
- leftSizer( abstractDialogCoords, dx );
1566
- if ( partName.search( 'b' ) != -1 )
1567
- bottomSizer( abstractDialogCoords, dy );
1568
- if ( partName.search( 'r' ) != -1 )
1569
- rightSizer( abstractDialogCoords, dx );
1570
-
1571
- lastCoords = { x : x, y : y };
1572
-
1573
- var realX, realY, realX2, realY2;
1574
-
1575
- if ( abstractDialogCoords.x + margins[3] < magnetDistance )
1576
- realX = - margins[3];
1577
- else if ( partName.search( 'l' ) != -1 && abstractDialogCoords.x2 - abstractDialogCoords.x < minWidth + magnetDistance )
1578
- realX = abstractDialogCoords.x2 - minWidth;
1579
- else
1580
- realX = abstractDialogCoords.x;
1581
-
1582
- if ( abstractDialogCoords.y + margins[0] < magnetDistance )
1583
- realY = - margins[0];
1584
- else if ( partName.search( 't' ) != -1 && abstractDialogCoords.y2 - abstractDialogCoords.y < minHeight + magnetDistance )
1585
- realY = abstractDialogCoords.y2 - minHeight;
1586
- else
1587
- realY = abstractDialogCoords.y;
1588
-
1589
- if ( abstractDialogCoords.x2 - margins[1] > viewPaneSize.width - magnetDistance )
1590
- realX2 = viewPaneSize.width + margins[1] ;
1591
- else if ( partName.search( 'r' ) != -1 && abstractDialogCoords.x2 - abstractDialogCoords.x < minWidth + magnetDistance )
1592
- realX2 = abstractDialogCoords.x + minWidth;
1593
- else
1594
- realX2 = abstractDialogCoords.x2;
1595
-
1596
- if ( abstractDialogCoords.y2 - margins[2] > viewPaneSize.height - magnetDistance )
1597
- realY2= viewPaneSize.height + margins[2] ;
1598
- else if ( partName.search( 'b' ) != -1 && abstractDialogCoords.y2 - abstractDialogCoords.y < minHeight + magnetDistance )
1599
- realY2 = abstractDialogCoords.y + minHeight;
1600
- else
1601
- realY2 = abstractDialogCoords.y2 ;
1602
-
1603
- dialog.move( realX, realY );
1604
- dialog.resize( realX2 - realX, realY2 - realY );
1605
-
1606
- evt.data.preventDefault();
1607
- }
1608
-
1609
- function mouseUpHandler( evt )
1610
- {
1611
- CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler );
1612
- CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler );
1613
-
1614
- if ( CKEDITOR.env.ie6Compat )
1615
- {
1616
- var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
1617
- coverDoc.removeListener( 'mouseup', mouseUpHandler );
1618
- coverDoc.removeListener( 'mousemove', mouseMoveHandler );
1619
- }
1620
- }
1621
-
1622
- // TODO : Simplify the resize logic, having just a single resize grip <div>.
1623
- // var widthTest = /[lr]/,
1624
- // heightTest = /[tb]/;
1625
- // for ( var i = 0 ; i < parts.length ; i++ )
1626
- // {
1627
- // var element = dialog.parts[ parts[i] + '_resize' ];
1628
- // if ( resizable == CKEDITOR.DIALOG_RESIZE_NONE ||
1629
- // resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT && widthTest.test( parts[i] ) ||
1630
- // resizable == CKEDITOR.DIALOG_RESIZE_WIDTH && heightTest.test( parts[i] ) )
1631
- // {
1632
- // element.hide();
1633
- // continue;
1634
- // }
1635
- // element.on( 'mousedown', mouseDownHandler, dialog, { part : parts[i] } );
1636
- // }
1637
- }
1638
-
1639
- var resizeCover;
1640
- var coverElement;
1641
-
1642
- var addCover = function( editor )
1643
- {
1644
- var win = CKEDITOR.document.getWindow();
1645
-
1646
- if ( !coverElement )
1647
- {
1648
- var html = [
1649
- '<div style="position: ', ( CKEDITOR.env.ie6Compat ? 'absolute' : 'fixed' ),
1650
- '; z-index: ', editor.config.baseFloatZIndex,
1651
- '; top: 0px; left: 0px; ',
1652
- 'background-color: ', editor.config.dialog_backgroundCoverColor,
1653
- '" id="cke_dialog_background_cover">'
1654
- ];
1655
-
1656
-
1657
- if ( CKEDITOR.env.ie6Compat )
1658
- {
1659
- // Support for custom document.domain in IE.
1660
- var isCustomDomain = CKEDITOR.env.isCustomDomain();
1661
-
1662
- html.push(
1663
- '<iframe' +
1664
- ' hidefocus="true"' +
1665
- ' frameborder="0"' +
1666
- ' id="cke_dialog_background_iframe"' +
1667
- ' src="javascript:' );
1668
-
1669
- html.push(
1670
- isCustomDomain ?
1671
- 'void((function(){' +
1672
- 'document.open();' +
1673
- 'document.domain=\'' + document.domain + '\';' +
1674
- 'document.close();' +
1675
- '})())'
1676
- :
1677
- '\'\'' );
1678
-
1679
- html.push(
1680
- '"' +
1681
- ' style="' +
1682
- 'position:absolute;' +
1683
- 'left:0;' +
1684
- 'top:0;' +
1685
- 'width:100%;' +
1686
- 'height: 100%;' +
1687
- 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)">' +
1688
- '</iframe>' );
1689
- }
1690
-
1691
- html.push( '</div>' );
1692
-
1693
- coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) );
1694
- }
1695
-
1696
- var element = coverElement;
1697
-
1698
- var resizeFunc = function()
1699
- {
1700
- var size = win.getViewPaneSize();
1701
- element.setStyles(
1702
- {
1703
- width : size.width + 'px',
1704
- height : size.height + 'px'
1705
- } );
1706
- };
1707
-
1708
- var scrollFunc = function()
1709
- {
1710
- var pos = win.getScrollPosition(),
1711
- cursor = CKEDITOR.dialog._.currentTop;
1712
- element.setStyles(
1713
- {
1714
- left : pos.x + 'px',
1715
- top : pos.y + 'px'
1716
- });
1717
-
1718
- do
1719
- {
1720
- var dialogPos = cursor.getPosition();
1721
- cursor.move( dialogPos.x, dialogPos.y );
1722
- } while( ( cursor = cursor._.parentDialog ) );
1723
- };
1724
-
1725
- resizeCover = resizeFunc;
1726
- win.on( 'resize', resizeFunc );
1727
- resizeFunc();
1728
- if ( CKEDITOR.env.ie6Compat )
1729
- {
1730
- // IE BUG: win.$.onscroll assignment doesn't work.. it must be window.onscroll.
1731
- // So we need to invent a really funny way to make it work.
1732
- var myScrollHandler = function()
1733
- {
1734
- scrollFunc();
1735
- arguments.callee.prevScrollHandler.apply( this, arguments );
1736
- };
1737
- win.$.setTimeout( function()
1738
- {
1739
- myScrollHandler.prevScrollHandler = window.onscroll || function(){};
1740
- window.onscroll = myScrollHandler;
1741
- }, 0 );
1742
- scrollFunc();
1743
- }
1744
- element.setOpacity( editor.config.dialog_backgroundCoverOpacity );
1745
- element.appendTo( CKEDITOR.document.getBody() );
1746
- };
1747
-
1748
- var removeCover = function()
1749
- {
1750
- if ( !coverElement )
1751
- return;
1752
-
1753
- var win = CKEDITOR.document.getWindow();
1754
- coverElement.remove();
1755
- win.removeListener( 'resize', resizeCover );
1756
-
1757
- if ( CKEDITOR.env.ie6Compat )
1758
- {
1759
- win.$.setTimeout( function()
1760
- {
1761
- var prevScrollHandler = window.onscroll && window.onscroll.prevScrollHandler;
1762
- window.onscroll = prevScrollHandler || null;
1763
- }, 0 );
1764
- }
1765
- resizeCover = null;
1766
- };
1767
-
1768
- var accessKeyProcessors = {};
1769
-
1770
- var accessKeyDownHandler = function( evt )
1771
- {
1772
- var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey,
1773
- alt = evt.data.$.altKey,
1774
- shift = evt.data.$.shiftKey,
1775
- key = String.fromCharCode( evt.data.$.keyCode ),
1776
- keyProcessor = accessKeyProcessors[( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '') + ( shift ? 'SHIFT+' : '' ) + key];
1777
-
1778
- if ( !keyProcessor || !keyProcessor.length )
1779
- return;
1780
-
1781
- keyProcessor = keyProcessor[keyProcessor.length - 1];
1782
- keyProcessor.keydown && keyProcessor.keydown.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key );
1783
- evt.data.preventDefault();
1784
- };
1785
-
1786
- var accessKeyUpHandler = function( evt )
1787
- {
1788
- var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey,
1789
- alt = evt.data.$.altKey,
1790
- shift = evt.data.$.shiftKey,
1791
- key = String.fromCharCode( evt.data.$.keyCode ),
1792
- keyProcessor = accessKeyProcessors[( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '') + ( shift ? 'SHIFT+' : '' ) + key];
1793
-
1794
- if ( !keyProcessor || !keyProcessor.length )
1795
- return;
1796
-
1797
- keyProcessor = keyProcessor[keyProcessor.length - 1];
1798
- keyProcessor.keyup && keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key );
1799
- evt.data.preventDefault();
1800
- };
1801
-
1802
- var registerAccessKey = function( uiElement, dialog, key, downFunc, upFunc )
1803
- {
1804
- var procList = accessKeyProcessors[key] || ( accessKeyProcessors[key] = [] );
1805
- procList.push( {
1806
- uiElement : uiElement,
1807
- dialog : dialog,
1808
- key : key,
1809
- keyup : upFunc || uiElement.accessKeyUp,
1810
- keydown : downFunc || uiElement.accessKeyDown
1811
- } );
1812
- };
1813
-
1814
- var unregisterAccessKey = function( obj )
1815
- {
1816
- for ( var i in accessKeyProcessors )
1817
- {
1818
- var list = accessKeyProcessors[i];
1819
- for ( var j = list.length - 1 ; j >= 0 ; j-- )
1820
- {
1821
- if ( list[j].dialog == obj || list[j].uiElement == obj )
1822
- list.splice( j, 1 );
1823
- }
1824
- if ( list.length === 0 )
1825
- delete accessKeyProcessors[i];
1826
- }
1827
- };
1828
-
1829
- var tabAccessKeyUp = function( dialog, key )
1830
- {
1831
- if ( dialog._.accessKeyMap[key] )
1832
- dialog.selectPage( dialog._.accessKeyMap[key] );
1833
- };
1834
-
1835
- var tabAccessKeyDown = function( dialog, key )
1836
- {
1837
- };
1838
-
1839
- (function()
1840
- {
1841
- CKEDITOR.ui.dialog =
1842
- {
1843
- /**
1844
- * The base class of all dialog UI elements.
1845
- * @constructor
1846
- * @param {CKEDITOR.dialog} dialog Parent dialog object.
1847
- * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition Element
1848
- * definition. Accepted fields:
1849
- * <ul>
1850
- * <li><strong>id</strong> (Required) The id of the UI element. See {@link
1851
- * CKEDITOR.dialog#getContentElement}</li>
1852
- * <li><strong>type</strong> (Required) The type of the UI element. The
1853
- * value to this field specifies which UI element class will be used to
1854
- * generate the final widget.</li>
1855
- * <li><strong>title</strong> (Optional) The popup tooltip for the UI
1856
- * element.</li>
1857
- * <li><strong>hidden</strong> (Optional) A flag that tells if the element
1858
- * should be initially visible.</li>
1859
- * <li><strong>className</strong> (Optional) Additional CSS class names
1860
- * to add to the UI element. Separated by space.</li>
1861
- * <li><strong>style</strong> (Optional) Additional CSS inline styles
1862
- * to add to the UI element. A semicolon (;) is required after the last
1863
- * style declaration.</li>
1864
- * <li><strong>accessKey</strong> (Optional) The alphanumeric access key
1865
- * for this element. Access keys are automatically prefixed by CTRL.</li>
1866
- * <li><strong>on*</strong> (Optional) Any UI element definition field that
1867
- * starts with <em>on</em> followed immediately by a capital letter and
1868
- * probably more letters is an event handler. Event handlers may be further
1869
- * divided into registered event handlers and DOM event handlers. Please
1870
- * refer to {@link CKEDITOR.ui.dialog.uiElement#registerEvents} and
1871
- * {@link CKEDITOR.ui.dialog.uiElement#eventProcessors} for more
1872
- * information.</li>
1873
- * </ul>
1874
- * @param {Array} htmlList
1875
- * List of HTML code to be added to the dialog's content area.
1876
- * @param {Function|String} nodeNameArg
1877
- * A function returning a string, or a simple string for the node name for
1878
- * the root DOM node. Default is 'div'.
1879
- * @param {Function|Object} stylesArg
1880
- * A function returning an object, or a simple object for CSS styles applied
1881
- * to the DOM node. Default is empty object.
1882
- * @param {Function|Object} attributesArg
1883
- * A fucntion returning an object, or a simple object for attributes applied
1884
- * to the DOM node. Default is empty object.
1885
- * @param {Function|String} contentsArg
1886
- * A function returning a string, or a simple string for the HTML code inside
1887
- * the root DOM node. Default is empty string.
1888
- * @example
1889
- */
1890
- uiElement : function( dialog, elementDefinition, htmlList, nodeNameArg, stylesArg, attributesArg, contentsArg )
1891
- {
1892
- if ( arguments.length < 4 )
1893
- return;
1894
-
1895
- var nodeName = ( nodeNameArg.call ? nodeNameArg( elementDefinition ) : nodeNameArg ) || 'div',
1896
- html = [ '<', nodeName, ' ' ],
1897
- styles = ( stylesArg && stylesArg.call ? stylesArg( elementDefinition ) : stylesArg ) || {},
1898
- attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {},
1899
- innerHTML = ( contentsArg && contentsArg.call ? contentsArg( dialog, elementDefinition ) : contentsArg ) || '',
1900
- domId = this.domId = attributes.id || CKEDITOR.tools.getNextNumber() + '_uiElement',
1901
- id = this.id = elementDefinition.id,
1902
- i;
1903
-
1904
- // Set the id, a unique id is required for getElement() to work.
1905
- attributes.id = domId;
1906
-
1907
- // Set the type and definition CSS class names.
1908
- var classes = {};
1909
- if ( elementDefinition.type )
1910
- classes[ 'cke_dialog_ui_' + elementDefinition.type ] = 1;
1911
- if ( elementDefinition.className )
1912
- classes[ elementDefinition.className ] = 1;
1913
- var attributeClasses = ( attributes['class'] && attributes['class'].split ) ? attributes['class'].split( ' ' ) : [];
1914
- for ( i = 0 ; i < attributeClasses.length ; i++ )
1915
- {
1916
- if ( attributeClasses[i] )
1917
- classes[ attributeClasses[i] ] = 1;
1918
- }
1919
- var finalClasses = [];
1920
- for ( i in classes )
1921
- finalClasses.push( i );
1922
- attributes['class'] = finalClasses.join( ' ' );
1923
-
1924
- // Set the popup tooltop.
1925
- if ( elementDefinition.title )
1926
- attributes.title = elementDefinition.title;
1927
-
1928
- // Write the inline CSS styles.
1929
- var styleStr = ( elementDefinition.style || '' ).split( ';' );
1930
- for ( i in styles )
1931
- styleStr.push( i + ':' + styles[i] );
1932
- if ( elementDefinition.hidden )
1933
- styleStr.push( 'display:none' );
1934
- for ( i = styleStr.length - 1 ; i >= 0 ; i-- )
1935
- {
1936
- if ( styleStr[i] === '' )
1937
- styleStr.splice( i, 1 );
1938
- }
1939
- if ( styleStr.length > 0 )
1940
- attributes.style = ( attributes.style ? ( attributes.style + '; ' ) : '' ) + styleStr.join( '; ' );
1941
-
1942
- // Write the attributes.
1943
- for ( i in attributes )
1944
- html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[i] ) + '" ');
1945
-
1946
- // Write the content HTML.
1947
- html.push( '>', innerHTML, '</', nodeName, '>' );
1948
-
1949
- // Add contents to the parent HTML array.
1950
- htmlList.push( html.join( '' ) );
1951
-
1952
- ( this._ || ( this._ = {} ) ).dialog = dialog;
1953
-
1954
- // Override isChanged if it is defined in element definition.
1955
- if ( typeof( elementDefinition.isChanged ) == 'boolean' )
1956
- this.isChanged = function(){ return elementDefinition.isChanged; };
1957
- if ( typeof( elementDefinition.isChanged ) == 'function' )
1958
- this.isChanged = elementDefinition.isChanged;
1959
-
1960
- // Add events.
1961
- CKEDITOR.event.implementOn( this );
1962
-
1963
- this.registerEvents( elementDefinition );
1964
- if ( this.accessKeyUp && this.accessKeyDown && elementDefinition.accessKey )
1965
- registerAccessKey( this, dialog, 'CTRL+' + elementDefinition.accessKey );
1966
-
1967
- var me = this;
1968
- dialog.on( 'load', function()
1969
- {
1970
- if ( me.getInputElement() )
1971
- {
1972
- me.getInputElement().on( 'focus', function()
1973
- {
1974
- dialog._.tabBarMode = false;
1975
- dialog._.hasFocus = true;
1976
- me.fire( 'focus' );
1977
- }, me );
1978
- }
1979
- } );
1980
-
1981
- // Register the object as a tab focus if it can be included.
1982
- if ( this.keyboardFocusable )
1983
- {
1984
- this.focusIndex = dialog._.focusList.push( this ) - 1;
1985
- this.on( 'focus', function()
1986
- {
1987
- dialog._.currentFocusIndex = me.focusIndex;
1988
- } );
1989
- }
1990
-
1991
- // Completes this object with everything we have in the
1992
- // definition.
1993
- CKEDITOR.tools.extend( this, elementDefinition );
1994
- },
1995
-
1996
- /**
1997
- * Horizontal layout box for dialog UI elements, auto-expends to available width of container.
1998
- * @constructor
1999
- * @extends CKEDITOR.ui.dialog.uiElement
2000
- * @param {CKEDITOR.dialog} dialog
2001
- * Parent dialog object.
2002
- * @param {Array} childObjList
2003
- * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this
2004
- * container.
2005
- * @param {Array} childHtmlList
2006
- * Array of HTML code that correspond to the HTML output of all the
2007
- * objects in childObjList.
2008
- * @param {Array} htmlList
2009
- * Array of HTML code that this element will output to.
2010
- * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
2011
- * The element definition. Accepted fields:
2012
- * <ul>
2013
- * <li><strong>widths</strong> (Optional) The widths of child cells.</li>
2014
- * <li><strong>height</strong> (Optional) The height of the layout.</li>
2015
- * <li><strong>padding</strong> (Optional) The padding width inside child
2016
- * cells.</li>
2017
- * <li><strong>align</strong> (Optional) The alignment of the whole layout
2018
- * </li>
2019
- * </ul>
2020
- * @example
2021
- */
2022
- hbox : function( dialog, childObjList, childHtmlList, htmlList, elementDefinition )
2023
- {
2024
- if ( arguments.length < 4 )
2025
- return;
2026
-
2027
- this._ || ( this._ = {} );
2028
-
2029
- var children = this._.children = childObjList,
2030
- widths = elementDefinition && elementDefinition.widths || null,
2031
- height = elementDefinition && elementDefinition.height || null,
2032
- styles = {},
2033
- i;
2034
- /** @ignore */
2035
- var innerHTML = function()
2036
- {
2037
- var html = [ '<tbody><tr class="cke_dialog_ui_hbox">' ];
2038
- for ( i = 0 ; i < childHtmlList.length ; i++ )
2039
- {
2040
- var className = 'cke_dialog_ui_hbox_child',
2041
- styles = [];
2042
- if ( i === 0 )
2043
- className = 'cke_dialog_ui_hbox_first';
2044
- if ( i == childHtmlList.length - 1 )
2045
- className = 'cke_dialog_ui_hbox_last';
2046
- html.push( '<td class="', className, '" ' );
2047
- if ( widths )
2048
- {
2049
- if ( widths[i] )
2050
- styles.push( 'width:' + CKEDITOR.tools.cssLength( widths[i] ) );
2051
- }
2052
- else
2053
- styles.push( 'width:' + Math.floor( 100 / childHtmlList.length ) + '%' );
2054
- if ( height )
2055
- styles.push( 'height:' + CKEDITOR.tools.cssLength( height ) );
2056
- if ( elementDefinition && elementDefinition.padding != undefined )
2057
- styles.push( 'padding:' + CKEDITOR.tools.cssLength( elementDefinition.padding ) );
2058
- if ( styles.length > 0 )
2059
- html.push( 'style="' + styles.join('; ') + '" ' );
2060
- html.push( '>', childHtmlList[i], '</td>' );
2061
- }
2062
- html.push( '</tr></tbody>' );
2063
- return html.join( '' );
2064
- };
2065
-
2066
- CKEDITOR.ui.dialog.uiElement.call(
2067
- this,
2068
- dialog,
2069
- elementDefinition || { type : 'hbox' },
2070
- htmlList,
2071
- 'table',
2072
- styles,
2073
- elementDefinition && elementDefinition.align && { align : elementDefinition.align } || null,
2074
- innerHTML );
2075
- },
2076
-
2077
- /**
2078
- * Vertical layout box for dialog UI elements.
2079
- * @constructor
2080
- * @extends CKEDITOR.ui.dialog.hbox
2081
- * @param {CKEDITOR.dialog} dialog
2082
- * Parent dialog object.
2083
- * @param {Array} childObjList
2084
- * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this
2085
- * container.
2086
- * @param {Array} childHtmlList
2087
- * Array of HTML code that correspond to the HTML output of all the
2088
- * objects in childObjList.
2089
- * @param {Array} htmlList
2090
- * Array of HTML code that this element will output to.
2091
- * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
2092
- * The element definition. Accepted fields:
2093
- * <ul>
2094
- * <li><strong>width</strong> (Optional) The width of the layout.</li>
2095
- * <li><strong>heights</strong> (Optional) The heights of individual cells.
2096
- * </li>
2097
- * <li><strong>align</strong> (Optional) The alignment of the layout.</li>
2098
- * <li><strong>padding</strong> (Optional) The padding width inside child
2099
- * cells.</li>
2100
- * <li><strong>expand</strong> (Optional) Whether the layout should expand
2101
- * vertically to fill its container.</li>
2102
- * </ul>
2103
- * @example
2104
- */
2105
- vbox : function( dialog, childObjList, childHtmlList, htmlList, elementDefinition )
2106
- {
2107
- if (arguments.length < 3 )
2108
- return;
2109
-
2110
- this._ || ( this._ = {} );
2111
-
2112
- var children = this._.children = childObjList,
2113
- width = elementDefinition && elementDefinition.width || null,
2114
- heights = elementDefinition && elementDefinition.heights || null;
2115
- /** @ignore */
2116
- var innerHTML = function()
2117
- {
2118
- var html = [ '<table cellspacing="0" border="0" ' ];
2119
- html.push( 'style="' );
2120
- if ( elementDefinition && elementDefinition.expand )
2121
- html.push( 'height:100%;' );
2122
- html.push( 'width:' + CKEDITOR.tools.cssLength( width || '100%' ), ';' );
2123
- html.push( '"' );
2124
- html.push( 'align="', CKEDITOR.tools.htmlEncode(
2125
- ( elementDefinition && elementDefinition.align ) || ( dialog.getParentEditor().lang.dir == 'ltr' ? 'left' : 'right' ) ), '" ' );
2126
-
2127
- html.push( '><tbody>' );
2128
- for ( var i = 0 ; i < childHtmlList.length ; i++ )
2129
- {
2130
- var styles = [];
2131
- html.push( '<tr><td ' );
2132
- if ( width )
2133
- styles.push( 'width:' + CKEDITOR.tools.cssLength( width || '100%' ) );
2134
- if ( heights )
2135
- styles.push( 'height:' + CKEDITOR.tools.cssLength( heights[i] ) );
2136
- else if ( elementDefinition && elementDefinition.expand )
2137
- styles.push( 'height:' + Math.floor( 100 / childHtmlList.length ) + '%' );
2138
- if ( elementDefinition && elementDefinition.padding != undefined )
2139
- styles.push( 'padding:' + CKEDITOR.tools.cssLength( elementDefinition.padding ) );
2140
- if ( styles.length > 0 )
2141
- html.push( 'style="', styles.join( '; ' ), '" ' );
2142
- html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[i], '</td></tr>' );
2143
- }
2144
- html.push( '</tbody></table>' );
2145
- return html.join( '' );
2146
- };
2147
- CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type : 'vbox' }, htmlList, 'div', null, null, innerHTML );
2148
- }
2149
- };
2150
- })();
2151
-
2152
- CKEDITOR.ui.dialog.uiElement.prototype =
2153
- {
2154
- /**
2155
- * Gets the root DOM element of this dialog UI object.
2156
- * @returns {CKEDITOR.dom.element} Root DOM element of UI object.
2157
- * @example
2158
- * uiElement.getElement().hide();
2159
- */
2160
- getElement : function()
2161
- {
2162
- return CKEDITOR.document.getById( this.domId );
2163
- },
2164
-
2165
- /**
2166
- * Gets the DOM element that the user inputs values.
2167
- * This function is used by setValue(), getValue() and focus(). It should
2168
- * be overrided in child classes where the input element isn't the root
2169
- * element.
2170
- * @returns {CKEDITOR.dom.element} The element where the user input values.
2171
- * @example
2172
- * var rawValue = textInput.getInputElement().$.value;
2173
- */
2174
- getInputElement : function()
2175
- {
2176
- return this.getElement();
2177
- },
2178
-
2179
- /**
2180
- * Gets the parent dialog object containing this UI element.
2181
- * @returns {CKEDITOR.dialog} Parent dialog object.
2182
- * @example
2183
- * var dialog = uiElement.getDialog();
2184
- */
2185
- getDialog : function()
2186
- {
2187
- return this._.dialog;
2188
- },
2189
-
2190
- /**
2191
- * Sets the value of this dialog UI object.
2192
- * @param {Object} value The new value.
2193
- * @returns {CKEDITOR.dialog.uiElement} The current UI element.
2194
- * @example
2195
- * uiElement.setValue( 'Dingo' );
2196
- */
2197
- setValue : function( value )
2198
- {
2199
- this.getInputElement().setValue( value );
2200
- this.fire( 'change', { value : value } );
2201
- return this;
2202
- },
2203
-
2204
- /**
2205
- * Gets the current value of this dialog UI object.
2206
- * @returns {Object} The current value.
2207
- * @example
2208
- * var myValue = uiElement.getValue();
2209
- */
2210
- getValue : function()
2211
- {
2212
- return this.getInputElement().getValue();
2213
- },
2214
-
2215
- /**
2216
- * Tells whether the UI object's value has changed.
2217
- * @returns {Boolean} true if changed, false if not changed.
2218
- * @example
2219
- * if ( uiElement.isChanged() )
2220
- * &nbsp;&nbsp;confirm( 'Value changed! Continue?' );
2221
- */
2222
- isChanged : function()
2223
- {
2224
- // Override in input classes.
2225
- return false;
2226
- },
2227
-
2228
- /**
2229
- * Selects the parent tab of this element. Usually called by focus() or overridden focus() methods.
2230
- * @returns {CKEDITOR.dialog.uiElement} The current UI element.
2231
- * @example
2232
- * focus : function()
2233
- * {
2234
- * this.selectParentTab();
2235
- * // do something else.
2236
- * }
2237
- */
2238
- selectParentTab : function()
2239
- {
2240
- var element = this.getInputElement(),
2241
- cursor = element,
2242
- tabId;
2243
- while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 )
2244
- { /*jsl:pass*/ }
2245
-
2246
- // Some widgets don't have parent tabs (e.g. OK and Cancel buttons).
2247
- if ( !cursor )
2248
- return this;
2249
-
2250
- tabId = cursor.getAttribute( 'name' );
2251
- // Avoid duplicate select.
2252
- if ( this._.dialog._.currentTabId != tabId )
2253
- this._.dialog.selectPage( tabId );
2254
- return this;
2255
- },
2256
-
2257
- /**
2258
- * Puts the focus to the UI object. Switches tabs if the UI object isn't in the active tab page.
2259
- * @returns {CKEDITOR.dialog.uiElement} The current UI element.
2260
- * @example
2261
- * uiElement.focus();
2262
- */
2263
- focus : function()
2264
- {
2265
- this.selectParentTab().getInputElement().focus();
2266
- return this;
2267
- },
2268
-
2269
- /**
2270
- * Registers the on* event handlers defined in the element definition.
2271
- * The default behavior of this function is:
2272
- * <ol>
2273
- * <li>
2274
- * If the on* event is defined in the class's eventProcesors list,
2275
- * then the registration is delegated to the corresponding function
2276
- * in the eventProcessors list.
2277
- * </li>
2278
- * <li>
2279
- * If the on* event is not defined in the eventProcessors list, then
2280
- * register the event handler under the corresponding DOM event of
2281
- * the UI element's input DOM element (as defined by the return value
2282
- * of {@link CKEDITOR.ui.dialog.uiElement#getInputElement}).
2283
- * </li>
2284
- * </ol>
2285
- * This function is only called at UI element instantiation, but can
2286
- * be overridded in child classes if they require more flexibility.
2287
- * @param {CKEDITOR.dialog.uiElementDefinition} definition The UI element
2288
- * definition.
2289
- * @returns {CKEDITOR.dialog.uiElement} The current UI element.
2290
- * @example
2291
- */
2292
- registerEvents : function( definition )
2293
- {
2294
- var regex = /^on([A-Z]\w+)/,
2295
- match;
2296
-
2297
- var registerDomEvent = function( uiElement, dialog, eventName, func )
2298
- {
2299
- dialog.on( 'load', function()
2300
- {
2301
- uiElement.getInputElement().on( eventName, func, uiElement );
2302
- });
2303
- };
2304
-
2305
- for ( var i in definition )
2306
- {
2307
- if ( !( match = i.match( regex ) ) )
2308
- continue;
2309
- if ( this.eventProcessors[i] )
2310
- this.eventProcessors[i].call( this, this._.dialog, definition[i] );
2311
- else
2312
- registerDomEvent( this, this._.dialog, match[1].toLowerCase(), definition[i] );
2313
- }
2314
-
2315
- return this;
2316
- },
2317
-
2318
- /**
2319
- * The event processor list used by
2320
- * {@link CKEDITOR.ui.dialog.uiElement#getInputElement} at UI element
2321
- * instantiation. The default list defines three on* events:
2322
- * <ol>
2323
- * <li>onLoad - Called when the element's parent dialog opens for the
2324
- * first time</li>
2325
- * <li>onShow - Called whenever the element's parent dialog opens.</li>
2326
- * <li>onHide - Called whenever the element's parent dialog closes.</li>
2327
- * </ol>
2328
- * @field
2329
- * @type Object
2330
- * @example
2331
- * // This connects the 'click' event in CKEDITOR.ui.dialog.button to onClick
2332
- * // handlers in the UI element's definitions.
2333
- * CKEDITOR.ui.dialog.button.eventProcessors = CKEDITOR.tools.extend( {},
2334
- * &nbsp;&nbsp;CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,
2335
- * &nbsp;&nbsp;{ onClick : function( dialog, func ) { this.on( 'click', func ); } },
2336
- * &nbsp;&nbsp;true );
2337
- */
2338
- eventProcessors :
2339
- {
2340
- onLoad : function( dialog, func )
2341
- {
2342
- dialog.on( 'load', func, this );
2343
- },
2344
-
2345
- onShow : function( dialog, func )
2346
- {
2347
- dialog.on( 'show', func, this );
2348
- },
2349
-
2350
- onHide : function( dialog, func )
2351
- {
2352
- dialog.on( 'hide', func, this );
2353
- }
2354
- },
2355
-
2356
- /**
2357
- * The default handler for a UI element's access key down event, which
2358
- * tries to put focus to the UI element.<br />
2359
- * Can be overridded in child classes for more sophisticaed behavior.
2360
- * @param {CKEDITOR.dialog} dialog The parent dialog object.
2361
- * @param {String} key The key combination pressed. Since access keys
2362
- * are defined to always include the CTRL key, its value should always
2363
- * include a 'CTRL+' prefix.
2364
- * @example
2365
- */
2366
- accessKeyDown : function( dialog, key )
2367
- {
2368
- this.focus();
2369
- },
2370
-
2371
- /**
2372
- * The default handler for a UI element's access key up event, which
2373
- * does nothing.<br />
2374
- * Can be overridded in child classes for more sophisticated behavior.
2375
- * @param {CKEDITOR.dialog} dialog The parent dialog object.
2376
- * @param {String} key The key combination pressed. Since access keys
2377
- * are defined to always include the CTRL key, its value should always
2378
- * include a 'CTRL+' prefix.
2379
- * @example
2380
- */
2381
- accessKeyUp : function( dialog, key )
2382
- {
2383
- },
2384
-
2385
- /**
2386
- * Disables a UI element.
2387
- * @example
2388
- */
2389
- disable : function()
2390
- {
2391
- var element = this.getInputElement();
2392
- element.setAttribute( 'disabled', 'true' );
2393
- element.addClass( 'cke_disabled' );
2394
- },
2395
-
2396
- /**
2397
- * Enables a UI element.
2398
- * @example
2399
- */
2400
- enable : function()
2401
- {
2402
- var element = this.getInputElement();
2403
- element.removeAttribute( 'disabled' );
2404
- element.removeClass( 'cke_disabled' );
2405
- },
2406
-
2407
- /**
2408
- * Determines whether an UI element is enabled or not.
2409
- * @returns {Boolean} Whether the UI element is enabled.
2410
- * @example
2411
- */
2412
- isEnabled : function()
2413
- {
2414
- return !this.getInputElement().getAttribute( 'disabled' );
2415
- },
2416
-
2417
- /**
2418
- * Determines whether an UI element is visible or not.
2419
- * @returns {Boolean} Whether the UI element is visible.
2420
- * @example
2421
- */
2422
- isVisible : function()
2423
- {
2424
- return !!this.getInputElement().$.offsetHeight;
2425
- },
2426
-
2427
- /**
2428
- * Determines whether an UI element is focus-able or not.
2429
- * Focus-able is defined as being both visible and enabled.
2430
- * @returns {Boolean} Whether the UI element can be focused.
2431
- * @example
2432
- */
2433
- isFocusable : function()
2434
- {
2435
- if ( !this.isEnabled() || !this.isVisible() )
2436
- return false;
2437
- return true;
2438
- }
2439
- };
2440
-
2441
- CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
2442
- /**
2443
- * @lends CKEDITOR.ui.dialog.hbox.prototype
2444
- */
2445
- {
2446
- /**
2447
- * Gets a child UI element inside this container.
2448
- * @param {Array|Number} indices An array or a single number to indicate the child's
2449
- * position in the container's descendant tree. Omit to get all the children in an array.
2450
- * @returns {Array|CKEDITOR.ui.dialog.uiElement} Array of all UI elements in the container
2451
- * if no argument given, or the specified UI element if indices is given.
2452
- * @example
2453
- * var checkbox = hbox.getChild( [0,1] );
2454
- * checkbox.setValue( true );
2455
- */
2456
- getChild : function( indices )
2457
- {
2458
- // If no arguments, return a clone of the children array.
2459
- if ( arguments.length < 1 )
2460
- return this._.children.concat();
2461
-
2462
- // If indices isn't array, make it one.
2463
- if ( !indices.splice )
2464
- indices = [ indices ];
2465
-
2466
- // Retrieve the child element according to tree position.
2467
- if ( indices.length < 2 )
2468
- return this._.children[ indices[0] ];
2469
- else
2470
- return ( this._.children[ indices[0] ] && this._.children[ indices[0] ].getChild ) ?
2471
- this._.children[ indices[0] ].getChild( indices.slice( 1, indices.length ) ) :
2472
- null;
2473
- }
2474
- }, true );
2475
-
2476
- CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox();
2477
-
2478
-
2479
-
2480
- (function()
2481
- {
2482
- var commonBuilder = {
2483
- build : function( dialog, elementDefinition, output )
2484
- {
2485
- var children = elementDefinition.children,
2486
- child,
2487
- childHtmlList = [],
2488
- childObjList = [];
2489
- for ( var i = 0 ; ( i < children.length && ( child = children[i] ) ) ; i++ )
2490
- {
2491
- var childHtml = [];
2492
- childHtmlList.push( childHtml );
2493
- childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) );
2494
- }
2495
- return new CKEDITOR.ui.dialog[elementDefinition.type]( dialog, childObjList, childHtmlList, output, elementDefinition );
2496
- }
2497
- };
2498
-
2499
- CKEDITOR.dialog.addUIElement( 'hbox', commonBuilder );
2500
- CKEDITOR.dialog.addUIElement( 'vbox', commonBuilder );
2501
- })();
2502
-
2503
- /**
2504
- * Generic dialog command. It opens a specific dialog when executed.
2505
- * @constructor
2506
- * @augments CKEDITOR.commandDefinition
2507
- * @param {string} dialogName The name of the dialog to open when executing
2508
- * this command.
2509
- * @example
2510
- * // Register the "link" command, which opens the "link" dialog.
2511
- * editor.addCommand( 'link', <b>new CKEDITOR.dialogCommand( 'link' )</b> );
2512
- */
2513
- CKEDITOR.dialogCommand = function( dialogName )
2514
- {
2515
- this.dialogName = dialogName;
2516
- };
2517
-
2518
- CKEDITOR.dialogCommand.prototype =
2519
- {
2520
- /** @ignore */
2521
- exec : function( editor )
2522
- {
2523
- editor.openDialog( this.dialogName );
2524
- },
2525
- // Dialog commands just open a dialog ui, thus require no undo logic,
2526
- // undo support should dedicate to specific dialog implementation.
2527
- canUndo: false
2528
- };
2529
-
2530
- (function()
2531
- {
2532
- var notEmptyRegex = /^([a]|[^a])+$/,
2533
- integerRegex = /^\d*$/,
2534
- numberRegex = /^\d*(?:\.\d+)?$/;
2535
-
2536
- CKEDITOR.VALIDATE_OR = 1;
2537
- CKEDITOR.VALIDATE_AND = 2;
2538
-
2539
- CKEDITOR.dialog.validate =
2540
- {
2541
- functions : function()
2542
- {
2543
- return function()
2544
- {
2545
- /**
2546
- * It's important for validate functions to be able to accept the value
2547
- * as argument in addition to this.getValue(), so that it is possible to
2548
- * combine validate functions together to make more sophisticated
2549
- * validators.
2550
- */
2551
- var value = this && this.getValue ? this.getValue() : arguments[0];
2552
-
2553
- var msg = undefined,
2554
- relation = CKEDITOR.VALIDATE_AND,
2555
- functions = [], i;
2556
-
2557
- for ( i = 0 ; i < arguments.length ; i++ )
2558
- {
2559
- if ( typeof( arguments[i] ) == 'function' )
2560
- functions.push( arguments[i] );
2561
- else
2562
- break;
2563
- }
2564
-
2565
- if ( i < arguments.length && typeof( arguments[i] ) == 'string' )
2566
- {
2567
- msg = arguments[i];
2568
- i++;
2569
- }
2570
-
2571
- if ( i < arguments.length && typeof( arguments[i]) == 'number' )
2572
- relation = arguments[i];
2573
-
2574
- var passed = ( relation == CKEDITOR.VALIDATE_AND ? true : false );
2575
- for ( i = 0 ; i < functions.length ; i++ )
2576
- {
2577
- if ( relation == CKEDITOR.VALIDATE_AND )
2578
- passed = passed && functions[i]( value );
2579
- else
2580
- passed = passed || functions[i]( value );
2581
- }
2582
-
2583
- if ( !passed )
2584
- {
2585
- if ( msg !== undefined )
2586
- alert( msg );
2587
- if ( this && ( this.select || this.focus ) )
2588
- ( this.select || this.focus )();
2589
- return false;
2590
- }
2591
-
2592
- return true;
2593
- };
2594
- },
2595
-
2596
- regex : function( regex, msg )
2597
- {
2598
- /*
2599
- * Can be greatly shortened by deriving from functions validator if code size
2600
- * turns out to be more important than performance.
2601
- */
2602
- return function()
2603
- {
2604
- var value = this && this.getValue ? this.getValue() : arguments[0];
2605
- if ( !regex.test( value ) )
2606
- {
2607
- if ( msg !== undefined )
2608
- alert( msg );
2609
- if ( this && ( this.select || this.focus ) )
2610
- {
2611
- if ( this.select )
2612
- this.select();
2613
- else
2614
- this.focus();
2615
- }
2616
- return false;
2617
- }
2618
- return true;
2619
- };
2620
- },
2621
-
2622
- notEmpty : function( msg )
2623
- {
2624
- return this.regex( notEmptyRegex, msg );
2625
- },
2626
-
2627
- integer : function( msg )
2628
- {
2629
- return this.regex( integerRegex, msg );
2630
- },
2631
-
2632
- 'number' : function( msg )
2633
- {
2634
- return this.regex( numberRegex, msg );
2635
- },
2636
-
2637
- equals : function( value, msg )
2638
- {
2639
- return this.functions( function( val ){ return val == value; }, msg );
2640
- },
2641
-
2642
- notEqual : function( value, msg )
2643
- {
2644
- return this.functions( function( val ){ return val != value; }, msg );
2645
- }
2646
- };
2647
- })();
2648
-
2649
- // Grab the margin data from skin definition and store it away.
2650
- CKEDITOR.skins.add = ( function()
2651
- {
2652
- var original = CKEDITOR.skins.add;
2653
- return function( skinName, skinDefinition )
2654
- {
2655
- skinData[ skinName ] = { margins : skinDefinition.margins };
2656
- return original.apply( this, arguments );
2657
- };
2658
- } )();
2659
- })();
2660
-
2661
- // Extend the CKEDITOR.editor class with dialog specific functions.
2662
- CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
2663
- /** @lends CKEDITOR.editor.prototype */
2664
- {
2665
- /**
2666
- * Loads and opens a registered dialog.
2667
- * @param {String} dialogName The registered name of the dialog.
2668
- * @see CKEDITOR.dialog.add
2669
- * @example
2670
- * CKEDITOR.instances.editor1.openDialog( 'smiley' );
2671
- * @returns {CKEDITOR.dialog} The dialog object corresponding to the dialog displayed. null if the dialog name is not registered.
2672
- */
2673
- openDialog : function( dialogName )
2674
- {
2675
- var dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ];
2676
-
2677
- // If the dialogDefinition is already loaded, open it immediately.
2678
- if ( typeof dialogDefinitions == 'function' )
2679
- {
2680
- var storedDialogs = this._.storedDialogs ||
2681
- ( this._.storedDialogs = {} );
2682
-
2683
- var dialog = storedDialogs[ dialogName ] ||
2684
- ( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) );
2685
-
2686
- dialog.show();
2687
-
2688
- return dialog;
2689
- }
2690
- else if ( dialogDefinitions == 'failed' )
2691
- throw new Error( '[CKEDITOR.dialog.openDialog] Dialog "' + dialogName + '" failed when loading definition.' );
2692
-
2693
- // Not loaded? Load the .js file first.
2694
- var body = CKEDITOR.document.getBody(),
2695
- cursor = body.$.style.cursor,
2696
- me = this;
2697
-
2698
- body.setStyle( 'cursor', 'wait' );
2699
- CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), function()
2700
- {
2701
- // In case of plugin error, mark it as loading failed.
2702
- if ( typeof CKEDITOR.dialog._.dialogDefinitions[ dialogName ] != 'function' )
2703
- CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed';
2704
- me.openDialog( dialogName );
2705
- body.setStyle( 'cursor', cursor );
2706
- } );
2707
-
2708
- return null;
2709
- }
2710
- });
2711
-
2712
- // Dialog related configurations.
2713
-
2714
- /**
2715
- * The color of the dialog background cover. It should be a valid CSS color
2716
- * string.
2717
- * @type String
2718
- * @default white
2719
- * @example
2720
- * config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)';
2721
- */
2722
- CKEDITOR.config.dialog_backgroundCoverColor = 'white';
2723
-
2724
- /**
2725
- * The opacity of the dialog background cover. It should be a number within the
2726
- * range [0.0, 1.0].
2727
- * @type Number
2728
- * @default 0.5
2729
- * @example
2730
- * config.dialog_backgroundCoverOpacity = 0.7;
2731
- */
2732
- CKEDITOR.config.dialog_backgroundCoverOpacity = 0.5;
2733
-
2734
- /**
2735
- * The distance of magnetic borders used in moving and resizing dialogs,
2736
- * measured in pixels.
2737
- * @type Number
2738
- * @default 20
2739
- * @example
2740
- * config.dialog_magnetDistance = 30;
2741
- */
2742
- CKEDITOR.config.dialog_magnetDistance = 20;