ckeditor_rails 4.5.11 → 4.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (413) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +2 -2
  3. data/lib/assets/javascripts/ckeditor/jquery.js +10 -6
  4. data/lib/ckeditor-rails/source_file.rb +1 -1
  5. data/lib/ckeditor-rails/version.rb +2 -2
  6. data/lib/ckeditor-rails.rb +1 -1
  7. data/vendor/assets/images/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png +0 -0
  8. data/vendor/assets/images/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  9. data/vendor/assets/images/ckeditor/plugins/icons.png +0 -0
  10. data/vendor/assets/images/ckeditor/plugins/link/images/anchor.png +0 -0
  11. data/vendor/assets/images/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
  12. data/vendor/assets/images/ckeditor/plugins/preview/images/pagebreak.gif +0 -0
  13. data/vendor/assets/images/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  14. data/vendor/assets/images/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  15. data/vendor/assets/images/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  16. data/vendor/assets/images/ckeditor/plugins/widget/images/handle.png +0 -0
  17. data/vendor/assets/images/ckeditor/plugins/wsc/icons/hidpi/spellchecker.png +0 -0
  18. data/vendor/assets/images/ckeditor/plugins/wsc/icons/spellchecker.png +0 -0
  19. data/vendor/assets/images/ckeditor/skins/moono-lisa/icons.png +0 -0
  20. data/vendor/assets/images/ckeditor/skins/moono-lisa/icons_hidpi.png +0 -0
  21. data/vendor/assets/images/ckeditor/skins/{moono → moono-lisa}/images/arrow.png +0 -0
  22. data/vendor/assets/images/ckeditor/skins/moono-lisa/images/close.png +0 -0
  23. data/vendor/assets/images/ckeditor/skins/moono-lisa/images/hidpi/close.png +0 -0
  24. data/vendor/assets/images/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png +0 -0
  25. data/vendor/assets/images/ckeditor/skins/moono-lisa/images/hidpi/lock.png +0 -0
  26. data/vendor/assets/images/ckeditor/skins/moono-lisa/images/hidpi/refresh.png +0 -0
  27. data/vendor/assets/images/ckeditor/skins/moono-lisa/images/lock-open.png +0 -0
  28. data/vendor/assets/images/ckeditor/skins/moono-lisa/images/lock.png +0 -0
  29. data/vendor/assets/images/ckeditor/skins/moono-lisa/images/refresh.png +0 -0
  30. data/vendor/assets/images/ckeditor/skins/{moono → moono-lisa}/images/spinner.gif +0 -0
  31. data/vendor/assets/javascripts/ckeditor/CHANGES.md +1647 -720
  32. data/vendor/assets/javascripts/ckeditor/LICENSE.md +23 -7
  33. data/vendor/assets/javascripts/ckeditor/README.md +5 -5
  34. data/vendor/assets/javascripts/ckeditor/build-config.js +65 -52
  35. data/vendor/assets/javascripts/ckeditor/ckeditor.js +1227 -895
  36. data/vendor/assets/javascripts/ckeditor/config.js +2 -2
  37. data/vendor/assets/javascripts/ckeditor/lang/af.js +4 -4
  38. data/vendor/assets/javascripts/ckeditor/lang/ar.js +4 -4
  39. data/vendor/assets/javascripts/ckeditor/lang/az.js +5 -0
  40. data/vendor/assets/javascripts/ckeditor/lang/bg.js +4 -4
  41. data/vendor/assets/javascripts/ckeditor/lang/bn.js +4 -4
  42. data/vendor/assets/javascripts/ckeditor/lang/bs.js +4 -4
  43. data/vendor/assets/javascripts/ckeditor/lang/ca.js +4 -4
  44. data/vendor/assets/javascripts/ckeditor/lang/cs.js +4 -4
  45. data/vendor/assets/javascripts/ckeditor/lang/cy.js +4 -4
  46. data/vendor/assets/javascripts/ckeditor/lang/da.js +4 -4
  47. data/vendor/assets/javascripts/ckeditor/lang/de-ch.js +4 -4
  48. data/vendor/assets/javascripts/ckeditor/lang/de.js +4 -4
  49. data/vendor/assets/javascripts/ckeditor/lang/el.js +4 -4
  50. data/vendor/assets/javascripts/ckeditor/lang/en-au.js +4 -4
  51. data/vendor/assets/javascripts/ckeditor/lang/en-ca.js +4 -4
  52. data/vendor/assets/javascripts/ckeditor/lang/en-gb.js +4 -4
  53. data/vendor/assets/javascripts/ckeditor/lang/en.js +4 -4
  54. data/vendor/assets/javascripts/ckeditor/lang/eo.js +4 -4
  55. data/vendor/assets/javascripts/ckeditor/lang/es-mx.js +5 -0
  56. data/vendor/assets/javascripts/ckeditor/lang/es.js +4 -4
  57. data/vendor/assets/javascripts/ckeditor/lang/et.js +4 -4
  58. data/vendor/assets/javascripts/ckeditor/lang/eu.js +4 -4
  59. data/vendor/assets/javascripts/ckeditor/lang/fa.js +4 -4
  60. data/vendor/assets/javascripts/ckeditor/lang/fi.js +4 -4
  61. data/vendor/assets/javascripts/ckeditor/lang/fo.js +4 -4
  62. data/vendor/assets/javascripts/ckeditor/lang/fr-ca.js +4 -4
  63. data/vendor/assets/javascripts/ckeditor/lang/fr.js +4 -4
  64. data/vendor/assets/javascripts/ckeditor/lang/gl.js +4 -4
  65. data/vendor/assets/javascripts/ckeditor/lang/gu.js +4 -4
  66. data/vendor/assets/javascripts/ckeditor/lang/he.js +4 -4
  67. data/vendor/assets/javascripts/ckeditor/lang/hi.js +4 -4
  68. data/vendor/assets/javascripts/ckeditor/lang/hr.js +4 -4
  69. data/vendor/assets/javascripts/ckeditor/lang/hu.js +4 -4
  70. data/vendor/assets/javascripts/ckeditor/lang/id.js +4 -4
  71. data/vendor/assets/javascripts/ckeditor/lang/is.js +4 -4
  72. data/vendor/assets/javascripts/ckeditor/lang/it.js +4 -4
  73. data/vendor/assets/javascripts/ckeditor/lang/ja.js +4 -4
  74. data/vendor/assets/javascripts/ckeditor/lang/ka.js +4 -4
  75. data/vendor/assets/javascripts/ckeditor/lang/km.js +4 -4
  76. data/vendor/assets/javascripts/ckeditor/lang/ko.js +4 -4
  77. data/vendor/assets/javascripts/ckeditor/lang/ku.js +4 -4
  78. data/vendor/assets/javascripts/ckeditor/lang/lt.js +4 -4
  79. data/vendor/assets/javascripts/ckeditor/lang/lv.js +4 -4
  80. data/vendor/assets/javascripts/ckeditor/lang/mk.js +4 -4
  81. data/vendor/assets/javascripts/ckeditor/lang/mn.js +4 -4
  82. data/vendor/assets/javascripts/ckeditor/lang/ms.js +4 -4
  83. data/vendor/assets/javascripts/ckeditor/lang/nb.js +4 -4
  84. data/vendor/assets/javascripts/ckeditor/lang/nl.js +4 -4
  85. data/vendor/assets/javascripts/ckeditor/lang/no.js +4 -4
  86. data/vendor/assets/javascripts/ckeditor/lang/oc.js +5 -0
  87. data/vendor/assets/javascripts/ckeditor/lang/pl.js +4 -4
  88. data/vendor/assets/javascripts/ckeditor/lang/pt-br.js +4 -4
  89. data/vendor/assets/javascripts/ckeditor/lang/pt.js +4 -4
  90. data/vendor/assets/javascripts/ckeditor/lang/ro.js +4 -4
  91. data/vendor/assets/javascripts/ckeditor/lang/ru.js +4 -4
  92. data/vendor/assets/javascripts/ckeditor/lang/si.js +4 -4
  93. data/vendor/assets/javascripts/ckeditor/lang/sk.js +4 -4
  94. data/vendor/assets/javascripts/ckeditor/lang/sl.js +4 -4
  95. data/vendor/assets/javascripts/ckeditor/lang/sq.js +4 -4
  96. data/vendor/assets/javascripts/ckeditor/lang/sr-latn.js +4 -4
  97. data/vendor/assets/javascripts/ckeditor/lang/sr.js +4 -4
  98. data/vendor/assets/javascripts/ckeditor/lang/sv.js +4 -4
  99. data/vendor/assets/javascripts/ckeditor/lang/th.js +4 -4
  100. data/vendor/assets/javascripts/ckeditor/lang/tr.js +4 -4
  101. data/vendor/assets/javascripts/ckeditor/lang/tt.js +4 -4
  102. data/vendor/assets/javascripts/ckeditor/lang/ug.js +4 -4
  103. data/vendor/assets/javascripts/ckeditor/lang/uk.js +4 -4
  104. data/vendor/assets/javascripts/ckeditor/lang/vi.js +4 -4
  105. data/vendor/assets/javascripts/ckeditor/lang/zh-cn.js +4 -4
  106. data/vendor/assets/javascripts/ckeditor/lang/zh.js +4 -4
  107. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +7 -7
  108. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/af.js +3 -3
  109. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +7 -7
  110. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/az.js +11 -0
  111. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +9 -9
  112. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +10 -9
  113. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +4 -4
  114. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +4 -4
  115. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +8 -8
  116. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js +11 -10
  117. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +8 -7
  118. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +6 -5
  119. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en-au.js +11 -0
  120. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js +3 -3
  121. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +3 -3
  122. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +4 -4
  123. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js +13 -0
  124. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +4 -4
  125. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +9 -9
  126. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eu.js +3 -3
  127. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +5 -5
  128. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +4 -4
  129. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js +3 -3
  130. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +5 -5
  131. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +3 -3
  132. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +9 -9
  133. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +3 -3
  134. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +3 -3
  135. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +3 -3
  136. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +7 -7
  137. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +5 -5
  138. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/id.js +9 -9
  139. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +4 -4
  140. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +4 -4
  141. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +3 -3
  142. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +4 -4
  143. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +6 -6
  144. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +3 -3
  145. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +4 -4
  146. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +4 -4
  147. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +3 -3
  148. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +4 -4
  149. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +9 -8
  150. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +5 -5
  151. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/oc.js +12 -0
  152. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +7 -7
  153. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +4 -4
  154. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +6 -6
  155. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +10 -9
  156. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +5 -5
  157. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/si.js +5 -5
  158. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +6 -6
  159. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +4 -4
  160. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +10 -9
  161. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +10 -9
  162. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +10 -9
  163. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +5 -5
  164. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +3 -3
  165. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +5 -5
  166. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +5 -5
  167. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +4 -4
  168. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +5 -5
  169. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +5 -5
  170. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +5 -5
  171. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +5 -5
  172. data/vendor/assets/javascripts/ckeditor/plugins/about/dialogs/about.js +5 -5
  173. data/vendor/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +8 -9
  174. data/vendor/assets/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +12 -12
  175. data/vendor/assets/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +2 -2
  176. data/vendor/assets/javascripts/ckeditor/plugins/div/dialogs/div.js +9 -8
  177. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/CHANGELOG.md +54 -0
  178. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/LICENSE.md +18 -0
  179. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/README.md +102 -0
  180. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/plugindefinition.js +1 -0
  181. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/_helpers/tools.js +5 -0
  182. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/authentication.js +6 -0
  183. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/exportpdf.js +10 -0
  184. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/configfilename.html +27 -0
  185. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/configfilename.md +46 -0
  186. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/emptyeditor.html +18 -0
  187. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/emptyeditor.md +34 -0
  188. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/integration.html +148 -0
  189. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/integration.md +12 -0
  190. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/integrations/easyimage.html +27 -0
  191. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/integrations/easyimage.md +26 -0
  192. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/notifications.html +19 -0
  193. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/notifications.md +36 -0
  194. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/notificationsasync.html +45 -0
  195. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/notificationsasync.md +27 -0
  196. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/paperformat.html +29 -0
  197. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/paperformat.md +18 -0
  198. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/readonly.html +18 -0
  199. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/readonly.md +28 -0
  200. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/stylesheets.html +36 -0
  201. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/stylesheets.md +19 -0
  202. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.html +23 -0
  203. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.md +19 -0
  204. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.html +38 -0
  205. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.md +14 -0
  206. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.html +38 -0
  207. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.md +14 -0
  208. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.html +19 -0
  209. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.md +31 -0
  210. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.html +21 -0
  211. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.md +34 -0
  212. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/notification.js +4 -0
  213. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/resourcespaths.js +9 -0
  214. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/statistics.js +3 -0
  215. data/vendor/assets/javascripts/ckeditor/plugins/exportpdf/tests/stylesheets.js +18 -0
  216. data/vendor/assets/javascripts/ckeditor/plugins/find/dialogs/find.js +23 -23
  217. data/vendor/assets/javascripts/ckeditor/plugins/flash/dialogs/flash.js +17 -17
  218. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/button.js +6 -6
  219. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/checkbox.js +6 -6
  220. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/form.js +3 -3
  221. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/hiddenfield.js +5 -5
  222. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/radio.js +7 -7
  223. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/select.js +17 -16
  224. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/textarea.js +7 -6
  225. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/textfield.js +9 -9
  226. data/vendor/assets/javascripts/ckeditor/plugins/iframe/dialogs/iframe.js +9 -8
  227. data/vendor/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +38 -38
  228. data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +6 -5
  229. data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +28 -25
  230. data/vendor/assets/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +8 -8
  231. data/vendor/assets/javascripts/ckeditor/plugins/pastefromgdocs/filter/default.js +8 -0
  232. data/vendor/assets/javascripts/ckeditor/plugins/pastefromlibreoffice/filter/default.js +11 -0
  233. data/vendor/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +40 -30
  234. data/vendor/assets/javascripts/ckeditor/plugins/pastetools/filter/common.js +24 -0
  235. data/vendor/assets/javascripts/ckeditor/plugins/pastetools/filter/image.js +12 -0
  236. data/vendor/assets/javascripts/ckeditor/plugins/scayt/CHANGELOG.md +1 -17
  237. data/vendor/assets/javascripts/ckeditor/plugins/scayt/README.md +63 -7
  238. data/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/options.js +32 -19
  239. data/vendor/assets/javascripts/ckeditor/plugins/smiley/dialogs/smiley.js +2 -2
  240. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/af.js +3 -3
  241. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ar.js +3 -3
  242. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/az.js +10 -0
  243. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/bg.js +4 -4
  244. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ca.js +2 -2
  245. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cs.js +3 -3
  246. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cy.js +2 -2
  247. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/da.js +3 -3
  248. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/de-ch.js +7 -7
  249. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/de.js +2 -2
  250. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/el.js +2 -2
  251. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en-au.js +13 -0
  252. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js +13 -0
  253. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js +3 -3
  254. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en.js +3 -3
  255. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/eo.js +2 -2
  256. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/es-mx.js +13 -0
  257. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/es.js +2 -2
  258. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/et.js +9 -11
  259. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/eu.js +3 -3
  260. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fa.js +2 -2
  261. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fi.js +3 -3
  262. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js +2 -2
  263. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fr.js +2 -2
  264. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/gl.js +2 -2
  265. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/he.js +2 -2
  266. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/hr.js +11 -11
  267. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/hu.js +2 -2
  268. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/id.js +3 -3
  269. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/it.js +2 -2
  270. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ja.js +2 -2
  271. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/km.js +3 -3
  272. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ko.js +8 -8
  273. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ku.js +2 -2
  274. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/lt.js +3 -3
  275. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/lv.js +2 -2
  276. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nb.js +2 -2
  277. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nl.js +2 -2
  278. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/no.js +2 -2
  279. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/oc.js +12 -0
  280. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pl.js +2 -2
  281. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +2 -2
  282. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pt.js +2 -2
  283. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ro.js +13 -0
  284. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ru.js +2 -2
  285. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/si.js +3 -3
  286. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sk.js +2 -2
  287. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sl.js +2 -2
  288. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sq.js +5 -5
  289. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sr-latn.js +13 -0
  290. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sr.js +13 -0
  291. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sv.js +2 -2
  292. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/th.js +3 -3
  293. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tr.js +2 -2
  294. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tt.js +2 -2
  295. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ug.js +3 -3
  296. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/uk.js +2 -2
  297. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/vi.js +2 -2
  298. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +3 -3
  299. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/zh.js +2 -2
  300. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +12 -12
  301. data/vendor/assets/javascripts/ckeditor/plugins/table/dialogs/table.js +20 -19
  302. data/vendor/assets/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +16 -15
  303. data/vendor/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.js +2 -2
  304. data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/default.js +3 -3
  305. data/vendor/assets/javascripts/ckeditor/plugins/wsc/README.md +84 -25
  306. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +1 -1
  307. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +84 -86
  308. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc_ie.js +7 -7
  309. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/af.js +2 -0
  310. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ar.js +2 -0
  311. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/bg.js +2 -0
  312. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/bn.js +2 -0
  313. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/bs.js +2 -0
  314. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ca.js +2 -0
  315. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/cs.js +2 -0
  316. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/cy.js +2 -0
  317. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/da.js +2 -0
  318. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/de.js +2 -0
  319. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/el.js +2 -0
  320. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/en-au.js +2 -0
  321. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/en-ca.js +2 -0
  322. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/en-gb.js +2 -0
  323. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/en.js +2 -0
  324. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/eo.js +2 -0
  325. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/es.js +2 -0
  326. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/et.js +2 -0
  327. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/eu.js +2 -0
  328. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/fa.js +2 -0
  329. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/fi.js +2 -0
  330. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/fo.js +2 -0
  331. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/fr-ca.js +2 -0
  332. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/fr.js +2 -0
  333. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/gl.js +2 -0
  334. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/gu.js +2 -0
  335. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/he.js +2 -0
  336. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/hi.js +2 -0
  337. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/hr.js +2 -0
  338. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/hu.js +2 -0
  339. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/is.js +2 -0
  340. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/it.js +2 -0
  341. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ja.js +2 -0
  342. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ka.js +2 -0
  343. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/km.js +2 -0
  344. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ko.js +2 -0
  345. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ku.js +2 -0
  346. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/lt.js +2 -0
  347. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/lv.js +2 -0
  348. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/mk.js +2 -0
  349. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/mn.js +2 -0
  350. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ms.js +2 -0
  351. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/nb.js +2 -0
  352. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/nl.js +2 -0
  353. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/no.js +2 -0
  354. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/pl.js +2 -0
  355. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/pt-br.js +2 -0
  356. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/pt.js +2 -0
  357. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ro.js +2 -0
  358. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ru.js +2 -0
  359. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/sk.js +2 -0
  360. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/sl.js +2 -0
  361. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/sr-latn.js +2 -0
  362. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/sr.js +2 -0
  363. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/sv.js +2 -0
  364. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/th.js +2 -0
  365. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/tr.js +2 -0
  366. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/ug.js +2 -0
  367. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/uk.js +2 -0
  368. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/vi.js +2 -0
  369. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/zh-cn.js +1 -0
  370. data/vendor/assets/javascripts/ckeditor/plugins/wsc/lang/zh.js +1 -0
  371. data/vendor/assets/javascripts/ckeditor/plugins/wsc/plugin.js +5 -0
  372. data/vendor/assets/javascripts/ckeditor/styles.js +43 -17
  373. data/vendor/assets/stylesheets/ckeditor/contents.css +80 -7
  374. data/vendor/assets/stylesheets/ckeditor/plugins/colordialog/dialogs/colordialog.css +2 -2
  375. data/vendor/assets/stylesheets/ckeditor/plugins/copyformatting/styles/copyformatting.css +45 -0
  376. data/vendor/assets/stylesheets/ckeditor/plugins/dialog/styles/dialog.css +18 -0
  377. data/vendor/assets/stylesheets/ckeditor/plugins/preview/styles/screen.css +10 -0
  378. data/vendor/assets/stylesheets/ckeditor/plugins/scayt/dialogs/dialog.css +23 -0
  379. data/vendor/assets/stylesheets/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css +25 -0
  380. data/vendor/assets/stylesheets/ckeditor/plugins/tableselection/styles/tableselection.css +36 -0
  381. data/vendor/assets/stylesheets/ckeditor/plugins/templates/dialogs/templates.css +2 -2
  382. data/vendor/assets/stylesheets/ckeditor/plugins/wsc/skins/moono-lisa/wsc.css +43 -0
  383. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/dialog.css +5 -0
  384. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/dialog_ie.css +5 -0
  385. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/dialog_ie8.css +5 -0
  386. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/dialog_iequirks.css +5 -0
  387. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/editor.css +5 -0
  388. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/editor_gecko.css +5 -0
  389. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/editor_ie.css +5 -0
  390. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/editor_ie8.css +5 -0
  391. data/vendor/assets/stylesheets/ckeditor/skins/moono-lisa/editor_iequirks.css +5 -0
  392. metadata +159 -30
  393. data/vendor/assets/images/ckeditor/skins/moono/icons.png +0 -0
  394. data/vendor/assets/images/ckeditor/skins/moono/icons_hidpi.png +0 -0
  395. data/vendor/assets/images/ckeditor/skins/moono/images/close.png +0 -0
  396. data/vendor/assets/images/ckeditor/skins/moono/images/hidpi/close.png +0 -0
  397. data/vendor/assets/images/ckeditor/skins/moono/images/hidpi/lock-open.png +0 -0
  398. data/vendor/assets/images/ckeditor/skins/moono/images/hidpi/lock.png +0 -0
  399. data/vendor/assets/images/ckeditor/skins/moono/images/hidpi/refresh.png +0 -0
  400. data/vendor/assets/images/ckeditor/skins/moono/images/lock-open.png +0 -0
  401. data/vendor/assets/images/ckeditor/skins/moono/images/lock.png +0 -0
  402. data/vendor/assets/images/ckeditor/skins/moono/images/refresh.png +0 -0
  403. data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog.css +0 -5
  404. data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie.css +0 -5
  405. data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie7.css +0 -5
  406. data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie8.css +0 -5
  407. data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_iequirks.css +0 -5
  408. data/vendor/assets/stylesheets/ckeditor/skins/moono/editor.css +0 -5
  409. data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_gecko.css +0 -5
  410. data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie.css +0 -5
  411. data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie7.css +0 -5
  412. data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie8.css +0 -5
  413. data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_iequirks.css +0 -5
@@ -0,0 +1,102 @@
1
+ # CKEditor 4 Export to PDF Plugin
2
+
3
+ The **Export to PDF** CKEditor 4 plugin allows you to easily print the WYSIWYG editor content to a PDF file. When enabled, this feature sends the content of your editor together with the styles that are used to display it to the CKEditor Cloud Services HTML to PDF converter service. The service then generates a PDF document that can be downloaded by the user.
4
+
5
+ Thanks to this plugin, it takes exactly one button click to get a PDF file with content formatted in the same way as the one visible in CKEditor 4.
6
+
7
+ CKEditor 4 **Export to PDF** also allows various customizations like changing the page size and margin, setting additional styling, adding custom headers and footers and pre-processing content. This gives great flexibility and control over the PDF output and allows to keep all the PDF documents consistent when it comes to styling.
8
+
9
+ This is a premium feature. Please [contact us](https://ckeditor.com/contact/) if you would like to purchase a license. Let us know if you have any feedback or questions! You can also sign up for the [CKEditor Premium Features 30-day Free Trial](https://orders.ckeditor.com/trial/premium-features).
10
+
11
+ If this feature is used without authorization, the resulting documents will be watermarked.
12
+
13
+ ![](https://c.cksource.com/a/1/img/npm/ckeditor4-pdf-export.gif)
14
+
15
+ ## Getting Started
16
+
17
+ ### Using with official CKEditor 4 presets
18
+
19
+ Starting with CKEditor 4 version `4.15.0`, **Export to PDF** plugin is included in `standard-all`, `full` and `full-all` official presets. The `full` and `full-all` presets have the plugin active by default while for `standard-all` it needs to be enabled with the [`config.extraPlugins`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-extraPlugins) configuration option:
20
+
21
+ ```js
22
+ CKEDITOR.replace( 'editor', {
23
+ extraPlugins: 'exportpdf'
24
+ } );
25
+ ```
26
+
27
+ ### Installation from npm
28
+
29
+ To instal the plugin via npm, simply run:
30
+
31
+ ```bash
32
+ npm i ckeditor4-plugin-exportpdf
33
+ ```
34
+
35
+ Then add the plugin to your CKEditor 4 instance with the [`addExternal()` method](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins.html#method-addExternal):
36
+
37
+ ```js
38
+ CKEDITOR.plugins.addExternal( 'exportpdf', './node_modules/ckeditor4-plugin-exportpdf/' );
39
+ ```
40
+
41
+ If you prefer not to link to the `node_modules` folder directly, you may simply copy the entire `./node_modules/ckeditor4-plugin-exportpdf/` directory as `ckeditor/plugins/exportpdf/` and add it with the [`config.extraPlugins`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-extraPlugins) configuration option:
42
+
43
+ ```js
44
+ CKEDITOR.replace( 'editor', {
45
+ extraPlugins: 'exportpdf'
46
+ } );
47
+ ```
48
+
49
+ ### Other Installation Methods
50
+
51
+ You can also use the [CKEditor 4 Add-ons repository](https://ckeditor.com/cke4/addons/plugins/all) to obtain the plugin via:
52
+
53
+ * [Custom build with online builder](https://ckeditor.com/cke4/builder)
54
+ * [Manual download](https://ckeditor.com/cke4/addon/exportpdf)
55
+
56
+ Refer to [Export to PDF installation documentation](https://ckeditor.com/docs/ckeditor4/latest/features/exporttopdf.html#installation) for more details. If you are having trouble setting up the Export to PDF plugin, please [contact us](https://ckeditor.com/contact/).
57
+
58
+ ### Setting up a license key
59
+
60
+ If you have a commercial license for **Export to PDF** plugin, [exportPdf_tokenUrl](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-exportPdf_tokenUrl) configuration option should be set to remove watermark from generated documents:
61
+
62
+ ```js
63
+ CKEDITOR.replace( 'editor', {
64
+ exportPdf_tokenUrl: 'https://example.com/cs-token-endpoint'
65
+ } );
66
+ ```
67
+
68
+ This value is unique for each customer and can be found in the [CKEditor Ecosystem dashboard](https://dashboard.ckeditor.com).
69
+
70
+ This is all. If you are having trouble in setting up Export to PDF plugin, please [contact us](https://ckeditor.com/contact/).
71
+
72
+ ## Features
73
+
74
+ The CKEditor 4 Export to PDF plugin is really simple to use and works out-of-the-box. It does not require any additional configuration and due to its flexible nature, it covers a lot of cases internally while also providing an easy way to [customize output PDF files](https://ckeditor.com/docs/ckeditor4/latest/features/exporttopdf.html#configuration).
75
+
76
+ The most important features are:
77
+
78
+ * Exporting HTML content from CKEditor 4 WYSIWYG editor to PDF with a single click.
79
+ * [Setting a custom name](https://ckeditor.com/docs/ckeditor4/latest/features/exporttopdf.html#setting-dynamic-file-name) for the generated PDF file.
80
+ * [Handling relative image paths](https://ckeditor.com/docs/ckeditor4/latest/features/exporttopdf.html#relative-vs-absolute-urls).
81
+ * [Changing the appearance of the PDF document](https://ckeditor.com/docs/ckeditor4/latest/features/exporttopdf.html#custom-css-rules) (like margins, text styling, custom headers and footers etc.) with custom CSS styles.
82
+ * [Pre-processing HTML content](https://ckeditor.com/docs/ckeditor4/latest/features/exporttopdf.html#data-preprocessing) via synchronous and asynchronous code before the generation of the PDF file.
83
+
84
+ ## Browser and CKEditor 4 Support
85
+
86
+ The CKEditor 4 Export to PDF plugin works in all the browsers [supported by CKEditor 4](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_browsers.html) except for Internet Explorer versions older than version 11. The plugin is compatible with CKEditor 4 versions starting from `4.6.1`.
87
+
88
+ ## Demo
89
+
90
+ See the working ["Exporting editor content to PDF"](https://ckeditor.com/docs/ckeditor4/latest/examples/exporttopdf.html) sample that showcases printing your HTML content to a PDF file.
91
+
92
+ ## License
93
+
94
+ **CKEditor 4 Export to PDF plugin** (https://ckeditor.com/ckeditor-4/)<br>
95
+ Copyright (c) 2003-2021, [CKSource](http://cksource.com) Frederico Knabben. All rights reserved.
96
+
97
+ CKEditor 4 export to PDF plugin is licensed under a commercial license and is protected by copyright law.
98
+ For more details about available licensing options please contact us at sales@cksource.com.
99
+
100
+ ### Trademarks
101
+
102
+ **CKEditor** is a trademark of [CKSource](http://cksource.com) Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.
@@ -0,0 +1,5 @@
1
+ /*
2
+ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ (function(){window.exportPdfUtils={useXHR:function(b,a){var c=sinon.useFakeXMLHttpRequest(),d;c.onCreate=function(a){d=a};b.execCommand("exportPdf");a&&a(d);c.restore()},getDefaultConfig:function(b,a){return CKEDITOR.tools.object.merge({extraPlugins:"exportpdf",exportPdf_appId:"cke4-tests-"+b},a)},initManualTest:function(){bender.loadExternalPlugin("exportpdf","/apps/plugin/");bender.tools.ignoreUnsupportedEnvironment("exportpdf")},toAbsoluteUrl:function(b,a){return(a?a:window.location.origin)+b}}})();
@@ -0,0 +1,6 @@
1
+ (function(){bender.loadExternalPlugin("exportpdf","/apps/plugin/");CKEDITOR.plugins.load("exportpdf",function(){function d(a,c){var b=exportPdfUtils.getDefaultConfig("unit",a||{});bender.editorBot.create({name:"editor"+Date.now(),config:b,startupData:"\x3cp\x3eHello World!\x3c/p\x3e"},function(a){c&&c(a.editor)})}var b=function(){var a=sinon.fakeServer.create(),c=0;a.respondWith(function(a){"/incremental_token"===a.url?(a.respond(200,{},"sample-token-value"+c),c+=1):"/empty-token"===a.url?a.respond(200,
2
+ {},""):a.respond(200,{},"sample-token-value")});return a}(),e;bender.test({setUp:function(){bender.tools.ignoreUnsupportedEnvironment("exportpdf");e=sinon.stub(CKEDITOR.plugins.exportpdf,"downloadFile")},tearDown:function(){e.restore()},"test token is fetched if tokenUrl is correct":function(){d({exportPdf_tokenUrl:"/custom-url"},function(a){a.on("exportPdf",function(a){assert.areEqual(a.data.token,"sample-token-value","Token value is incorrect.")},null,null,17);b.respond();a.execCommand("exportPdf");
3
+ b.respond()})},"test authentication header is added if token is provided":function(){d({exportPdf_tokenUrl:"/custom-url"},function(a){b.respond();a.execCommand("exportPdf");b.respond();assert.areEqual("sample-token-value",b.requests[b.requests.length-1].requestHeaders.Authorization,"Authorization token was not set properly.")})},"test console.warn is called if tokenUrl is not provided":function(){CKEDITOR.once("log",function(a){a.cancel();assert.areEqual("exportpdf-no-token-url",a.data.errorCode,
4
+ "There should be URL error log.")});d({exportPdf_tokenUrl:""})},"test console.warn is called on POST request if token is empty":function(){var a=CKEDITOR.on("log",function(c){"exportpdf-no-token"===c.data.errorCode&&(c.cancel(),CKEDITOR.removeListener("log",a),assert.areEqual("exportpdf-no-token",c.data.errorCode,"`exportpdf-no-token` should occur."))});d({exportPdf_tokenUrl:"/empty-token"},function(a){b.respond();a.execCommand("exportPdf");b.respond()})},"test console.warn is called on POST request if token was not fetched at all":function(){var a=
5
+ CKEDITOR.on("log",function(c){"exportpdf-no-token"===c.data.errorCode&&(c.cancel(),CKEDITOR.removeListener("log",a),assert.areEqual("exportpdf-no-token",c.data.errorCode,"`exportpdf-no-token` should occur."))});d({exportPdf_tokenUrl:"/custom-url"},function(a){a.execCommand("exportPdf");b.respond()})},"test token refreshes in the declared intervals":function(){CKEDITOR.once("instanceCreated",function(a){a.editor.exportPdfTokenInterval=200});d({exportPdf_tokenUrl:"/incremental_token"},function(a){b.respond();
6
+ setTimeout(function(){resume(function(){b.respond();a.on("exportPdf",function(a){assert.areNotSame(a.data.token,"sample-token-value0","Token was not refreshed.")},null,null,17);a.execCommand("exportPdf");b.respond()})},500);wait()})},"test file is downloaded also without token":function(){d({exportPdf_tokenUrl:"/empty-token"},function(a){b.respond();a.execCommand("exportPdf");b.respond();sinon.assert.calledOnce(e);assert.pass()})}})})})();
@@ -0,0 +1,10 @@
1
+ (function(){bender.loadExternalPlugin("exportpdf","/apps/plugin/");CKEDITOR.plugins.load("exportpdf",function(){bender.test({setUp:function(){bender.tools.ignoreUnsupportedEnvironment("exportpdf")},"test data is correct at read and send stages":function(){bender.editorBot.create({name:"editor1",config:exportPdfUtils.getDefaultConfig("unit")},function(c){var b=c.editor;c.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');b.once("exportPdf",function(a){assert.areEqual(a.data.html,
2
+ b.getData(),"Data from editor is incorrect.");assert.isTrue(CKEDITOR.tools.isEmpty(a.data.options),"`options` object should be initially empty.")});b.once("exportPdf",function(a){a.cancel();assert.areEqual('\x3cdiv class\x3d"cke_editable cke_contents_ltr"\x3e'+b.getData()+"\x3c/div\x3e",a.data.html,"Preprocessed data sent to endpoint is incorrect.");assert.isNotNull(a.data.css,"CSS should be attached.")},null,null,16);b.execCommand("exportPdf")})},"test options provided via config":function(){bender.editorBot.create({name:"editor2",
3
+ config:exportPdfUtils.getDefaultConfig("unit",{exportPdf_options:{format:"A6"}})},function(c){var b=c.editor;c.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');b.once("exportPdf",function(a){a.cancel();assert.areEqual(a.data.options.format,"A6")});b.execCommand("exportPdf")})},"test html changed via event":function(){bender.editorBot.create({name:"editor3",config:exportPdfUtils.getDefaultConfig("unit")},function(c){var b=c.editor;c.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');
4
+ b.once("exportPdf",function(a){a.cancel();assert.areEqual(a.data.html,"")});b.once("exportPdf",function(a){assert.areNotEqual(a.data.html,"");a.data.html=""},null,null,1);b.execCommand("exportPdf")})},"test options changed via event":function(){bender.editorBot.create({name:"editor4",config:exportPdfUtils.getDefaultConfig("unit")},function(c){var b=c.editor;c.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');b.once("exportPdf",function(a){a.cancel();assert.areEqual(a.data.options.format,
5
+ "A5")});b.once("exportPdf",function(a){a.data.options.format="A5"},null,null,1);b.execCommand("exportPdf")})},"test html changed via event asynchronously":function(){bender.editorBot.create({name:"editor5",config:exportPdfUtils.getDefaultConfig("unit")},function(c){var b=c.editor;c.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');b.on("exportPdf",function(a){a.cancel();a.data.asyncDone&&(resume(),assert.areEqual(a.data.html,"\x3cp\x3eContent filtered!\x3c/p\x3e"),delete a.data.asyncDone,
6
+ assert.isUndefined(a.data.asyncDone))});b.on("exportPdf",function(a){a.data.asyncDone||setTimeout(function(){a.data.html="\x3cp\x3eContent filtered!\x3c/p\x3e";a.data.asyncDone=!0;b.fire("exportPdf",a.data)},1E3)},null,null,1);b.execCommand("exportPdf");wait()})},"test options changed via event asynchronously":function(){bender.editorBot.create({name:"editor6",config:exportPdfUtils.getDefaultConfig("unit",{exportPdf_options:{format:"A5"}})},function(c){var b=c.editor;c.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');
7
+ b.on("exportPdf",function(a){a.cancel();a.data.asyncDone&&(resume(),assert.areEqual(a.data.options.format,"A4"),delete a.data.asyncDone,assert.isUndefined(a.data.asyncDone))});b.on("exportPdf",function(a){a.data.asyncDone||setTimeout(function(){a.data.options.format="A4";a.data.asyncDone=!0;b.fire("exportPdf",a.data)},1E3)},null,null,1);b.execCommand("exportPdf");wait()})},"test default CKEditor config":function(){bender.editorBot.create({name:"editor7",config:exportPdfUtils.getDefaultConfig("unit")},
8
+ function(c){CKEDITOR.config.exportPdf_isDev?assert.areEqual(c.editor.config.exportPdf_service,"https://pdf-converter.cke-cs-staging.com/v1/convert","Default dev endpoint is incorrect."):assert.areEqual(c.editor.config.exportPdf_service,"https://pdf-converter.cke-cs.com/v1/convert","Default prod endpoint is incorrect.");assert.areEqual(c.editor.config.exportPdf_fileName,"ckeditor4-export-pdf.pdf","Default file name is incorrect.")})},"test inaccessible stylesheets are handled correctly":function(){bender.editorBot.create({name:"editor8",
9
+ config:exportPdfUtils.getDefaultConfig("unit",{contentsCss:"https://cdn.ckeditor.com/4.16.0/full-all/samples/css/samples.css"})},function(c){var b=c.editor,a=!1,d=CKEDITOR.on("log",function(b){"exportpdf-stylesheets-inaccessible"===b.data.errorCode&&(b.cancel(),CKEDITOR.removeListener("log",d),a=!0)});c.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');b.once("exportPdf",function(b){b.cancel();resume(function(){a?assert.pass():assert.fail("No errors thrown while accessing stylesheets rules.")})},
10
+ null,null,19);CKEDITOR.tools.setTimeout(function(){b.execCommand("exportPdf")},1E3);wait()})}})})})();
@@ -0,0 +1,27 @@
1
+ <div id="editor1">
2
+ <p>My filename should be 'ckeditor4-export-pdf.pdf'.</p>
3
+ </div>
4
+
5
+ <div id="editor2">
6
+ <p>And mine - 'different-name.pdf'.</p>
7
+ </div>
8
+
9
+ <div id="editor3">
10
+ <h1>Beautiful title</h1>
11
+ </div>
12
+
13
+ <script>
14
+ exportPdfUtils.initManualTest();
15
+
16
+ CKEDITOR.replace( 'editor1', exportPdfUtils.getDefaultConfig( 'manual' ) );
17
+
18
+ CKEDITOR.replace( 'editor2', exportPdfUtils.getDefaultConfig( 'manual', {
19
+ exportPdf_fileName: 'different-name.pdf',
20
+ } ) );
21
+
22
+ var editor3 = CKEDITOR.replace( 'editor3', exportPdfUtils.getDefaultConfig( 'manual', {
23
+ exportPdf_fileName: function() {
24
+ return editor3.editable().findOne( 'h1' ).getText() + '.pdf';
25
+ }
26
+ } ) );
27
+ </script>
@@ -0,0 +1,46 @@
1
+ @bender-tags: exportpdf, feature, 1
2
+ @bender-ui: collapsed
3
+ @bender-include: ../_helpers/tools.js
4
+ @bender-ckeditor-plugins: wysiwygarea, toolbar, basicstyles, notification, format
5
+
6
+ 1. Click `Export to PDF` button (the one next to the `Source` button) in the first editor.
7
+ 1. Wait for the file to download.
8
+
9
+ **Expected:**
10
+
11
+ File with `ckeditor4-export-pdf.pdf` name (possibly with number if file already existed) was downloaded.
12
+
13
+ **Unexpected:**
14
+
15
+ File was not downloaded or its name is incorrect.
16
+
17
+ 1. Do the same in the second editor.
18
+
19
+ **Expected:**
20
+
21
+ File with `different-name.pdf` name (possibly with number if file already existed) was downloaded.
22
+
23
+ **Unexpected:**
24
+
25
+ File was not downloaded or its name is incorrect.
26
+
27
+ 1. Repeat for the third editor.
28
+
29
+ **Expected:**
30
+
31
+ File with 'Beautiful title.pdf' name (possibly with number if file already existed) was downloaded.
32
+
33
+ **Unexpected:**
34
+
35
+ File was not downloaded or its name is incorrect.
36
+
37
+ 1. Change text in the third editor to `New title` (**important:** it has to remain a `<h1>` element).
38
+ 1. Click and download PDF again.
39
+
40
+ **Expected:**
41
+
42
+ Name of a new file is 'New title.pdf'.
43
+
44
+ **Unexpected:**
45
+
46
+ Name is the same as before or there is an error.
@@ -0,0 +1,18 @@
1
+ <div id="editor1">
2
+ </div>
3
+
4
+ <div id="editor2">
5
+ <p>My content and wrapper will be deleted.</p>
6
+ </div>
7
+
8
+ <script>
9
+ exportPdfUtils.initManualTest();
10
+
11
+ CKEDITOR.replace( 'editor1', exportPdfUtils.getDefaultConfig( 'manual' ) );
12
+
13
+ var editor2 = CKEDITOR.replace( 'editor2', exportPdfUtils.getDefaultConfig( 'manual' ) );
14
+
15
+ editor2.on( 'exportPdf', function( evt ) {
16
+ evt.data.html = '';
17
+ }, null, null, 16 );
18
+ </script>
@@ -0,0 +1,34 @@
1
+ @bender-tags: exportpdf, feature, 11
2
+ @bender-ui: collapsed
3
+ @bender-include: ../_helpers/tools.js
4
+ @bender-ckeditor-plugins: wysiwygarea, toolbar, basicstyles, notification
5
+
6
+ **Note:** At the beginning open the console.
7
+
8
+ 1. Click `Export to PDF` button (the one next to the `Source` button) in the first editor.
9
+ 1. Wait for the file to download.
10
+ 1. Open the file.
11
+
12
+ **Expected:**
13
+
14
+ * Empty file was downloaded.
15
+ * No errors in console.
16
+
17
+ **Unexpected:**
18
+
19
+ * File wasn't downloaded.
20
+ * File was downloaded but can't be opened.
21
+ * Error in the console appeared.
22
+
23
+ 1. Click `Export to PDF` button in the second editor.
24
+
25
+ **Expected:**
26
+
27
+ * File wasn't downloaded.
28
+ * The notification with error appeared in the editor.
29
+ * There is an error message in the console.
30
+
31
+ **Unexpected:**
32
+
33
+ * File was downloaded and can't be opened.
34
+ * Success notification was displayed.
@@ -0,0 +1,148 @@
1
+ <div id="editor">
2
+ <h1 style="text-align:center"><img alt="Bilancino Hotel logo" src="https://ckeditor.com/docs/ckeditor4/latest/examples/assets/image/bilancino-logo.png" style="float:right;height:75px;width:75px;" /><span style="font-family:Georgia,serif">The Flavorful Tuscany Meetup</span></h1>
3
+
4
+ <h2 style="text-align:center"><span style="font-family:Georgia,serif"><span style="color:#2980b9">Welcome letter</span></span></h2>
5
+
6
+ <p>Dear Guest,</p>
7
+
8
+ <p>We are delighted to welcome you to the annual <em>Flavorful Tuscany Meetup</em> and hope you will enjoy the programme as well as your stay at the <a href="https://ckeditor.com">Bilancino Hotel</a>.</p>
9
+
10
+ <p>Please find attached the full schedule of the event.</p>
11
+
12
+ <blockquote>
13
+ <p>The annual Flavorful Tuscany meetups are always a culinary discovery. You get the best of Tuscan flavors during an intense one-day stay at one of the top hotels of the region. All the sessions are lead by top chefs passionate about their profession. I would certainly recommend to save the date in your calendar for this one!</p>
14
+
15
+ <p>Angelina Calvino, food journalist</p>
16
+ </blockquote>
17
+
18
+ <p>Please arrive at the <a href="https://ckeditor.com">Bilancino Hotel</a> reception desk at least <strong>half an hour earlier</strong> to make sure that the registration process goes as smoothly as possible.</p>
19
+
20
+ <p>We look forward to welcoming you to the event.</p>
21
+
22
+ <p><img alt="Victoria Valc signature" src="https://ckeditor.com/docs/ckeditor4/latest/examples/assets/image/signature.png" style="height:101px;width:180px" /></p>
23
+
24
+ <p><span style="font-size:16px"><strong>Victoria Valc</strong></span></p>
25
+
26
+ <p><strong>Event Manager<br />
27
+ Bilancino Hotel</strong></p>
28
+
29
+ <p>&nbsp;</p>
30
+
31
+ <div style="page-break-after: always"><span style="display:none">&nbsp;</span></div>
32
+
33
+ <p>&nbsp;</p>
34
+
35
+ <h2 style="text-align:center"><span style="font-family:Georgia,serif"><span style="color:#2980b9">The Flavorful Tuscany Meetup Schedule</span></span></h2>
36
+
37
+ <table border="1" cellspacing="0" style="border-collapse:collapse; width:597px">
38
+ <thead>
39
+ <tr>
40
+ <th colspan="2" style="background-color:#999999"><span style="color:#ffffff">Saturday, July 14</span></th>
41
+ </tr>
42
+ </thead>
43
+ <tbody>
44
+ <tr>
45
+ <td style="background-color:#e6e6e6; text-align:center">9:30 AM - 11:30 AM</td>
46
+ <td>
47
+ <p><strong>Americano vs. Brewed - &ldquo;know your coffee&rdquo;</strong> with:&nbsp;</p>
48
+
49
+ <ul>
50
+ <li>Giulia Bianchi</li>
51
+ <li>Stefano Garau</li>
52
+ <li>Giuseppe Russo</li>
53
+ </ul>
54
+ </td>
55
+ </tr>
56
+ <tr>
57
+ <td style="background-color:#e6e6e6; text-align:center">1:00 PM - 3:00 PM</td>
58
+ <td>
59
+ <p><strong>Pappardelle al pomodoro</strong> - live cooking&nbsp;<sup>1</sup></p>
60
+
61
+ <p>Incorporate the freshest ingredients&nbsp;<br />
62
+ with Rita Fresco</p>
63
+ </td>
64
+ </tr>
65
+ <tr>
66
+ <td style="background-color:#e6e6e6; text-align:center">5:00 PM - 8:00 PM</td>
67
+ <td>
68
+ <p><strong>Tuscan vineyards at a glance</strong> - wine-tasting&nbsp;<br />
69
+ with Frederico Riscoli</p>
70
+ </td>
71
+ </tr>
72
+ </tbody>
73
+ </table>
74
+
75
+ <p>&nbsp;</p>
76
+
77
+ <p><sup>1</sup>&nbsp;<em><span style="background-color:#98e64c">Registration for the live cooking session is required as seats are limited.</span></em></p>
78
+
79
+ <p>&nbsp;</p>
80
+
81
+ <hr>
82
+
83
+ <h2 style="text-align: center;"><span style="color:#2980b9"><span style="font-family:Georgia,serif">Driving directions from the airport</span></span></h2>
84
+
85
+ <ol>
86
+ <li>Head southeast on R138&nbsp;toward Nassau St.</li>
87
+ <li>Follow R138 and R148 to Bridgefoot St/R804.
88
+ <ol>
89
+ <li>Use the left 2 lanes to turn slightly left onto Lincoln Pl/R138.</li>
90
+ <li>Turn left onto Westland Row/R118/R138.</li>
91
+ <li>Use any lane to turn left onto Pearse St/R118/R138/R802.</li>
92
+ <li>Continue to follow R138/R802.</li>
93
+ </ol>
94
+ </li>
95
+ <li>Turn left onto Burgh Quay/George&#39;s Quay/R105/R138.</li>
96
+ <li>Continue onto Aston Quay/R148.
97
+ <ul>
98
+ <li>Continue to follow R148.</li>
99
+ </ul>
100
+ </li>
101
+ <li>Turn left onto Bridgefoot St/R804.
102
+ <ul>
103
+ <li>Continue to follow R804.</li>
104
+ </ul>
105
+ </li>
106
+ <li>After approximately 2 minutes, Bilancino Hotel will be on your left.</li>
107
+ </ol>
108
+
109
+ <p>&nbsp;</p>
110
+ </div>
111
+
112
+ <div id="preview">
113
+ <style>
114
+ #preview iframe {
115
+ width: 840px;
116
+ height: 500px;
117
+ }
118
+ </style>
119
+
120
+ <h2>Document preview (based on send HTML and CSS)</h2>
121
+ </div>
122
+
123
+ <script>
124
+ exportPdfUtils.initManualTest();
125
+
126
+ var editor = CKEDITOR.replace( 'editor', exportPdfUtils.getDefaultConfig( 'manual', {
127
+ width: 840,
128
+ height: 400
129
+ } ) );
130
+
131
+ editor.on( 'exportPdf', function( evt ) {
132
+ var oldIframe = document.querySelector( '#preview iframe' ),
133
+ html;
134
+
135
+ if ( oldIframe && oldIframe.parentNode ) {
136
+ oldIframe.parentNode.removeChild( oldIframe );
137
+ }
138
+
139
+ // Align iframe HTML with the one on the endpoint side by adding explicit encoding and DOCTYPE.
140
+ html = '<!DOCTYPE html><html><head><style>' + evt.data.css + '</style><meta charset="UTF-8"></head><body>' + evt.data.html + '</body></html>';
141
+
142
+ var iframe = document.createElement( 'iframe' );
143
+ document.querySelector( '#preview' ).appendChild( iframe );
144
+ iframe.contentWindow.document.open();
145
+ iframe.contentWindow.document.write( html );
146
+ iframe.contentWindow.document.close();
147
+ }, null, null, 16 );
148
+ </script>
@@ -0,0 +1,12 @@
1
+ @bender-tags: exportpdf, feature, 17
2
+ @bender-ui: collapsed
3
+ @bender-include: ../_helpers/tools.js
4
+ @bender-ckeditor-plugins: basicstyles, bidi, blockquote, clipboard, colorbutton, colordialog, dialogadvtab, elementspath, enterkey, font, format, horizontalrule, htmlwriter, image, indentlist, indentblock, justify, link, list, liststyle, magicline, pagebreak, pastefromgdocs, pastefromlibreoffice, pastefromword, pastetext, specialchar, stylescombo, table, tableselection, tabletools, toolbar, undo, wysiwygarea, sourcearea, resize
5
+
6
+ 1. Click `Export to PDF` button (the one next to the `Source` button).
7
+
8
+ 1. Wait for the PDF to download and examine it.
9
+
10
+ If you find any bugs, please report them <a href="https://github.com/cksource/ckeditor4-plugin-exportpdf/issues" target="_blank">here</a>. Just remember to check if it isn't <a href="https://github.com/cksource/ckeditor4-plugin-exportpdf/issues?q=is%3Aopen+is%3Aissue+label%3Atype%3Abug" target="_blank">already known</a>.
11
+
12
+ When comparing generated PDF to editor contents the best conversion results (close to 1:1 document formatting) can be observed in a Chrome browser.
@@ -0,0 +1,27 @@
1
+ <div id="editor">
2
+ <p>Foo bar</p>
3
+ </div>
4
+
5
+ <div id="tokenValue" style="word-break:break-all;border:1px solid red;"></div>
6
+
7
+ <script>
8
+ exportPdfUtils.initManualTest();
9
+
10
+ var editor = CKEDITOR.replace( 'editor', exportPdfUtils.getDefaultConfig( 'manual', {
11
+ extraPlugins: 'easyimage,exportpdf',
12
+ cloudServices_uploadUrl: 'https://33333.cke-cs.com/easyimage/upload/',
13
+ cloudServices_tokenUrl: 'https://33333.cke-cs.com/token/dev/ijrDsqFix838Gh3wGO3F77FSW94BwcLXprJ4APSp3XQ26xsUHTi0jcb1hoBt'
14
+ } ) );
15
+
16
+ editor.on( 'instanceReady', function() {
17
+ if ( !CKEDITOR.config.exportPdf_tokenUrl ) {
18
+ bender.ignore();
19
+ }
20
+ } );
21
+
22
+ editor.on( 'exportPdf', function( evt ) {
23
+ var value = CKEDITOR.document.findOne( '#tokenValue' );
24
+
25
+ value.setHtml( evt.data.token );
26
+ }, null, null, 17 );
27
+ </script>
@@ -0,0 +1,26 @@
1
+ @bender-tags: exportpdf, feature, 77
2
+ @bender-ui: collapsed
3
+ @bender-include: ../../_helpers/tools.js
4
+ @bender-ckeditor-plugins: wysiwygarea, toolbar, basicstyles, notification, format, easyimage
5
+
6
+ Note: You need the Internet connection to run this test.
7
+
8
+ 1. Click `Export to PDF` toolbar button.
9
+ 1. Examine the area in the red frame below.
10
+
11
+ **Expected:** There is a long token string in the frame.
12
+
13
+ **Unexpected:** Frame is empty or says 'undefined'.
14
+
15
+ 1. Wait for the file to download and examine it.
16
+
17
+ **Expected:** No information about being created with CKEditor was added.
18
+
19
+ **Unexpected:** There is an additional note about CKEditor at the bottom of page.
20
+
21
+ 1. Upload an image.
22
+ 1. Examine browser console.
23
+
24
+ **Expected:** There are no errors or warnings.
25
+
26
+ **Unexpected:** Any error or warning concerning `Export to PDF` or `Easy Image` occurred.
@@ -0,0 +1,19 @@
1
+ <div id="editor1">
2
+ <p>Hello world!</p>
3
+ </div>
4
+
5
+ <div id="editor2">
6
+ <p>Hello world!</p>
7
+ </div>
8
+
9
+ <script>
10
+ exportPdfUtils.initManualTest();
11
+
12
+ CKEDITOR.replace( 'editor1', exportPdfUtils.getDefaultConfig( 'manual', {
13
+ extraPlugins: 'exportpdf'
14
+ } ) );
15
+
16
+ CKEDITOR.replace( 'editor2', exportPdfUtils.getDefaultConfig( 'manual', {
17
+ removePlugins: 'notification'
18
+ } ) );
19
+ </script>
@@ -0,0 +1,36 @@
1
+ @bender-tags: exportpdf, feature, 4
2
+ @bender-ui: collapsed
3
+ @bender-include: ../_helpers/tools.js
4
+ @bender-ckeditor-plugins: wysiwygarea, toolbar, notification
5
+
6
+ 1. Read the expected results first as there will be a sequence of things happening quickly to examine.
7
+ 1. Click `Export to PDF` button in the first editor.
8
+
9
+ **Expected:**
10
+
11
+ * Button is disabled after click.
12
+ * Nofitication bar of `info` type appeared.
13
+ * When download started, notification type changed to `success`.
14
+ * Once download finished, button is enabled again.
15
+ * After 3 seconds notification bar disappeared.
16
+
17
+ **Unexpected:**
18
+
19
+ * Button wasn't disabled.
20
+ * Button wasn't enabled after download started.
21
+ * Notifications were incorrect.
22
+ * Notification bar didn't disappear.
23
+
24
+ 1. Click `Export to PDF` button in the second editor.
25
+
26
+ **Expected:**
27
+
28
+ * Neither notifications nor alerts appeared.
29
+ * File was downloaded.
30
+ * Button was disabled for the time between click and download.
31
+
32
+ **Unexpected:**
33
+
34
+ * Notification or browser alert appeared.
35
+ * File wasn't downloaded.
36
+ * Button wasn't disabled for the time between click and download.
@@ -0,0 +1,45 @@
1
+ <div id="editor1">
2
+ <p>Export to PDF test 1.</p>
3
+ </div>
4
+
5
+ <div id="editor2">
6
+ <p>Export to PDF test 2.</p>
7
+ </div>
8
+
9
+ <script>
10
+ exportPdfUtils.initManualTest();
11
+
12
+ var editor1 = CKEDITOR.replace( 'editor1', exportPdfUtils.getDefaultConfig( 'manual' ) );
13
+
14
+ editor1.on( 'exportPdf', function( evt ) {
15
+ if ( !evt.data.asyncDone ) {
16
+ setTimeout( function() {
17
+ evt.data.html = '<p>Content filtered!</p>';
18
+ evt.data.asyncDone = true;
19
+
20
+ editor1.fire( 'exportPdf', evt.data );
21
+ }, 2000 );
22
+
23
+ evt.cancel();
24
+ } else {
25
+ delete evt.data.asyncDone;
26
+ }
27
+ }, null, null, 1 );
28
+
29
+ var editor2 = CKEDITOR.replace( 'editor2', exportPdfUtils.getDefaultConfig( 'manual' ) );
30
+
31
+ editor2.on( 'exportPdf', function( evt ) {
32
+ if ( !evt.data.asyncDone ) {
33
+ setTimeout( function() {
34
+ evt.data.html = '<p>Content filtered!</p>';
35
+ evt.data.asyncDone = true;
36
+
37
+ editor2.fire( 'exportPdf', evt.data );
38
+ }, 2000 );
39
+
40
+ evt.cancel();
41
+ } else {
42
+ delete evt.data.asyncDone;
43
+ }
44
+ }, null, null, 17 );
45
+ </script>
@@ -0,0 +1,27 @@
1
+ @bender-tags: exportpdf, feature, 4
2
+ @bender-ui: collapsed
3
+ @bender-include: ../_helpers/tools.js
4
+ @bender-ckeditor-plugins: wysiwygarea, toolbar, basicstyles, notification
5
+
6
+ 1. Click `Export to PDF` button (the one next to the `Source` button) in the first editor.
7
+ 1. Watch appearing notifications.
8
+
9
+ **Expected:**
10
+
11
+ * Notification `Processing PDF document...` was visible for about 2 seconds.
12
+ * Progress steps were: `0`, `0.5`, `success`.
13
+
14
+ **Unexpected:**
15
+
16
+ Notification disappeared too fast to be noticable.
17
+
18
+ 1. Do the same in the second editor.
19
+
20
+ **Expected:**
21
+
22
+ * Notification `Processing PDF document...` was visible for about 2 seconds.
23
+ * Progress steps were: `0.2`, `0.5`, `success`.
24
+
25
+ **Unexpected:**
26
+
27
+ Notification disappeared too fast to be noticable.
@@ -0,0 +1,29 @@
1
+ <div id="editor1">
2
+ <p>"Lorem ipsum dolor sit amet, consectetur adipiscing elit,
3
+ sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
4
+ quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
5
+ irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
6
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
7
+ </p>
8
+ </div>
9
+
10
+ <div id="editor2">
11
+ <p>"Lorem ipsum dolor sit amet, consectetur adipiscing elit,
12
+ sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
13
+ quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
14
+ irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
15
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
16
+ </p>
17
+ </div>
18
+
19
+ <script>
20
+ exportPdfUtils.initManualTest();
21
+
22
+ CKEDITOR.replace( 'editor1', exportPdfUtils.getDefaultConfig( 'manual' ) );
23
+
24
+ CKEDITOR.replace( 'editor2', exportPdfUtils.getDefaultConfig( 'manual', {
25
+ exportPdf_options: {
26
+ format: 'A6'
27
+ }
28
+ } ) );
29
+ </script>