radiant-ck_editor_filter-extension 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (577) hide show
  1. data/lib/radiant-ck_editor_filter-extension.rb +1 -1
  2. data/public/javascripts/extensions/ck_editor_filter/ckeditor/CHANGES.md +354 -12
  3. data/public/javascripts/extensions/ck_editor_filter/ckeditor/INSTALL.html +92 -0
  4. data/public/javascripts/extensions/ck_editor_filter/ckeditor/LICENSE.md +1 -1
  5. data/public/javascripts/extensions/ck_editor_filter/ckeditor/README.md +1 -1
  6. data/public/javascripts/extensions/ck_editor_filter/ckeditor/adapters/jquery.js +1 -1
  7. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor.js +857 -904
  8. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor_basic.js +8 -0
  9. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor_basic_source.js +20 -0
  10. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor_source.js +25 -0
  11. data/public/javascripts/extensions/ck_editor_filter/ckeditor/config.js +1 -1
  12. data/public/javascripts/extensions/ck_editor_filter/ckeditor/contents.css +17 -6
  13. data/public/javascripts/extensions/ck_editor_filter/ckeditor/images/spacer.gif +0 -0
  14. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/_languages.js +6 -0
  15. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/_translationstatus.txt +61 -0
  16. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/af.js +5 -0
  17. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ar.js +5 -0
  18. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/bg.js +5 -0
  19. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/bn.js +5 -0
  20. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/bs.js +5 -0
  21. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ca.js +5 -0
  22. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/cs.js +5 -0
  23. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/cy.js +5 -0
  24. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/da.js +5 -0
  25. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/de.js +5 -0
  26. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/el.js +5 -0
  27. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/en-au.js +5 -0
  28. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/en-ca.js +5 -0
  29. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/en-gb.js +5 -0
  30. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/en.js +2 -2
  31. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/eo.js +5 -0
  32. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/es.js +5 -0
  33. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/et.js +5 -0
  34. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/eu.js +5 -0
  35. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fa.js +5 -0
  36. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fi.js +5 -0
  37. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fo.js +5 -0
  38. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fr-ca.js +5 -0
  39. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fr.js +5 -0
  40. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/gl.js +5 -0
  41. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/gu.js +5 -0
  42. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/he.js +5 -0
  43. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/hi.js +5 -0
  44. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/hr.js +5 -0
  45. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/hu.js +5 -0
  46. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/id.js +5 -0
  47. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/is.js +5 -0
  48. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/it.js +5 -0
  49. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ja.js +5 -0
  50. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ka.js +5 -0
  51. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/km.js +5 -0
  52. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ko.js +5 -0
  53. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ku.js +5 -0
  54. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/lt.js +5 -0
  55. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/lv.js +5 -0
  56. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/mk.js +5 -0
  57. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/mn.js +5 -0
  58. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ms.js +5 -0
  59. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/nb.js +5 -0
  60. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/nl.js +5 -0
  61. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/no.js +5 -0
  62. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/pl.js +5 -0
  63. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/pt-br.js +5 -0
  64. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/pt.js +5 -0
  65. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ro.js +5 -0
  66. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ru.js +5 -0
  67. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/si.js +5 -0
  68. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sk.js +5 -0
  69. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sl.js +5 -0
  70. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sq.js +5 -0
  71. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sr-latn.js +5 -0
  72. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sr.js +5 -0
  73. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sv.js +5 -0
  74. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/th.js +5 -0
  75. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/tr.js +5 -0
  76. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/tt.js +5 -0
  77. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ug.js +5 -0
  78. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/uk.js +5 -0
  79. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/vi.js +5 -0
  80. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/zh-cn.js +5 -0
  81. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/zh.js +5 -0
  82. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/MediaEmbed/dialogs/mediaembed.html +14 -0
  83. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/MediaEmbed/images/icon.gif +0 -0
  84. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/MediaEmbed/plugin.js +61 -0
  85. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/MediaEmbed/plugin.js~ +57 -0
  86. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +6 -6
  87. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +1 -1
  88. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/af.js +11 -0
  89. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +4 -2
  90. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +4 -2
  91. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +5 -2
  92. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +5 -2
  93. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +4 -2
  94. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +6 -4
  95. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +5 -2
  96. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +5 -2
  97. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js +11 -0
  98. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +4 -2
  99. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +6 -3
  100. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +4 -2
  101. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +4 -2
  102. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +4 -2
  103. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +4 -2
  104. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +4 -2
  105. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +4 -2
  106. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +4 -2
  107. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +4 -2
  108. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +4 -2
  109. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +4 -2
  110. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +4 -2
  111. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +5 -2
  112. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/id.js +4 -2
  113. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +5 -2
  114. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +3 -2
  115. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +8 -6
  116. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +5 -3
  117. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +4 -2
  118. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +4 -2
  119. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +4 -2
  120. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +4 -2
  121. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +4 -2
  122. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +5 -2
  123. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +5 -3
  124. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +4 -2
  125. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +5 -2
  126. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +5 -2
  127. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +7 -5
  128. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +9 -6
  129. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +4 -2
  130. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/si.js +4 -2
  131. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +4 -2
  132. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +4 -2
  133. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +4 -2
  134. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +4 -2
  135. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +4 -2
  136. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +5 -3
  137. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +4 -2
  138. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +4 -2
  139. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +11 -0
  140. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +4 -2
  141. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +4 -2
  142. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +4 -2
  143. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +4 -2
  144. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +4 -2
  145. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/lang/en.js +6 -0
  146. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/lang/he.js +6 -0
  147. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/about/dialogs/about.js +4 -4
  148. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  149. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/adobeair/plugin.js +6 -0
  150. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/ajax/plugin.js +6 -0
  151. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/autogrow/plugin.js +6 -0
  152. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/bbcode/plugin.js +9 -0
  153. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/clipboard/dialogs/paste.js +1 -1
  154. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/colordialog/dialogs/colordialog.js +13 -0
  155. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/devtools/lang/en.js +6 -0
  156. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/devtools/plugin.js +6 -0
  157. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/dialog/dialogDefinition.js +1 -1
  158. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/div/dialogs/div.js +8 -8
  159. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/docprops/dialogs/docprops.js +10 -0
  160. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/docprops/plugin.js +6 -0
  161. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/find/dialogs/find.js +21 -21
  162. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/flash/dialogs/flash.js +8 -8
  163. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/flash/images/placeholder.png +0 -0
  164. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/button.js +1 -1
  165. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/checkbox.js +1 -1
  166. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/form.js +1 -1
  167. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/hiddenfield.js +4 -5
  168. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/radio.js +3 -3
  169. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/select.js +3 -3
  170. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/textarea.js +1 -1
  171. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/textfield.js +1 -1
  172. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  173. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/icons.png +0 -0
  174. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/icons_hidpi.png +0 -0
  175. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/iframe/dialogs/iframe.js +1 -1
  176. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/iframe/images/placeholder.png +0 -0
  177. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/iframedialog/plugin.js +6 -0
  178. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image/dialogs/image.js +25 -25
  179. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/dev/assets/image1.jpg +0 -0
  180. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/dev/assets/image2.jpg +0 -0
  181. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/dev/contents.css +35 -0
  182. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/dev/image2.html +339 -0
  183. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/dialogs/image2.js +550 -0
  184. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/icons/hidpi/image.png +0 -0
  185. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/icons/image.png +0 -0
  186. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/af.js +20 -0
  187. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ar.js +20 -0
  188. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/bg.js +20 -0
  189. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/bn.js +20 -0
  190. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/bs.js +20 -0
  191. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ca.js +20 -0
  192. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/cs.js +20 -0
  193. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/cy.js +20 -0
  194. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/da.js +20 -0
  195. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/de.js +20 -0
  196. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/el.js +20 -0
  197. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/en-au.js +20 -0
  198. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/en-ca.js +20 -0
  199. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/en-gb.js +20 -0
  200. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/en.js +20 -0
  201. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/eo.js +20 -0
  202. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/es.js +20 -0
  203. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/et.js +20 -0
  204. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/eu.js +20 -0
  205. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/fa.js +20 -0
  206. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/fi.js +20 -0
  207. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/fo.js +20 -0
  208. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/fr-ca.js +20 -0
  209. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/fr.js +20 -0
  210. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/gl.js +20 -0
  211. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/gu.js +20 -0
  212. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/he.js +20 -0
  213. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/hi.js +20 -0
  214. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/hr.js +20 -0
  215. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/hu.js +20 -0
  216. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/id.js +20 -0
  217. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/is.js +20 -0
  218. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/it.js +20 -0
  219. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ja.js +20 -0
  220. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ka.js +20 -0
  221. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/km.js +20 -0
  222. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ko.js +20 -0
  223. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ku.js +20 -0
  224. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/lt.js +20 -0
  225. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/lv.js +20 -0
  226. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/mk.js +20 -0
  227. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/mn.js +20 -0
  228. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ms.js +20 -0
  229. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/nb.js +20 -0
  230. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/nl.js +20 -0
  231. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/no.js +20 -0
  232. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/pl.js +20 -0
  233. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/pt-br.js +20 -0
  234. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/pt.js +20 -0
  235. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ro.js +20 -0
  236. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ru.js +20 -0
  237. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/si.js +20 -0
  238. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/sk.js +20 -0
  239. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/sl.js +20 -0
  240. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/sq.js +20 -0
  241. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/sr-latn.js +20 -0
  242. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/sr.js +20 -0
  243. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/sv.js +20 -0
  244. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/th.js +20 -0
  245. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/tr.js +20 -0
  246. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/tt.js +20 -0
  247. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/ug.js +20 -0
  248. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/uk.js +20 -0
  249. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/vi.js +20 -0
  250. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/zh-cn.js +20 -0
  251. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/lang/zh.js +20 -0
  252. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/plugin.js +1592 -0
  253. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/samples/assets/image1.jpg +0 -0
  254. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/samples/assets/image2.jpg +0 -0
  255. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image2/samples/image2.html +65 -0
  256. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/lineutils/dev/dnd.html +172 -0
  257. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/lineutils/dev/magicfinger.html +285 -0
  258. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/lineutils/plugin.js +935 -0
  259. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/link/dialogs/anchor.js +4 -5
  260. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/link/dialogs/link.js +23 -34
  261. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/link/images/anchor.gif +0 -0
  262. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/link/images/anchor.png +0 -0
  263. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
  264. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/liststyle/dialogs/liststyle.js +1 -1
  265. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png +0 -0
  266. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/magicline/images/hidpi/icon.png +0 -0
  267. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/magicline/images/icon-rtl.png +0 -0
  268. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/magicline/images/icon.png +0 -0
  269. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  270. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/paperclipped/images/icon.png +0 -0
  271. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/paperclipped/plugin.js +15 -0
  272. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/pastefromword/filter/default.js +8 -8
  273. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/pastetext/dialogs/pastetext.js +6 -0
  274. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/dialogs/placeholder.js +6 -0
  275. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/lang/en.js +6 -0
  276. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/lang/he.js +6 -0
  277. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/placeholder.gif +0 -0
  278. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/plugin.js +6 -0
  279. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/preview/preview.html +8 -5
  280. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/radiantpreview/images/icon.png +0 -0
  281. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/radiantpreview/images/radiant-preview.png +0 -0
  282. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/scayt/README.md +1 -1
  283. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/scayt/dialogs/options.js +17 -20
  284. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/scayt/dialogs/toolbar.css +0 -0
  285. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  286. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  287. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  288. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  289. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  290. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  291. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  292. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  293. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  294. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  295. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  296. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/dialogs/smiley.js +10 -0
  297. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  298. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/angel_smile.png +0 -0
  299. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  300. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/angry_smile.png +0 -0
  301. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  302. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/broken_heart.png +0 -0
  303. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  304. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/confused_smile.png +0 -0
  305. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  306. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/cry_smile.png +0 -0
  307. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  308. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/devil_smile.png +0 -0
  309. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  310. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/embarrassed_smile.gif +0 -0
  311. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/embarrassed_smile.png +0 -0
  312. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  313. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/envelope.png +0 -0
  314. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/heart.gif +0 -0
  315. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/heart.png +0 -0
  316. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  317. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/kiss.png +0 -0
  318. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  319. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/lightbulb.png +0 -0
  320. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  321. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/omg_smile.png +0 -0
  322. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  323. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/regular_smile.png +0 -0
  324. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  325. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/sad_smile.png +0 -0
  326. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  327. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/shades_smile.png +0 -0
  328. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  329. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/teeth_smile.png +0 -0
  330. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  331. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/thumbs_down.png +0 -0
  332. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  333. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/thumbs_up.png +0 -0
  334. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/tongue_smile.gif +0 -0
  335. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/tongue_smile.png +0 -0
  336. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  337. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  338. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png +0 -0
  339. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  340. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/images/wink_smile.png +0 -0
  341. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt +1 -1
  342. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/af.js +13 -0
  343. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/ar.js +2 -2
  344. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/bg.js +1 -1
  345. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/ca.js +1 -1
  346. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/cs.js +1 -1
  347. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/cy.js +1 -1
  348. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/da.js +13 -0
  349. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/de.js +1 -1
  350. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/el.js +9 -9
  351. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js +13 -0
  352. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/en.js +1 -1
  353. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/eo.js +1 -1
  354. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/es.js +1 -1
  355. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/et.js +1 -1
  356. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/fa.js +1 -1
  357. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/fi.js +1 -1
  358. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js +1 -1
  359. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/fr.js +1 -1
  360. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/gl.js +1 -1
  361. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/he.js +1 -1
  362. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/hr.js +2 -2
  363. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/hu.js +1 -1
  364. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/id.js +1 -1
  365. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/it.js +1 -1
  366. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/ja.js +1 -1
  367. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/km.js +1 -1
  368. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/ku.js +1 -1
  369. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/lt.js +13 -0
  370. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/lv.js +1 -1
  371. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/nb.js +1 -1
  372. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/nl.js +1 -1
  373. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/no.js +1 -1
  374. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/pl.js +1 -1
  375. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +1 -1
  376. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/pt.js +6 -6
  377. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/ru.js +1 -1
  378. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/si.js +1 -1
  379. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/sk.js +1 -1
  380. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/sl.js +1 -1
  381. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/sq.js +1 -1
  382. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/sv.js +1 -1
  383. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/th.js +1 -1
  384. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/tr.js +1 -1
  385. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/tt.js +13 -0
  386. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/ug.js +1 -1
  387. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/uk.js +1 -1
  388. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/vi.js +1 -1
  389. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +1 -1
  390. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/lang/zh.js +1 -1
  391. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/specialchar.js +1 -1
  392. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/lang/en.js +6 -0
  393. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/styles/styles/default.js +6 -0
  394. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/stylesheetparser/plugin.js +6 -0
  395. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/table/dialogs/table.js +1 -1
  396. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/tableresize/plugin.js +7 -0
  397. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/tabletools/dialogs/tableCell.js +14 -13
  398. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/templates/dialogs/templates.css +6 -6
  399. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/templates/dialogs/templates.js +1 -1
  400. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/templates/templates/default.js +1 -1
  401. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  402. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  403. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  404. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/dialogs/uicolor.js +7 -0
  405. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/lang/en.js +6 -0
  406. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/lang/he.js +6 -0
  407. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/plugin.js +6 -0
  408. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  409. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  410. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  411. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  412. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  413. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/yui/assets/yui.css +6 -0
  414. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/yui/yui.js +76 -0
  415. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/dev/assets/contents.css +23 -0
  416. data/public/javascripts/extensions/ck_editor_filter/ckeditor/{samples → plugins/widget/dev}/assets/sample.jpg +0 -0
  417. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/dev/assets/simplebox/contents.css +36 -0
  418. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/dev/assets/simplebox/dialogs/simplebox.js +51 -0
  419. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/dev/assets/simplebox/icons/simplebox.png +0 -0
  420. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/dev/assets/simplebox/plugin.js +114 -0
  421. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/dev/console.js +131 -0
  422. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/dev/nestedwidgets.html +135 -0
  423. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/dev/widgetstyles.html +145 -0
  424. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/images/handle.png +0 -0
  425. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/af.js +7 -0
  426. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/ar.js +7 -0
  427. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/ca.js +7 -0
  428. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/cs.js +7 -0
  429. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/cy.js +7 -0
  430. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/da.js +7 -0
  431. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/de.js +7 -0
  432. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/el.js +7 -0
  433. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/en-gb.js +7 -0
  434. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/en.js +7 -0
  435. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/eo.js +7 -0
  436. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/es.js +7 -0
  437. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/fa.js +7 -0
  438. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/fi.js +7 -0
  439. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/fr.js +7 -0
  440. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/gl.js +7 -0
  441. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/he.js +7 -0
  442. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/hr.js +7 -0
  443. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/hu.js +7 -0
  444. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/it.js +7 -0
  445. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/ja.js +7 -0
  446. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/km.js +7 -0
  447. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/ko.js +7 -0
  448. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/ku.js +7 -0
  449. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/nb.js +7 -0
  450. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/nl.js +7 -0
  451. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/no.js +7 -0
  452. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/pl.js +7 -0
  453. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/pt-br.js +7 -0
  454. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/pt.js +7 -0
  455. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/ru.js +7 -0
  456. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/sk.js +7 -0
  457. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/sl.js +7 -0
  458. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/sq.js +7 -0
  459. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/sv.js +7 -0
  460. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/tr.js +7 -0
  461. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/tt.js +7 -0
  462. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/uk.js +7 -0
  463. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/vi.js +7 -0
  464. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/zh-cn.js +7 -0
  465. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/lang/zh.js +7 -0
  466. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/widget/plugin.js +3744 -0
  467. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/ciframe.html +1 -1
  468. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +1 -1
  469. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/wsc.css +1 -1
  470. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/wsc.js +69 -62
  471. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/wsc_ie.js +1 -1
  472. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/xml/plugin.js +6 -0
  473. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/dialog.css +9 -0
  474. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/editor.css +13 -0
  475. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/icons.png +0 -0
  476. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/icons_rtl.png +0 -0
  477. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  478. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/images/dialog_sides.png +0 -0
  479. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  480. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/images/mini.gif +0 -0
  481. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/images/noimage.png +0 -0
  482. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/images/sprites.png +0 -0
  483. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  484. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  485. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/skin.js +7 -0
  486. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/templates.css +6 -0
  487. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/dialog.css +2 -2
  488. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/dialog_ie.css +2 -2
  489. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/dialog_ie7.css +2 -2
  490. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/dialog_ie8.css +2 -2
  491. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/dialog_iequirks.css +2 -2
  492. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/editor.css +2 -2
  493. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/editor_gecko.css +2 -2
  494. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/editor_ie.css +2 -2
  495. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/editor_ie7.css +2 -2
  496. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/editor_ie8.css +2 -2
  497. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/editor_iequirks.css +2 -2
  498. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/icons.png +0 -0
  499. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/icons_hidpi.png +0 -0
  500. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/arrow.png +0 -0
  501. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/close.png +0 -0
  502. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/hidpi/close.png +0 -0
  503. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/hidpi/lock-open.png +0 -0
  504. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/hidpi/lock.png +0 -0
  505. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/hidpi/refresh.png +0 -0
  506. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/lock-open.png +0 -0
  507. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/lock.png +0 -0
  508. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/images/refresh.png +0 -0
  509. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/moono/readme.md +1 -1
  510. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/dialog.css +9 -0
  511. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/editor.css +14 -0
  512. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/icons.png +0 -0
  513. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/icons_rtl.png +0 -0
  514. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  515. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  516. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  517. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/images/mini.gif +0 -0
  518. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/images/noimage.png +0 -0
  519. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/images/sprites.png +0 -0
  520. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  521. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/skin.js +6 -0
  522. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/templates.css +6 -0
  523. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/dialog.css +9 -0
  524. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/editor.css +13 -0
  525. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/icons.png +0 -0
  526. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/icons_rtl.png +0 -0
  527. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  528. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  529. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  530. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/images/mini.gif +0 -0
  531. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/images/noimage.png +0 -0
  532. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/images/sprites.png +0 -0
  533. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  534. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/images/toolbar_start.gif +0 -0
  535. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/skin.js +6 -0
  536. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/templates.css +6 -0
  537. data/public/javascripts/extensions/ck_editor_filter/ckeditor/styles.js +2 -2
  538. data/public/javascripts/extensions/ck_editor_filter/ckeditor/themes/default/theme.js +8 -0
  539. data/public/javascripts/extensions/ck_editor_filter/radiant.ckeditor.js +1 -1
  540. metadata +345 -40
  541. data/public/javascripts/extensions/ck_editor_filter/ckeditor/build-config.js +0 -96
  542. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/ajax.html +0 -82
  543. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/api.html +0 -207
  544. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/appendto.html +0 -57
  545. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/assets/inlineall/logo.png +0 -0
  546. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/assets/outputxhtml/outputxhtml.css +0 -204
  547. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/assets/posteddata.php +0 -59
  548. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/assets/sample.css +0 -3
  549. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/assets/uilanguages/languages.js +0 -7
  550. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/datafiltering.html +0 -401
  551. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/divreplace.html +0 -141
  552. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/index.html +0 -128
  553. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/inlineall.html +0 -311
  554. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/inlinebycode.html +0 -121
  555. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/inlinetextarea.html +0 -110
  556. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/jquery.html +0 -97
  557. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/dialog/assets/my_dialog.js +0 -48
  558. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/dialog/dialog.html +0 -187
  559. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/enterkey/enterkey.html +0 -103
  560. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla +0 -0
  561. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.swf +0 -0
  562. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js +0 -18
  563. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/htmlwriter/outputforflash.html +0 -280
  564. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/htmlwriter/outputhtml.html +0 -221
  565. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/magicline/magicline.html +0 -206
  566. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/toolbar/toolbar.html +0 -232
  567. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/plugins/wysiwygarea/fullpage.html +0 -77
  568. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/readonly.html +0 -73
  569. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/replacebyclass.html +0 -57
  570. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/replacebycode.html +0 -56
  571. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/sample.css +0 -356
  572. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/sample.js +0 -50
  573. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/sample_posteddata.php +0 -16
  574. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/tabindex.html +0 -75
  575. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/uicolor.html +0 -69
  576. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/uilanguages.html +0 -119
  577. data/public/javascripts/extensions/ck_editor_filter/ckeditor/samples/xhtmlstyle.html +0 -231
@@ -0,0 +1,935 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
3
+ * For licensing, see LICENSE.md or http://ckeditor.com/license
4
+ */
5
+
6
+ /**
7
+ * @fileOverview A set of utilities to find and make horizontal spaces in edited contents.
8
+ */
9
+
10
+ 'use strict';
11
+
12
+ ( function() {
13
+
14
+ CKEDITOR.plugins.add( 'lineutils' );
15
+
16
+ /**
17
+ * Determines a position relative to an element in DOM (before).
18
+ *
19
+ * @readonly
20
+ * @property {Number} [=0]
21
+ * @member CKEDITOR
22
+ */
23
+ CKEDITOR.LINEUTILS_BEFORE = 1;
24
+
25
+ /**
26
+ * Determines a position relative to an element in DOM (after).
27
+ *
28
+ * @readonly
29
+ * @property {Number} [=2]
30
+ * @member CKEDITOR
31
+ */
32
+ CKEDITOR.LINEUTILS_AFTER = 2;
33
+
34
+ /**
35
+ * Determines a position relative to an element in DOM (inside).
36
+ *
37
+ * @readonly
38
+ * @property {Number} [=4]
39
+ * @member CKEDITOR
40
+ */
41
+ CKEDITOR.LINEUTILS_INSIDE = 4;
42
+
43
+ /**
44
+ * An utility that traverses DOM tree and discovers elements
45
+ * (relations) matching user-defined lookups.
46
+ *
47
+ * @private
48
+ * @class CKEDITOR.plugins.lineutils.finder
49
+ * @constructor Creates a Finder class instance.
50
+ * @param {CKEDITOR.editor} editor Editor instance that Finder belongs to.
51
+ * @param {Object} def Finder's definition.
52
+ * @since 4.3
53
+ */
54
+ function Finder( editor, def ) {
55
+ CKEDITOR.tools.extend( this, {
56
+ editor: editor,
57
+ editable: editor.editable(),
58
+ doc: editor.document,
59
+ win: editor.window
60
+ }, def, true );
61
+
62
+ this.inline = this.editable.isInline();
63
+ if ( !this.inline )
64
+ this.frame = this.win.getFrame();
65
+ this.target = this[ this.inline ? 'editable' : 'doc' ];
66
+ }
67
+
68
+ Finder.prototype = {
69
+ /**
70
+ * Initializes searching for elements with every mousemove event fired.
71
+ * To stop searching use {@link #stop}.
72
+ *
73
+ * @param {Function} [callback] Function executed on every iteration.
74
+ */
75
+ start: function( callback ) {
76
+ var that = this,
77
+ editor = this.editor,
78
+ doc = this.doc,
79
+ el, x, y;
80
+
81
+ var moveBuffer = CKEDITOR.tools.eventsBuffer( 50, function() {
82
+ if ( editor.readOnly || editor.mode != 'wysiwyg' )
83
+ return;
84
+
85
+ that.relations = {};
86
+
87
+ el = new CKEDITOR.dom.element( doc.$.elementFromPoint( x, y ) );
88
+
89
+ that.traverseSearch( el );
90
+
91
+ if ( !isNaN( x + y ) )
92
+ that.pixelSearch( el, x, y );
93
+
94
+ callback && callback( that.relations, x, y );
95
+ } );
96
+
97
+ // Searching starting from element from point on mousemove.
98
+ this.listener = this.editable.attachListener( this.target, 'mousemove', function( evt ) {
99
+ x = evt.data.$.clientX;
100
+ y = evt.data.$.clientY;
101
+
102
+ moveBuffer.input();
103
+ } );
104
+
105
+ this.editable.attachListener( this.inline ? this.editable : this.frame, 'mouseout', function() {
106
+ moveBuffer.reset();
107
+ } );
108
+ },
109
+
110
+ /**
111
+ * Stops observing mouse events attached by {@link #start}.
112
+ */
113
+ stop: function() {
114
+ if ( this.listener )
115
+ this.listener.removeListener();
116
+ },
117
+
118
+ /**
119
+ * Returns a range representing the relation, according to its element
120
+ * and type.
121
+ *
122
+ * @param {Object} location Location containing unique identifier and type.
123
+ * @returns {CKEDITOR.dom.range} Range representing the relation.
124
+ */
125
+ getRange: ( function() {
126
+ var where = {};
127
+
128
+ where[ CKEDITOR.LINEUTILS_BEFORE ] = CKEDITOR.POSITION_BEFORE_START;
129
+ where[ CKEDITOR.LINEUTILS_AFTER ] = CKEDITOR.POSITION_AFTER_END;
130
+ where[ CKEDITOR.LINEUTILS_INSIDE ] = CKEDITOR.POSITION_AFTER_START;
131
+
132
+ return function( location ) {
133
+ var range = this.editor.createRange();
134
+
135
+ range.moveToPosition( this.relations[ location.uid ].element, where[ location.type ] );
136
+
137
+ return range;
138
+ };
139
+ } )(),
140
+
141
+ /**
142
+ * Stores given relation in {@link #relations} object. Processes the relation
143
+ * to normalize and avoid duplicates.
144
+ *
145
+ * @param {CKEDITOR.dom.element} el Element of the relation.
146
+ * @param {Number} type Relation, one of `CKEDITOR.LINEUTILS_AFTER`, `CKEDITOR.LINEUTILS_BEFORE`, `CKEDITOR.LINEUTILS_INSIDE`.
147
+ */
148
+ store: ( function() {
149
+ function merge( el, type, relations ) {
150
+ var uid = el.getUniqueId();
151
+
152
+ if ( uid in relations )
153
+ relations[ uid ].type |= type;
154
+ else
155
+ relations[ uid ] = { element: el, type: type };
156
+ }
157
+
158
+ return function( el, type ) {
159
+ var alt;
160
+
161
+ // Normalization to avoid duplicates:
162
+ // CKEDITOR.LINEUTILS_AFTER becomes CKEDITOR.LINEUTILS_BEFORE of el.getNext().
163
+ if ( is( type, CKEDITOR.LINEUTILS_AFTER ) && isStatic( alt = el.getNext() ) && alt.isVisible() ) {
164
+ merge( alt, CKEDITOR.LINEUTILS_BEFORE, this.relations );
165
+ type ^= CKEDITOR.LINEUTILS_AFTER;
166
+ }
167
+
168
+ // Normalization to avoid duplicates:
169
+ // CKEDITOR.LINEUTILS_INSIDE becomes CKEDITOR.LINEUTILS_BEFORE of el.getFirst().
170
+ if ( is( type, CKEDITOR.LINEUTILS_INSIDE ) && isStatic( alt = el.getFirst() ) && alt.isVisible() ) {
171
+ merge( alt, CKEDITOR.LINEUTILS_BEFORE, this.relations );
172
+ type ^= CKEDITOR.LINEUTILS_INSIDE;
173
+ }
174
+
175
+ merge( el, type, this.relations );
176
+ };
177
+ } )(),
178
+
179
+ /**
180
+ * Traverses DOM tree towards root, checking all ancestors
181
+ * with lookup rules, avoiding duplicates. Stores positive relations
182
+ * in {@link #relations} object.
183
+ *
184
+ * @param {CKEDITOR.dom.element} el Element which is the starting point.
185
+ */
186
+ traverseSearch: function( el ) {
187
+ var l, type, uid;
188
+
189
+ // Go down DOM towards root (or limit).
190
+ do {
191
+ uid = el.$[ 'data-cke-expando' ];
192
+
193
+ // This element was already visited and checked.
194
+ if ( uid && uid in this.relations )
195
+ continue;
196
+
197
+ if ( el.equals( this.editable ) )
198
+ return;
199
+
200
+ if ( isStatic( el ) ) {
201
+ // Collect all addresses yielded by lookups for that element.
202
+ for ( l in this.lookups ) {
203
+
204
+ if ( ( type = this.lookups[ l ]( el ) ) )
205
+ this.store( el, type );
206
+ }
207
+ }
208
+ } while ( !isLimit( el ) && ( el = el.getParent() ) );
209
+ },
210
+
211
+ /**
212
+ * Iterates vertically pixel-by-pixel within given element starting
213
+ * from given coordinates, searching for elements in the neighbourhood.
214
+ * Once an element is found it is processed by {@link #traverseSearch}.
215
+ *
216
+ * @param {CKEDITOR.dom.element} el Element which is the starting point.
217
+ * @param {Number} [x] Horizontal mouse coordinate relative to the viewport.
218
+ * @param {Number} [y] Vertical mouse coordinate relative to the viewport.
219
+ */
220
+ pixelSearch: ( function() {
221
+ var contains = CKEDITOR.env.ie || CKEDITOR.env.webkit ?
222
+ function( el, found ) {
223
+ return el.contains( found );
224
+ }
225
+ :
226
+ function( el, found ) {
227
+ return !!( el.compareDocumentPosition( found ) & 16 );
228
+ };
229
+
230
+ // Iterates pixel-by-pixel from starting coordinates, moving by defined
231
+ // step and getting elementFromPoint in every iteration. Iteration stops when:
232
+ // * A valid element is found.
233
+ // * Condition function returns false (i.e. reached boundaries of viewport).
234
+ // * No element is found (i.e. coordinates out of viewport).
235
+ // * Element found is ascendant of starting element.
236
+ //
237
+ // @param {Object} doc Native DOM document.
238
+ // @param {Object} el Native DOM element.
239
+ // @param {Number} xStart Horizontal starting coordinate to use.
240
+ // @param {Number} yStart Vertical starting coordinate to use.
241
+ // @param {Number} step Step of the algorithm.
242
+ // @param {Function} condition A condition relative to current vertical coordinate.
243
+ function iterate( el, xStart, yStart, step, condition ) {
244
+ var y = yStart,
245
+ tryouts = 0,
246
+ found;
247
+
248
+ while ( condition( y ) ) {
249
+ y += step;
250
+
251
+ // If we try and we try, and still nothing's found, let's end
252
+ // that party.
253
+ if ( ++tryouts == 25 )
254
+ return;
255
+
256
+ found = this.doc.$.elementFromPoint( xStart, y );
257
+
258
+ // Nothing found. This is crazy... but...
259
+ // It might be that a line, which is in different document,
260
+ // covers that pixel (elementFromPoint is doc-sensitive).
261
+ // Better let's have another try.
262
+ if ( !found )
263
+ continue;
264
+
265
+ // Still in the same element.
266
+ else if ( found == el ) {
267
+ tryouts = 0;
268
+ continue;
269
+ }
270
+
271
+ // Reached the edge of an element and found an ancestor or...
272
+ // A line, that covers that pixel. Better let's have another try.
273
+ else if ( !contains( el, found ) ) {
274
+ continue;
275
+ }
276
+
277
+ tryouts = 0;
278
+
279
+ // Found a valid element. Stop iterating.
280
+ if ( isStatic( ( found = new CKEDITOR.dom.element( found ) ) ) )
281
+ return found;
282
+ }
283
+ }
284
+
285
+ return function( el, x, y ) {
286
+ var paneHeight = this.win.getViewPaneSize().height,
287
+
288
+ // Try to find an element iterating *up* from the starting point.
289
+ neg = iterate.call( this, el.$, x, y, -1, function( y ) {
290
+ return y > 0;
291
+ } ),
292
+
293
+ // Try to find an element iterating *down* from the starting point.
294
+ pos = iterate.call( this, el.$, x, y, 1, function( y ) {
295
+ return y < paneHeight;
296
+ } );
297
+
298
+ if ( neg ) {
299
+ this.traverseSearch( neg );
300
+
301
+ // Iterate towards DOM root until neg is a direct child of el.
302
+ while ( !neg.getParent().equals( el ) )
303
+ neg = neg.getParent();
304
+ }
305
+
306
+ if ( pos ) {
307
+ this.traverseSearch( pos );
308
+
309
+ // Iterate towards DOM root until pos is a direct child of el.
310
+ while ( !pos.getParent().equals( el ) )
311
+ pos = pos.getParent();
312
+ }
313
+
314
+ // Iterate forwards starting from neg and backwards from
315
+ // pos to harvest all children of el between those elements.
316
+ // Stop when neg and pos meet each other or there's none of them.
317
+ // TODO (?) reduce number of hops forwards/backwards.
318
+ while ( neg || pos ) {
319
+ if ( neg )
320
+ neg = neg.getNext( isStatic );
321
+
322
+ if ( !neg || neg.equals( pos ) )
323
+ break;
324
+
325
+ this.traverseSearch( neg );
326
+
327
+ if ( pos )
328
+ pos = pos.getPrevious( isStatic );
329
+
330
+ if ( !pos || pos.equals( neg ) )
331
+ break;
332
+
333
+ this.traverseSearch( pos );
334
+ }
335
+ };
336
+ } )(),
337
+
338
+ /**
339
+ * Unline {@link #traverseSearch}, it collects **all** elements from editable's DOM tree
340
+ * and runs lookups for every one of them, collecting relations.
341
+ *
342
+ * @returns {Object} {@link #relations}.
343
+ */
344
+ greedySearch: function() {
345
+ this.relations = {};
346
+
347
+ var all = this.editable.getElementsByTag( '*' ),
348
+ i = 0,
349
+ el, type, l;
350
+
351
+ while ( ( el = all.getItem( i++ ) ) ) {
352
+ // Don't consider editable, as it might be inline,
353
+ // and i.e. checking it's siblings is pointless.
354
+ if ( el.equals( this.editable ) )
355
+ continue;
356
+
357
+ // Don't visit non-editable internals, for example widget's
358
+ // guts (above wrapper, below nested). Still check editable limits,
359
+ // as they are siblings with editable contents.
360
+ if ( !el.hasAttribute( 'contenteditable' ) && el.isReadOnly() )
361
+ continue;
362
+
363
+ if ( isStatic( el ) && el.isVisible() ) {
364
+ // Collect all addresses yielded by lookups for that element.
365
+ for ( l in this.lookups ) {
366
+ if ( ( type = this.lookups[ l ]( el ) ) )
367
+ this.store( el, type );
368
+ }
369
+ }
370
+ }
371
+
372
+ return this.relations;
373
+ }
374
+
375
+ /**
376
+ * Relations express elements in DOM that match user-defined {@link #lookups}.
377
+ * Every relation has its own `type` that determines whether
378
+ * it refers to the space before, after or inside of `element`.
379
+ * This object stores relations found by {@link #traverseSearch} or {@link #greedySearch}, structured
380
+ * in the following way:
381
+ *
382
+ * relations: {
383
+ * // Unique identifier of the element.
384
+ * Number: {
385
+ * // Element of this relation.
386
+ * element: {@link CKEDITOR.dom.element}
387
+ * // Conjunction of CKEDITOR.LINEUTILS_BEFORE, CKEDITOR.LINEUTILS_AFTER and CKEDITOR.LINEUTILS_INSIDE.
388
+ * type: Number
389
+ * },
390
+ * ...
391
+ * }
392
+ *
393
+ * @property {Object} relations
394
+ * @readonly
395
+ */
396
+
397
+ /**
398
+ * A set of user-defined functions used by Finder to check if an element
399
+ * is a valid relation, belonging to {@link #relations}.
400
+ * When the criterion is met, lookup returns a logical conjunction of `CKEDITOR.LINEUTILS_BEFORE`,
401
+ * `CKEDITOR.LINEUTILS_AFTER` or `CKEDITOR.LINEUTILS_INSIDE`.
402
+ *
403
+ * Lookups are passed along with Finder's definition.
404
+ *
405
+ * lookups: {
406
+ * 'some lookup': function( el ) {
407
+ * if ( someCondition )
408
+ * return CKEDITOR.LINEUTILS_BEFORE;
409
+ * },
410
+ * ...
411
+ * }
412
+ *
413
+ * @property {Object} lookups
414
+ */
415
+ };
416
+
417
+
418
+ /**
419
+ * An utility that analyses relations found by
420
+ * CKEDITOR.plugins.lineutils.finder and locates them
421
+ * in the viewport as horizontal lines of specific coordinates.
422
+ *
423
+ * @private
424
+ * @class CKEDITOR.plugins.lineutils.locator
425
+ * @constructor Creates a Locator class instance.
426
+ * @param {CKEDITOR.editor} editor Editor instance that Locator belongs to.
427
+ * @since 4.3
428
+ */
429
+ function Locator( editor, def ) {
430
+ CKEDITOR.tools.extend( this, def, {
431
+ editor: editor
432
+ }, true );
433
+ }
434
+
435
+ Locator.prototype = {
436
+ /**
437
+ * Localizes Y coordinate for all types of every single relation and stores
438
+ * them in the object.
439
+ *
440
+ * @param {Object} relations {@link CKEDITOR.plugins.lineutils.finder#relations}.
441
+ * @returns {Object} {@link #locations}.
442
+ */
443
+ locate: ( function() {
444
+ function locateSibling( rel, type ) {
445
+ var sib = rel.element[ type === CKEDITOR.LINEUTILS_BEFORE ? 'getPrevious' : 'getNext' ]();
446
+
447
+ // Return the middle point between siblings.
448
+ if ( sib && isStatic( sib ) ) {
449
+ rel.siblingRect = sib.getClientRect();
450
+
451
+ if ( type == CKEDITOR.LINEUTILS_BEFORE )
452
+ return ( rel.siblingRect.bottom + rel.elementRect.top ) / 2;
453
+ else
454
+ return ( rel.elementRect.bottom + rel.siblingRect.top ) / 2;
455
+ }
456
+
457
+ // If there's no sibling, use the edge of an element.
458
+ else {
459
+ if ( type == CKEDITOR.LINEUTILS_BEFORE )
460
+ return rel.elementRect.top;
461
+ else
462
+ return rel.elementRect.bottom;
463
+ }
464
+ }
465
+
466
+ return function( relations ) {
467
+ var rel;
468
+
469
+ this.locations = {};
470
+
471
+ for ( var uid in relations ) {
472
+ rel = relations[ uid ];
473
+ rel.elementRect = rel.element.getClientRect();
474
+
475
+ if ( is( rel.type, CKEDITOR.LINEUTILS_BEFORE ) )
476
+ this.store( uid, CKEDITOR.LINEUTILS_BEFORE, locateSibling( rel, CKEDITOR.LINEUTILS_BEFORE ) );
477
+
478
+ if ( is( rel.type, CKEDITOR.LINEUTILS_AFTER ) )
479
+ this.store( uid, CKEDITOR.LINEUTILS_AFTER, locateSibling( rel, CKEDITOR.LINEUTILS_AFTER ) );
480
+
481
+ // The middle point of the element.
482
+ if ( is( rel.type, CKEDITOR.LINEUTILS_INSIDE ) )
483
+ this.store( uid, CKEDITOR.LINEUTILS_INSIDE, ( rel.elementRect.top + rel.elementRect.bottom ) / 2 );
484
+ }
485
+
486
+ return this.locations;
487
+ };
488
+ } )(),
489
+
490
+ /**
491
+ * Calculates distances from every location to given vertical coordinate
492
+ * and sorts locations according to that distance.
493
+ *
494
+ * @param {Number} y The vertical coordinate used for sorting, used as a reference.
495
+ * @param {Number} [howMany] Determines the number "closest locations" to be returned.
496
+ * @returns {Array} Sorted, array representation of {@link #locations}.
497
+ */
498
+ sort: ( function() {
499
+ var locations, sorted,
500
+ dist, i;
501
+
502
+ function distance( y, uid, type ) {
503
+ return Math.abs( y - locations[ uid ][ type ] );
504
+ }
505
+
506
+ return function( y, howMany ) {
507
+ locations = this.locations;
508
+ sorted = [];
509
+
510
+ for ( var uid in locations ) {
511
+ for ( var type in locations[ uid ] ) {
512
+ dist = distance( y, uid, type );
513
+
514
+ // An array is empty.
515
+ if ( !sorted.length )
516
+ sorted.push( { uid: +uid, type: type, dist: dist } );
517
+ else {
518
+ // Sort the array on fly when it's populated.
519
+ for ( i = 0; i < sorted.length; i++ ) {
520
+ if ( dist < sorted[ i ].dist ) {
521
+ sorted.splice( i, 0, { uid: +uid, type: type, dist: dist } );
522
+ break;
523
+ }
524
+ }
525
+
526
+ // Nothing was inserted, so the distance is bigger than
527
+ // any of already calculated: push to the end.
528
+ if ( i == sorted.length )
529
+ sorted.push( { uid: +uid, type: type, dist: dist } );
530
+ }
531
+ }
532
+ }
533
+
534
+ if ( typeof howMany != 'undefined' )
535
+ return sorted.slice( 0, howMany );
536
+ else
537
+ return sorted;
538
+ };
539
+ } )(),
540
+
541
+ /**
542
+ * Stores the location in a collection.
543
+ *
544
+ * @param {Number} uid Unique identifier of the relation.
545
+ * @param {Number} type One of `CKEDITOR.LINEUTILS_BEFORE`, `CKEDITOR.LINEUTILS_AFTER` and `CKEDITOR.LINEUTILS_INSIDE`.
546
+ * @param {Number} y Vertical position of the relation.
547
+ */
548
+ store: function( uid, type, y ) {
549
+ if ( !this.locations[ uid ] )
550
+ this.locations[ uid ] = {};
551
+
552
+ this.locations[ uid ][ type ] = y;
553
+ }
554
+
555
+ /**
556
+ * @readonly
557
+ * @property {Object} locations
558
+ */
559
+ };
560
+
561
+ var tipCss = {
562
+ display: 'block',
563
+ width: '0px',
564
+ height: '0px',
565
+ 'border-color': 'transparent',
566
+ 'border-style': 'solid',
567
+ position: 'absolute',
568
+ top: '-6px'
569
+ },
570
+
571
+ lineStyle = {
572
+ height: '0px',
573
+ 'border-top': '1px dashed red',
574
+ position: 'absolute',
575
+ 'z-index': 9999
576
+ },
577
+
578
+ lineTpl =
579
+ '<div data-cke-lineutils-line="1" class="cke_reset_all" style="{lineStyle}">' +
580
+ '<span style="{tipLeftStyle}">&nbsp;</span>' +
581
+ '<span style="{tipRightStyle}">&nbsp;</span>' +
582
+ '</div>';
583
+
584
+ /**
585
+ * An utility that draws horizontal lines in DOM according to locations
586
+ * returned by CKEDITOR.plugins.lineutils.locator.
587
+ *
588
+ * @private
589
+ * @class CKEDITOR.plugins.lineutils.liner
590
+ * @constructor Creates a Liner class instance.
591
+ * @param {CKEDITOR.editor} editor Editor instance that Liner belongs to.
592
+ * @param {Object} def Liner's definition.
593
+ * @since 4.3
594
+ */
595
+ function Liner( editor, def ) {
596
+ var editable = editor.editable();
597
+
598
+ CKEDITOR.tools.extend( this, {
599
+ editor: editor,
600
+ editable: editable,
601
+ doc: editor.document,
602
+ win: editor.window,
603
+ container: CKEDITOR.document.getBody(),
604
+ winTop: CKEDITOR.document.getWindow()
605
+ }, def, true );
606
+
607
+ this.hidden = {};
608
+ this.visible = {};
609
+
610
+ this.inline = editable.isInline();
611
+
612
+ if ( !this.inline )
613
+ this.frame = this.win.getFrame();
614
+
615
+ this.queryViewport();
616
+
617
+ // Callbacks must be wrapped. Otherwise they're not attached
618
+ // to global DOM objects (i.e. topmost window) for every editor
619
+ // because they're treated as duplicates. They belong to the
620
+ // same prototype shared among Liner instances.
621
+ var queryViewport = CKEDITOR.tools.bind( this.queryViewport, this ),
622
+ hideVisible = CKEDITOR.tools.bind( this.hideVisible, this ),
623
+ removeAll = CKEDITOR.tools.bind( this.removeAll, this );
624
+
625
+ editable.attachListener( this.winTop, 'resize', queryViewport );
626
+ editable.attachListener( this.winTop, 'scroll', queryViewport );
627
+
628
+ editable.attachListener( this.winTop, 'resize', hideVisible );
629
+ editable.attachListener( this.win, 'scroll', hideVisible );
630
+
631
+ editable.attachListener( this.inline ? editable : this.frame, 'mouseout', function( evt ) {
632
+ var x = evt.data.$.clientX,
633
+ y = evt.data.$.clientY;
634
+
635
+ this.queryViewport();
636
+
637
+ // Check if mouse is out of the element (iframe/editable).
638
+ if ( x <= this.rect.left || x >= this.rect.right || y <= this.rect.top || y >= this.rect.bottom )
639
+ this.hideVisible();
640
+
641
+ // Check if mouse is out of the top-window vieport.
642
+ if ( x <= 0 || x >= this.winTopPane.width || y <= 0 || y >= this.winTopPane.height )
643
+ this.hideVisible();
644
+ }, this );
645
+
646
+ editable.attachListener( editor, 'resize', queryViewport );
647
+ editable.attachListener( editor, 'mode', removeAll );
648
+ editor.on( 'destroy', removeAll );
649
+
650
+ this.lineTpl = new CKEDITOR.template( lineTpl ).output( {
651
+ lineStyle: CKEDITOR.tools.writeCssText(
652
+ CKEDITOR.tools.extend( {}, lineStyle, this.lineStyle, true )
653
+ ),
654
+ tipLeftStyle: CKEDITOR.tools.writeCssText(
655
+ CKEDITOR.tools.extend( {}, tipCss, {
656
+ left: '0px',
657
+ 'border-left-color': 'red',
658
+ 'border-width': '6px 0 6px 6px'
659
+ }, this.tipCss, this.tipLeftStyle, true )
660
+ ),
661
+ tipRightStyle: CKEDITOR.tools.writeCssText(
662
+ CKEDITOR.tools.extend( {}, tipCss, {
663
+ right: '0px',
664
+ 'border-right-color': 'red',
665
+ 'border-width': '6px 6px 6px 0'
666
+ }, this.tipCss, this.tipRightStyle, true )
667
+ )
668
+ } );
669
+ }
670
+
671
+ Liner.prototype = {
672
+ /**
673
+ * Permanently removes all lines (both hidden and visible) from DOM.
674
+ */
675
+ removeAll: function() {
676
+ var l;
677
+
678
+ for ( l in this.hidden ) {
679
+ this.hidden[ l ].remove();
680
+ delete this.hidden[ l ];
681
+ }
682
+
683
+ for ( l in this.visible ) {
684
+ this.visible[ l ].remove();
685
+ delete this.visible[ l ];
686
+ }
687
+ },
688
+
689
+ /**
690
+ * Hides a given line.
691
+ *
692
+ * @param {CKEDITOR.dom.element} line The line to be hidden.
693
+ */
694
+ hideLine: function( line ) {
695
+ var uid = line.getUniqueId();
696
+
697
+ line.hide();
698
+
699
+ this.hidden[ uid ] = line;
700
+ delete this.visible[ uid ];
701
+ },
702
+
703
+ /**
704
+ * Shows a given line.
705
+ *
706
+ * @param {CKEDITOR.dom.element} line The line to be shown.
707
+ */
708
+ showLine: function( line ) {
709
+ var uid = line.getUniqueId();
710
+
711
+ line.show();
712
+
713
+ this.visible[ uid ] = line;
714
+ delete this.hidden[ uid ];
715
+ },
716
+
717
+ /**
718
+ * Hides all visible lines.
719
+ */
720
+ hideVisible: function() {
721
+ for ( var l in this.visible )
722
+ this.hideLine( this.visible[ l ] );
723
+ },
724
+
725
+ /**
726
+ * Shows a line at given location.
727
+ *
728
+ * @param {Object} location Location object containing unique identifier of the relation
729
+ * and its type. Usually returned by {@link CKEDITOR.plugins.lineutils.locator#sort}.
730
+ * @param {Function} [callback] A callback to be called once the line is shown.
731
+ */
732
+ placeLine: function( location, callback ) {
733
+ var styles, line, l;
734
+
735
+ // No style means that line would be out of viewport.
736
+ if ( !( styles = this.getStyle( location.uid, location.type ) ) )
737
+ return;
738
+
739
+ // Search for any visible line of a different hash first.
740
+ // It's faster to re-position visible line than to show it.
741
+ for ( l in this.visible ) {
742
+ if ( this.visible[ l ].getCustomData( 'hash' ) !== this.hash ) {
743
+ line = this.visible[ l ];
744
+ break;
745
+ }
746
+ }
747
+
748
+ // Search for any hidden line of a different hash.
749
+ if ( !line ) {
750
+ for ( l in this.hidden ) {
751
+ if ( this.hidden[ l ].getCustomData( 'hash' ) !== this.hash ) {
752
+ this.showLine( ( line = this.hidden[ l ] ) );
753
+ break;
754
+ }
755
+ }
756
+ }
757
+
758
+ // If no line available, add the new one.
759
+ if ( !line )
760
+ this.showLine( ( line = this.addLine() ) );
761
+
762
+ // Mark the line with current hash.
763
+ line.setCustomData( 'hash', this.hash );
764
+
765
+ // Mark the line as visible.
766
+ this.visible[ line.getUniqueId() ] = line;
767
+
768
+ line.setStyles( styles );
769
+
770
+ callback && callback( line );
771
+ },
772
+
773
+ /**
774
+ * Creates style set to be used by the line, representing a particular
775
+ * relation (location).
776
+ *
777
+ * @param {Number} uid Unique identifier of the relation.
778
+ * @param {Number} type Type of the relation.
779
+ * @returns {Object} An object containing styles.
780
+ */
781
+ getStyle: function( uid, type ) {
782
+ var rel = this.relations[ uid ],
783
+ loc = this.locations[ uid ][ type ],
784
+ styles = {},
785
+ hdiff;
786
+
787
+ // Line should be between two elements.
788
+ if ( rel.siblingRect )
789
+ styles.width = Math.max( rel.siblingRect.width, rel.elementRect.width );
790
+ // Line is relative to a single element.
791
+ else
792
+ styles.width = rel.elementRect.width;
793
+
794
+ // Let's calculate the vertical position of the line.
795
+ if ( this.inline )
796
+ styles.top = loc + this.winTopScroll.y;
797
+ else
798
+ styles.top = this.rect.top + this.winTopScroll.y + loc;
799
+
800
+ // Check if line would be vertically out of the viewport.
801
+ if ( styles.top - this.winTopScroll.y < this.rect.top || styles.top - this.winTopScroll.y > this.rect.bottom )
802
+ return false;
803
+
804
+ // Now let's calculate the horizontal alignment (left and width).
805
+ if ( this.inline )
806
+ styles.left = rel.elementRect.left;
807
+ else {
808
+ if ( rel.elementRect.left > 0 )
809
+ styles.left = this.rect.left + rel.elementRect.left;
810
+
811
+ // H-scroll case. Left edge of element may be out of viewport.
812
+ else {
813
+ styles.width += rel.elementRect.left;
814
+ styles.left = this.rect.left;
815
+ }
816
+
817
+ // H-scroll case. Right edge of element may be out of viewport.
818
+ if ( ( hdiff = styles.left + styles.width - ( this.rect.left + this.winPane.width ) ) > 0 )
819
+ styles.width -= hdiff;
820
+ }
821
+
822
+ // Finally include horizontal scroll of the global window.
823
+ styles.left += this.winTopScroll.x;
824
+
825
+ // Append 'px' to style values.
826
+ for ( var style in styles )
827
+ styles[ style ] = CKEDITOR.tools.cssLength( styles[ style ] );
828
+
829
+ return styles;
830
+ },
831
+
832
+ /**
833
+ * Adds a new line to DOM.
834
+ *
835
+ * @returns {CKEDITOR.dom.element} A brand-new line.
836
+ */
837
+ addLine: function() {
838
+ var line = CKEDITOR.dom.element.createFromHtml( this.lineTpl );
839
+
840
+ line.appendTo( this.container );
841
+
842
+ return line;
843
+ },
844
+
845
+ /**
846
+ * Assigns an unique hash to the instance that is later utilized
847
+ * to tell unwanted lines from new ones. This method **must** be called
848
+ * before a new set of relations is to be visualized so {@link #cleanup}
849
+ * eventually hides obsolete lines. This is because lines
850
+ * are re-used between {@link #placeLine} calls and the number of
851
+ * necessary ones may vary according to the number of relations.
852
+ *
853
+ * @param {Object} relations {@link CKEDITOR.plugins.lineutils.finder#relations}.
854
+ * @param {Object} locations {@link CKEDITOR.plugins.lineutils.locator#locations}.
855
+ */
856
+ prepare: function( relations, locations ) {
857
+ this.relations = relations;
858
+ this.locations = locations;
859
+ this.hash = Math.random();
860
+ },
861
+
862
+ /**
863
+ * Hides all visible lines that don't belong to current hash
864
+ * and no-longer represent relations (locations).
865
+ *
866
+ * See also: {@link #prepare}.
867
+ */
868
+ cleanup: function() {
869
+ var line;
870
+
871
+ for ( var l in this.visible ) {
872
+ line = this.visible[ l ];
873
+
874
+ if ( line.getCustomData( 'hash' ) !== this.hash )
875
+ this.hideLine( line );
876
+ }
877
+ },
878
+
879
+ /**
880
+ * Queries dimensions of the viewport, editable, frame etc.
881
+ * that are used for correct positioning of the line.
882
+ */
883
+ queryViewport: function() {
884
+ this.winPane = this.win.getViewPaneSize();
885
+ this.winTopScroll = this.winTop.getScrollPosition();
886
+ this.winTopPane = this.winTop.getViewPaneSize();
887
+
888
+ if ( this.inline )
889
+ this.rect = this.editable.getClientRect();
890
+ else
891
+ this.rect = this.frame.getClientRect();
892
+ }
893
+ };
894
+
895
+ function is( type, flag ) {
896
+ return type & flag;
897
+ }
898
+
899
+ var floats = { left: 1, right: 1, center: 1 },
900
+ positions = { absolute: 1, fixed: 1 };
901
+
902
+ function isElement( node ) {
903
+ return node && node.type == CKEDITOR.NODE_ELEMENT;
904
+ }
905
+
906
+ function isFloated( el ) {
907
+ return !!( floats[ el.getComputedStyle( 'float' ) ] || floats[ el.getAttribute( 'align' ) ] );
908
+ }
909
+
910
+ function isPositioned( el ) {
911
+ return !!positions[ el.getComputedStyle( 'position' ) ];
912
+ }
913
+
914
+ function isLimit( node ) {
915
+ return isElement( node ) && node.getAttribute( 'contenteditable' ) == 'true';
916
+ }
917
+
918
+ function isStatic( node ) {
919
+ return isElement( node ) && !isFloated( node ) && !isPositioned( node );
920
+ }
921
+
922
+ /**
923
+ * Global namespace holding definitions and global helpers for the lineutils plugin.
924
+ *
925
+ * @private
926
+ * @class
927
+ * @singleton
928
+ * @since 4.3
929
+ */
930
+ CKEDITOR.plugins.lineutils = {
931
+ finder: Finder,
932
+ locator: Locator,
933
+ liner: Liner
934
+ };
935
+ } )();