goldencobra 1.4.27 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1017) hide show
  1. checksums.yaml +7 -0
  2. data/README.markdown +112 -41
  3. data/app/adapters/goldencobra/article_adapter.rb +75 -0
  4. data/app/assets/images/goldencobra/chosen-sprite@2x.png +0 -0
  5. data/app/assets/images/goldencobra/lastnode.png +0 -0
  6. data/app/assets/images/goldencobra/node.png +0 -0
  7. data/app/assets/images/goldencobra/vline.png +0 -0
  8. data/app/assets/javascripts/active_admin.js +1 -0
  9. data/app/assets/javascripts/goldencobra/active_admin.js +189 -202
  10. data/app/assets/javascripts/goldencobra/application.js.erb +86 -0
  11. data/app/assets/javascripts/goldencobra/chosen.jquery.js +1257 -0
  12. data/app/assets/javascripts/goldencobra/components.js +1 -0
  13. data/app/assets/javascripts/goldencobra/components/navigation_menu.js +191 -0
  14. data/app/assets/javascripts/goldencobra/components/overviewTree.js +156 -0
  15. data/app/assets/javascripts/goldencobra/components/select.js +43 -0
  16. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/adapters/jquery.js +10 -0
  17. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/ckeditor.js +996 -0
  18. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/ckeditor_inits.js +25 -0
  19. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/config.js +45 -0
  20. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/contents.css +132 -0
  21. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/lang/de.js +5 -0
  22. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/lang/en-gb.js +5 -0
  23. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/lang/en.js +5 -0
  24. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +10 -0
  25. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +25 -0
  26. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/af.js +11 -0
  27. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +11 -0
  28. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +11 -0
  29. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +12 -0
  30. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +12 -0
  31. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +11 -0
  32. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +11 -0
  33. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +12 -0
  34. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +12 -0
  35. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js +11 -0
  36. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +11 -0
  37. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +13 -0
  38. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +12 -0
  39. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +11 -0
  40. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/eu.js +12 -0
  41. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +11 -0
  42. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +11 -0
  43. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js +11 -0
  44. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +11 -0
  45. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +12 -0
  46. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +12 -0
  47. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +11 -0
  48. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +11 -0
  49. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +11 -0
  50. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +11 -0
  51. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +12 -0
  52. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/id.js +11 -0
  53. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +13 -0
  54. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +9 -0
  55. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +11 -0
  56. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +10 -0
  57. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +11 -0
  58. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +11 -0
  59. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +12 -0
  60. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +11 -0
  61. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +11 -0
  62. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +12 -0
  63. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +11 -0
  64. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +11 -0
  65. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +13 -0
  66. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +13 -0
  67. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +12 -0
  68. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +11 -0
  69. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +11 -0
  70. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/si.js +10 -0
  71. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +11 -0
  72. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +11 -0
  73. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +11 -0
  74. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +11 -0
  75. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +11 -0
  76. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +11 -0
  77. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +11 -0
  78. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +12 -0
  79. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +11 -0
  80. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +12 -0
  81. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +12 -0
  82. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +11 -0
  83. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +9 -0
  84. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +9 -0
  85. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/about/dialogs/about.js +7 -0
  86. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png +0 -0
  87. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  88. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/autogrow/plugin.js +221 -0
  89. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/clipboard/dialogs/paste.js +12 -0
  90. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
  91. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/dialogadvtab/plugin.js +196 -0
  92. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/icons.png +0 -0
  93. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/icons_hidpi.png +0 -0
  94. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/image/dialogs/image.js +44 -0
  95. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/image/images/noimage.png +0 -0
  96. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/link/dialogs/anchor.js +7 -0
  97. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/link/dialogs/link.js +26 -0
  98. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/link/images/anchor.png +0 -0
  99. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
  100. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png +0 -0
  101. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/magicline/images/hidpi/icon.png +0 -0
  102. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/magicline/images/icon-rtl.png +0 -0
  103. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/magicline/images/icon.png +0 -0
  104. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/pastefromword/filter/default.js +32 -0
  105. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/scayt/LICENSE.md +28 -0
  106. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/scayt/README.md +25 -0
  107. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/scayt/dialogs/options.js +18 -0
  108. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/scayt/dialogs/toolbar.css +71 -0
  109. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt +20 -0
  110. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/af.js +13 -0
  111. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/ar.js +13 -0
  112. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/bg.js +13 -0
  113. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/ca.js +14 -0
  114. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/cs.js +13 -0
  115. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/cy.js +14 -0
  116. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/da.js +11 -0
  117. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/de.js +13 -0
  118. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/el.js +13 -0
  119. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js +13 -0
  120. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/en.js +13 -0
  121. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/eo.js +12 -0
  122. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/es.js +13 -0
  123. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/et.js +13 -0
  124. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/eu.js +13 -0
  125. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/fa.js +12 -0
  126. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/fi.js +13 -0
  127. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js +10 -0
  128. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/fr.js +11 -0
  129. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/gl.js +13 -0
  130. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/he.js +12 -0
  131. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/hr.js +13 -0
  132. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/hu.js +12 -0
  133. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/id.js +13 -0
  134. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/it.js +14 -0
  135. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/ja.js +9 -0
  136. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/km.js +13 -0
  137. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/ko.js +10 -0
  138. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/ku.js +13 -0
  139. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/lt.js +13 -0
  140. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/lv.js +13 -0
  141. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/nb.js +11 -0
  142. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/nl.js +13 -0
  143. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/no.js +11 -0
  144. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/pl.js +12 -0
  145. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +11 -0
  146. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/pt.js +13 -0
  147. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/ru.js +13 -0
  148. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/si.js +13 -0
  149. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/sk.js +13 -0
  150. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/sl.js +12 -0
  151. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/sq.js +13 -0
  152. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/sv.js +11 -0
  153. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/th.js +13 -0
  154. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/tr.js +12 -0
  155. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/tt.js +13 -0
  156. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/ug.js +13 -0
  157. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/uk.js +12 -0
  158. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/vi.js +14 -0
  159. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +9 -0
  160. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/lang/zh.js +9 -0
  161. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/specialchar/dialogs/specialchar.js +14 -0
  162. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/table/dialogs/table.js +21 -0
  163. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/tabletools/dialogs/tableCell.js +17 -0
  164. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/wsc/LICENSE.md +28 -0
  165. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/wsc/README.md +25 -0
  166. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/wsc/dialogs/ciframe.html +66 -0
  167. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
  168. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/wsc/dialogs/wsc.css +82 -0
  169. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/wsc/dialogs/wsc.js +92 -0
  170. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/plugins/wsc/dialogs/wsc_ie.js +11 -0
  171. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/dialog.css +5 -0
  172. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/dialog_ie.css +5 -0
  173. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/dialog_ie7.css +5 -0
  174. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/dialog_ie8.css +5 -0
  175. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/dialog_iequirks.css +5 -0
  176. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/editor.css +5 -0
  177. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/editor_gecko.css +5 -0
  178. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/editor_ie.css +5 -0
  179. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/editor_ie7.css +5 -0
  180. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/editor_ie8.css +5 -0
  181. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/editor_iequirks.css +5 -0
  182. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/icons.png +0 -0
  183. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/icons_hidpi.png +0 -0
  184. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/arrow.png +0 -0
  185. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/close.png +0 -0
  186. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/hidpi/close.png +0 -0
  187. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/hidpi/lock-open.png +0 -0
  188. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/hidpi/lock.png +0 -0
  189. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/hidpi/refresh.png +0 -0
  190. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/lock-open.png +0 -0
  191. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/lock.png +0 -0
  192. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/refresh.png +0 -0
  193. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/images/spinner.gif +0 -0
  194. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/skins/moono/readme.md +49 -0
  195. data/app/assets/javascripts/goldencobra/html_editors/ckeditor/styles.js +111 -0
  196. data/app/assets/javascripts/goldencobra/html_editors/general.js +32 -0
  197. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/jquery.tinymce_v3.js +1 -0
  198. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/langs/de.js +1 -0
  199. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/langs/en.js +1 -0
  200. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advhr/css/advhr.css +0 -0
  201. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advhr/editor_plugin.js +0 -0
  202. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advhr/editor_plugin_src.js +0 -0
  203. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advhr/js/rule.js +0 -0
  204. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advhr/langs/en_dlg.js +0 -0
  205. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advhr/rule.htm +0 -0
  206. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advimage/css/advimage.css +0 -0
  207. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advimage/editor_plugin.js +0 -0
  208. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advimage/editor_plugin_src.js +0 -0
  209. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advimage/image.htm +0 -0
  210. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advimage/img/sample.gif +0 -0
  211. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/advimage/js/image.js +464 -0
  212. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advimage/langs/en_dlg.js +0 -0
  213. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advlink/css/advlink.css +0 -0
  214. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advlink/editor_plugin.js +0 -0
  215. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advlink/editor_plugin_src.js +0 -0
  216. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/advlink/js/advlink.js +543 -0
  217. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advlink/langs/en_dlg.js +0 -0
  218. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advlink/link.htm +0 -0
  219. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advlist/editor_plugin.js +0 -0
  220. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/advlist/editor_plugin_src.js +0 -0
  221. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/autolink/editor_plugin.js +1 -0
  222. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/autolink/editor_plugin_src.js +184 -0
  223. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/autoresize/editor_plugin.js +1 -0
  224. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/autoresize/editor_plugin_src.js +119 -0
  225. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/autosave/editor_plugin.js +1 -0
  226. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/autosave/editor_plugin_src.js +433 -0
  227. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/bbcode/editor_plugin.js +0 -0
  228. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/bbcode/editor_plugin_src.js +0 -0
  229. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/contextmenu/editor_plugin.js +1 -0
  230. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/contextmenu/editor_plugin_src.js +163 -0
  231. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/directionality/editor_plugin.js +1 -0
  232. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/directionality/editor_plugin_src.js +85 -0
  233. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/editor_plugin.js +0 -0
  234. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/editor_plugin_src.js +0 -0
  235. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/emotions/emotions.htm +42 -0
  236. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-cool.gif +0 -0
  237. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-cry.gif +0 -0
  238. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-embarassed.gif +0 -0
  239. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-foot-in-mouth.gif +0 -0
  240. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-frown.gif +0 -0
  241. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-innocent.gif +0 -0
  242. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-kiss.gif +0 -0
  243. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-laughing.gif +0 -0
  244. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-money-mouth.gif +0 -0
  245. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-sealed.gif +0 -0
  246. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-smile.gif +0 -0
  247. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-surprised.gif +0 -0
  248. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-tongue-out.gif +0 -0
  249. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-undecided.gif +0 -0
  250. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-wink.gif +0 -0
  251. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/img/smiley-yell.gif +0 -0
  252. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/js/emotions.js +0 -0
  253. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/emotions/langs/en_dlg.js +0 -0
  254. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/example/dialog.htm +0 -0
  255. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/example/editor_plugin.js +0 -0
  256. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/example/editor_plugin_src.js +84 -0
  257. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/example/img/example.gif +0 -0
  258. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/example/js/dialog.js +0 -0
  259. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/example/langs/en.js +0 -0
  260. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/example/langs/en_dlg.js +0 -0
  261. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/example_dependency/editor_plugin.js +0 -0
  262. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/example_dependency/editor_plugin_src.js +0 -0
  263. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/fullpage/css/fullpage.css +0 -0
  264. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/fullpage/editor_plugin.js +0 -0
  265. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/fullpage/editor_plugin_src.js +0 -0
  266. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/fullpage/fullpage.htm +0 -0
  267. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/fullpage/js/fullpage.js +0 -0
  268. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/fullpage/langs/en_dlg.js +0 -0
  269. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/fullscreen/editor_plugin.js +1 -0
  270. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/fullscreen/editor_plugin_src.js +234 -0
  271. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/fullscreen/fullscreen.htm +117 -0
  272. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/iespell/editor_plugin.js +0 -0
  273. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/iespell/editor_plugin_src.js +0 -0
  274. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/inlinepopups/editor_plugin.js +1 -0
  275. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/inlinepopups/editor_plugin_src.js +699 -0
  276. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  277. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  278. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  279. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  280. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  281. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  282. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  283. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/skins/clearlooks2/window.css +0 -0
  284. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/inlinepopups/template.htm +0 -0
  285. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/insertdatetime/editor_plugin.js +0 -0
  286. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/insertdatetime/editor_plugin_src.js +0 -0
  287. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/layer/editor_plugin.js +0 -0
  288. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/layer/editor_plugin_src.js +0 -0
  289. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/legacyoutput/editor_plugin.js +1 -0
  290. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/legacyoutput/editor_plugin_src.js +139 -0
  291. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/lists/editor_plugin.js +1 -0
  292. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/lists/editor_plugin_src.js +955 -0
  293. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/media/css/media.css +0 -0
  294. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/media/editor_plugin.js +1 -0
  295. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/media/editor_plugin_src.js +898 -0
  296. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/media/js/embed.js +0 -0
  297. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/media/js/media.js +513 -0
  298. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/media/langs/en_dlg.js +0 -0
  299. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/media/media.htm +0 -0
  300. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/media/moxieplayer.swf +0 -0
  301. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/nonbreaking/editor_plugin.js +0 -0
  302. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/nonbreaking/editor_plugin_src.js +0 -0
  303. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/noneditable/editor_plugin.js +1 -0
  304. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/noneditable/editor_plugin_src.js +537 -0
  305. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/pagebreak/editor_plugin.js +0 -0
  306. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/pagebreak/editor_plugin_src.js +0 -0
  307. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/paste/editor_plugin.js +1 -0
  308. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/paste/editor_plugin_src.js +887 -0
  309. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/paste/js/pastetext.js +0 -0
  310. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/paste/js/pasteword.js +0 -0
  311. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/paste/langs/en_dlg.js +0 -0
  312. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/paste/pastetext.htm +0 -0
  313. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/paste/pasteword.htm +0 -0
  314. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/preview/editor_plugin.js +0 -0
  315. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/preview/editor_plugin_src.js +0 -0
  316. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/preview/example.html +0 -0
  317. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/preview/jscripts/embed.js +0 -0
  318. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/preview/preview.html +0 -0
  319. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/print/editor_plugin.js +0 -0
  320. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/print/editor_plugin_src.js +0 -0
  321. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/save/editor_plugin.js +0 -0
  322. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/save/editor_plugin_src.js +0 -0
  323. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/searchreplace/css/searchreplace.css +0 -0
  324. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/searchreplace/editor_plugin.js +0 -0
  325. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/searchreplace/editor_plugin_src.js +0 -0
  326. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/searchreplace/js/searchreplace.js +152 -0
  327. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/searchreplace/langs/en_dlg.js +0 -0
  328. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/searchreplace/searchreplace.htm +100 -0
  329. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/spellchecker/css/content.css +0 -0
  330. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/spellchecker/editor_plugin.js +1 -0
  331. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/spellchecker/editor_plugin_src.js +471 -0
  332. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/spellchecker/img/wline.gif +0 -0
  333. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/style/css/props.css +14 -0
  334. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/style/editor_plugin.js +1 -0
  335. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/style/editor_plugin_src.js +71 -0
  336. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/style/js/props.js +709 -0
  337. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/style/langs/en_dlg.js +1 -0
  338. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/style/props.htm +845 -0
  339. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/style/readme.txt +19 -0
  340. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/tabfocus/editor_plugin.js +1 -0
  341. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/tabfocus/editor_plugin_src.js +122 -0
  342. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/table/cell.htm +0 -0
  343. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/table/css/cell.css +0 -0
  344. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/table/css/row.css +0 -0
  345. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/table/css/table.css +0 -0
  346. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/table/editor_plugin.js +1 -0
  347. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/table/editor_plugin_src.js +1456 -0
  348. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/table/js/cell.js +319 -0
  349. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/table/js/merge_cells.js +0 -0
  350. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/table/js/row.js +254 -0
  351. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/table/js/table.js +501 -0
  352. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/table/langs/en_dlg.js +0 -0
  353. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/table/merge_cells.htm +0 -0
  354. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/table/row.htm +158 -0
  355. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/table/table.htm +0 -0
  356. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/template/blank.htm +0 -0
  357. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/template/css/template.css +0 -0
  358. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/template/editor_plugin.js +0 -0
  359. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/template/editor_plugin_src.js +0 -0
  360. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/template/js/template.js +0 -0
  361. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/template/langs/en_dlg.js +0 -0
  362. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/template/template.htm +0 -0
  363. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/visualblocks/css/visualblocks.css +21 -0
  364. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/visualblocks/editor_plugin.js +1 -0
  365. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/visualblocks/editor_plugin_src.js +63 -0
  366. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/visualchars/editor_plugin.js +0 -0
  367. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/visualchars/editor_plugin_src.js +0 -0
  368. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/wordcount/editor_plugin.js +1 -0
  369. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/plugins/wordcount/editor_plugin_src.js +122 -0
  370. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/abbr.htm +0 -0
  371. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/acronym.htm +0 -0
  372. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/attributes.htm +0 -0
  373. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/cite.htm +0 -0
  374. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/css/attributes.css +0 -0
  375. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/css/popup.css +0 -0
  376. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/del.htm +0 -0
  377. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/editor_plugin.js +0 -0
  378. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/editor_plugin_src.js +0 -0
  379. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/ins.htm +0 -0
  380. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/js/abbr.js +0 -0
  381. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/js/acronym.js +0 -0
  382. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/js/attributes.js +0 -0
  383. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/js/cite.js +0 -0
  384. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/js/del.js +0 -0
  385. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/js/element_common.js +0 -0
  386. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/js/ins.js +0 -0
  387. data/app/assets/javascripts/goldencobra/{plugins → html_editors/tinymce_v3/plugins}/xhtmlxtras/langs/en_dlg.js +0 -0
  388. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/about.htm +0 -0
  389. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/anchor.htm +0 -0
  390. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/charmap.htm +0 -0
  391. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/color_picker.htm +70 -0
  392. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/editor_template.js +1 -0
  393. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/editor_template_src.js +1490 -0
  394. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/image.htm +0 -0
  395. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/colorpicker.jpg +0 -0
  396. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/flash.gif +0 -0
  397. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/img/icons.gif +0 -0
  398. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/iframe.gif +0 -0
  399. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/pagebreak.gif +0 -0
  400. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/quicktime.gif +0 -0
  401. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/realmedia.gif +0 -0
  402. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/shockwave.gif +0 -0
  403. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/trans.gif +0 -0
  404. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/video.gif +0 -0
  405. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/img/windowsmedia.gif +0 -0
  406. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/js/about.js +0 -0
  407. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/js/anchor.js +56 -0
  408. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/js/charmap.js +0 -0
  409. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/js/color_picker.js +345 -0
  410. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/js/image.js +253 -0
  411. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/js/link.js +159 -0
  412. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/js/source_editor.js +78 -0
  413. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/langs/de.js +1 -0
  414. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/langs/de_dlg.js +1 -0
  415. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/langs/en.js +0 -0
  416. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/langs/en_dlg.js +1 -0
  417. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/link.htm +0 -0
  418. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/shortcuts.htm +0 -0
  419. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/default/content.css +0 -0
  420. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/skins/default/dialog.css +118 -0
  421. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/default/img/buttons.png +0 -0
  422. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/default/img/items.gif +0 -0
  423. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/default/img/menu_arrow.gif +0 -0
  424. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/default/img/menu_check.gif +0 -0
  425. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/default/img/progress.gif +0 -0
  426. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/default/img/tabs.gif +0 -0
  427. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/skins/default/ui.css +219 -0
  428. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/highcontrast/content.css +0 -0
  429. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/skins/highcontrast/dialog.css +106 -0
  430. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/skins/highcontrast/ui.css +106 -0
  431. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/o2k7/content.css +0 -0
  432. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/skins/o2k7/dialog.css +118 -0
  433. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/o2k7/img/button_bg.png +0 -0
  434. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  435. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  436. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/skins/o2k7/ui.css +222 -0
  437. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/o2k7/ui_black.css +0 -0
  438. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/advanced/skins/o2k7/ui_silver.css +0 -0
  439. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/advanced/source_editor.htm +25 -0
  440. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/editor_template.js +0 -0
  441. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/editor_template_src.js +0 -0
  442. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/img/icons.gif +0 -0
  443. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/themes/simple/langs/de.js +1 -0
  444. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/langs/en.js +0 -0
  445. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/skins/default/content.css +0 -0
  446. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/skins/default/ui.css +0 -0
  447. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/skins/o2k7/content.css +0 -0
  448. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/skins/o2k7/img/button_bg.png +0 -0
  449. data/app/assets/javascripts/goldencobra/{themes → html_editors/tinymce_v3/themes}/simple/skins/o2k7/ui.css +0 -0
  450. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/tiny_mce_popup.js +5 -0
  451. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/tiny_mce_src.js +17942 -0
  452. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/tinymce_v3.js +1 -0
  453. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v3/tinymce_v3_inits.js +62 -0
  454. data/app/assets/javascripts/goldencobra/{utils → html_editors/tinymce_v3/utils}/editable_selects.js +0 -0
  455. data/app/assets/javascripts/goldencobra/{utils → html_editors/tinymce_v3/utils}/form_utils.js +0 -0
  456. data/app/assets/javascripts/goldencobra/{utils → html_editors/tinymce_v3/utils}/mctabs.js +0 -0
  457. data/app/assets/javascripts/goldencobra/{utils → html_editors/tinymce_v3/utils}/validate.js +0 -0
  458. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/jquery.tinymce_v4.js +1 -0
  459. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/langs/de.js +219 -0
  460. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/langs/readme.md +3 -0
  461. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/advlist/plugin.js +97 -0
  462. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/advlist/plugin.min.js +1 -0
  463. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/anchor/plugin.js +47 -0
  464. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/anchor/plugin.min.js +1 -0
  465. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/autolink/plugin.js +199 -0
  466. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/autolink/plugin.min.js +1 -0
  467. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/autoresize/plugin.js +162 -0
  468. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/autoresize/plugin.min.js +1 -0
  469. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/autosave/plugin.js +165 -0
  470. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/autosave/plugin.min.js +1 -0
  471. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/bbcode/plugin.js +123 -0
  472. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/bbcode/plugin.min.js +1 -0
  473. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/charmap/plugin.js +398 -0
  474. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/charmap/plugin.min.js +1 -0
  475. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/code/plugin.js +60 -0
  476. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/code/plugin.min.js +1 -0
  477. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/colorpicker/plugin.js +112 -0
  478. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/colorpicker/plugin.min.js +1 -0
  479. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/css/dialog.css +118 -0
  480. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/img/buttons.png +0 -0
  481. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/img/icons.gif +0 -0
  482. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/img/items.gif +0 -0
  483. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/img/menu_arrow.gif +0 -0
  484. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/img/menu_check.gif +0 -0
  485. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/img/progress.gif +0 -0
  486. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/img/tabs.gif +0 -0
  487. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/plugin.js +297 -0
  488. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/plugin.min.js +1 -0
  489. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/tiny_mce_popup.js +542 -0
  490. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/utils/editable_selects.js +70 -0
  491. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/utils/form_utils.js +210 -0
  492. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/utils/mctabs.js +164 -0
  493. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/compat3x/utils/validate.js +252 -0
  494. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/contextmenu/plugin.js +88 -0
  495. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/contextmenu/plugin.min.js +1 -0
  496. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/directionality/plugin.js +64 -0
  497. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/directionality/plugin.min.js +1 -0
  498. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-cool.gif +0 -0
  499. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-cry.gif +0 -0
  500. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-embarassed.gif +0 -0
  501. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-foot-in-mouth.gif +0 -0
  502. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-frown.gif +0 -0
  503. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-innocent.gif +0 -0
  504. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-kiss.gif +0 -0
  505. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-laughing.gif +0 -0
  506. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-money-mouth.gif +0 -0
  507. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-sealed.gif +0 -0
  508. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-smile.gif +0 -0
  509. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-surprised.gif +0 -0
  510. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-tongue-out.gif +0 -0
  511. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-undecided.gif +0 -0
  512. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-wink.gif +0 -0
  513. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/img/smiley-yell.gif +0 -0
  514. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/plugin.js +65 -0
  515. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/emoticons/plugin.min.js +1 -0
  516. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/example/dialog.html +8 -0
  517. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/example/plugin.js +68 -0
  518. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/example/plugin.min.js +1 -0
  519. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/example_dependency/plugin.js +22 -0
  520. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/example_dependency/plugin.min.js +1 -0
  521. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/fullpage/plugin.js +490 -0
  522. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/fullpage/plugin.min.js +1 -0
  523. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/fullscreen/plugin.js +136 -0
  524. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/fullscreen/plugin.min.js +1 -0
  525. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/hr/plugin.js +30 -0
  526. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/hr/plugin.min.js +1 -0
  527. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/image/plugin.js +550 -0
  528. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/image/plugin.min.js +1 -0
  529. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/Canvas.js +35 -0
  530. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/ColorMatrix.js +222 -0
  531. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/Conversions.js +186 -0
  532. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/CropRect.js +214 -0
  533. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/Dialog.js +486 -0
  534. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/Filters.js +221 -0
  535. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/ImagePanel.js +218 -0
  536. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/ImageSize.js +27 -0
  537. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/ImageTools.js +99 -0
  538. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/Mime.js +42 -0
  539. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/Plugin.js +390 -0
  540. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/classes/UndoStack.js +57 -0
  541. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/plugin.dev.js +149 -0
  542. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/plugin.js +2334 -0
  543. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/imagetools/plugin.min.js +1 -0
  544. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/importcss/plugin.js +197 -0
  545. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/importcss/plugin.min.js +1 -0
  546. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/insertdatetime/plugin.js +121 -0
  547. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/insertdatetime/plugin.min.js +1 -0
  548. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/layer/plugin.js +225 -0
  549. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/layer/plugin.min.js +1 -0
  550. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/legacyoutput/plugin.js +211 -0
  551. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/legacyoutput/plugin.min.js +1 -0
  552. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/link/plugin.js +403 -0
  553. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/link/plugin.min.js +1 -0
  554. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/lists/plugin.js +821 -0
  555. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/lists/plugin.min.js +1 -0
  556. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/media/moxieplayer.swf +0 -0
  557. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/media/plugin.js +795 -0
  558. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/media/plugin.min.js +1 -0
  559. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/nonbreaking/plugin.js +53 -0
  560. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/nonbreaking/plugin.min.js +1 -0
  561. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/noneditable/plugin.js +614 -0
  562. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/noneditable/plugin.min.js +1 -0
  563. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/pagebreak/plugin.js +88 -0
  564. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/pagebreak/plugin.min.js +1 -0
  565. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/paste/classes/Clipboard.js +688 -0
  566. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/paste/classes/Plugin.js +110 -0
  567. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/paste/classes/Quirks.js +159 -0
  568. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/paste/classes/Utils.js +129 -0
  569. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/paste/classes/WordFilter.js +498 -0
  570. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/paste/plugin.dev.js +142 -0
  571. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/paste/plugin.js +1700 -0
  572. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/paste/plugin.min.js +1 -0
  573. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/preview/plugin.js +88 -0
  574. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/preview/plugin.min.js +1 -0
  575. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/print/plugin.js +32 -0
  576. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/print/plugin.min.js +1 -0
  577. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/save/plugin.js +94 -0
  578. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/save/plugin.min.js +1 -0
  579. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/searchreplace/plugin.js +600 -0
  580. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/searchreplace/plugin.min.js +1 -0
  581. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/spellchecker/classes/DomTextMatcher.js +470 -0
  582. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/spellchecker/classes/Plugin.js +435 -0
  583. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/spellchecker/plugin.dev.js +139 -0
  584. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/spellchecker/plugin.js +1012 -0
  585. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/spellchecker/plugin.min.js +1 -0
  586. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/tabfocus/plugin.js +120 -0
  587. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/tabfocus/plugin.min.js +1 -0
  588. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/classes/CellSelection.js +176 -0
  589. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/classes/Dialogs.js +824 -0
  590. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/classes/Plugin.js +436 -0
  591. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/classes/Quirks.js +397 -0
  592. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/classes/TableGrid.js +860 -0
  593. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/classes/Utils.js +34 -0
  594. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/plugin.dev.js +141 -0
  595. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/plugin.js +2844 -0
  596. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/table/plugin.min.js +1 -0
  597. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/template/plugin.js +264 -0
  598. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/template/plugin.min.js +1 -0
  599. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/textcolor/plugin.js +282 -0
  600. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/textcolor/plugin.min.js +1 -0
  601. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/textpattern/plugin.js +268 -0
  602. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/textpattern/plugin.min.js +1 -0
  603. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/css/visualblocks.css +135 -0
  604. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/address.gif +0 -0
  605. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/article.gif +0 -0
  606. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/aside.gif +0 -0
  607. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/blockquote.gif +0 -0
  608. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/div.gif +0 -0
  609. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/dl.gif +0 -0
  610. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/figure.gif +0 -0
  611. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/h1.gif +0 -0
  612. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/h2.gif +0 -0
  613. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/h3.gif +0 -0
  614. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/h4.gif +0 -0
  615. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/h5.gif +0 -0
  616. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/h6.gif +0 -0
  617. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/hgroup.gif +0 -0
  618. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/ol.gif +0 -0
  619. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/p.gif +0 -0
  620. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/pre.gif +0 -0
  621. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/section.gif +0 -0
  622. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/img/ul.gif +0 -0
  623. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/plugin.js +86 -0
  624. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualblocks/plugin.min.js +1 -0
  625. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualchars/plugin.js +123 -0
  626. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/visualchars/plugin.min.js +1 -0
  627. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/wordcount/plugin.js +69 -0
  628. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/plugins/wordcount/plugin.min.js +1 -0
  629. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/content.inline.min.css +1 -0
  630. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/content.min.css +1 -0
  631. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/fonts/tinymce-small.eot +0 -0
  632. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/fonts/tinymce-small.svg +62 -0
  633. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  634. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/fonts/tinymce-small.woff +0 -0
  635. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/fonts/tinymce.eot +0 -0
  636. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/fonts/tinymce.svg +83 -0
  637. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/fonts/tinymce.ttf +0 -0
  638. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/fonts/tinymce.woff +0 -0
  639. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/img/anchor.gif +0 -0
  640. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/img/loader.gif +0 -0
  641. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/img/object.gif +0 -0
  642. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/img/trans.gif +0 -0
  643. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/skin.ie7.min.css +1 -0
  644. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/skins/lightgray/skin.min.css +1 -0
  645. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/themes/modern/theme.js +1 -0
  646. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/themes/modern/theme.min.js +1 -0
  647. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/tinymce_v4.js +11 -0
  648. data/app/assets/javascripts/goldencobra/html_editors/tinymce_v4/tinymce_v4_inits.js +62 -0
  649. data/app/assets/javascripts/goldencobra/jquery.color-2.1.2.js +663 -0
  650. data/app/assets/javascripts/goldencobra/pagination.js +28 -0
  651. data/app/assets/javascripts/goldencobra/react_0.13.1.min.js +15 -0
  652. data/app/assets/javascripts/goldencobra/tiny_mce_popup.js +1 -1
  653. data/app/assets/javascripts/goldencobra/tiny_mce_src.js +17942 -0
  654. data/app/assets/stylesheets/goldencobra/active_admin.scss +16 -0
  655. data/app/assets/stylesheets/goldencobra/active_admin_backup.scss +608 -0
  656. data/app/assets/stylesheets/goldencobra/{application.css.scss → application.scss} +0 -0
  657. data/app/assets/stylesheets/goldencobra/chosen.css +51 -31
  658. data/app/assets/stylesheets/goldencobra/gc-articles.scss +12 -0
  659. data/app/assets/stylesheets/goldencobra/gc-chosen-overwrite.scss +12 -0
  660. data/app/assets/stylesheets/goldencobra/gc-general.scss +487 -0
  661. data/app/assets/stylesheets/goldencobra/gc-grid.scss +5 -0
  662. data/app/assets/stylesheets/goldencobra/gc-header.scss +47 -0
  663. data/app/assets/stylesheets/goldencobra/gc-overview-tree.scss +145 -0
  664. data/app/assets/stylesheets/goldencobra/gc-settings.scss +52 -0
  665. data/app/assets/stylesheets/goldencobra/ikusei_active_admin.scss +16 -34
  666. data/app/controllers/goldencobra/api/v1/tokens_controller.rb +10 -0
  667. data/app/controllers/goldencobra/api/v2/articles_controller.rb +213 -143
  668. data/app/controllers/goldencobra/api/v2/locales_controller.rb +1 -1
  669. data/app/controllers/goldencobra/api/v2/navigation_menus_controller.rb +223 -0
  670. data/app/controllers/goldencobra/api/v2/settings_controller.rb +1 -1
  671. data/app/controllers/goldencobra/api/v2/uploads_controller.rb +32 -0
  672. data/app/controllers/goldencobra/api/v3/articles_controller.rb +124 -0
  673. data/app/controllers/goldencobra/application_controller.rb +17 -41
  674. data/app/controllers/goldencobra/articles_controller.rb +60 -62
  675. data/app/controllers/goldencobra/manage_controller.rb +3 -4
  676. data/app/controllers/goldencobra/sessions_controller.rb +22 -15
  677. data/app/helpers/goldencobra/application_helper.rb +15 -3
  678. data/app/helpers/goldencobra/articles_helper.rb +80 -52
  679. data/app/helpers/goldencobra/login_helper.rb +4 -5
  680. data/app/helpers/goldencobra/navigation_helper.rb +52 -44
  681. data/app/mailers/goldencobra/confirmation_mailer.rb +3 -2
  682. data/app/models/ability.rb +1 -1
  683. data/app/models/active_admin/views/index_as_seo_table.rb +9 -0
  684. data/app/models/active_admin/views/index_as_tree.rb +118 -0
  685. data/app/models/goldencobra/article.rb +327 -246
  686. data/app/models/goldencobra/article_concerns/meta_tag.rb +104 -0
  687. data/app/models/goldencobra/article_image.rb +2 -2
  688. data/app/models/goldencobra/article_url.rb +54 -0
  689. data/app/models/goldencobra/articletype.rb +109 -48
  690. data/app/models/goldencobra/articletype_field.rb +3 -2
  691. data/app/models/goldencobra/articletype_group.rb +4 -4
  692. data/app/models/goldencobra/author.rb +5 -3
  693. data/app/models/goldencobra/comment.rb +7 -7
  694. data/app/models/goldencobra/domain.rb +3 -3
  695. data/app/models/goldencobra/import.rb +282 -282
  696. data/app/models/goldencobra/import_metadata.rb +5 -1
  697. data/app/models/goldencobra/link_checker.rb +27 -14
  698. data/app/models/goldencobra/location.rb +16 -4
  699. data/app/models/goldencobra/menue.rb +144 -17
  700. data/app/models/goldencobra/permission.rb +15 -3
  701. data/app/models/goldencobra/redirector.rb +23 -23
  702. data/app/models/goldencobra/role.rb +1 -0
  703. data/app/models/goldencobra/role_user.rb +4 -2
  704. data/app/models/goldencobra/setting.rb +54 -35
  705. data/app/models/goldencobra/tracking.rb +6 -3
  706. data/app/models/goldencobra/upload.rb +71 -53
  707. data/app/models/goldencobra/vita.rb +3 -3
  708. data/app/models/goldencobra/widget.rb +22 -16
  709. data/app/models/translation.rb +2 -2
  710. data/app/models/user.rb +18 -15
  711. data/app/models/visitor.rb +13 -8
  712. data/app/presenters/goldencobra/articletype_presenter.rb +266 -0
  713. data/app/serializers/goldencobra/article_custom_serializer.rb +24 -0
  714. data/app/serializers/goldencobra/article_serializer.rb +26 -0
  715. data/app/serializers/goldencobra/upload_serializer.rb +22 -0
  716. data/app/services/goldencobra/attribute_repair_service.rb +47 -0
  717. data/app/services/goldencobra/attribute_validator.rb +55 -0
  718. data/app/services/goldencobra/settings_cleanup.rb +95 -0
  719. data/app/services/goldencobra/url.rb +25 -0
  720. data/app/views/goldencobra/admin/articles/_article_type.html.erb +4 -3
  721. data/app/views/goldencobra/admin/articles/_image_module_sidebar.html.erb +2 -2
  722. data/app/views/goldencobra/admin/articles/_link_checker.html.erb +10 -13
  723. data/app/views/goldencobra/admin/articles/_select_article_type.html.erb +1 -4
  724. data/app/views/goldencobra/admin/dashboard/_base_dashboard.html.arb +106 -0
  725. data/app/views/goldencobra/admin/shared/_item.html.erb +1 -1
  726. data/app/views/goldencobra/admin/shared/_overview.html.erb +3 -3
  727. data/app/views/goldencobra/admin/shared/_react_overview.html.erb +15 -0
  728. data/app/views/goldencobra/admin/shared/load_overviewtree.js.erb +8 -3
  729. data/app/views/goldencobra/api/v2/articles/index.xml.builder +29 -0
  730. data/app/views/goldencobra/articles/show.rss.builder +1 -1
  731. data/app/views/goldencobra/manage/_admin_article_management_content.html.erb +2 -2
  732. data/app/views/layouts/goldencobra/active_admin_resque.html.erb +15 -15
  733. data/app/views/layouts/goldencobra/application.html.erb +1 -1
  734. data/app/views/layouts/goldencobra/bare_layout.html.erb +1 -1
  735. data/app/views/layouts/goldencobra/for_pdf.html.erb +1 -1
  736. data/app/worker/articles_cache_worker.rb +1 -2
  737. data/config/initializers/active_admin_devise.rb +4 -4
  738. data/config/initializers/check_for_missing_articletypes.rb +2 -55
  739. data/config/initializers/devise.rb +9 -1
  740. data/config/initializers/http_validator.rb +8 -10
  741. data/config/initializers/sass_load_path.rb +4 -0
  742. data/config/initializers/sidekiq.rb.tmpl +7 -0
  743. data/config/locales/active_admin.de.yml +49 -25
  744. data/config/locales/active_admin.en.yml +46 -22
  745. data/config/locales/active_admin.zh-CN.yml +645 -0
  746. data/config/locales/de.yml +95 -78
  747. data/config/locales/en.yml +97 -90
  748. data/config/locales/zh-CN.yml +632 -0
  749. data/config/routes.rb +37 -78
  750. data/config/settings.yml +17 -8
  751. data/config/spring.rb +1 -0
  752. data/db/migrate/20150811082119_install_goldencobra.rb +589 -0
  753. data/db/migrate/20150818133609_change_article_index_type_default.rb +5 -0
  754. data/db/migrate/20150818140444_rename_user_title_to_user_position.rb +5 -0
  755. data/db/migrate/20150818141321_add_displayarticletypeindex_to_goldencobra_articles.rb +5 -0
  756. data/db/migrate/20150819121715_add_descendentsdepth_to_goldencobra_articles.rb +6 -0
  757. data/db/migrate/20150820073443_change_metatag_storage.rb +13 -0
  758. data/db/migrate/20160527083745_add_state_to_goldencobra_articles.rb +5 -0
  759. data/db/migrate/20160614074840_create_goldencobra_article_urls.rb +10 -0
  760. data/db/migrate/20160704070529_add_showindexarticles_to_goldencobra_articles.rb +5 -0
  761. data/db/seeds.rb +28 -13
  762. data/lib/generators/goldencobra/articletype/articletype_generator.rb +3 -5
  763. data/lib/generators/goldencobra/articletype/templates/edit_articletype.html.erb +3 -3
  764. data/lib/generators/goldencobra/articletype/templates/edit_index.html.erb +11 -6
  765. data/lib/generators/goldencobra/articletype/templates/edit_show.html.erb +4 -6
  766. data/lib/generators/goldencobra/articletype/templates/index.html.erb +18 -21
  767. data/lib/generators/goldencobra/articletype/templates/initializer.rb +3 -6
  768. data/lib/generators/goldencobra/articletype/templates/show.html.erb +187 -9
  769. data/lib/generators/goldencobra/install_generator.rb +47 -65
  770. data/lib/generators/goldencobra/server_generator.rb +14 -17
  771. data/lib/generators/goldencobra/templates/active_admin.rb.erb +20 -17
  772. data/lib/generators/goldencobra/templates/assets/javascripts/application.js +1 -29
  773. data/lib/generators/goldencobra/templates/assets/stylesheets/_bootstrap_overwrite.scss +60 -0
  774. data/lib/generators/goldencobra/templates/assets/stylesheets/{active_admin.css.scss → active_admin.scss} +0 -0
  775. data/lib/generators/goldencobra/templates/assets/stylesheets/application.scss +16 -0
  776. data/lib/generators/goldencobra/templates/deploy.rb.erb +0 -6
  777. data/lib/generators/goldencobra/templates/robots.txt +6 -2
  778. data/lib/generators/goldencobra/templates/seeds.rb.erb +29 -163
  779. data/lib/generators/goldencobra/templates/views/articletypes/default/_edit_index.html.erb +3 -9
  780. data/lib/generators/goldencobra/templates/views/articletypes/default/_show.html.erb +181 -15
  781. data/lib/generators/goldencobra/templates/views/layouts/_footer.html.erb +22 -18
  782. data/lib/generators/goldencobra/templates/views/layouts/_header_meta.html.erb +29 -15
  783. data/lib/generators/goldencobra/templates/views/layouts/_navigation.html.erb +31 -0
  784. data/lib/generators/goldencobra/templates/views/layouts/_startpage.html.erb +71 -0
  785. data/lib/generators/goldencobra/templates/views/layouts/application.html.erb +10 -41
  786. data/lib/goldencobra.rb +33 -0
  787. data/lib/goldencobra/acts_as_setting.rb +8 -10
  788. data/lib/goldencobra/engine.rb +30 -41
  789. data/lib/goldencobra/version.rb +1 -3
  790. data/lib/i18n/backend/active_record.rb +61 -0
  791. data/lib/i18n/backend/active_record/translation.rb +109 -0
  792. data/lib/tasks/article_cache.rake +1 -1
  793. data/lib/tasks/attribute_validator.rake +18 -0
  794. data/lib/tasks/link_checker.rake +3 -7
  795. metadata +917 -803
  796. data/app/assets/javascripts/goldencobra/application.js +0 -84
  797. data/app/assets/javascripts/goldencobra/jquery.tinymce.js +0 -1
  798. data/app/assets/javascripts/goldencobra/langs/en.js +0 -1
  799. data/app/assets/javascripts/goldencobra/plugins/advimage/js/image.js +0 -462
  800. data/app/assets/javascripts/goldencobra/plugins/advlink/js/advlink.js +0 -532
  801. data/app/assets/javascripts/goldencobra/plugins/autolink/editor_plugin.js +0 -1
  802. data/app/assets/javascripts/goldencobra/plugins/autolink/editor_plugin_src.js +0 -172
  803. data/app/assets/javascripts/goldencobra/plugins/autoresize/editor_plugin.js +0 -1
  804. data/app/assets/javascripts/goldencobra/plugins/autoresize/editor_plugin_src.js +0 -137
  805. data/app/assets/javascripts/goldencobra/plugins/autosave/editor_plugin.js +0 -1
  806. data/app/assets/javascripts/goldencobra/plugins/autosave/editor_plugin_src.js +0 -431
  807. data/app/assets/javascripts/goldencobra/plugins/autosave/langs/en.js +0 -4
  808. data/app/assets/javascripts/goldencobra/plugins/contextmenu/editor_plugin.js +0 -1
  809. data/app/assets/javascripts/goldencobra/plugins/contextmenu/editor_plugin_src.js +0 -160
  810. data/app/assets/javascripts/goldencobra/plugins/directionality/editor_plugin.js +0 -1
  811. data/app/assets/javascripts/goldencobra/plugins/directionality/editor_plugin_src.js +0 -82
  812. data/app/assets/javascripts/goldencobra/plugins/emotions/emotions.htm +0 -42
  813. data/app/assets/javascripts/goldencobra/plugins/example/editor_plugin_src.js +0 -84
  814. data/app/assets/javascripts/goldencobra/plugins/example/img/image_button.gif +0 -0
  815. data/app/assets/javascripts/goldencobra/plugins/fullscreen/editor_plugin.js +0 -1
  816. data/app/assets/javascripts/goldencobra/plugins/fullscreen/editor_plugin_src.js +0 -159
  817. data/app/assets/javascripts/goldencobra/plugins/fullscreen/fullscreen.htm +0 -110
  818. data/app/assets/javascripts/goldencobra/plugins/inlinepopups/editor_plugin.js +0 -1
  819. data/app/assets/javascripts/goldencobra/plugins/inlinepopups/editor_plugin_src.js +0 -699
  820. data/app/assets/javascripts/goldencobra/plugins/legacyoutput/editor_plugin.js +0 -1
  821. data/app/assets/javascripts/goldencobra/plugins/legacyoutput/editor_plugin_src.js +0 -139
  822. data/app/assets/javascripts/goldencobra/plugins/lists/editor_plugin.js +0 -1
  823. data/app/assets/javascripts/goldencobra/plugins/lists/editor_plugin_src.js +0 -925
  824. data/app/assets/javascripts/goldencobra/plugins/media/editor_plugin.js +0 -1
  825. data/app/assets/javascripts/goldencobra/plugins/media/editor_plugin_src.js +0 -890
  826. data/app/assets/javascripts/goldencobra/plugins/media/js/media.js +0 -464
  827. data/app/assets/javascripts/goldencobra/plugins/noneditable/editor_plugin.js +0 -1
  828. data/app/assets/javascripts/goldencobra/plugins/noneditable/editor_plugin_src.js +0 -95
  829. data/app/assets/javascripts/goldencobra/plugins/paste/editor_plugin.js +0 -1
  830. data/app/assets/javascripts/goldencobra/plugins/paste/editor_plugin_src.js +0 -871
  831. data/app/assets/javascripts/goldencobra/plugins/searchreplace/js/searchreplace.js +0 -142
  832. data/app/assets/javascripts/goldencobra/plugins/searchreplace/searchreplace.htm +0 -100
  833. data/app/assets/javascripts/goldencobra/plugins/spellchecker/editor_plugin.js +0 -1
  834. data/app/assets/javascripts/goldencobra/plugins/spellchecker/editor_plugin_src.js +0 -436
  835. data/app/assets/javascripts/goldencobra/plugins/style/css/props.css +0 -13
  836. data/app/assets/javascripts/goldencobra/plugins/style/editor_plugin.js +0 -1
  837. data/app/assets/javascripts/goldencobra/plugins/style/editor_plugin_src.js +0 -55
  838. data/app/assets/javascripts/goldencobra/plugins/style/js/props.js +0 -635
  839. data/app/assets/javascripts/goldencobra/plugins/style/langs/en_dlg.js +0 -1
  840. data/app/assets/javascripts/goldencobra/plugins/style/props.htm +0 -840
  841. data/app/assets/javascripts/goldencobra/plugins/tabfocus/editor_plugin.js +0 -1
  842. data/app/assets/javascripts/goldencobra/plugins/tabfocus/editor_plugin_src.js +0 -122
  843. data/app/assets/javascripts/goldencobra/plugins/table/editor_plugin.js +0 -1
  844. data/app/assets/javascripts/goldencobra/plugins/table/editor_plugin_src.js +0 -1408
  845. data/app/assets/javascripts/goldencobra/plugins/table/js/cell.js +0 -319
  846. data/app/assets/javascripts/goldencobra/plugins/table/js/row.js +0 -237
  847. data/app/assets/javascripts/goldencobra/plugins/table/js/table.js +0 -484
  848. data/app/assets/javascripts/goldencobra/plugins/table/row.htm +0 -158
  849. data/app/assets/javascripts/goldencobra/plugins/wordcount/editor_plugin.js +0 -1
  850. data/app/assets/javascripts/goldencobra/plugins/wordcount/editor_plugin_src.js +0 -114
  851. data/app/assets/javascripts/goldencobra/themes/advanced/color_picker.htm +0 -74
  852. data/app/assets/javascripts/goldencobra/themes/advanced/editor_template.js +0 -1
  853. data/app/assets/javascripts/goldencobra/themes/advanced/editor_template_src.js +0 -1362
  854. data/app/assets/javascripts/goldencobra/themes/advanced/img/icons.gif +0 -0
  855. data/app/assets/javascripts/goldencobra/themes/advanced/js/anchor.js +0 -43
  856. data/app/assets/javascripts/goldencobra/themes/advanced/js/color_picker.js +0 -329
  857. data/app/assets/javascripts/goldencobra/themes/advanced/js/image.js +0 -251
  858. data/app/assets/javascripts/goldencobra/themes/advanced/js/link.js +0 -153
  859. data/app/assets/javascripts/goldencobra/themes/advanced/js/source_editor.js +0 -56
  860. data/app/assets/javascripts/goldencobra/themes/advanced/langs/en_dlg.js +0 -1
  861. data/app/assets/javascripts/goldencobra/themes/advanced/skins/default/dialog.css +0 -117
  862. data/app/assets/javascripts/goldencobra/themes/advanced/skins/default/ui.css +0 -214
  863. data/app/assets/javascripts/goldencobra/themes/advanced/skins/highcontrast/dialog.css +0 -105
  864. data/app/assets/javascripts/goldencobra/themes/advanced/skins/highcontrast/ui.css +0 -102
  865. data/app/assets/javascripts/goldencobra/themes/advanced/skins/o2k7/dialog.css +0 -117
  866. data/app/assets/javascripts/goldencobra/themes/advanced/skins/o2k7/ui.css +0 -217
  867. data/app/assets/javascripts/goldencobra/themes/advanced/source_editor.htm +0 -25
  868. data/app/assets/javascripts/goldencobra/tiny_mce.js +0 -1
  869. data/app/assets/stylesheets/goldencobra/active_admin.css.scss +0 -595
  870. data/app/models/goldencobra/metatag.rb +0 -23
  871. data/app/models/goldencobra/url_builder.rb +0 -58
  872. data/app/views/goldencobra/admin/articles/_articles_index.html.erb +0 -4
  873. data/app/views/goldencobra/admin/articles/_widgets_sidebar.html.erb +0 -15
  874. data/app/views/goldencobra/admin/articles/toggle_expert_mode.js.erb +0 -7
  875. data/config/initializers/check_for_migrations.rb +0 -21
  876. data/config/initializers/compass.rb +0 -24
  877. data/db/migrate/20120109093658_create_articles.rb +0 -9
  878. data/db/migrate/20120109111205_add_devise_to_admin_users.rb +0 -56
  879. data/db/migrate/20120109121212_create_admin_notes.rb +0 -16
  880. data/db/migrate/20120109121213_move_admin_notes_to_comments.rb +0 -25
  881. data/db/migrate/20120109140423_create_roles.rb +0 -10
  882. data/db/migrate/20120109141338_create_role_users.rb +0 -8
  883. data/db/migrate/20120110112157_add_urlname_to_article.rb +0 -7
  884. data/db/migrate/20120110114803_create_friendly_id_slugs.rb +0 -18
  885. data/db/migrate/20120112163045_add_body_to_articles.rb +0 -6
  886. data/db/migrate/20120112171037_add_ancestry_to_articles.rb +0 -6
  887. data/db/migrate/20120112172723_add_index_to_articles.rb +0 -9
  888. data/db/migrate/20120113100243_create_menues.rb +0 -12
  889. data/db/migrate/20120113101714_add_ancestry_to_menues.rb +0 -6
  890. data/db/migrate/20120113170904_add_startpage_to_article.rb +0 -5
  891. data/db/migrate/20120120095700_create_goldencobra_metatags.rb +0 -11
  892. data/db/migrate/20120125145920_add_fields_to_articles.rb +0 -9
  893. data/db/migrate/20120125161800_add_noindex_to_articles.rb +0 -5
  894. data/db/migrate/20120126132846_create_goldencobra_uploads.rb +0 -14
  895. data/db/migrate/20120206110452_create_goldencobra_locations.rb +0 -15
  896. data/db/migrate/20120209100956_create_goldencobra_settings.rb +0 -11
  897. data/db/migrate/20120217085735_add_options_to_users.rb +0 -16
  898. data/db/migrate/20120221100021_create_goldencobra_helps.rb +0 -11
  899. data/db/migrate/20120307151355_add_breadcrumb_to_goldencobra_articles.rb +0 -6
  900. data/db/migrate/20120312111338_create_goldencobra_widgets.rb +0 -12
  901. data/db/migrate/20120312150558_create_goldencobra_article_widgets.rb +0 -10
  902. data/db/migrate/20120313125443_create_goldencobra_permissions.rb +0 -18
  903. data/db/migrate/20120313142221_add_name_to_goldencobra_widgets.rb +0 -6
  904. data/db/migrate/20120313142421_add_sorter_to_goldencobra_widgets.rb +0 -6
  905. data/db/migrate/20120314102039_add_template_to_goldencobra_articles.rb +0 -6
  906. data/db/migrate/20120315161536_add_sorter_to_goldencobra_menue.rb +0 -6
  907. data/db/migrate/20120321102414_acts_as_taggable_on_migration.rb +0 -30
  908. data/db/migrate/20120321114923_add_articleindex_to_goldencobra_articles.rb +0 -7
  909. data/db/migrate/20120321120727_add_social_sharing_to_goldencobra_articles.rb +0 -6
  910. data/db/migrate/20120321130204_add_articleindeximages_to_goldencobra_articles.rb +0 -6
  911. data/db/migrate/20120321131058_create_goldencobra_article_images.rb +0 -10
  912. data/db/migrate/20120416154848_create_goldencobra_vita.rb +0 -13
  913. data/db/migrate/20120420094029_add_cachable_to_goldencobra_articles.rb +0 -5
  914. data/db/migrate/20120423141814_add_imagegallery_to_goldencobra_articles.rb +0 -5
  915. data/db/migrate/20120509125734_add_title_to_goldencobra_locations.rb +0 -5
  916. data/db/migrate/20120604141401_add_article_type_to_goldencobra_articles.rb +0 -5
  917. data/db/migrate/20120605082035_add_description_to_goldencobra_menues.rb +0 -6
  918. data/db/migrate/20120608095444_add_teaser_title_to_goldencobra_menue.rb +0 -5
  919. data/db/migrate/20120608121356_create_versions.rb +0 -18
  920. data/db/migrate/20120611082814_create_goldencobra_imports.rb +0 -13
  921. data/db/migrate/20120615085225_add_externalurl_to_goldencobra_article.rb +0 -5
  922. data/db/migrate/20120615150128_add_attachable_to_goldencobra_uploads.rb +0 -6
  923. data/db/migrate/20120618122627_add_indextag_to_goldencobra_articles.rb +0 -5
  924. data/db/migrate/20120618132330_add_sliderfields_to_widgets.rb +0 -5
  925. data/db/migrate/20120618141449_add_teaser_to_goldencobra_widgets.rb +0 -5
  926. data/db/migrate/20120619123238_add_sorter_to_goldencobra_articles.rb +0 -5
  927. data/db/migrate/20120619132259_add_reverse_sort_to_goldencobra_articles.rb +0 -5
  928. data/db/migrate/20120625131154_add_author_to_goldencobra_articles.rb +0 -5
  929. data/db/migrate/20120627122742_add_sorter_limit_to_goldencobra_articles.rb +0 -5
  930. data/db/migrate/20120718153348_add_nottags_to_goldencobra_articles.rb +0 -5
  931. data/db/migrate/20120730103912_add_use_frontend_tags_to_goldencobra_articles.rb +0 -5
  932. data/db/migrate/20120807124808_add_image_to_goldencobra_menues.rb +0 -5
  933. data/db/migrate/20120814111900_add_default_and_description_to_goldencobra.rb +0 -6
  934. data/db/migrate/20120814114800_change_default_type_to_goldencobra_widgets.rb +0 -6
  935. data/db/migrate/20120821105002_add_alttext_to_goldencobra_uploads.rb +0 -5
  936. data/db/migrate/20120926133635_add_position_to_goldencobra_article_images.rb +0 -5
  937. data/db/migrate/20120928092721_create_goldencobra_comments.rb +0 -16
  938. data/db/migrate/20120928105956_devise_create_visitors.rb +0 -46
  939. data/db/migrate/20121001092249_add_names_to_visitors.rb +0 -6
  940. data/db/migrate/20121002143111_add_columns_to_visitors.rb +0 -8
  941. data/db/migrate/20121003102003_add_dynamicredirect_to_goldencobraarticles.rb +0 -6
  942. data/db/migrate/20121003140056_add_token_to_visitors.rb +0 -12
  943. data/db/migrate/20121006095912_add_commentable_to_article.rb +0 -5
  944. data/db/migrate/20121007125002_add_activesince_to_goldencobra_articles.rb +0 -5
  945. data/db/migrate/20121011062432_add_username_to_visitors.rb +0 -5
  946. data/db/migrate/20121015071150_add_link_title_to_goldencobra_articles.rb +0 -5
  947. data/db/migrate/20121029131138_add_offline_setter_to_goldencobra_widgets.rb +0 -7
  948. data/db/migrate/20121030112343_add_offline_active_to_goldencobra_widgets.rb +0 -5
  949. data/db/migrate/20121030120838_add_alternative_content_to_goldencobra_widgets.rb +0 -5
  950. data/db/migrate/20121121144623_add_datum_to_widgets.rb +0 -6
  951. data/db/migrate/20121122091033_add_sorter_number_to_goldencobra_uploads.rb +0 -5
  952. data/db/migrate/20121206104701_add_type_to_goldencobra_settings.rb +0 -5
  953. data/db/migrate/20130104145454_add_weektimes_to_goldencobra_widgets.rb +0 -7
  954. data/db/migrate/20130114154115_add_sorter_to_goldencobra_permissions.rb +0 -8
  955. data/db/migrate/20130115104440_add_expert_mode_to_users.rb +0 -5
  956. data/db/migrate/20130118115233_add_poly_to_goldencobra_role_users.rb +0 -6
  957. data/db/migrate/20130128170204_add_default_article_type_for_nil.rb +0 -11
  958. data/db/migrate/20130129092029_add_poly_to_goldencobra_locations.rb +0 -6
  959. data/db/migrate/20130204102953_add_locationoption_to_goldencobra_locations.rb +0 -5
  960. data/db/migrate/20130205084748_add_loginable_to_visitors.rb +0 -6
  961. data/db/migrate/20130225154241_add_redirect_to_goldencobra_roles.rb +0 -5
  962. data/db/migrate/20130301144344_add_indextypes_to_goldencobra_articles.rb +0 -5
  963. data/db/migrate/20130404110743_add_sessions_table.rb +0 -12
  964. data/db/migrate/20130404121434_create_goldencobra_trackings.rb +0 -13
  965. data/db/migrate/20130404135801_add_options_to_goldencobra_trackings.rb +0 -6
  966. data/db/migrate/20130404140858_add_moreoptions_to_goldencobra_trackings.rb +0 -8
  967. data/db/migrate/20130405071320_add_params_to_goldencobra_trackings.rb +0 -5
  968. data/db/migrate/20130405073103_add_googleparams_to_goldencobra_trackings.rb +0 -9
  969. data/db/migrate/20130405074654_add_location_to_tracking.rb +0 -5
  970. data/db/migrate/20130426123928_add_polymorphic_to_goldencobra_metatags.rb +0 -6
  971. data/db/migrate/20130507115517_create_translations.rb +0 -13
  972. data/db/migrate/20130702155529_create_goldencobra_authors.rb +0 -12
  973. data/db/migrate/20130702160247_rename_authorstobackup_to_goldencobra_articles.rb +0 -11
  974. data/db/migrate/20130722152135_add_encodingtype_to_goldencobra_imports.rb +0 -5
  975. data/db/migrate/20130723084542_add_assgroup_to_goldencobra_importer.rb +0 -5
  976. data/db/migrate/20130724123225_create_goldencobra_import_metadata.rb +0 -16
  977. data/db/migrate/20130730113452_add_skip_to_goldencobra_locations.rb +0 -5
  978. data/db/migrate/20130730144331_add_linkchecker_to_goldencobra_articles.rb +0 -5
  979. data/db/migrate/20130903085746_change_datatype_of_url_paremeters.rb +0 -9
  980. data/db/migrate/20130909143144_create_goldencobra_domains.rb +0 -11
  981. data/db/migrate/20130925133203_add_prefix_to_goldencobra_domains.rb +0 -5
  982. data/db/migrate/20131018111343_add_cache_to_goldencobra_menues.rb +0 -12
  983. data/db/migrate/20131129143509_add_remote_to_goldencobra_menues.rb +0 -5
  984. data/db/migrate/20131216110750_add_main_to_goldencobra_domains.rb +0 -7
  985. data/db/migrate/20140127084929_create_goldencobra_articletypes.rb +0 -16
  986. data/db/migrate/20140128091516_create_goldencobra_articletype_groups.rb +0 -16
  987. data/db/migrate/20140128104519_create_goldencobra_articletype_fields.rb +0 -14
  988. data/db/migrate/20140128112747_add_position_to_goldencobra_articletype_group.rb +0 -7
  989. data/db/migrate/20140204221345_add_operator_to_goldencobra_permissions.rb +0 -5
  990. data/db/migrate/20140411152728_add_creator_id_to_goldencobra_articles.rb +0 -5
  991. data/db/migrate/20140505144517_add_taggingcounter.rb +0 -15
  992. data/db/migrate/20140603084537_add_domain_to_goldencobra_permissions.rb +0 -7
  993. data/db/migrate/20140615200342_resize_link_checkfield.rb +0 -13
  994. data/db/migrate/20140626135753_add_externalreferee_to_goldencobra_articles.rb +0 -6
  995. data/db/migrate/20140702103024_add_externaldate_to_goldencobra_articles.rb +0 -5
  996. data/db/migrate/20140702105550_add_remoteurl_to_goldencobra_uploads.rb +0 -5
  997. data/db/migrate/20140702142818_add_image_gallery_type_to_goldencobra_articles.rb +0 -5
  998. data/db/migrate/20140819101033_add_urlpath_to_goldencobra_articles.rb +0 -5
  999. data/db/migrate/20141104115144_create_goldencobra_redirectors.rb +0 -15
  1000. data/db/migrate/20141112124531_add_globalsorting_to_goldencobra_articles.rb +0 -7
  1001. data/db/migrate/20141124170930_add_indiex_to_gc.rb +0 -26
  1002. data/db/migrate/20150115111024_create_goldencobra_article_authors.rb +0 -28
  1003. data/db/migrate/20150115134707_add_remove_author_stuff.rb +0 -11
  1004. data/db/migrate/20150417153454_add_status_to_goldencobra_vita_steps.rb +0 -5
  1005. data/lib/generators/goldencobra/templates/assets/images/icons/icon-bookmark-40x40-light.png +0 -0
  1006. data/lib/generators/goldencobra/templates/assets/images/icons/icon-pdf-40x40-light.png +0 -0
  1007. data/lib/generators/goldencobra/templates/assets/images/icons/icon-print-40x40-light.png +0 -0
  1008. data/lib/generators/goldencobra/templates/assets/images/logo.gif +0 -0
  1009. data/lib/generators/goldencobra/templates/assets/images/rails.png +0 -0
  1010. data/lib/generators/goldencobra/templates/assets/stylesheets/application.css.scss +0 -29
  1011. data/lib/generators/goldencobra/templates/assets/stylesheets/footer/content.css.scss +0 -31
  1012. data/lib/generators/goldencobra/templates/assets/stylesheets/header/content.css.scss +0 -102
  1013. data/lib/generators/goldencobra/templates/assets/stylesheets/main/content.css.scss +0 -192
  1014. data/lib/generators/goldencobra/templates/assets/stylesheets/share/mixins.css.scss +0 -174
  1015. data/lib/generators/goldencobra/templates/assets/stylesheets/share/variables.css.scss +0 -31
  1016. data/lib/generators/goldencobra/templates/views/layouts/_header.html.erb +0 -61
  1017. data/lib/generators/goldencobra/templates/views/layouts/_header_slider.html.erb +0 -14
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Inline development version. Only to be used while developing since it uses document.write to load scripts.
3
+ */
4
+
5
+ /*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
6
+ /*globals $code */
7
+
8
+ (function(exports) {
9
+ "use strict";
10
+
11
+ var html = "", baseDir;
12
+ var modules = {}, exposedModules = [], moduleCount = 0;
13
+
14
+ var scripts = document.getElementsByTagName('script');
15
+ for (var i = 0; i < scripts.length; i++) {
16
+ var src = scripts[i].src;
17
+
18
+ if (src.indexOf('/plugin.dev.js') != -1) {
19
+ baseDir = src.substring(0, src.lastIndexOf('/'));
20
+ }
21
+ }
22
+
23
+ function require(ids, callback) {
24
+ var module, defs = [];
25
+
26
+ for (var i = 0; i < ids.length; ++i) {
27
+ module = modules[ids[i]] || resolve(ids[i]);
28
+ if (!module) {
29
+ throw 'module definition dependecy not found: ' + ids[i];
30
+ }
31
+
32
+ defs.push(module);
33
+ }
34
+
35
+ callback.apply(null, defs);
36
+ }
37
+
38
+ function resolve(id) {
39
+ if (exports.privateModules && id in exports.privateModules) {
40
+ return;
41
+ }
42
+
43
+ var target = exports;
44
+ var fragments = id.split(/[.\/]/);
45
+
46
+ for (var fi = 0; fi < fragments.length; ++fi) {
47
+ if (!target[fragments[fi]]) {
48
+ return;
49
+ }
50
+
51
+ target = target[fragments[fi]];
52
+ }
53
+
54
+ return target;
55
+ }
56
+
57
+ function register(id) {
58
+ var target = exports;
59
+ var fragments = id.split(/[.\/]/);
60
+
61
+ for (var fi = 0; fi < fragments.length - 1; ++fi) {
62
+ if (target[fragments[fi]] === undefined) {
63
+ target[fragments[fi]] = {};
64
+ }
65
+
66
+ target = target[fragments[fi]];
67
+ }
68
+
69
+ target[fragments[fragments.length - 1]] = modules[id];
70
+ }
71
+
72
+ function define(id, dependencies, definition) {
73
+ var privateModules, i;
74
+
75
+ if (typeof id !== 'string') {
76
+ throw 'invalid module definition, module id must be defined and be a string';
77
+ }
78
+
79
+ if (dependencies === undefined) {
80
+ throw 'invalid module definition, dependencies must be specified';
81
+ }
82
+
83
+ if (definition === undefined) {
84
+ throw 'invalid module definition, definition function must be specified';
85
+ }
86
+
87
+ require(dependencies, function() {
88
+ modules[id] = definition.apply(null, arguments);
89
+ });
90
+
91
+ if (--moduleCount === 0) {
92
+ for (i = 0; i < exposedModules.length; i++) {
93
+ register(exposedModules[i]);
94
+ }
95
+ }
96
+
97
+ // Expose private modules for unit tests
98
+ if (exports.AMDLC_TESTS) {
99
+ privateModules = exports.privateModules || {};
100
+
101
+ for (id in modules) {
102
+ privateModules[id] = modules[id];
103
+ }
104
+
105
+ for (i = 0; i < exposedModules.length; i++) {
106
+ delete privateModules[exposedModules[i]];
107
+ }
108
+
109
+ exports.privateModules = privateModules;
110
+ }
111
+
112
+ }
113
+
114
+ function expose(ids) {
115
+ exposedModules = ids;
116
+ }
117
+
118
+ function writeScripts() {
119
+ document.write(html);
120
+ }
121
+
122
+ function load(path) {
123
+ html += '<script type="text/javascript" src="' + baseDir + '/' + path + '"></script>\n';
124
+ moduleCount++;
125
+ }
126
+
127
+ // Expose globally
128
+ exports.define = define;
129
+ exports.require = require;
130
+
131
+ expose(["tinymce/pasteplugin/Utils"]);
132
+
133
+ load('classes/Utils.js');
134
+ load('classes/Clipboard.js');
135
+ load('classes/WordFilter.js');
136
+ load('classes/Quirks.js');
137
+ load('classes/Plugin.js');
138
+
139
+ writeScripts();
140
+ })(this);
141
+
142
+ // $hash: 38a5b4859702ab0a5d6417575a5f95fe
@@ -0,0 +1,1700 @@
1
+ /**
2
+ * Compiled inline version. (Library mode)
3
+ */
4
+
5
+ /*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
6
+ /*globals $code */
7
+
8
+ (function(exports, undefined) {
9
+ "use strict";
10
+
11
+ var modules = {};
12
+
13
+ function require(ids, callback) {
14
+ var module, defs = [];
15
+
16
+ for (var i = 0; i < ids.length; ++i) {
17
+ module = modules[ids[i]] || resolve(ids[i]);
18
+ if (!module) {
19
+ throw 'module definition dependecy not found: ' + ids[i];
20
+ }
21
+
22
+ defs.push(module);
23
+ }
24
+
25
+ callback.apply(null, defs);
26
+ }
27
+
28
+ function define(id, dependencies, definition) {
29
+ if (typeof id !== 'string') {
30
+ throw 'invalid module definition, module id must be defined and be a string';
31
+ }
32
+
33
+ if (dependencies === undefined) {
34
+ throw 'invalid module definition, dependencies must be specified';
35
+ }
36
+
37
+ if (definition === undefined) {
38
+ throw 'invalid module definition, definition function must be specified';
39
+ }
40
+
41
+ require(dependencies, function() {
42
+ modules[id] = definition.apply(null, arguments);
43
+ });
44
+ }
45
+
46
+ function defined(id) {
47
+ return !!modules[id];
48
+ }
49
+
50
+ function resolve(id) {
51
+ var target = exports;
52
+ var fragments = id.split(/[.\/]/);
53
+
54
+ for (var fi = 0; fi < fragments.length; ++fi) {
55
+ if (!target[fragments[fi]]) {
56
+ return;
57
+ }
58
+
59
+ target = target[fragments[fi]];
60
+ }
61
+
62
+ return target;
63
+ }
64
+
65
+ function expose(ids) {
66
+ var i, target, id, fragments, privateModules;
67
+
68
+ for (i = 0; i < ids.length; i++) {
69
+ target = exports;
70
+ id = ids[i];
71
+ fragments = id.split(/[.\/]/);
72
+
73
+ for (var fi = 0; fi < fragments.length - 1; ++fi) {
74
+ if (target[fragments[fi]] === undefined) {
75
+ target[fragments[fi]] = {};
76
+ }
77
+
78
+ target = target[fragments[fi]];
79
+ }
80
+
81
+ target[fragments[fragments.length - 1]] = modules[id];
82
+ }
83
+
84
+ // Expose private modules for unit tests
85
+ if (exports.AMDLC_TESTS) {
86
+ privateModules = exports.privateModules || {};
87
+
88
+ for (id in modules) {
89
+ privateModules[id] = modules[id];
90
+ }
91
+
92
+ for (i = 0; i < ids.length; i++) {
93
+ delete privateModules[ids[i]];
94
+ }
95
+
96
+ exports.privateModules = privateModules;
97
+ }
98
+ }
99
+
100
+ // Included from: js/tinymce/plugins/paste/classes/Utils.js
101
+
102
+ /**
103
+ * Utils.js
104
+ *
105
+ * Released under LGPL License.
106
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
107
+ *
108
+ * License: http://www.tinymce.com/license
109
+ * Contributing: http://www.tinymce.com/contributing
110
+ */
111
+
112
+ /**
113
+ * This class contails various utility functions for the paste plugin.
114
+ *
115
+ * @class tinymce.pasteplugin.Utils
116
+ */
117
+ define("tinymce/pasteplugin/Utils", [
118
+ "tinymce/util/Tools",
119
+ "tinymce/html/DomParser",
120
+ "tinymce/html/Schema"
121
+ ], function(Tools, DomParser, Schema) {
122
+ function filter(content, items) {
123
+ Tools.each(items, function(v) {
124
+ if (v.constructor == RegExp) {
125
+ content = content.replace(v, '');
126
+ } else {
127
+ content = content.replace(v[0], v[1]);
128
+ }
129
+ });
130
+
131
+ return content;
132
+ }
133
+
134
+ /**
135
+ * Gets the innerText of the specified element. It will handle edge cases
136
+ * and works better than textContent on Gecko.
137
+ *
138
+ * @param {String} html HTML string to get text from.
139
+ * @return {String} String of text with line feeds.
140
+ */
141
+ function innerText(html) {
142
+ var schema = new Schema(), domParser = new DomParser({}, schema), text = '';
143
+ var shortEndedElements = schema.getShortEndedElements();
144
+ var ignoreElements = Tools.makeMap('script noscript style textarea video audio iframe object', ' ');
145
+ var blockElements = schema.getBlockElements();
146
+
147
+ function walk(node) {
148
+ var name = node.name, currentNode = node;
149
+
150
+ if (name === 'br') {
151
+ text += '\n';
152
+ return;
153
+ }
154
+
155
+ // img/input/hr
156
+ if (shortEndedElements[name]) {
157
+ text += ' ';
158
+ }
159
+
160
+ // Ingore script, video contents
161
+ if (ignoreElements[name]) {
162
+ text += ' ';
163
+ return;
164
+ }
165
+
166
+ if (node.type == 3) {
167
+ text += node.value;
168
+ }
169
+
170
+ // Walk all children
171
+ if (!node.shortEnded) {
172
+ if ((node = node.firstChild)) {
173
+ do {
174
+ walk(node);
175
+ } while ((node = node.next));
176
+ }
177
+ }
178
+
179
+ // Add \n or \n\n for blocks or P
180
+ if (blockElements[name] && currentNode.next) {
181
+ text += '\n';
182
+
183
+ if (name == 'p') {
184
+ text += '\n';
185
+ }
186
+ }
187
+ }
188
+
189
+ html = filter(html, [
190
+ /<!\[[^\]]+\]>/g // Conditional comments
191
+ ]);
192
+
193
+ walk(domParser.parse(html));
194
+
195
+ return text;
196
+ }
197
+
198
+ /**
199
+ * Trims the specified HTML by removing all WebKit fragments, all elements wrapping the body trailing BR elements etc.
200
+ *
201
+ * @param {String} html Html string to trim contents on.
202
+ * @return {String} Html contents that got trimmed.
203
+ */
204
+ function trimHtml(html) {
205
+ function trimSpaces(all, s1, s2) {
206
+ // WebKit &nbsp; meant to preserve multiple spaces but instead inserted around all inline tags,
207
+ // including the spans with inline styles created on paste
208
+ if (!s1 && !s2) {
209
+ return ' ';
210
+ }
211
+
212
+ return '\u00a0';
213
+ }
214
+
215
+ html = filter(html, [
216
+ /^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g, // Remove anything but the contents within the BODY element
217
+ /<!--StartFragment-->|<!--EndFragment-->/g, // Inner fragments (tables from excel on mac)
218
+ [/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g, trimSpaces],
219
+ /<br>$/i // Trailing BR elements
220
+ ]);
221
+
222
+ return html;
223
+ }
224
+
225
+ return {
226
+ filter: filter,
227
+ innerText: innerText,
228
+ trimHtml: trimHtml
229
+ };
230
+ });
231
+
232
+ // Included from: js/tinymce/plugins/paste/classes/Clipboard.js
233
+
234
+ /**
235
+ * Clipboard.js
236
+ *
237
+ * Released under LGPL License.
238
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
239
+ *
240
+ * License: http://www.tinymce.com/license
241
+ * Contributing: http://www.tinymce.com/contributing
242
+ */
243
+
244
+ /**
245
+ * This class contains logic for getting HTML contents out of the clipboard.
246
+ *
247
+ * We need to make a lot of ugly hacks to get the contents out of the clipboard since
248
+ * the W3C Clipboard API is broken in all browsers that have it: Gecko/WebKit/Blink.
249
+ * We might rewrite this the way those API:s stabilize. Browsers doesn't handle pasting
250
+ * from applications like Word the same way as it does when pasting into a contentEditable area
251
+ * so we need to do lots of extra work to try to get to this clipboard data.
252
+ *
253
+ * Current implementation steps:
254
+ * 1. On keydown with paste keys Ctrl+V or Shift+Insert create
255
+ * a paste bin element and move focus to that element.
256
+ * 2. Wait for the browser to fire a "paste" event and get the contents out of the paste bin.
257
+ * 3. Check if the paste was successful if true, process the HTML.
258
+ * (4). If the paste was unsuccessful use IE execCommand, Clipboard API, document.dataTransfer old WebKit API etc.
259
+ *
260
+ * @class tinymce.pasteplugin.Clipboard
261
+ * @private
262
+ */
263
+ define("tinymce/pasteplugin/Clipboard", [
264
+ "tinymce/Env",
265
+ "tinymce/dom/RangeUtils",
266
+ "tinymce/util/VK",
267
+ "tinymce/pasteplugin/Utils"
268
+ ], function(Env, RangeUtils, VK, Utils) {
269
+ return function(editor) {
270
+ var self = this, pasteBinElm, lastRng, keyboardPasteTimeStamp = 0, draggingInternally = false;
271
+ var pasteBinDefaultContent = '%MCEPASTEBIN%', keyboardPastePlainTextState;
272
+ var mceInternalUrlPrefix = 'data:text/mce-internal,';
273
+
274
+ /**
275
+ * Pastes the specified HTML. This means that the HTML is filtered and then
276
+ * inserted at the current selection in the editor. It will also fire paste events
277
+ * for custom user filtering.
278
+ *
279
+ * @param {String} html HTML code to paste into the current selection.
280
+ */
281
+ function pasteHtml(html) {
282
+ var args, dom = editor.dom;
283
+
284
+ args = editor.fire('BeforePastePreProcess', {content: html}); // Internal event used by Quirks
285
+ args = editor.fire('PastePreProcess', args);
286
+ html = args.content;
287
+
288
+ if (!args.isDefaultPrevented()) {
289
+ // User has bound PastePostProcess events then we need to pass it through a DOM node
290
+ // This is not ideal but we don't want to let the browser mess up the HTML for example
291
+ // some browsers add &nbsp; to P tags etc
292
+ if (editor.hasEventListeners('PastePostProcess') && !args.isDefaultPrevented()) {
293
+ // We need to attach the element to the DOM so Sizzle selectors work on the contents
294
+ var tempBody = dom.add(editor.getBody(), 'div', {style: 'display:none'}, html);
295
+ args = editor.fire('PastePostProcess', {node: tempBody});
296
+ dom.remove(tempBody);
297
+ html = args.node.innerHTML;
298
+ }
299
+
300
+ if (!args.isDefaultPrevented()) {
301
+ editor.insertContent(html, {merge: editor.settings.paste_merge_formats !== false, data: {paste: true}});
302
+ }
303
+ }
304
+ }
305
+
306
+ /**
307
+ * Pastes the specified text. This means that the plain text is processed
308
+ * and converted into BR and P elements. It will fire paste events for custom filtering.
309
+ *
310
+ * @param {String} text Text to paste as the current selection location.
311
+ */
312
+ function pasteText(text) {
313
+ text = editor.dom.encode(text).replace(/\r\n/g, '\n');
314
+
315
+ var startBlock = editor.dom.getParent(editor.selection.getStart(), editor.dom.isBlock);
316
+
317
+ // Create start block html for example <p attr="value">
318
+ var forcedRootBlockName = editor.settings.forced_root_block;
319
+ var forcedRootBlockStartHtml;
320
+ if (forcedRootBlockName) {
321
+ forcedRootBlockStartHtml = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs);
322
+ forcedRootBlockStartHtml = forcedRootBlockStartHtml.substr(0, forcedRootBlockStartHtml.length - 3) + '>';
323
+ }
324
+
325
+ if ((startBlock && /^(PRE|DIV)$/.test(startBlock.nodeName)) || !forcedRootBlockName) {
326
+ text = Utils.filter(text, [
327
+ [/\n/g, "<br>"]
328
+ ]);
329
+ } else {
330
+ text = Utils.filter(text, [
331
+ [/\n\n/g, "</p>" + forcedRootBlockStartHtml],
332
+ [/^(.*<\/p>)(<p>)$/, forcedRootBlockStartHtml + '$1'],
333
+ [/\n/g, "<br />"]
334
+ ]);
335
+
336
+ if (text.indexOf('<p>') != -1) {
337
+ text = forcedRootBlockStartHtml + text;
338
+ }
339
+ }
340
+
341
+ pasteHtml(text);
342
+ }
343
+
344
+ /**
345
+ * Creates a paste bin element as close as possible to the current caret location and places the focus inside that element
346
+ * so that when the real paste event occurs the contents gets inserted into this element
347
+ * instead of the current editor selection element.
348
+ */
349
+ function createPasteBin() {
350
+ var dom = editor.dom, body = editor.getBody();
351
+ var viewport = editor.dom.getViewPort(editor.getWin()), scrollTop = viewport.y, top = 20;
352
+ var scrollContainer;
353
+
354
+ lastRng = editor.selection.getRng();
355
+
356
+ if (editor.inline) {
357
+ scrollContainer = editor.selection.getScrollContainer();
358
+
359
+ // Can't always rely on scrollTop returning a useful value.
360
+ // It returns 0 if the browser doesn't support scrollTop for the element or is non-scrollable
361
+ if (scrollContainer && scrollContainer.scrollTop > 0) {
362
+ scrollTop = scrollContainer.scrollTop;
363
+ }
364
+ }
365
+
366
+ /**
367
+ * Returns the rect of the current caret if the caret is in an empty block before a
368
+ * BR we insert a temporary invisible character that we get the rect this way we always get a proper rect.
369
+ *
370
+ * TODO: This might be useful in core.
371
+ */
372
+ function getCaretRect(rng) {
373
+ var rects, textNode, node, container = rng.startContainer;
374
+
375
+ rects = rng.getClientRects();
376
+ if (rects.length) {
377
+ return rects[0];
378
+ }
379
+
380
+ if (!rng.collapsed || container.nodeType != 1) {
381
+ return;
382
+ }
383
+
384
+ node = container.childNodes[lastRng.startOffset];
385
+
386
+ // Skip empty whitespace nodes
387
+ while (node && node.nodeType == 3 && !node.data.length) {
388
+ node = node.nextSibling;
389
+ }
390
+
391
+ if (!node) {
392
+ return;
393
+ }
394
+
395
+ // Check if the location is |<br>
396
+ // TODO: Might need to expand this to say |<table>
397
+ if (node.tagName == 'BR') {
398
+ textNode = dom.doc.createTextNode('\uFEFF');
399
+ node.parentNode.insertBefore(textNode, node);
400
+
401
+ rng = dom.createRng();
402
+ rng.setStartBefore(textNode);
403
+ rng.setEndAfter(textNode);
404
+
405
+ rects = rng.getClientRects();
406
+ dom.remove(textNode);
407
+ }
408
+
409
+ if (rects.length) {
410
+ return rects[0];
411
+ }
412
+ }
413
+
414
+ // Calculate top cordinate this is needed to avoid scrolling to top of document
415
+ // We want the paste bin to be as close to the caret as possible to avoid scrolling
416
+ if (lastRng.getClientRects) {
417
+ var rect = getCaretRect(lastRng);
418
+
419
+ if (rect) {
420
+ // Client rects gets us closes to the actual
421
+ // caret location in for example a wrapped paragraph block
422
+ top = scrollTop + (rect.top - dom.getPos(body).y);
423
+ } else {
424
+ top = scrollTop;
425
+
426
+ // Check if we can find a closer location by checking the range element
427
+ var container = lastRng.startContainer;
428
+ if (container) {
429
+ if (container.nodeType == 3 && container.parentNode != body) {
430
+ container = container.parentNode;
431
+ }
432
+
433
+ if (container.nodeType == 1) {
434
+ top = dom.getPos(container, scrollContainer || body).y;
435
+ }
436
+ }
437
+ }
438
+ }
439
+
440
+ // Create a pastebin
441
+ pasteBinElm = dom.add(editor.getBody(), 'div', {
442
+ id: "mcepastebin",
443
+ contentEditable: true,
444
+ "data-mce-bogus": "all",
445
+ style: 'position: absolute; top: ' + top + 'px;' +
446
+ 'width: 10px; height: 10px; overflow: hidden; opacity: 0'
447
+ }, pasteBinDefaultContent);
448
+
449
+ // Move paste bin out of sight since the controlSelection rect gets displayed otherwise on IE and Gecko
450
+ if (Env.ie || Env.gecko) {
451
+ dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) == 'rtl' ? 0xFFFF : -0xFFFF);
452
+ }
453
+
454
+ // Prevent focus events from bubbeling fixed FocusManager issues
455
+ dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function(e) {
456
+ e.stopPropagation();
457
+ });
458
+
459
+ pasteBinElm.focus();
460
+ editor.selection.select(pasteBinElm, true);
461
+ }
462
+
463
+ /**
464
+ * Removes the paste bin if it exists.
465
+ */
466
+ function removePasteBin() {
467
+ if (pasteBinElm) {
468
+ var pasteBinClone;
469
+
470
+ // WebKit/Blink might clone the div so
471
+ // lets make sure we remove all clones
472
+ // TODO: Man o man is this ugly. WebKit is the new IE! Remove this if they ever fix it!
473
+ while ((pasteBinClone = editor.dom.get('mcepastebin'))) {
474
+ editor.dom.remove(pasteBinClone);
475
+ editor.dom.unbind(pasteBinClone);
476
+ }
477
+
478
+ if (lastRng) {
479
+ editor.selection.setRng(lastRng);
480
+ }
481
+ }
482
+
483
+ pasteBinElm = lastRng = null;
484
+ }
485
+
486
+ /**
487
+ * Returns the contents of the paste bin as a HTML string.
488
+ *
489
+ * @return {String} Get the contents of the paste bin.
490
+ */
491
+ function getPasteBinHtml() {
492
+ var html = '', pasteBinClones, i, clone, cloneHtml;
493
+
494
+ // Since WebKit/Chrome might clone the paste bin when pasting
495
+ // for example: <img style="float: right"> we need to check if any of them contains some useful html.
496
+ // TODO: Man o man is this ugly. WebKit is the new IE! Remove this if they ever fix it!
497
+ pasteBinClones = editor.dom.select('div[id=mcepastebin]');
498
+ for (i = 0; i < pasteBinClones.length; i++) {
499
+ clone = pasteBinClones[i];
500
+
501
+ // Pasting plain text produces pastebins in pastebinds makes sence right!?
502
+ if (clone.firstChild && clone.firstChild.id == 'mcepastebin') {
503
+ clone = clone.firstChild;
504
+ }
505
+
506
+ cloneHtml = clone.innerHTML;
507
+ if (html != pasteBinDefaultContent) {
508
+ html += cloneHtml;
509
+ }
510
+ }
511
+
512
+ return html;
513
+ }
514
+
515
+ /**
516
+ * Some Windows 10/Edge versions will return a double encoded string. This checks if the
517
+ * content has this odd encoding and decodes it.
518
+ */
519
+ function decodeEdgeData(data) {
520
+ var i, out, fingerprint, code;
521
+
522
+ // Check if data is encoded
523
+ fingerprint = [25942, 29554, 28521, 14958];
524
+ for (i = 0; i < fingerprint.length; i++) {
525
+ if (data.charCodeAt(i) != fingerprint[i]) {
526
+ return data;
527
+ }
528
+ }
529
+
530
+ // Decode UTF-16 to UTF-8
531
+ out = '';
532
+ for (i = 0; i < data.length; i++) {
533
+ code = data.charCodeAt(i);
534
+
535
+ /*eslint no-bitwise:0*/
536
+ out += String.fromCharCode((code & 0x00FF));
537
+ out += String.fromCharCode((code & 0xFF00) >> 8);
538
+ }
539
+
540
+ // Decode UTF-8
541
+ return decodeURIComponent(escape(out));
542
+ }
543
+
544
+ /**
545
+ * Extracts HTML contents from within a fragment.
546
+ */
547
+ function extractFragment(data) {
548
+ var idx, startFragment, endFragment;
549
+
550
+ startFragment = '<!--StartFragment-->';
551
+ idx = data.indexOf(startFragment);
552
+ if (idx !== -1) {
553
+ data = data.substr(idx + startFragment.length);
554
+ }
555
+
556
+ endFragment = '<!--EndFragment-->';
557
+ idx = data.indexOf(endFragment);
558
+ if (idx !== -1) {
559
+ data = data.substr(0, idx);
560
+ }
561
+
562
+ return data;
563
+ }
564
+
565
+ /**
566
+ * Gets various content types out of a datatransfer object.
567
+ *
568
+ * @param {DataTransfer} dataTransfer Event fired on paste.
569
+ * @return {Object} Object with mime types and data for those mime types.
570
+ */
571
+ function getDataTransferItems(dataTransfer) {
572
+ var items = {};
573
+
574
+ if (dataTransfer) {
575
+ // Use old WebKit/IE API
576
+ if (dataTransfer.getData) {
577
+ var legacyText = dataTransfer.getData('Text');
578
+ if (legacyText && legacyText.length > 0) {
579
+ if (legacyText.indexOf(mceInternalUrlPrefix) == -1) {
580
+ items['text/plain'] = legacyText;
581
+ }
582
+ }
583
+ }
584
+
585
+ if (dataTransfer.types) {
586
+ for (var i = 0; i < dataTransfer.types.length; i++) {
587
+ var contentType = dataTransfer.types[i],
588
+ data = dataTransfer.getData(contentType);
589
+
590
+ if (contentType == 'text/html') {
591
+ data = extractFragment(decodeEdgeData(data));
592
+ }
593
+
594
+ items[contentType] = data;
595
+ }
596
+ }
597
+ }
598
+
599
+ return items;
600
+ }
601
+
602
+ /**
603
+ * Gets various content types out of the Clipboard API. It will also get the
604
+ * plain text using older IE and WebKit API:s.
605
+ *
606
+ * @param {ClipboardEvent} clipboardEvent Event fired on paste.
607
+ * @return {Object} Object with mime types and data for those mime types.
608
+ */
609
+ function getClipboardContent(clipboardEvent) {
610
+ return getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);
611
+ }
612
+
613
+ /**
614
+ * Checks if the clipboard contains image data if it does it will take that data
615
+ * and convert it into a data url image and paste that image at the caret location.
616
+ *
617
+ * @param {ClipboardEvent} e Paste/drop event object.
618
+ * @param {DOMRange} rng Optional rng object to move selection to.
619
+ * @return {Boolean} true/false if the image data was found or not.
620
+ */
621
+ function pasteImageData(e, rng) {
622
+ var dataTransfer = e.clipboardData || e.dataTransfer;
623
+
624
+ function processItems(items) {
625
+ var i, item, reader, hadImage = false;
626
+
627
+ function pasteImage(reader) {
628
+ if (rng) {
629
+ editor.selection.setRng(rng);
630
+ rng = null;
631
+ }
632
+
633
+ pasteHtml('<img src="' + reader.result + '">');
634
+ }
635
+
636
+ if (items) {
637
+ for (i = 0; i < items.length; i++) {
638
+ item = items[i];
639
+
640
+ if (/^image\/(jpeg|png|gif|bmp)$/.test(item.type)) {
641
+ reader = new FileReader();
642
+ reader.onload = pasteImage.bind(null, reader);
643
+ reader.readAsDataURL(item.getAsFile ? item.getAsFile() : item);
644
+
645
+ e.preventDefault();
646
+ hadImage = true;
647
+ }
648
+ }
649
+ }
650
+
651
+ return hadImage;
652
+ }
653
+
654
+ if (editor.settings.paste_data_images && dataTransfer) {
655
+ return processItems(dataTransfer.items) || processItems(dataTransfer.files);
656
+ }
657
+ }
658
+
659
+ /**
660
+ * Chrome on Android doesn't support proper clipboard access so we have no choice but to allow the browser default behavior.
661
+ *
662
+ * @param {Event} e Paste event object to check if it contains any data.
663
+ * @return {Boolean} true/false if the clipboard is empty or not.
664
+ */
665
+ function isBrokenAndroidClipboardEvent(e) {
666
+ var clipboardData = e.clipboardData;
667
+
668
+ return navigator.userAgent.indexOf('Android') != -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;
669
+ }
670
+
671
+ function getCaretRangeFromEvent(e) {
672
+ return RangeUtils.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());
673
+ }
674
+
675
+ function hasContentType(clipboardContent, mimeType) {
676
+ return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;
677
+ }
678
+
679
+ function isKeyboardPasteEvent(e) {
680
+ return (VK.metaKeyPressed(e) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45);
681
+ }
682
+
683
+ function registerEventHandlers() {
684
+ editor.on('keydown', function(e) {
685
+ function removePasteBinOnKeyUp(e) {
686
+ // Ctrl+V or Shift+Insert
687
+ if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
688
+ removePasteBin();
689
+ }
690
+ }
691
+
692
+ // Ctrl+V or Shift+Insert
693
+ if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
694
+ keyboardPastePlainTextState = e.shiftKey && e.keyCode == 86;
695
+
696
+ // Edge case on Safari on Mac where it doesn't handle Cmd+Shift+V correctly
697
+ // it fires the keydown but no paste or keyup so we are left with a paste bin
698
+ if (keyboardPastePlainTextState && Env.webkit && navigator.userAgent.indexOf('Version/') != -1) {
699
+ return;
700
+ }
701
+
702
+ // Prevent undoManager keydown handler from making an undo level with the pastebin in it
703
+ e.stopImmediatePropagation();
704
+
705
+ keyboardPasteTimeStamp = new Date().getTime();
706
+
707
+ // IE doesn't support Ctrl+Shift+V and it doesn't even produce a paste event
708
+ // so lets fake a paste event and let IE use the execCommand/dataTransfer methods
709
+ if (Env.ie && keyboardPastePlainTextState) {
710
+ e.preventDefault();
711
+ editor.fire('paste', {ieFake: true});
712
+ return;
713
+ }
714
+
715
+ removePasteBin();
716
+ createPasteBin();
717
+
718
+ // Remove pastebin if we get a keyup and no paste event
719
+ // For example pasting a file in IE 11 will not produce a paste event
720
+ editor.once('keyup', removePasteBinOnKeyUp);
721
+ editor.once('paste', function() {
722
+ editor.off('keyup', removePasteBinOnKeyUp);
723
+ });
724
+ }
725
+ });
726
+
727
+ editor.on('paste', function(e) {
728
+ // Getting content from the Clipboard can take some time
729
+ var clipboardTimer = new Date().getTime();
730
+ var clipboardContent = getClipboardContent(e);
731
+ var clipboardDelay = new Date().getTime() - clipboardTimer;
732
+
733
+ var isKeyBoardPaste = (new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay) < 1000;
734
+ var plainTextMode = self.pasteFormat == "text" || keyboardPastePlainTextState;
735
+
736
+ keyboardPastePlainTextState = false;
737
+
738
+ if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {
739
+ removePasteBin();
740
+ return;
741
+ }
742
+
743
+ if (pasteImageData(e)) {
744
+ removePasteBin();
745
+ return;
746
+ }
747
+
748
+ // Not a keyboard paste prevent default paste and try to grab the clipboard contents using different APIs
749
+ if (!isKeyBoardPaste) {
750
+ e.preventDefault();
751
+ }
752
+
753
+ // Try IE only method if paste isn't a keyboard paste
754
+ if (Env.ie && (!isKeyBoardPaste || e.ieFake)) {
755
+ createPasteBin();
756
+
757
+ editor.dom.bind(pasteBinElm, 'paste', function(e) {
758
+ e.stopPropagation();
759
+ });
760
+
761
+ editor.getDoc().execCommand('Paste', false, null);
762
+ clipboardContent["text/html"] = getPasteBinHtml();
763
+ }
764
+
765
+ setTimeout(function() {
766
+ var content;
767
+
768
+ // Grab HTML from Clipboard API or paste bin as a fallback
769
+ if (hasContentType(clipboardContent, 'text/html')) {
770
+ content = clipboardContent['text/html'];
771
+ } else {
772
+ content = getPasteBinHtml();
773
+
774
+ // If paste bin is empty try using plain text mode
775
+ // since that is better than nothing right
776
+ if (content == pasteBinDefaultContent) {
777
+ plainTextMode = true;
778
+ }
779
+ }
780
+
781
+ content = Utils.trimHtml(content);
782
+
783
+ // WebKit has a nice bug where it clones the paste bin if you paste from for example notepad
784
+ // so we need to force plain text mode in this case
785
+ if (pasteBinElm && pasteBinElm.firstChild && pasteBinElm.firstChild.id === 'mcepastebin') {
786
+ plainTextMode = true;
787
+ }
788
+
789
+ removePasteBin();
790
+
791
+ // If we got nothing from clipboard API and pastebin then we could try the last resort: plain/text
792
+ if (!content.length) {
793
+ plainTextMode = true;
794
+ }
795
+
796
+ // Grab plain text from Clipboard API or convert existing HTML to plain text
797
+ if (plainTextMode) {
798
+ // Use plain text contents from Clipboard API unless the HTML contains paragraphs then
799
+ // we should convert the HTML to plain text since works better when pasting HTML/Word contents as plain text
800
+ if (hasContentType(clipboardContent, 'text/plain') && content.indexOf('</p>') == -1) {
801
+ content = clipboardContent['text/plain'];
802
+ } else {
803
+ content = Utils.innerText(content);
804
+ }
805
+ }
806
+
807
+ // If the content is the paste bin default HTML then it was
808
+ // impossible to get the cliboard data out.
809
+ if (content == pasteBinDefaultContent) {
810
+ if (!isKeyBoardPaste) {
811
+ editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');
812
+ }
813
+
814
+ return;
815
+ }
816
+
817
+ if (plainTextMode) {
818
+ pasteText(content);
819
+ } else {
820
+ pasteHtml(content);
821
+ }
822
+ }, 0);
823
+ });
824
+
825
+ editor.on('dragstart dragend', function(e) {
826
+ draggingInternally = e.type == 'dragstart';
827
+ });
828
+
829
+ editor.on('drop', function(e) {
830
+ var rng = getCaretRangeFromEvent(e);
831
+
832
+ if (e.isDefaultPrevented() || draggingInternally) {
833
+ return;
834
+ }
835
+
836
+ if (pasteImageData(e, rng)) {
837
+ return;
838
+ }
839
+
840
+ if (rng && editor.settings.paste_filter_drop !== false) {
841
+ var dropContent = getDataTransferItems(e.dataTransfer);
842
+ var content = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];
843
+
844
+ if (content) {
845
+ e.preventDefault();
846
+
847
+ editor.undoManager.transact(function() {
848
+ if (dropContent['mce-internal']) {
849
+ editor.execCommand('Delete');
850
+ }
851
+
852
+ editor.selection.setRng(rng);
853
+
854
+ content = Utils.trimHtml(content);
855
+
856
+ if (!dropContent['text/html']) {
857
+ pasteText(content);
858
+ } else {
859
+ pasteHtml(content);
860
+ }
861
+ });
862
+ }
863
+ }
864
+ });
865
+
866
+ editor.on('dragover dragend', function(e) {
867
+ if (editor.settings.paste_data_images) {
868
+ e.preventDefault();
869
+ }
870
+ });
871
+ }
872
+
873
+ self.pasteHtml = pasteHtml;
874
+ self.pasteText = pasteText;
875
+
876
+ editor.on('preInit', function() {
877
+ registerEventHandlers();
878
+
879
+ // Remove all data images from paste for example from Gecko
880
+ // except internal images like video elements
881
+ editor.parser.addNodeFilter('img', function(nodes, name, args) {
882
+ function isPasteInsert(args) {
883
+ return args.data && args.data.paste === true;
884
+ }
885
+
886
+ function remove(node) {
887
+ if (!node.attr('data-mce-object') && src !== Env.transparentSrc) {
888
+ node.remove();
889
+ }
890
+ }
891
+
892
+ function isWebKitFakeUrl(src) {
893
+ return src.indexOf("webkit-fake-url") === 0;
894
+ }
895
+
896
+ function isDataUri(src) {
897
+ return src.indexOf("data:") === 0;
898
+ }
899
+
900
+ if (!editor.settings.paste_data_images && isPasteInsert(args)) {
901
+ var i = nodes.length;
902
+
903
+ while (i--) {
904
+ var src = nodes[i].attributes.map.src;
905
+
906
+ if (!src) {
907
+ continue;
908
+ }
909
+
910
+ // Safari on Mac produces webkit-fake-url see: https://bugs.webkit.org/show_bug.cgi?id=49141
911
+ if (isWebKitFakeUrl(src)) {
912
+ remove(nodes[i]);
913
+ } else if (!editor.settings.allow_html_data_urls && isDataUri(src)) {
914
+ remove(nodes[i]);
915
+ }
916
+ }
917
+ }
918
+ });
919
+ });
920
+ };
921
+ });
922
+
923
+ // Included from: js/tinymce/plugins/paste/classes/WordFilter.js
924
+
925
+ /**
926
+ * WordFilter.js
927
+ *
928
+ * Released under LGPL License.
929
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
930
+ *
931
+ * License: http://www.tinymce.com/license
932
+ * Contributing: http://www.tinymce.com/contributing
933
+ */
934
+
935
+ /**
936
+ * This class parses word HTML into proper TinyMCE markup.
937
+ *
938
+ * @class tinymce.pasteplugin.WordFilter
939
+ * @private
940
+ */
941
+ define("tinymce/pasteplugin/WordFilter", [
942
+ "tinymce/util/Tools",
943
+ "tinymce/html/DomParser",
944
+ "tinymce/html/Schema",
945
+ "tinymce/html/Serializer",
946
+ "tinymce/html/Node",
947
+ "tinymce/pasteplugin/Utils"
948
+ ], function(Tools, DomParser, Schema, Serializer, Node, Utils) {
949
+ /**
950
+ * Checks if the specified content is from any of the following sources: MS Word/Office 365/Google docs.
951
+ */
952
+ function isWordContent(content) {
953
+ return (
954
+ (/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i).test(content) ||
955
+ (/class="OutlineElement/).test(content) ||
956
+ (/id="?docs\-internal\-guid\-/.test(content))
957
+ );
958
+ }
959
+
960
+ /**
961
+ * Checks if the specified text starts with "1. " or "a. " etc.
962
+ */
963
+ function isNumericList(text) {
964
+ var found, patterns;
965
+
966
+ patterns = [
967
+ /^[IVXLMCD]{1,2}\.[ \u00a0]/, // Roman upper case
968
+ /^[ivxlmcd]{1,2}\.[ \u00a0]/, // Roman lower case
969
+ /^[a-z]{1,2}[\.\)][ \u00a0]/, // Alphabetical a-z
970
+ /^[A-Z]{1,2}[\.\)][ \u00a0]/, // Alphabetical A-Z
971
+ /^[0-9]+\.[ \u00a0]/, // Numeric lists
972
+ /^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/, // Japanese
973
+ /^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/ // Chinese
974
+ ];
975
+
976
+ text = text.replace(/^[\u00a0 ]+/, '');
977
+
978
+ Tools.each(patterns, function(pattern) {
979
+ if (pattern.test(text)) {
980
+ found = true;
981
+ return false;
982
+ }
983
+ });
984
+
985
+ return found;
986
+ }
987
+
988
+ function isBulletList(text) {
989
+ return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(text);
990
+ }
991
+
992
+ function WordFilter(editor) {
993
+ var settings = editor.settings;
994
+
995
+ editor.on('BeforePastePreProcess', function(e) {
996
+ var content = e.content, retainStyleProperties, validStyles;
997
+
998
+ // Remove google docs internal guid markers
999
+ content = content.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi, '');
1000
+ content = content.replace(/<br class="?Apple-interchange-newline"?>/gi, '');
1001
+
1002
+ retainStyleProperties = settings.paste_retain_style_properties;
1003
+ if (retainStyleProperties) {
1004
+ validStyles = Tools.makeMap(retainStyleProperties.split(/[, ]/));
1005
+ }
1006
+
1007
+ /**
1008
+ * Converts fake bullet and numbered lists to real semantic OL/UL.
1009
+ *
1010
+ * @param {tinymce.html.Node} node Root node to convert children of.
1011
+ */
1012
+ function convertFakeListsToProperLists(node) {
1013
+ var currentListNode, prevListNode, lastLevel = 1;
1014
+
1015
+ function getText(node) {
1016
+ var txt = '';
1017
+
1018
+ if (node.type === 3) {
1019
+ return node.value;
1020
+ }
1021
+
1022
+ if ((node = node.firstChild)) {
1023
+ do {
1024
+ txt += getText(node);
1025
+ } while ((node = node.next));
1026
+ }
1027
+
1028
+ return txt;
1029
+ }
1030
+
1031
+ function trimListStart(node, regExp) {
1032
+ if (node.type === 3) {
1033
+ if (regExp.test(node.value)) {
1034
+ node.value = node.value.replace(regExp, '');
1035
+ return false;
1036
+ }
1037
+ }
1038
+
1039
+ if ((node = node.firstChild)) {
1040
+ do {
1041
+ if (!trimListStart(node, regExp)) {
1042
+ return false;
1043
+ }
1044
+ } while ((node = node.next));
1045
+ }
1046
+
1047
+ return true;
1048
+ }
1049
+
1050
+ function removeIgnoredNodes(node) {
1051
+ if (node._listIgnore) {
1052
+ node.remove();
1053
+ return;
1054
+ }
1055
+
1056
+ if ((node = node.firstChild)) {
1057
+ do {
1058
+ removeIgnoredNodes(node);
1059
+ } while ((node = node.next));
1060
+ }
1061
+ }
1062
+
1063
+ function convertParagraphToLi(paragraphNode, listName, start) {
1064
+ var level = paragraphNode._listLevel || lastLevel;
1065
+
1066
+ // Handle list nesting
1067
+ if (level != lastLevel) {
1068
+ if (level < lastLevel) {
1069
+ // Move to parent list
1070
+ if (currentListNode) {
1071
+ currentListNode = currentListNode.parent.parent;
1072
+ }
1073
+ } else {
1074
+ // Create new list
1075
+ prevListNode = currentListNode;
1076
+ currentListNode = null;
1077
+ }
1078
+ }
1079
+
1080
+ if (!currentListNode || currentListNode.name != listName) {
1081
+ prevListNode = prevListNode || currentListNode;
1082
+ currentListNode = new Node(listName, 1);
1083
+
1084
+ if (start > 1) {
1085
+ currentListNode.attr('start', '' + start);
1086
+ }
1087
+
1088
+ paragraphNode.wrap(currentListNode);
1089
+ } else {
1090
+ currentListNode.append(paragraphNode);
1091
+ }
1092
+
1093
+ paragraphNode.name = 'li';
1094
+
1095
+ // Append list to previous list if it exists
1096
+ if (level > lastLevel && prevListNode) {
1097
+ prevListNode.lastChild.append(currentListNode);
1098
+ }
1099
+
1100
+ lastLevel = level;
1101
+
1102
+ // Remove start of list item "1. " or "&middot; " etc
1103
+ removeIgnoredNodes(paragraphNode);
1104
+ trimListStart(paragraphNode, /^\u00a0+/);
1105
+ trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);
1106
+ trimListStart(paragraphNode, /^\u00a0+/);
1107
+ }
1108
+
1109
+ // Build a list of all root level elements before we start
1110
+ // altering them in the loop below.
1111
+ var elements = [], child = node.firstChild;
1112
+ while (typeof child !== 'undefined' && child !== null) {
1113
+ elements.push(child);
1114
+
1115
+ child = child.walk();
1116
+ if (child !== null) {
1117
+ while (typeof child !== 'undefined' && child.parent !== node) {
1118
+ child = child.walk();
1119
+ }
1120
+ }
1121
+ }
1122
+
1123
+ for (var i = 0; i < elements.length; i++) {
1124
+ node = elements[i];
1125
+
1126
+ if (node.name == 'p' && node.firstChild) {
1127
+ // Find first text node in paragraph
1128
+ var nodeText = getText(node);
1129
+
1130
+ // Detect unordered lists look for bullets
1131
+ if (isBulletList(nodeText)) {
1132
+ convertParagraphToLi(node, 'ul');
1133
+ continue;
1134
+ }
1135
+
1136
+ // Detect ordered lists 1., a. or ixv.
1137
+ if (isNumericList(nodeText)) {
1138
+ // Parse OL start number
1139
+ var matches = /([0-9]+)\./.exec(nodeText);
1140
+ var start = 1;
1141
+ if (matches) {
1142
+ start = parseInt(matches[1], 10);
1143
+ }
1144
+
1145
+ convertParagraphToLi(node, 'ol', start);
1146
+ continue;
1147
+ }
1148
+
1149
+ // Convert paragraphs marked as lists but doesn't look like anything
1150
+ if (node._listLevel) {
1151
+ convertParagraphToLi(node, 'ul', 1);
1152
+ continue;
1153
+ }
1154
+
1155
+ currentListNode = null;
1156
+ } else {
1157
+ // If the root level element isn't a p tag which can be
1158
+ // processed by convertParagraphToLi, it interrupts the
1159
+ // lists, causing a new list to start instead of having
1160
+ // elements from the next list inserted above this tag.
1161
+ prevListNode = currentListNode;
1162
+ currentListNode = null;
1163
+ }
1164
+ }
1165
+ }
1166
+
1167
+ function filterStyles(node, styleValue) {
1168
+ var outputStyles = {}, matches, styles = editor.dom.parseStyle(styleValue);
1169
+
1170
+ Tools.each(styles, function(value, name) {
1171
+ // Convert various MS styles to W3C styles
1172
+ switch (name) {
1173
+ case 'mso-list':
1174
+ // Parse out list indent level for lists
1175
+ matches = /\w+ \w+([0-9]+)/i.exec(styleValue);
1176
+ if (matches) {
1177
+ node._listLevel = parseInt(matches[1], 10);
1178
+ }
1179
+
1180
+ // Remove these nodes <span style="mso-list:Ignore">o</span>
1181
+ // Since the span gets removed we mark the text node and the span
1182
+ if (/Ignore/i.test(value) && node.firstChild) {
1183
+ node._listIgnore = true;
1184
+ node.firstChild._listIgnore = true;
1185
+ }
1186
+
1187
+ break;
1188
+
1189
+ case "horiz-align":
1190
+ name = "text-align";
1191
+ break;
1192
+
1193
+ case "vert-align":
1194
+ name = "vertical-align";
1195
+ break;
1196
+
1197
+ case "font-color":
1198
+ case "mso-foreground":
1199
+ name = "color";
1200
+ break;
1201
+
1202
+ case "mso-background":
1203
+ case "mso-highlight":
1204
+ name = "background";
1205
+ break;
1206
+
1207
+ case "font-weight":
1208
+ case "font-style":
1209
+ if (value != "normal") {
1210
+ outputStyles[name] = value;
1211
+ }
1212
+ return;
1213
+
1214
+ case "mso-element":
1215
+ // Remove track changes code
1216
+ if (/^(comment|comment-list)$/i.test(value)) {
1217
+ node.remove();
1218
+ return;
1219
+ }
1220
+
1221
+ break;
1222
+ }
1223
+
1224
+ if (name.indexOf('mso-comment') === 0) {
1225
+ node.remove();
1226
+ return;
1227
+ }
1228
+
1229
+ // Never allow mso- prefixed names
1230
+ if (name.indexOf('mso-') === 0) {
1231
+ return;
1232
+ }
1233
+
1234
+ // Output only valid styles
1235
+ if (retainStyleProperties == "all" || (validStyles && validStyles[name])) {
1236
+ outputStyles[name] = value;
1237
+ }
1238
+ });
1239
+
1240
+ // Convert bold style to "b" element
1241
+ if (/(bold)/i.test(outputStyles["font-weight"])) {
1242
+ delete outputStyles["font-weight"];
1243
+ node.wrap(new Node("b", 1));
1244
+ }
1245
+
1246
+ // Convert italic style to "i" element
1247
+ if (/(italic)/i.test(outputStyles["font-style"])) {
1248
+ delete outputStyles["font-style"];
1249
+ node.wrap(new Node("i", 1));
1250
+ }
1251
+
1252
+ // Serialize the styles and see if there is something left to keep
1253
+ outputStyles = editor.dom.serializeStyle(outputStyles, node.name);
1254
+ if (outputStyles) {
1255
+ return outputStyles;
1256
+ }
1257
+
1258
+ return null;
1259
+ }
1260
+
1261
+ if (settings.paste_enable_default_filters === false) {
1262
+ return;
1263
+ }
1264
+
1265
+ // Detect is the contents is Word junk HTML
1266
+ if (isWordContent(e.content)) {
1267
+ e.wordContent = true; // Mark it for other processors
1268
+
1269
+ // Remove basic Word junk
1270
+ content = Utils.filter(content, [
1271
+ // Word comments like conditional comments etc
1272
+ /<!--[\s\S]+?-->/gi,
1273
+
1274
+ // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content,
1275
+ // MS Office namespaced tags, and a few other tags
1276
+ /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
1277
+
1278
+ // Convert <s> into <strike> for line-though
1279
+ [/<(\/?)s>/gi, "<$1strike>"],
1280
+
1281
+ // Replace nsbp entites to char since it's easier to handle
1282
+ [/&nbsp;/gi, "\u00a0"],
1283
+
1284
+ // Convert <span style="mso-spacerun:yes">___</span> to string of alternating
1285
+ // breaking/non-breaking spaces of same length
1286
+ [/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
1287
+ function(str, spaces) {
1288
+ return (spaces.length > 0) ?
1289
+ spaces.replace(/./, " ").slice(Math.floor(spaces.length / 2)).split("").join("\u00a0") : "";
1290
+ }
1291
+ ]
1292
+ ]);
1293
+
1294
+ var validElements = settings.paste_word_valid_elements;
1295
+ if (!validElements) {
1296
+ validElements = (
1297
+ '-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' +
1298
+ '-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' +
1299
+ 'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody'
1300
+ );
1301
+ }
1302
+
1303
+ // Setup strict schema
1304
+ var schema = new Schema({
1305
+ valid_elements: validElements,
1306
+ valid_children: '-li[p]'
1307
+ });
1308
+
1309
+ // Add style/class attribute to all element rules since the user might have removed them from
1310
+ // paste_word_valid_elements config option and we need to check them for properties
1311
+ Tools.each(schema.elements, function(rule) {
1312
+ /*eslint dot-notation:0*/
1313
+ if (!rule.attributes["class"]) {
1314
+ rule.attributes["class"] = {};
1315
+ rule.attributesOrder.push("class");
1316
+ }
1317
+
1318
+ if (!rule.attributes.style) {
1319
+ rule.attributes.style = {};
1320
+ rule.attributesOrder.push("style");
1321
+ }
1322
+ });
1323
+
1324
+ // Parse HTML into DOM structure
1325
+ var domParser = new DomParser({}, schema);
1326
+
1327
+ // Filter styles to remove "mso" specific styles and convert some of them
1328
+ domParser.addAttributeFilter('style', function(nodes) {
1329
+ var i = nodes.length, node;
1330
+
1331
+ while (i--) {
1332
+ node = nodes[i];
1333
+ node.attr('style', filterStyles(node, node.attr('style')));
1334
+
1335
+ // Remove pointess spans
1336
+ if (node.name == 'span' && node.parent && !node.attributes.length) {
1337
+ node.unwrap();
1338
+ }
1339
+ }
1340
+ });
1341
+
1342
+ // Check the class attribute for comments or del items and remove those
1343
+ domParser.addAttributeFilter('class', function(nodes) {
1344
+ var i = nodes.length, node, className;
1345
+
1346
+ while (i--) {
1347
+ node = nodes[i];
1348
+
1349
+ className = node.attr('class');
1350
+ if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {
1351
+ node.remove();
1352
+ }
1353
+
1354
+ node.attr('class', null);
1355
+ }
1356
+ });
1357
+
1358
+ // Remove all del elements since we don't want the track changes code in the editor
1359
+ domParser.addNodeFilter('del', function(nodes) {
1360
+ var i = nodes.length;
1361
+
1362
+ while (i--) {
1363
+ nodes[i].remove();
1364
+ }
1365
+ });
1366
+
1367
+ // Keep some of the links and anchors
1368
+ domParser.addNodeFilter('a', function(nodes) {
1369
+ var i = nodes.length, node, href, name;
1370
+
1371
+ while (i--) {
1372
+ node = nodes[i];
1373
+ href = node.attr('href');
1374
+ name = node.attr('name');
1375
+
1376
+ if (href && href.indexOf('#_msocom_') != -1) {
1377
+ node.remove();
1378
+ continue;
1379
+ }
1380
+
1381
+ if (href && href.indexOf('file://') === 0) {
1382
+ href = href.split('#')[1];
1383
+ if (href) {
1384
+ href = '#' + href;
1385
+ }
1386
+ }
1387
+
1388
+ if (!href && !name) {
1389
+ node.unwrap();
1390
+ } else {
1391
+ // Remove all named anchors that aren't specific to TOC, Footnotes or Endnotes
1392
+ if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {
1393
+ node.unwrap();
1394
+ continue;
1395
+ }
1396
+
1397
+ node.attr({
1398
+ href: href,
1399
+ name: name
1400
+ });
1401
+ }
1402
+ }
1403
+ });
1404
+
1405
+ // Parse into DOM structure
1406
+ var rootNode = domParser.parse(content);
1407
+
1408
+ // Process DOM
1409
+ if (settings.paste_convert_word_fake_lists !== false) {
1410
+ convertFakeListsToProperLists(rootNode);
1411
+ }
1412
+
1413
+ // Serialize DOM back to HTML
1414
+ e.content = new Serializer({}, schema).serialize(rootNode);
1415
+ }
1416
+ });
1417
+ }
1418
+
1419
+ WordFilter.isWordContent = isWordContent;
1420
+
1421
+ return WordFilter;
1422
+ });
1423
+
1424
+ // Included from: js/tinymce/plugins/paste/classes/Quirks.js
1425
+
1426
+ /**
1427
+ * Quirks.js
1428
+ *
1429
+ * Released under LGPL License.
1430
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
1431
+ *
1432
+ * License: http://www.tinymce.com/license
1433
+ * Contributing: http://www.tinymce.com/contributing
1434
+ */
1435
+
1436
+ /**
1437
+ * This class contains various fixes for browsers. These issues can not be feature
1438
+ * detected since we have no direct control over the clipboard. However we might be able
1439
+ * to remove some of these fixes once the browsers gets updated/fixed.
1440
+ *
1441
+ * @class tinymce.pasteplugin.Quirks
1442
+ * @private
1443
+ */
1444
+ define("tinymce/pasteplugin/Quirks", [
1445
+ "tinymce/Env",
1446
+ "tinymce/util/Tools",
1447
+ "tinymce/pasteplugin/WordFilter",
1448
+ "tinymce/pasteplugin/Utils"
1449
+ ], function(Env, Tools, WordFilter, Utils) {
1450
+ "use strict";
1451
+
1452
+ return function(editor) {
1453
+ function addPreProcessFilter(filterFunc) {
1454
+ editor.on('BeforePastePreProcess', function(e) {
1455
+ e.content = filterFunc(e.content);
1456
+ });
1457
+ }
1458
+
1459
+ /**
1460
+ * Removes BR elements after block elements. IE9 has a nasty bug where it puts a BR element after each
1461
+ * block element when pasting from word. This removes those elements.
1462
+ *
1463
+ * This:
1464
+ * <p>a</p><br><p>b</p>
1465
+ *
1466
+ * Becomes:
1467
+ * <p>a</p><p>b</p>
1468
+ */
1469
+ function removeExplorerBrElementsAfterBlocks(html) {
1470
+ // Only filter word specific content
1471
+ if (!WordFilter.isWordContent(html)) {
1472
+ return html;
1473
+ }
1474
+
1475
+ // Produce block regexp based on the block elements in schema
1476
+ var blockElements = [];
1477
+
1478
+ Tools.each(editor.schema.getBlockElements(), function(block, blockName) {
1479
+ blockElements.push(blockName);
1480
+ });
1481
+
1482
+ var explorerBlocksRegExp = new RegExp(
1483
+ '(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?(' + blockElements.join('|') + ')[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*',
1484
+ 'g'
1485
+ );
1486
+
1487
+ // Remove BR:s from: <BLOCK>X</BLOCK><BR>
1488
+ html = Utils.filter(html, [
1489
+ [explorerBlocksRegExp, '$1']
1490
+ ]);
1491
+
1492
+ // IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break
1493
+ html = Utils.filter(html, [
1494
+ [/<br><br>/g, '<BR><BR>'], // Replace multiple BR elements with uppercase BR to keep them intact
1495
+ [/<br>/g, ' '], // Replace single br elements with space since they are word wrap BR:s
1496
+ [/<BR><BR>/g, '<br>'] // Replace back the double brs but into a single BR
1497
+ ]);
1498
+
1499
+ return html;
1500
+ }
1501
+
1502
+ /**
1503
+ * WebKit has a nasty bug where the all computed styles gets added to style attributes when copy/pasting contents.
1504
+ * This fix solves that by simply removing the whole style attribute.
1505
+ *
1506
+ * The paste_webkit_styles option can be set to specify what to keep:
1507
+ * paste_webkit_styles: "none" // Keep no styles
1508
+ * paste_webkit_styles: "all", // Keep all of them
1509
+ * paste_webkit_styles: "font-weight color" // Keep specific ones
1510
+ *
1511
+ * @param {String} content Content that needs to be processed.
1512
+ * @return {String} Processed contents.
1513
+ */
1514
+ function removeWebKitStyles(content) {
1515
+ // Passthrough all styles from Word and let the WordFilter handle that junk
1516
+ if (WordFilter.isWordContent(content)) {
1517
+ return content;
1518
+ }
1519
+
1520
+ // Filter away styles that isn't matching the target node
1521
+ var webKitStyles = editor.settings.paste_webkit_styles;
1522
+
1523
+ if (editor.settings.paste_remove_styles_if_webkit === false || webKitStyles == "all") {
1524
+ return content;
1525
+ }
1526
+
1527
+ if (webKitStyles) {
1528
+ webKitStyles = webKitStyles.split(/[, ]/);
1529
+ }
1530
+
1531
+ // Keep specific styles that doesn't match the current node computed style
1532
+ if (webKitStyles) {
1533
+ var dom = editor.dom, node = editor.selection.getNode();
1534
+
1535
+ content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function(all, before, value, after) {
1536
+ var inputStyles = dom.parseStyle(value, 'span'), outputStyles = {};
1537
+
1538
+ if (webKitStyles === "none") {
1539
+ return before + after;
1540
+ }
1541
+
1542
+ for (var i = 0; i < webKitStyles.length; i++) {
1543
+ var inputValue = inputStyles[webKitStyles[i]], currentValue = dom.getStyle(node, webKitStyles[i], true);
1544
+
1545
+ if (/color/.test(webKitStyles[i])) {
1546
+ inputValue = dom.toHex(inputValue);
1547
+ currentValue = dom.toHex(currentValue);
1548
+ }
1549
+
1550
+ if (currentValue != inputValue) {
1551
+ outputStyles[webKitStyles[i]] = inputValue;
1552
+ }
1553
+ }
1554
+
1555
+ outputStyles = dom.serializeStyle(outputStyles, 'span');
1556
+ if (outputStyles) {
1557
+ return before + ' style="' + outputStyles + '"' + after;
1558
+ }
1559
+
1560
+ return before + after;
1561
+ });
1562
+ } else {
1563
+ // Remove all external styles
1564
+ content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, '$1$3');
1565
+ }
1566
+
1567
+ // Keep internal styles
1568
+ content = content.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, function(all, before, value, after) {
1569
+ return before + ' style="' + value + '"' + after;
1570
+ });
1571
+
1572
+ return content;
1573
+ }
1574
+
1575
+ // Sniff browsers and apply fixes since we can't feature detect
1576
+ if (Env.webkit) {
1577
+ addPreProcessFilter(removeWebKitStyles);
1578
+ }
1579
+
1580
+ if (Env.ie) {
1581
+ addPreProcessFilter(removeExplorerBrElementsAfterBlocks);
1582
+ }
1583
+ };
1584
+ });
1585
+
1586
+ // Included from: js/tinymce/plugins/paste/classes/Plugin.js
1587
+
1588
+ /**
1589
+ * Plugin.js
1590
+ *
1591
+ * Released under LGPL License.
1592
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
1593
+ *
1594
+ * License: http://www.tinymce.com/license
1595
+ * Contributing: http://www.tinymce.com/contributing
1596
+ */
1597
+
1598
+ /**
1599
+ * This class contains the tinymce plugin logic for the paste plugin.
1600
+ *
1601
+ * @class tinymce.pasteplugin.Plugin
1602
+ * @private
1603
+ */
1604
+ define("tinymce/pasteplugin/Plugin", [
1605
+ "tinymce/PluginManager",
1606
+ "tinymce/pasteplugin/Clipboard",
1607
+ "tinymce/pasteplugin/WordFilter",
1608
+ "tinymce/pasteplugin/Quirks"
1609
+ ], function(PluginManager, Clipboard, WordFilter, Quirks) {
1610
+ var userIsInformed;
1611
+
1612
+ PluginManager.add('paste', function(editor) {
1613
+ var self = this, clipboard, settings = editor.settings;
1614
+
1615
+ function togglePlainTextPaste() {
1616
+ if (clipboard.pasteFormat == "text") {
1617
+ this.active(false);
1618
+ clipboard.pasteFormat = "html";
1619
+ } else {
1620
+ clipboard.pasteFormat = "text";
1621
+ this.active(true);
1622
+
1623
+ if (!userIsInformed) {
1624
+ editor.windowManager.alert(
1625
+ 'Paste is now in plain text mode. Contents will now ' +
1626
+ 'be pasted as plain text until you toggle this option off.'
1627
+ );
1628
+
1629
+ userIsInformed = true;
1630
+ }
1631
+ }
1632
+ }
1633
+
1634
+ self.clipboard = clipboard = new Clipboard(editor);
1635
+ self.quirks = new Quirks(editor);
1636
+ self.wordFilter = new WordFilter(editor);
1637
+
1638
+ if (editor.settings.paste_as_text) {
1639
+ self.clipboard.pasteFormat = "text";
1640
+ }
1641
+
1642
+ if (settings.paste_preprocess) {
1643
+ editor.on('PastePreProcess', function(e) {
1644
+ settings.paste_preprocess.call(self, self, e);
1645
+ });
1646
+ }
1647
+
1648
+ if (settings.paste_postprocess) {
1649
+ editor.on('PastePostProcess', function(e) {
1650
+ settings.paste_postprocess.call(self, self, e);
1651
+ });
1652
+ }
1653
+
1654
+ editor.addCommand('mceInsertClipboardContent', function(ui, value) {
1655
+ if (value.content) {
1656
+ self.clipboard.pasteHtml(value.content);
1657
+ }
1658
+
1659
+ if (value.text) {
1660
+ self.clipboard.pasteText(value.text);
1661
+ }
1662
+ });
1663
+
1664
+ // Block all drag/drop events
1665
+ if (editor.paste_block_drop) {
1666
+ editor.on('dragend dragover draggesture dragdrop drop drag', function(e) {
1667
+ e.preventDefault();
1668
+ e.stopPropagation();
1669
+ });
1670
+ }
1671
+
1672
+ // Prevent users from dropping data images on Gecko
1673
+ if (!editor.settings.paste_data_images) {
1674
+ editor.on('drop', function(e) {
1675
+ var dataTransfer = e.dataTransfer;
1676
+
1677
+ if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
1678
+ e.preventDefault();
1679
+ }
1680
+ });
1681
+ }
1682
+
1683
+ editor.addButton('pastetext', {
1684
+ icon: 'pastetext',
1685
+ tooltip: 'Paste as text',
1686
+ onclick: togglePlainTextPaste,
1687
+ active: self.clipboard.pasteFormat == "text"
1688
+ });
1689
+
1690
+ editor.addMenuItem('pastetext', {
1691
+ text: 'Paste as text',
1692
+ selectable: true,
1693
+ active: clipboard.pasteFormat,
1694
+ onclick: togglePlainTextPaste
1695
+ });
1696
+ });
1697
+ });
1698
+
1699
+ expose(["tinymce/pasteplugin/Utils"]);
1700
+ })(this);