integral 1.0.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +11 -49
  3. data/Rakefile +1 -1
  4. data/app/assets/images/integral/defaults/no_image_available.jpg +0 -0
  5. data/app/assets/images/logo.png +0 -0
  6. data/app/assets/javascripts/ckeditor/my_config.js.erb +26 -18
  7. data/app/assets/javascripts/ckeditor/plugins/autoembed/lang/lv.js +8 -0
  8. data/app/assets/javascripts/ckeditor/plugins/autoembed/plugin.js +1 -1
  9. data/app/assets/javascripts/ckeditor/plugins/autogrow/plugin.js +14 -14
  10. data/app/assets/javascripts/ckeditor/plugins/autogrow/samples/autogrow.html +8 -8
  11. data/app/assets/javascripts/ckeditor/plugins/codemirror/css/codemirror.min.css +1 -1
  12. data/app/assets/javascripts/ckeditor/plugins/codemirror/icons/autoformat.png +0 -0
  13. data/app/assets/javascripts/ckeditor/plugins/codemirror/icons/searchcode.png +0 -0
  14. data/app/assets/javascripts/ckeditor/plugins/codemirror/icons/uncommentselectedrange.png +0 -0
  15. data/app/assets/javascripts/ckeditor/plugins/codemirror/images/autocomplete.png +0 -0
  16. data/app/assets/javascripts/ckeditor/plugins/codemirror/images/autoformat.png +0 -0
  17. data/app/assets/javascripts/ckeditor/plugins/codemirror/images/commentselectedrange.png +0 -0
  18. data/app/assets/javascripts/ckeditor/plugins/codemirror/images/searchcode.png +0 -0
  19. data/app/assets/javascripts/ckeditor/plugins/codemirror/images/uncommentselectedrange.png +0 -0
  20. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/beautify.min.js +2 -2
  21. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.addons.min.js +2 -2
  22. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.addons.search.min.js +1 -1
  23. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.min.js +1 -6
  24. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.bbcodemixed.min.js +1 -1
  25. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.handlebars.min.js +1 -0
  26. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.htmlmixed.min.js +2 -2
  27. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.javascript.min.js +1 -1
  28. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.php.min.js +3 -3
  29. data/app/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.twig.min.js +1 -1
  30. data/app/assets/javascripts/ckeditor/plugins/codemirror/lang/bg.js +7 -7
  31. data/app/assets/javascripts/ckeditor/plugins/codemirror/plugin.js +231 -217
  32. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/darcula.css +46 -0
  33. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/gruvbox-dark.css +34 -0
  34. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/idea.css +42 -0
  35. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/lesser-dark.css +1 -1
  36. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/lucario.css +37 -0
  37. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/monokai.css +5 -0
  38. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/oceanic-next.css +44 -0
  39. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/shadowfox.css +52 -0
  40. data/app/assets/javascripts/ckeditor/plugins/codemirror/theme/ssms.css +16 -0
  41. data/app/assets/javascripts/ckeditor/plugins/embedbase/lang/ar.js +15 -0
  42. data/app/assets/javascripts/ckeditor/plugins/embedbase/lang/lv.js +15 -0
  43. data/app/assets/javascripts/ckeditor/plugins/embedbase/plugin.js +1 -1
  44. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/icons/copywidget.png +0 -0
  45. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/icons/editwidget.png +0 -0
  46. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/icons/hidpi/copywidget.png +0 -0
  47. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/icons/hidpi/editwidget.png +0 -0
  48. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/icons/hidpi/removewidget.png +0 -0
  49. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/icons/hidpi/widget.png +0 -0
  50. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/icons/removewidget.png +0 -0
  51. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/icons/widget.png +0 -0
  52. data/app/assets/javascripts/ckeditor/plugins/foundation-callout/plugin.js +86 -0
  53. data/app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image1.jpg +0 -0
  54. data/app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image2.jpg +0 -0
  55. data/app/assets/javascripts/ckeditor/plugins/image2/dev/contents.css +35 -0
  56. data/app/assets/javascripts/ckeditor/plugins/image2/dev/image2.html +339 -0
  57. data/app/assets/javascripts/ckeditor/plugins/image2/dialogs/image2.js +553 -0
  58. data/app/assets/javascripts/ckeditor/plugins/image2/icons/hidpi/image.png +0 -0
  59. data/app/assets/javascripts/ckeditor/plugins/image2/icons/image.png +0 -0
  60. data/app/assets/javascripts/ckeditor/plugins/image2/lang/af.js +21 -0
  61. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ar.js +21 -0
  62. data/app/assets/javascripts/ckeditor/plugins/image2/lang/az.js +21 -0
  63. data/app/assets/javascripts/ckeditor/plugins/image2/lang/bg.js +21 -0
  64. data/app/assets/javascripts/ckeditor/plugins/image2/lang/bn.js +21 -0
  65. data/app/assets/javascripts/ckeditor/plugins/image2/lang/bs.js +21 -0
  66. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ca.js +21 -0
  67. data/app/assets/javascripts/ckeditor/plugins/image2/lang/cs.js +21 -0
  68. data/app/assets/javascripts/ckeditor/plugins/image2/lang/cy.js +21 -0
  69. data/app/assets/javascripts/ckeditor/plugins/image2/lang/da.js +21 -0
  70. data/app/assets/javascripts/ckeditor/plugins/image2/lang/de-ch.js +21 -0
  71. data/app/assets/javascripts/ckeditor/plugins/image2/lang/de.js +21 -0
  72. data/app/assets/javascripts/ckeditor/plugins/image2/lang/el.js +21 -0
  73. data/app/assets/javascripts/ckeditor/plugins/image2/lang/en-au.js +21 -0
  74. data/app/assets/javascripts/ckeditor/plugins/image2/lang/en-ca.js +21 -0
  75. data/app/assets/javascripts/ckeditor/plugins/image2/lang/en-gb.js +21 -0
  76. data/app/assets/javascripts/ckeditor/plugins/image2/lang/en.js +21 -0
  77. data/app/assets/javascripts/ckeditor/plugins/image2/lang/eo.js +21 -0
  78. data/app/assets/javascripts/ckeditor/plugins/image2/lang/es-mx.js +21 -0
  79. data/app/assets/javascripts/ckeditor/plugins/image2/lang/es.js +21 -0
  80. data/app/assets/javascripts/ckeditor/plugins/image2/lang/et.js +21 -0
  81. data/app/assets/javascripts/ckeditor/plugins/image2/lang/eu.js +21 -0
  82. data/app/assets/javascripts/ckeditor/plugins/image2/lang/fa.js +21 -0
  83. data/app/assets/javascripts/ckeditor/plugins/image2/lang/fi.js +21 -0
  84. data/app/assets/javascripts/ckeditor/plugins/image2/lang/fo.js +21 -0
  85. data/app/assets/javascripts/ckeditor/plugins/image2/lang/fr-ca.js +21 -0
  86. data/app/assets/javascripts/ckeditor/plugins/image2/lang/fr.js +21 -0
  87. data/app/assets/javascripts/ckeditor/plugins/image2/lang/gl.js +21 -0
  88. data/app/assets/javascripts/ckeditor/plugins/image2/lang/gu.js +21 -0
  89. data/app/assets/javascripts/ckeditor/plugins/image2/lang/he.js +21 -0
  90. data/app/assets/javascripts/ckeditor/plugins/image2/lang/hi.js +21 -0
  91. data/app/assets/javascripts/ckeditor/plugins/image2/lang/hr.js +21 -0
  92. data/app/assets/javascripts/ckeditor/plugins/image2/lang/hu.js +21 -0
  93. data/app/assets/javascripts/ckeditor/plugins/image2/lang/id.js +21 -0
  94. data/app/assets/javascripts/ckeditor/plugins/image2/lang/is.js +21 -0
  95. data/app/assets/javascripts/ckeditor/plugins/image2/lang/it.js +21 -0
  96. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ja.js +21 -0
  97. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ka.js +21 -0
  98. data/app/assets/javascripts/ckeditor/plugins/image2/lang/km.js +21 -0
  99. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ko.js +21 -0
  100. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ku.js +21 -0
  101. data/app/assets/javascripts/ckeditor/plugins/image2/lang/lt.js +21 -0
  102. data/app/assets/javascripts/ckeditor/plugins/image2/lang/lv.js +21 -0
  103. data/app/assets/javascripts/ckeditor/plugins/image2/lang/mk.js +21 -0
  104. data/app/assets/javascripts/ckeditor/plugins/image2/lang/mn.js +21 -0
  105. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ms.js +21 -0
  106. data/app/assets/javascripts/ckeditor/plugins/image2/lang/nb.js +21 -0
  107. data/app/assets/javascripts/ckeditor/plugins/image2/lang/nl.js +21 -0
  108. data/app/assets/javascripts/ckeditor/plugins/image2/lang/no.js +21 -0
  109. data/app/assets/javascripts/ckeditor/plugins/image2/lang/oc.js +21 -0
  110. data/app/assets/javascripts/ckeditor/plugins/image2/lang/pl.js +21 -0
  111. data/app/assets/javascripts/ckeditor/plugins/image2/lang/pt-br.js +21 -0
  112. data/app/assets/javascripts/ckeditor/plugins/image2/lang/pt.js +21 -0
  113. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ro.js +21 -0
  114. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ru.js +21 -0
  115. data/app/assets/javascripts/ckeditor/plugins/image2/lang/si.js +21 -0
  116. data/app/assets/javascripts/ckeditor/plugins/image2/lang/sk.js +21 -0
  117. data/app/assets/javascripts/ckeditor/plugins/image2/lang/sl.js +21 -0
  118. data/app/assets/javascripts/ckeditor/plugins/image2/lang/sq.js +21 -0
  119. data/app/assets/javascripts/ckeditor/plugins/image2/lang/sr-latn.js +21 -0
  120. data/app/assets/javascripts/ckeditor/plugins/image2/lang/sr.js +21 -0
  121. data/app/assets/javascripts/ckeditor/plugins/image2/lang/sv.js +21 -0
  122. data/app/assets/javascripts/ckeditor/plugins/image2/lang/th.js +21 -0
  123. data/app/assets/javascripts/ckeditor/plugins/image2/lang/tr.js +21 -0
  124. data/app/assets/javascripts/ckeditor/plugins/image2/lang/tt.js +21 -0
  125. data/app/assets/javascripts/ckeditor/plugins/image2/lang/ug.js +21 -0
  126. data/app/assets/javascripts/ckeditor/plugins/image2/lang/uk.js +21 -0
  127. data/app/assets/javascripts/ckeditor/plugins/image2/lang/vi.js +21 -0
  128. data/app/assets/javascripts/ckeditor/plugins/image2/lang/zh-cn.js +21 -0
  129. data/app/assets/javascripts/ckeditor/plugins/image2/lang/zh.js +21 -0
  130. data/app/assets/javascripts/ckeditor/plugins/image2/plugin.js +1720 -0
  131. data/app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image1.jpg +0 -0
  132. data/app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image2.jpg +0 -0
  133. data/app/assets/javascripts/ckeditor/plugins/image2/samples/image2.html +68 -0
  134. data/app/assets/javascripts/ckeditor/plugins/lineutils/dev/dnd.html +4 -4
  135. data/app/assets/javascripts/ckeditor/plugins/lineutils/dev/magicfinger.html +4 -4
  136. data/app/assets/javascripts/ckeditor/plugins/lineutils/plugin.js +7 -7
  137. data/app/assets/javascripts/ckeditor/plugins/linkballoon/README.md +5 -0
  138. data/app/assets/javascripts/ckeditor/plugins/linkballoon/assets/demo.png +0 -0
  139. data/app/assets/javascripts/ckeditor/plugins/linkballoon/plugin.js +25 -0
  140. data/app/assets/javascripts/ckeditor/plugins/notification/lang/az.js +7 -0
  141. data/app/assets/javascripts/ckeditor/plugins/notification/lang/bg.js +7 -0
  142. data/app/assets/javascripts/ckeditor/plugins/notification/lang/ca.js +7 -0
  143. data/app/assets/javascripts/ckeditor/plugins/notification/lang/cs.js +2 -2
  144. data/app/assets/javascripts/ckeditor/plugins/notification/lang/da.js +2 -2
  145. data/app/assets/javascripts/ckeditor/plugins/notification/lang/de-ch.js +2 -2
  146. data/app/assets/javascripts/ckeditor/plugins/notification/lang/de.js +2 -2
  147. data/app/assets/javascripts/ckeditor/plugins/notification/lang/en-au.js +7 -0
  148. data/app/assets/javascripts/ckeditor/plugins/notification/lang/en.js +2 -2
  149. data/app/assets/javascripts/ckeditor/plugins/notification/lang/eo.js +2 -2
  150. data/app/assets/javascripts/ckeditor/plugins/notification/lang/es-mx.js +7 -0
  151. data/app/assets/javascripts/ckeditor/plugins/notification/lang/es.js +7 -0
  152. data/app/assets/javascripts/ckeditor/plugins/notification/lang/et.js +7 -0
  153. data/app/assets/javascripts/ckeditor/plugins/notification/lang/eu.js +2 -2
  154. data/app/assets/javascripts/ckeditor/plugins/notification/lang/fa.js +7 -0
  155. data/app/assets/javascripts/ckeditor/plugins/notification/lang/fr.js +3 -3
  156. data/app/assets/javascripts/ckeditor/plugins/notification/lang/gl.js +2 -2
  157. data/app/assets/javascripts/ckeditor/plugins/notification/lang/hr.js +7 -0
  158. data/app/assets/javascripts/ckeditor/plugins/notification/lang/hu.js +7 -0
  159. data/app/assets/javascripts/ckeditor/plugins/notification/lang/id.js +2 -2
  160. data/app/assets/javascripts/ckeditor/plugins/notification/lang/it.js +2 -2
  161. data/app/assets/javascripts/ckeditor/plugins/notification/lang/ja.js +7 -0
  162. data/app/assets/javascripts/ckeditor/plugins/notification/lang/km.js +2 -2
  163. data/app/assets/javascripts/ckeditor/plugins/notification/lang/ko.js +2 -2
  164. data/app/assets/javascripts/ckeditor/plugins/notification/lang/ku.js +2 -2
  165. data/app/assets/javascripts/ckeditor/plugins/notification/lang/lv.js +7 -0
  166. data/app/assets/javascripts/ckeditor/plugins/notification/lang/nb.js +2 -2
  167. data/app/assets/javascripts/ckeditor/plugins/notification/lang/nl.js +2 -2
  168. data/app/assets/javascripts/ckeditor/plugins/notification/lang/oc.js +7 -0
  169. data/app/assets/javascripts/ckeditor/plugins/notification/lang/pl.js +2 -2
  170. data/app/assets/javascripts/ckeditor/plugins/notification/lang/pt-br.js +2 -2
  171. data/app/assets/javascripts/ckeditor/plugins/notification/lang/pt.js +2 -2
  172. data/app/assets/javascripts/ckeditor/plugins/notification/lang/ro.js +7 -0
  173. data/app/assets/javascripts/ckeditor/plugins/notification/lang/ru.js +2 -2
  174. data/app/assets/javascripts/ckeditor/plugins/notification/lang/sk.js +7 -0
  175. data/app/assets/javascripts/ckeditor/plugins/notification/lang/sq.js +7 -0
  176. data/app/assets/javascripts/ckeditor/plugins/notification/lang/sv.js +2 -2
  177. data/app/assets/javascripts/ckeditor/plugins/notification/lang/tr.js +2 -2
  178. data/app/assets/javascripts/ckeditor/plugins/notification/lang/ug.js +2 -2
  179. data/app/assets/javascripts/ckeditor/plugins/notification/lang/uk.js +2 -2
  180. data/app/assets/javascripts/ckeditor/plugins/notification/lang/zh-cn.js +3 -3
  181. data/app/assets/javascripts/ckeditor/plugins/notification/lang/zh.js +2 -2
  182. data/app/assets/javascripts/ckeditor/plugins/notification/plugin.js +794 -784
  183. data/app/assets/javascripts/ckeditor/plugins/openlink/README.md +50 -0
  184. data/app/assets/javascripts/ckeditor/plugins/openlink/icons/hidpi/openLink.png +0 -0
  185. data/app/assets/javascripts/ckeditor/plugins/openlink/icons/openLink.png +0 -0
  186. data/app/assets/javascripts/ckeditor/plugins/openlink/lang/bg.js +7 -0
  187. data/app/assets/javascripts/ckeditor/plugins/openlink/lang/de.js +7 -0
  188. data/app/assets/javascripts/ckeditor/plugins/openlink/lang/en.js +7 -0
  189. data/app/assets/javascripts/ckeditor/plugins/openlink/lang/pl.js +7 -0
  190. data/app/assets/javascripts/ckeditor/plugins/openlink/lang/ru.js +7 -0
  191. data/app/assets/javascripts/ckeditor/plugins/openlink/lang/uk.js +7 -0
  192. data/app/assets/javascripts/ckeditor/plugins/openlink/plugin.js +178 -0
  193. data/app/assets/javascripts/ckeditor/plugins/placeholder/dev/placeholder.html +5 -5
  194. data/app/assets/javascripts/ckeditor/plugins/placeholder/dialogs/placeholder.js +2 -2
  195. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/af.js +2 -2
  196. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/ar.js +2 -2
  197. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/az.js +2 -2
  198. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/bg.js +5 -5
  199. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/ca.js +2 -2
  200. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/cs.js +2 -2
  201. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/cy.js +2 -2
  202. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/da.js +2 -2
  203. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/de-ch.js +2 -2
  204. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/de.js +2 -2
  205. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/el.js +2 -2
  206. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/en-au.js +12 -0
  207. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/en-gb.js +2 -2
  208. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/en.js +2 -2
  209. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/eo.js +2 -2
  210. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/es-mx.js +2 -2
  211. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/es.js +2 -2
  212. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/et.js +2 -2
  213. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/eu.js +2 -2
  214. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/fa.js +2 -2
  215. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/fi.js +2 -2
  216. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/fr-ca.js +2 -2
  217. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/fr.js +2 -2
  218. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/gl.js +2 -2
  219. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/he.js +2 -2
  220. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/hr.js +2 -2
  221. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/hu.js +2 -2
  222. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/id.js +2 -2
  223. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/it.js +2 -2
  224. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/ja.js +2 -2
  225. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/km.js +2 -2
  226. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/ko.js +2 -2
  227. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/ku.js +2 -2
  228. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/lv.js +5 -5
  229. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/nb.js +2 -2
  230. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/nl.js +2 -2
  231. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/no.js +2 -2
  232. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/oc.js +2 -2
  233. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/pl.js +2 -2
  234. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/pt-br.js +2 -2
  235. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/pt.js +2 -2
  236. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/ro.js +12 -0
  237. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/ru.js +2 -2
  238. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/si.js +2 -2
  239. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/sk.js +2 -2
  240. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/sl.js +2 -2
  241. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/sq.js +2 -2
  242. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/sv.js +2 -2
  243. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/th.js +2 -2
  244. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/tr.js +2 -2
  245. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/tt.js +2 -2
  246. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/ug.js +2 -2
  247. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/uk.js +2 -2
  248. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/vi.js +2 -2
  249. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/zh-cn.js +2 -2
  250. data/app/assets/javascripts/ckeditor/plugins/placeholder/lang/zh.js +2 -2
  251. data/app/assets/javascripts/ckeditor/plugins/placeholder/plugin.js +3 -3
  252. data/app/assets/javascripts/ckeditor/plugins/placeholder/samples/placeholder.html +6 -6
  253. data/app/assets/javascripts/ckeditor/plugins/widget/dev/assets/simplebox/dialogs/simplebox.js +4 -4
  254. data/app/assets/javascripts/ckeditor/plugins/widget/dev/assets/simplebox/plugin.js +3 -3
  255. data/app/assets/javascripts/ckeditor/plugins/widget/dev/console.js +2 -2
  256. data/app/assets/javascripts/ckeditor/plugins/widget/dev/nestedwidgets.html +2 -2
  257. data/app/assets/javascripts/ckeditor/plugins/widget/dev/widgetstyles.html +2 -2
  258. data/app/assets/javascripts/ckeditor/plugins/widget/lang/af.js +2 -2
  259. data/app/assets/javascripts/ckeditor/plugins/widget/lang/ar.js +2 -2
  260. data/app/assets/javascripts/ckeditor/plugins/widget/lang/az.js +2 -2
  261. data/app/assets/javascripts/ckeditor/plugins/widget/lang/bg.js +3 -3
  262. data/app/assets/javascripts/ckeditor/plugins/widget/lang/ca.js +2 -2
  263. data/app/assets/javascripts/ckeditor/plugins/widget/lang/cs.js +2 -2
  264. data/app/assets/javascripts/ckeditor/plugins/widget/lang/cy.js +2 -2
  265. data/app/assets/javascripts/ckeditor/plugins/widget/lang/da.js +2 -2
  266. data/app/assets/javascripts/ckeditor/plugins/widget/lang/de-ch.js +2 -2
  267. data/app/assets/javascripts/ckeditor/plugins/widget/lang/de.js +2 -2
  268. data/app/assets/javascripts/ckeditor/plugins/widget/lang/el.js +2 -2
  269. data/app/assets/javascripts/ckeditor/plugins/widget/lang/en-au.js +8 -0
  270. data/app/assets/javascripts/ckeditor/plugins/widget/lang/en-gb.js +2 -2
  271. data/app/assets/javascripts/ckeditor/plugins/widget/lang/en.js +2 -2
  272. data/app/assets/javascripts/ckeditor/plugins/widget/lang/eo.js +2 -2
  273. data/app/assets/javascripts/ckeditor/plugins/widget/lang/es-mx.js +2 -2
  274. data/app/assets/javascripts/ckeditor/plugins/widget/lang/es.js +2 -2
  275. data/app/assets/javascripts/ckeditor/plugins/widget/lang/et.js +8 -0
  276. data/app/assets/javascripts/ckeditor/plugins/widget/lang/eu.js +2 -2
  277. data/app/assets/javascripts/ckeditor/plugins/widget/lang/fa.js +3 -3
  278. data/app/assets/javascripts/ckeditor/plugins/widget/lang/fi.js +2 -2
  279. data/app/assets/javascripts/ckeditor/plugins/widget/lang/fr.js +2 -2
  280. data/app/assets/javascripts/ckeditor/plugins/widget/lang/gl.js +2 -2
  281. data/app/assets/javascripts/ckeditor/plugins/widget/lang/he.js +2 -2
  282. data/app/assets/javascripts/ckeditor/plugins/widget/lang/hr.js +2 -2
  283. data/app/assets/javascripts/ckeditor/plugins/widget/lang/hu.js +2 -2
  284. data/app/assets/javascripts/ckeditor/plugins/widget/lang/id.js +2 -2
  285. data/app/assets/javascripts/ckeditor/plugins/widget/lang/it.js +2 -2
  286. data/app/assets/javascripts/ckeditor/plugins/widget/lang/ja.js +2 -2
  287. data/app/assets/javascripts/ckeditor/plugins/widget/lang/km.js +2 -2
  288. data/app/assets/javascripts/ckeditor/plugins/widget/lang/ko.js +2 -2
  289. data/app/assets/javascripts/ckeditor/plugins/widget/lang/ku.js +2 -2
  290. data/app/assets/javascripts/ckeditor/plugins/widget/lang/lv.js +3 -3
  291. data/app/assets/javascripts/ckeditor/plugins/widget/lang/nb.js +2 -2
  292. data/app/assets/javascripts/ckeditor/plugins/widget/lang/nl.js +2 -2
  293. data/app/assets/javascripts/ckeditor/plugins/widget/lang/no.js +2 -2
  294. data/app/assets/javascripts/ckeditor/plugins/widget/lang/oc.js +2 -2
  295. data/app/assets/javascripts/ckeditor/plugins/widget/lang/pl.js +2 -2
  296. data/app/assets/javascripts/ckeditor/plugins/widget/lang/pt-br.js +2 -2
  297. data/app/assets/javascripts/ckeditor/plugins/widget/lang/pt.js +2 -2
  298. data/app/assets/javascripts/ckeditor/plugins/widget/lang/ro.js +8 -0
  299. data/app/assets/javascripts/ckeditor/plugins/widget/lang/ru.js +2 -2
  300. data/app/assets/javascripts/ckeditor/plugins/widget/lang/sk.js +2 -2
  301. data/app/assets/javascripts/ckeditor/plugins/widget/lang/sl.js +2 -2
  302. data/app/assets/javascripts/ckeditor/plugins/widget/lang/sq.js +3 -3
  303. data/app/assets/javascripts/ckeditor/plugins/widget/lang/sv.js +2 -2
  304. data/app/assets/javascripts/ckeditor/plugins/widget/lang/tr.js +2 -2
  305. data/app/assets/javascripts/ckeditor/plugins/widget/lang/tt.js +2 -2
  306. data/app/assets/javascripts/ckeditor/plugins/widget/lang/ug.js +2 -2
  307. data/app/assets/javascripts/ckeditor/plugins/widget/lang/uk.js +2 -2
  308. data/app/assets/javascripts/ckeditor/plugins/widget/lang/vi.js +2 -2
  309. data/app/assets/javascripts/ckeditor/plugins/widget/lang/zh-cn.js +2 -2
  310. data/app/assets/javascripts/ckeditor/plugins/widget/lang/zh.js +2 -2
  311. data/app/assets/javascripts/ckeditor/plugins/widget/plugin.js +235 -64
  312. data/app/assets/javascripts/ckeditor/plugins/widgetselection/plugin.js +6 -11
  313. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/ar.js +1 -0
  314. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/bg.js +17 -0
  315. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/ca.js +1 -0
  316. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/cs.js +15 -0
  317. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/da.js +1 -0
  318. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/de.js +1 -0
  319. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/el.js +1 -0
  320. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/en.js +5 -1
  321. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/es.js +1 -0
  322. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/eu.js +17 -0
  323. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/fa.js +13 -0
  324. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/fi.js +1 -0
  325. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/fr.js +1 -0
  326. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/he.js +1 -0
  327. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/hr.js +1 -0
  328. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/hu.js +14 -0
  329. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/it.js +4 -3
  330. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/ja.js +5 -5
  331. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/ko.js +16 -0
  332. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/nl.js +3 -2
  333. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/no.js +1 -0
  334. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/pl.js +4 -3
  335. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/pt-br.js +1 -0
  336. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/pt.js +1 -0
  337. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/ro.js +15 -0
  338. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/ru.js +2 -1
  339. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/sk.js +15 -0
  340. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/sv.js +5 -3
  341. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/tr.js +1 -0
  342. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/uk.js +17 -0
  343. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/zh-cn.js +1 -0
  344. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/zh.js +14 -0
  345. data/app/assets/javascripts/ckeditor/plugins/wordcount/plugin.js +485 -302
  346. data/app/assets/javascripts/ckeditor/plugins/wordcount/samples/maxParagraphs.html +26 -0
  347. data/app/assets/javascripts/integral/backend.js +197 -26
  348. data/app/assets/javascripts/integral/frontend.js +37 -2
  349. data/app/assets/javascripts/integral/support/character_counter.js +14 -8
  350. data/app/assets/javascripts/integral/support/confirm_modal.coffee +2 -2
  351. data/app/assets/javascripts/integral/support/date_picker.coffee +54 -59
  352. data/app/assets/javascripts/integral/support/gallery.coffee +85 -43
  353. data/app/assets/javascripts/integral/support/grid.coffee +11 -4
  354. data/app/assets/javascripts/integral/support/lib/lazysizes.js +755 -0
  355. data/app/assets/javascripts/integral/support/lib/materialize-tags.js +49 -44
  356. data/app/assets/javascripts/integral/support/list.coffee +1 -0
  357. data/app/assets/javascripts/integral/support/ls.instagram.js +57 -0
  358. data/app/assets/javascripts/integral/support/ls.twitter.js +66 -0
  359. data/app/assets/javascripts/integral/support/record_selector.coffee +3 -1
  360. data/app/assets/javascripts/integral/support/remote_form.coffee +18 -11
  361. data/app/assets/javascripts/integral/support/slug_generator.coffee +1 -0
  362. data/app/assets/stylesheets/integral/backend.sass +36 -24
  363. data/app/assets/stylesheets/integral/backend/_foundation_settings.scss +5 -6
  364. data/app/assets/stylesheets/integral/backend/dashboard-layout.scss +31 -64
  365. data/app/assets/stylesheets/integral/backend/devise.sass +2 -3
  366. data/app/assets/stylesheets/integral/backend/materialize-tags.sass +2 -1
  367. data/app/assets/stylesheets/integral/backend/modules/dropdown_pane_notifications.scss +150 -0
  368. data/app/assets/stylesheets/integral/backend/modules/dropdown_pane_profile.scss +59 -0
  369. data/app/assets/stylesheets/integral/backend/modules/timeline.scss +214 -0
  370. data/app/assets/stylesheets/integral/backend/shared.sass +121 -13
  371. data/app/assets/stylesheets/integral/frontend.scss +45 -0
  372. data/app/assets/stylesheets/integral/frontend/_foundation_settings.scss +2 -2
  373. data/app/assets/stylesheets/integral/frontend/blog.sass +155 -142
  374. data/app/assets/stylesheets/integral/frontend/layout.sass +13 -3
  375. data/app/assets/stylesheets/integral/frontend/modules/article-footer.scss +55 -0
  376. data/app/assets/stylesheets/integral/frontend/modules/article.scss +34 -0
  377. data/app/assets/stylesheets/integral/frontend/modules/horizontal-post.scss +44 -0
  378. data/app/assets/stylesheets/integral/frontend/modules/inline-articles.scss +23 -0
  379. data/app/assets/stylesheets/integral/frontend/modules/latest-post.scss +37 -0
  380. data/app/assets/stylesheets/integral/frontend/modules/list-widget.scss +50 -0
  381. data/app/assets/stylesheets/integral/frontend/modules/piped-list.scss +33 -0
  382. data/app/assets/stylesheets/integral/frontend/modules/post-tags.scss +19 -0
  383. data/app/assets/stylesheets/integral/frontend/modules/scroll-container.scss +9 -0
  384. data/app/assets/stylesheets/integral/frontend/modules/sidebar-articles.scss +42 -0
  385. data/app/assets/stylesheets/integral/frontend/modules/sidebar-tags.scss +6 -0
  386. data/app/assets/stylesheets/integral/frontend/modules/sidebar-widget.scss +47 -0
  387. data/app/assets/stylesheets/integral/frontend/modules/vertical-post.scss +31 -0
  388. data/app/assets/stylesheets/integral/frontend/share_modal.sass +0 -5
  389. data/app/assets/stylesheets/integral/support/gallery.sass +18 -2
  390. data/app/assets/stylesheets/integral/support/media-query-indicator.sass +9 -3
  391. data/app/controllers/integral/application_controller.rb +10 -3
  392. data/app/controllers/integral/backend/activities_controller.rb +31 -26
  393. data/app/controllers/integral/backend/base_controller.rb +265 -26
  394. data/app/controllers/integral/backend/categories_controller.rb +49 -0
  395. data/app/controllers/integral/backend/images_controller.rb +39 -56
  396. data/app/controllers/integral/backend/lists_controller.rb +16 -104
  397. data/app/controllers/integral/backend/notification_subscriptions_controller.rb +23 -0
  398. data/app/controllers/integral/backend/pages_controller.rb +15 -117
  399. data/app/controllers/integral/backend/posts_controller.rb +22 -108
  400. data/app/controllers/integral/backend/settings_controller.rb +7 -8
  401. data/app/controllers/integral/backend/static_pages_controller.rb +14 -0
  402. data/app/controllers/integral/backend/users_controller.rb +61 -79
  403. data/app/controllers/integral/blog_controller.rb +12 -0
  404. data/app/controllers/integral/categories_controller.rb +45 -0
  405. data/app/controllers/integral/pages_controller.rb +7 -3
  406. data/app/controllers/integral/posts_controller.rb +7 -9
  407. data/app/controllers/integral/tags_controller.rb +5 -2
  408. data/app/decorators/integral/base_decorator.rb +16 -0
  409. data/app/decorators/integral/category_decorator.rb +30 -0
  410. data/app/decorators/integral/image_decorator.rb +3 -3
  411. data/app/decorators/integral/list_decorator.rb +1 -13
  412. data/app/decorators/integral/notification/notification_decorator.rb +74 -0
  413. data/app/decorators/integral/page_decorator.rb +1 -13
  414. data/app/decorators/integral/paginating_decorator.rb +6 -0
  415. data/app/decorators/integral/post_decorator.rb +44 -4
  416. data/app/decorators/integral/user_decorator.rb +1 -13
  417. data/app/decorators/integral/version_decorator.rb +58 -15
  418. data/app/helpers/integral/application_helper.rb +7 -0
  419. data/app/helpers/integral/backend/base_helper.rb +139 -13
  420. data/app/helpers/integral/blog_helper.rb +46 -0
  421. data/app/helpers/integral/social_helper.rb +0 -23
  422. data/app/jobs/integral/application_job.rb +1 -0
  423. data/app/jobs/integral/newsletter_signup_job.rb +0 -2
  424. data/app/jobs/integral/webhook/delivery_job.rb +37 -0
  425. data/app/mailers/integral/contact_mailer.rb +4 -1
  426. data/app/mailers/integral/devise_mailer.rb +6 -0
  427. data/app/models/concerns/integral/lazy_contentable.rb +54 -0
  428. data/app/models/concerns/integral/notification/subscribable.rb +67 -0
  429. data/app/models/concerns/integral/webhook/delivery.rb +30 -0
  430. data/app/models/concerns/integral/webhook/observable.rb +23 -0
  431. data/app/models/integral/application_record.rb +9 -0
  432. data/app/models/integral/category.rb +29 -0
  433. data/app/models/integral/category_version.rb +8 -0
  434. data/app/models/integral/image.rb +40 -3
  435. data/app/models/integral/list.rb +11 -4
  436. data/app/models/integral/list_item.rb +15 -16
  437. data/app/models/integral/list_item_connection.rb +6 -0
  438. data/app/models/integral/notification/notification.rb +28 -0
  439. data/app/models/integral/notification/subscription.rb +14 -0
  440. data/app/models/integral/page.rb +32 -10
  441. data/app/models/integral/post.rb +39 -14
  442. data/app/models/integral/user.rb +51 -2
  443. data/app/models/integral/version.rb +2 -2
  444. data/app/models/integral/webhook/endpoint.rb +40 -0
  445. data/app/models/integral/webhook/event.rb +20 -0
  446. data/app/policies/integral/base_policy.rb +7 -11
  447. data/app/policies/integral/category_policy.rb +9 -0
  448. data/app/policies/integral/page_policy.rb +1 -0
  449. data/app/policies/integral/version_policy.rb +0 -8
  450. data/app/serializers/integral/post_serializer.rb +24 -0
  451. data/app/uploaders/integral/avatar_uploader.rb +1 -1
  452. data/app/views/devise/invitations/edit.haml +1 -4
  453. data/app/views/devise/mailer/invitation_instructions.inky-haml +20 -0
  454. data/app/views/devise/sessions/new.haml +2 -2
  455. data/app/views/integral/backend/activities/_activity.haml +21 -0
  456. data/app/views/integral/backend/activities/grid/_dropdown_actions.haml +1 -0
  457. data/app/views/integral/backend/activities/grid/_row_content.haml +13 -0
  458. data/app/views/integral/backend/activities/index.haml +7 -13
  459. data/app/views/integral/backend/activities/shared/_grid.haml +35 -19
  460. data/app/views/integral/backend/activities/shared/index.haml +15 -0
  461. data/app/views/integral/backend/activities/shared/{_log.haml → show.haml} +7 -7
  462. data/app/views/integral/backend/activities/show.haml +1 -1
  463. data/app/views/integral/backend/categories/_modal.haml +24 -0
  464. data/app/views/integral/backend/images/_form.haml +16 -28
  465. data/app/views/integral/backend/images/edit.haml +2 -2
  466. data/app/views/integral/backend/images/grid/_dropdown_actions.haml +5 -0
  467. data/app/views/integral/backend/images/grid/_row_content.haml +5 -0
  468. data/app/views/integral/backend/images/index.haml +11 -17
  469. data/app/views/integral/backend/images/list.haml +11 -0
  470. data/app/views/integral/backend/images/show.haml +26 -0
  471. data/app/views/integral/backend/lists/_form.haml +7 -20
  472. data/app/views/integral/backend/lists/_item_container.haml +1 -1
  473. data/app/views/integral/backend/lists/_item_modal.haml +3 -3
  474. data/app/views/integral/backend/lists/_list_item_fields.haml +3 -2
  475. data/app/views/integral/backend/lists/_manager.haml +11 -13
  476. data/app/views/integral/backend/lists/edit.haml +22 -1
  477. data/app/views/integral/backend/lists/grid/_dropdown_actions.haml +9 -0
  478. data/app/views/integral/backend/lists/grid/_row_content.haml +3 -0
  479. data/app/views/integral/backend/lists/index.haml +11 -17
  480. data/app/views/integral/backend/lists/list.haml +11 -0
  481. data/app/views/integral/backend/lists/show.haml +27 -23
  482. data/app/views/integral/backend/notifications/_notification.haml +21 -0
  483. data/app/views/integral/backend/pages/_form.haml +20 -47
  484. data/app/views/integral/backend/pages/edit.haml +18 -0
  485. data/app/views/integral/backend/pages/grid/_dropdown_actions.haml +11 -0
  486. data/app/views/integral/backend/pages/grid/_row_content.haml +5 -0
  487. data/app/views/integral/backend/pages/index.haml +11 -21
  488. data/app/views/integral/backend/pages/list.haml +15 -0
  489. data/app/views/integral/backend/pages/show.haml +32 -0
  490. data/app/views/integral/backend/posts/_form.haml +19 -51
  491. data/app/views/integral/backend/posts/edit.haml +5 -10
  492. data/app/views/integral/backend/posts/grid/_dropdown_actions.haml +10 -0
  493. data/app/views/integral/backend/posts/grid/_row_content.haml +6 -0
  494. data/app/views/integral/backend/posts/index.haml +13 -19
  495. data/app/views/integral/backend/posts/list.haml +13 -0
  496. data/app/views/integral/backend/posts/new.haml +0 -1
  497. data/app/views/integral/backend/posts/show.haml +31 -0
  498. data/app/views/integral/backend/settings/sections/_social.haml +1 -3
  499. data/app/views/integral/backend/shared/_activity_modal.haml +13 -0
  500. data/app/views/integral/backend/shared/_breadcrumbs.haml +7 -4
  501. data/app/views/integral/backend/shared/_image_preview.haml +10 -3
  502. data/app/views/integral/backend/shared/_image_selector.haml +1 -1
  503. data/app/views/integral/backend/shared/_notification_subscription_toggle.haml +22 -0
  504. data/app/views/integral/backend/shared/action_bar/_index.haml +9 -0
  505. data/app/views/integral/backend/shared/action_bar/_show.haml +3 -0
  506. data/app/views/integral/backend/shared/cards/_at_a_glance.haml +3 -3
  507. data/app/views/integral/backend/shared/cards/_categories.haml +33 -0
  508. data/app/views/integral/backend/{static_pages/_card.haml → shared/cards/_object.haml} +1 -1
  509. data/app/views/integral/backend/shared/cards/_recent_activity.haml +20 -0
  510. data/app/views/integral/backend/shared/cards/_recent_resources.haml +17 -0
  511. data/app/views/integral/backend/shared/cards/_recent_user_activity.haml +1 -0
  512. data/app/views/integral/backend/shared/cards/_top_post_authors.haml +18 -0
  513. data/app/views/integral/backend/shared/cards/_welcome.haml +24 -25
  514. data/app/views/integral/backend/shared/{_empty_grid.haml → grid/_empty.haml} +0 -0
  515. data/app/views/integral/backend/shared/grid/_form.haml +9 -0
  516. data/app/views/integral/backend/shared/grid/_grid.haml +21 -0
  517. data/app/views/integral/backend/shared/{_pagination.haml → grid/_pagination.haml} +0 -0
  518. data/app/views/integral/backend/shared/grid/_row_layout.haml +8 -0
  519. data/app/views/integral/backend/shared/record_selector/_collection.haml +1 -0
  520. data/app/views/integral/backend/shared/record_selector/_modal.haml +9 -10
  521. data/app/views/integral/backend/shared/record_selector/_record.haml +6 -4
  522. data/app/views/integral/backend/static_pages/dashboard.haml +17 -15
  523. data/app/views/integral/backend/users/_form.haml +35 -47
  524. data/app/views/integral/backend/users/edit.haml +1 -1
  525. data/app/views/integral/backend/users/grid/_dropdown_actions.haml +17 -0
  526. data/app/views/integral/backend/users/grid/_row_content.haml +8 -0
  527. data/app/views/integral/backend/users/index.haml +11 -17
  528. data/app/views/integral/backend/users/list.haml +12 -0
  529. data/app/views/integral/backend/users/show.haml +22 -19
  530. data/app/views/integral/categories/show.haml +5 -0
  531. data/app/views/integral/pages/_demo.haml +2 -2
  532. data/app/views/integral/posts/_article_footer.haml +17 -0
  533. data/app/views/integral/posts/_card.haml +11 -0
  534. data/app/views/integral/posts/_latest_post.haml +8 -0
  535. data/app/views/integral/posts/_most_read_section.haml +8 -0
  536. data/app/views/integral/posts/_post.haml +11 -0
  537. data/app/views/integral/posts/_similar_posts.haml +5 -0
  538. data/app/views/integral/posts/index.haml +7 -5
  539. data/app/views/integral/posts/templates/default.haml +35 -35
  540. data/app/views/integral/shared/_share_modal.haml +0 -3
  541. data/app/views/integral/shared/_social_list_items.haml +6 -12
  542. data/app/views/integral/shared/_subscribe_modal.haml +14 -0
  543. data/app/views/integral/shared/blog/_categories.haml +15 -0
  544. data/app/views/integral/shared/blog/_layout.haml +9 -0
  545. data/app/views/integral/shared/blog/_sidebar.haml +10 -0
  546. data/app/views/integral/shared/gallery/_placeholder.haml +2 -2
  547. data/app/views/integral/shared/gallery/_slide.haml +2 -2
  548. data/app/views/integral/shared/gallery/gallery.haml +5 -2
  549. data/app/views/integral/shared/sidebar/_item.haml +8 -0
  550. data/app/views/integral/shared/sidebar/_newsletter_signup.haml +7 -0
  551. data/app/views/integral/shared/sidebar/_popular_posts.haml +7 -0
  552. data/app/views/integral/shared/sidebar/_popular_tags.haml +7 -0
  553. data/app/views/integral/shared/sidebar/_recent_posts.haml +7 -0
  554. data/app/views/integral/tags/index.haml +2 -2
  555. data/app/views/integral/tags/show.haml +3 -6
  556. data/app/views/layouts/integral/backend.html.haml +27 -5
  557. data/app/views/layouts/integral/backend/_create_dropdown.haml +1 -30
  558. data/app/views/layouts/integral/backend/_main_menu_items.haml +1 -91
  559. data/app/views/layouts/integral/frontend.html.haml +3 -3
  560. data/config/initializers/devise.rb +1 -1
  561. data/config/locales/en.yml +131 -56
  562. data/config/routes.rb +2 -0
  563. data/db/migrate/20190414172018_create_webhook_endpoints.rb +10 -0
  564. data/db/migrate/20190929191412_add_integral_post_categories.rb +13 -0
  565. data/db/migrate/20191203090008_add_image_to_integral_categories.rb +6 -0
  566. data/db/migrate/20200401210442_create_category_versions.rb +20 -0
  567. data/db/migrate/20200407022636_create_integral_notifications.rb +25 -0
  568. data/db/migrate/20200421223602_add_status_to_integral_users.rb +5 -0
  569. data/db/seeds.rb +16 -10
  570. data/lib/generators/integral/assets_generator.rb +54 -0
  571. data/lib/generators/integral/install_generator.rb +37 -3
  572. data/lib/generators/integral/views_generator.rb +66 -0
  573. data/lib/generators/templates/app.yml +0 -1
  574. data/lib/generators/templates/integral.rb +5 -0
  575. data/lib/generators/templates/routes.rb +7 -0
  576. data/lib/generators/templates/seeds.rb +2 -0
  577. data/lib/integral.rb +4 -30
  578. data/lib/integral/acts_as_integral.rb +115 -0
  579. data/lib/integral/acts_as_listable.rb +3 -3
  580. data/lib/integral/chart_renderer/base.rb +2 -0
  581. data/lib/integral/content_renderer.rb +3 -3
  582. data/lib/integral/engine.rb +12 -2
  583. data/lib/integral/grids/activities_grid.rb +15 -2
  584. data/lib/integral/grids/lists_grid.rb +1 -0
  585. data/lib/integral/grids/posts_grid.rb +5 -1
  586. data/lib/integral/grids/users_grid.rb +5 -0
  587. data/lib/integral/list_item_renderer.rb +4 -2
  588. data/lib/integral/list_renderer.rb +6 -1
  589. data/lib/integral/middleware/page_router.rb +15 -6
  590. data/lib/integral/router.rb +41 -7
  591. data/lib/integral/version.rb +1 -1
  592. data/lib/integral/widgets/recent_posts.rb +1 -1
  593. data/lib/integral/widgets/swiper_list.rb +3 -2
  594. data/public/images/integral/demo/continous-integration.png +0 -0
  595. data/public/images/integral/demo/foundation-frontend-framework.jpg +0 -0
  596. data/public/images/integral/demo/heroku.png +0 -0
  597. data/public/images/integral/demo/integral-cms-without-hassle.jpg +0 -0
  598. data/public/images/integral/demo/integral-features-activity-tracking.jpg +0 -0
  599. data/public/images/integral/demo/integral-features-contact-form.png +0 -0
  600. data/public/images/integral/demo/integral-features-design.jpg +0 -0
  601. data/public/images/integral/demo/integral-features-dynamic-pages.jpg +0 -0
  602. data/public/images/integral/demo/integral-features-image-management.jpg +0 -0
  603. data/public/images/integral/demo/integral-features-integrated-blog.jpg +0 -0
  604. data/public/images/integral/demo/integral-features-list-management.jpg +0 -0
  605. data/public/images/integral/demo/integral-features-seo-ready.jpg +0 -0
  606. data/public/images/integral/demo/integral-features-user-management.jpg +0 -0
  607. data/public/images/integral/demo/integral-presentation.png +0 -0
  608. data/public/integral/ckeditor_demo_content.html +0 -13
  609. data/spec/factories.rb +30 -8
  610. metadata +322 -127
  611. data/app/assets/javascripts/ckeditor/plugins/wordcount/lang/jp.js +0 -13
  612. data/app/assets/javascripts/integral/support/date_picker/picker.date.js +0 -1435
  613. data/app/assets/javascripts/integral/support/date_picker/picker.js +0 -1132
  614. data/app/assets/stylesheets/integral/frontend.sass +0 -26
  615. data/app/assets/stylesheets/integral/support/date-picker.scss +0 -16
  616. data/app/assets/stylesheets/integral/support/date_picker/_default.date.scss +0 -452
  617. data/app/assets/stylesheets/integral/support/date_picker/_default.scss +0 -201
  618. data/app/assets/stylesheets/integral/support/date_picker/materialize_clockpicker.sass +0 -220
  619. data/app/assets/stylesheets/integral/wysiwyg.sass +0 -13
  620. data/app/views/devise/mailer/invitation_instructions.html.erb +0 -13
  621. data/app/views/integral/backend/activities/_grid.haml +0 -23
  622. data/app/views/integral/backend/activities/shared/_listing.haml +0 -14
  623. data/app/views/integral/backend/images/_grid.haml +0 -16
  624. data/app/views/integral/backend/lists/_grid.haml +0 -16
  625. data/app/views/integral/backend/pages/_grid.haml +0 -21
  626. data/app/views/integral/backend/pages/activities.haml +0 -2
  627. data/app/views/integral/backend/pages/activity.haml +0 -1
  628. data/app/views/integral/backend/pages/edit.html.haml +0 -15
  629. data/app/views/integral/backend/posts/_grid.haml +0 -25
  630. data/app/views/integral/backend/posts/activities.haml +0 -3
  631. data/app/views/integral/backend/posts/activity.haml +0 -1
  632. data/app/views/integral/backend/shared/_grid.haml +0 -18
  633. data/app/views/integral/backend/users/_grid.haml +0 -19
  634. data/app/views/integral/posts/_item.haml +0 -16
  635. data/app/views/integral/shared/_blog_layout.haml +0 -15
  636. data/app/views/integral/shared/_blog_sidebar.haml +0 -49
  637. data/lib/integral/slack_bot.rb +0 -45
@@ -1,12 +1,12 @@
1
- /*
1
+ /*
2
2
  Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
  CKEDITOR.plugins.setLang( 'codemirror', 'bg', {
6
- toolbar: 'Източник',
7
- searchCode: 'Search Source',
8
- autoFormat: 'Format Selection',
9
- commentSelectedRange: 'Comment Selection',
10
- uncommentSelectedRange: 'Uncomment Selection',
11
- autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
6
+ toolbar: 'Код',
7
+ searchCode: 'Търси в кода',
8
+ autoFormat: 'Форматирай избраното',
9
+ commentSelectedRange: 'Коментирай избраното',
10
+ uncommentSelectedRange: 'Откоментирай избраното',
11
+ autoCompleteToggle: 'Активирай/деактивирай авто довършване за HTML тагове'
12
12
  });
@@ -7,10 +7,10 @@
7
7
  */
8
8
 
9
9
  (function() {
10
- CKEDITOR.plugins.add('codemirror', {
11
- icons: 'searchcode,autoformat,commentselectedrange,uncommentselectedrange,autocomplete', // %REMOVE_LINE_CORE%
12
- lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en-au,en-ca,en-gb,en,eo,es,et,eu,fa,fi,fo,fr-ca,fr,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt-br,pt,ro,ru,sk,sl,sr-latn,sr,sv,th,tr,ug,uk,vi,zh-cn,zh', // %REMOVE_LINE_CORE%
13
- version: '1.17.3',
10
+ CKEDITOR.plugins.add("codemirror", {
11
+ icons: "searchcode,autoformat,commentselectedrange,uncommentselectedrange,autocomplete", // %REMOVE_LINE_CORE%
12
+ lang: "af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en-au,en-ca,en-gb,en,eo,es,et,eu,fa,fi,fo,fr-ca,fr,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt-br,pt,ro,ru,sk,sl,sr-latn,sr,sv,th,tr,ug,uk,vi,zh-cn,zh", // %REMOVE_LINE_CORE%
13
+ version: "1.17.8",
14
14
  init: function (editor) {
15
15
  var rootPath = this.path,
16
16
  defaultConfig = {
@@ -27,7 +27,7 @@
27
27
  indentWithTabs: false,
28
28
  lineNumbers: true,
29
29
  lineWrapping: true,
30
- mode: 'htmlmixed',
30
+ mode: "htmlmixed",
31
31
  matchBrackets: true,
32
32
  maxHighlightLineLength: 1000,
33
33
  matchTags: true,
@@ -38,7 +38,7 @@
38
38
  showTrailingSpace: true,
39
39
  showUncommentButton: true,
40
40
  styleActiveLine: true,
41
- theme: 'default',
41
+ theme: "default",
42
42
  useBeautifyOnStart: false
43
43
  };
44
44
 
@@ -58,59 +58,66 @@
58
58
  if (editor.plugins.bbcode && config.mode.indexOf("bbcode") <= 0) {
59
59
  config.mode = "bbcode";
60
60
  }
61
- var requirePresent = "function" === typeof require;
62
-
61
+ var requirePresent = "function" === typeof require && "function" === typeof require.config;
62
+ var pluginRequire;
63
63
  if (requirePresent){
64
- var location = window.CKEDITOR_GETURL('plugins/codemirror/js');
65
- require.config({
64
+ var requireContext = config.requireContext || "_";
65
+ var location = CKEDITOR.getUrl("plugins/codemirror/js");
66
+ pluginRequire = require.config({
67
+ context: requireContext,
66
68
  packages: [{
67
- name: 'codemirror',
69
+ name: "codemirror",
70
+ location: location,
71
+ main: "codemirror.min.js"
72
+ }, {
73
+ name: "codemirror-mode-handlebars",
68
74
  location: location,
69
- main: 'codemirror.min.js'
75
+ main: "codemirror.mode.handlebars.min.js"
70
76
  }, {
71
- name: 'codemirror-mode-twig',
77
+ name: "codemirror-mode-twig",
72
78
  location: location,
73
- main: 'codemirror.mode.twig.min.js'
79
+ main: "codemirror.mode.twig.min.js"
74
80
  }, {
75
- name: 'codemirror-mode-html',
81
+ name: "codemirror-mode-html",
76
82
  location: location,
77
- main: 'codemirror.mode.htmlmixed.min.js'
83
+ main: "codemirror.mode.htmlmixed.min.js"
78
84
  }, {
79
- name: 'codemirror-mode-php',
85
+ name: "codemirror-mode-php",
80
86
  location: location,
81
- main: 'codemirror.mode.php.min.js'
87
+ main: "codemirror.mode.php.min.js"
82
88
  }, {
83
- name: 'codemirror-mode-js',
89
+ name: "codemirror-mode-js",
84
90
  location: location,
85
- main: 'codemirror.mode.js.min.js'
91
+ main: "codemirror.mode.js.min.js"
86
92
  }, {
87
- name: 'codemirror-addons',
93
+ name: "codemirror-addons",
88
94
  location: location,
89
- main: 'codemirror.addons.min.js'
95
+ main: "codemirror.addons.min.js"
90
96
  }, {
91
- name: 'codemirror-addon-search',
97
+ name: "codemirror-addon-search",
92
98
  location: location,
93
- main: 'codemirror.addons.search.min.js'
99
+ main: "codemirror.addons.search.min.js"
94
100
  }, {
95
- name: 'codemirror-beautify',
101
+ name: "codemirror-beautify",
96
102
  location: location,
97
- main: 'beautify.min.js'
103
+ main: "beautify.min.js"
98
104
  }],
99
105
  bundles: {
100
- 'codemirror': ['core', 'codemirror.js'],
101
- 'codemirror-mode-twig': ['modeTwig'],
102
- 'codemirror-mode-html': ['modeHtml'],
103
- 'codemirror-mode-php': ['modePHP'],
104
- 'codemirror-mode-js': ['modeJS'],
105
- 'codemirror-addons': ['addons'],
106
- 'codemirror-addon-search': ['addonSearch'],
107
- 'codemirror-beautify': ['beautifyModule']
106
+ 'codemirror': ["core", "codemirror.js"],
107
+ 'codemirror-mode-handlebars': ["modeHandlebars"],
108
+ 'codemirror-mode-twig': ["modeTwig"],
109
+ 'codemirror-mode-html': ["modeHtml"],
110
+ 'codemirror-mode-php': ["modePHP"],
111
+ 'codemirror-mode-js': ["modeJS"],
112
+ 'codemirror-addons': ["addons"],
113
+ 'codemirror-addon-search': ["addonSearch"],
114
+ 'codemirror-beautify': ["beautifyModule"]
108
115
  },
109
116
  map: {
110
117
  '*': {
111
118
  //all the requires pointing to ../../lib/codemirror from addons will be redirected to module named codemirror.js
112
119
  //which is located in bundle 'codemirror' whose js file is codemirror.min.js
113
- 'lib/codemirror': 'codemirror.js'
120
+ 'lib/codemirror': "codemirror.js"
114
121
  }
115
122
  }
116
123
  });
@@ -119,7 +126,7 @@
119
126
  if (editor.elementMode === CKEDITOR.ELEMENT_MODE_INLINE || editor.plugins.sourcedialog) {
120
127
 
121
128
  // Override Source Dialog
122
- CKEDITOR.dialog.add('sourcedialog', function (editor) {
129
+ CKEDITOR.dialog.add("sourcedialog", function (editor) {
123
130
  var sizeDialog = CKEDITOR.document.getWindow().getViewPaneSize(),
124
131
  minWidth = Math.min(sizeDialog.width - 70, 800),
125
132
  minHeight = sizeDialog.height / 1.5,
@@ -131,7 +138,7 @@
131
138
  height = size.height / 1.5;
132
139
 
133
140
  window["codemirror_" + editor.id] = CodeMirror.fromTextArea(textarea, {
134
- mode: config.mode,
141
+ mode: config.mode === "handlebars" ? { name: "handlebars", base: "text/html" } : config.mode,
135
142
  matchBrackets: config.matchBrackets,
136
143
  maxHighlightLineLength: config.maxHighlightLineLength,
137
144
  matchTags: config.matchTags,
@@ -163,8 +170,8 @@
163
170
  });
164
171
 
165
172
 
166
- var holderHeight = height + 'px';
167
- var holderWidth = width + 'px';
173
+ var holderHeight = height + "px";
174
+ var holderWidth = width + "px";
168
175
 
169
176
  // Store config so we can access it within commands etc.
170
177
  window["codemirror_" + editor.id].config = config;
@@ -172,8 +179,8 @@
172
179
  if (config.autoFormatOnStart) {
173
180
  if (config.useBeautifyOnStart) {
174
181
  var indent_size = 4,
175
- indent_char = ' ',
176
- brace_style = 'collapse'; //collapse, expand, end-expand
182
+ indent_char = " ",
183
+ brace_style = "collapse"; //collapse, expand, end-expand
177
184
 
178
185
  var source = window["codemirror_" + editor.id].getValue();
179
186
 
@@ -198,7 +205,7 @@
198
205
 
199
206
  window["codemirror_" + editor.id].on("change", function () {
200
207
  window["codemirror_" + editor.id].save();
201
- editor.fire('change', this);
208
+ editor.fire("change", this);
202
209
  });
203
210
 
204
211
 
@@ -209,13 +216,13 @@
209
216
  window["codemirror_" + editor.id].on("gutterClick", window["foldFunc_" + editor.id]);
210
217
  }
211
218
  // Run config.onLoad callback, if present.
212
- if (typeof config.onLoad === 'function') {
219
+ if (typeof config.onLoad === "function") {
213
220
  config.onLoad(window["codemirror_" + editor.id], editor);
214
221
  }
215
222
 
216
223
  // inherit blur event
217
224
  window["codemirror_" + editor.id].on("blur", function () {
218
- editor.fire('blur', this);
225
+ editor.fire("blur", this);
219
226
  });
220
227
 
221
228
  window["codemirror_" + editor.id].on("keypress", function (codeMirror_Editor, evt) {
@@ -242,7 +249,7 @@
242
249
 
243
250
  start = OffSetToLineChannel(window["codemirror_" + editor.id], textRange.startOffset);
244
251
 
245
- if (typeof (textRange.endOffset) == 'undefined') {
252
+ if (typeof (textRange.endOffset) == "undefined") {
246
253
  window["codemirror_" + editor.id].focus();
247
254
  window["codemirror_" + editor.id].setCursor(start);
248
255
  } else {
@@ -260,14 +267,14 @@
260
267
  minHeight: minHeight,
261
268
  resizable: CKEDITOR.DIALOG_RESIZE_BOTH,
262
269
  onLoad: function() {
263
- this.on('resize',
270
+ this.on("resize",
264
271
  function (event) {
265
272
  var parts = event.sender.parts;
266
273
  var title = parts.title;
267
274
  var footer = parts.footer;
268
275
 
269
- var holderHeight = (event.data.height - title.$.offsetHeight - footer.$.offsetHeight) + 'px';
270
- var holderWidth = event.data.width + 'px';
276
+ var holderHeight = (event.data.height - title.$.offsetHeight - footer.$.offsetHeight) + "px";
277
+ var holderWidth = event.data.width + "px";
271
278
 
272
279
  window["codemirror_" + editor.id].setSize(holderWidth, holderHeight);
273
280
  },
@@ -275,33 +282,33 @@
275
282
  },
276
283
  onShow: function (event) {
277
284
  // Set Elements
278
- this.getContentElement('main', 'data').focus();
279
- this.getContentElement('main', 'AutoComplete').setValue(config.autoCloseTags, true);
285
+ this.getContentElement("main", "data").focus();
286
+ this.getContentElement("main", "AutoComplete").setValue(config.autoCloseTags, true);
280
287
 
281
- var textArea = this.getContentElement('main', 'data').getInputElement().$;
288
+ var textArea = this.getContentElement("main", "data").getInputElement().$;
282
289
 
283
290
  // Load the content
284
- this.setValueOf('main', 'data', oldData = editor.getData());
291
+ this.setValueOf("main", "data", oldData = editor.getData());
285
292
 
286
293
  if (config.autoLoadCodeMirror) {
287
294
 
288
- if (!IsStyleSheetAlreadyLoaded(rootPath + 'css/codemirror.min.css')) {
289
- CKEDITOR.document.appendStyleSheet(rootPath + 'css/codemirror.min.css');
295
+ if (!IsStyleSheetAlreadyLoaded(rootPath + "css/codemirror.min.css")) {
296
+ CKEDITOR.document.appendStyleSheet(rootPath + "css/codemirror.min.css");
290
297
  }
291
298
 
292
299
  if (config.theme.length &&
293
- config.theme != 'default' &&
294
- !IsStyleSheetAlreadyLoaded(rootPath + 'theme/' + config.theme + '.css')) {
295
- CKEDITOR.document.appendStyleSheet(rootPath + 'theme/' + config.theme + '.css');
300
+ config.theme != "default" &&
301
+ !IsStyleSheetAlreadyLoaded(rootPath + "theme/" + config.theme + ".css")) {
302
+ CKEDITOR.document.appendStyleSheet(rootPath + "theme/" + config.theme + ".css");
296
303
  }
297
304
  if(requirePresent) {
298
- require(getCodeMirrorDependencies(),function (codemirror, addons){
305
+ pluginRequire(getCodeMirrorDependencies(),function (codemirror, addons){
299
306
  loadCodeMirrorInline(editor, textArea, event.sender);
300
307
  });
301
308
  } else {
302
- if (typeof (CodeMirror) == 'undefined') {
309
+ if (typeof (CodeMirror) == "undefined") {
303
310
 
304
- CKEDITOR.scriptLoader.load(rootPath + 'js/codemirror.min.js',
311
+ CKEDITOR.scriptLoader.load(rootPath + "js/codemirror.min.js",
305
312
  function() {
306
313
 
307
314
  CKEDITOR.scriptLoader.load(getCodeMirrorScripts(),
@@ -312,7 +319,7 @@
312
319
 
313
320
 
314
321
  } else {
315
- if (CodeMirror.prototype['autoFormatAll']) {
322
+ if (CodeMirror.prototype["autoFormatAll"]) {
316
323
  loadCodeMirrorInline(editor, textArea, event.sender);
317
324
  } else {
318
325
  // loading the add-on scripts.
@@ -332,8 +339,8 @@
332
339
  // Free Memory
333
340
  window["codemirror_" + editor.id] = null;
334
341
 
335
- editor.fire('blur', this);
336
- editor.fire('focus', this);
342
+ editor.fire("blur", this);
343
+ editor.fire("focus", this);
337
344
  }
338
345
  },
339
346
  onOk: (function () {
@@ -358,21 +365,21 @@
358
365
  window["codemirror_" + editor.id] = null;
359
366
 
360
367
  // Remove CR from input data for reliable comparison with editor data.
361
- var newData = this.getValueOf('main', 'data').replace(/\r/g, '');
368
+ var newData = this.getValueOf("main", "data").replace(/\r/g, "");
362
369
 
363
370
  // Avoid unnecessary setData. Also preserve selection
364
371
  // when user changed his mind and goes back to wysiwyg editing.
365
372
  if (newData === oldData) {
366
- editor.fire('blur', this);
367
- editor.fire('focus', this);
373
+ editor.fire("blur", this);
374
+ editor.fire("focus", this);
368
375
  return true;
369
376
  }
370
377
 
371
378
  // Set data asynchronously to avoid errors in IE.
372
379
  CKEDITOR.env.ie ? CKEDITOR.tools.setTimeout(setData, 0, this, newData) : setData.call(this, newData);
373
380
 
374
- editor.fire('blur', this);
375
- editor.fire('focus', this);
381
+ editor.fire("blur", this);
382
+ editor.fire("focus", this);
376
383
 
377
384
  // Don't let the dialog close before setData is over.
378
385
  return false;
@@ -380,29 +387,29 @@
380
387
  })(),
381
388
 
382
389
  contents: [{
383
- id: 'main',
390
+ id: "main",
384
391
  label: editor.lang.sourcedialog.title,
385
392
  elements: [
386
393
  {
387
- type: 'hbox',
388
- style: 'width: 80px;margin:0;',
389
- widths: ['20px', '20px', '20px', '20px'],
394
+ type: "hbox",
395
+ style: "width: 80px;margin:0;",
396
+ widths: ["20px", "20px", "20px", "20px"],
390
397
  children: [
391
398
  {
392
- type: 'button',
393
- id: 'searchCode',
394
- label: '',
399
+ type: "button",
400
+ id: "searchCode",
401
+ label: "",
395
402
  title: lang.searchCode,
396
- 'class': 'searchCodeButton',
403
+ 'class': "searchCodeButton",
397
404
  onClick: function() {
398
405
  CodeMirror.commands.find(window["codemirror_" + editor.id]);
399
406
  }
400
407
  }, {
401
- type: 'button',
402
- id: 'autoFormat',
403
- label: '',
408
+ type: "button",
409
+ id: "autoFormat",
410
+ label: "",
404
411
  title: lang.autoFormat,
405
- 'class': 'autoFormat',
412
+ 'class': "autoFormat",
406
413
  onClick: function() {
407
414
  var range = {
408
415
  from: window["codemirror_" + editor.id].getCursor(true),
@@ -411,11 +418,11 @@
411
418
  window["codemirror_" + editor.id].autoFormatRange(range.from, range.to);
412
419
  }
413
420
  }, {
414
- type: 'button',
415
- id: 'CommentSelectedRange',
416
- label: '',
421
+ type: "button",
422
+ id: "CommentSelectedRange",
423
+ label: "",
417
424
  title: lang.commentSelectedRange,
418
- 'class': 'CommentSelectedRange',
425
+ 'class': "CommentSelectedRange",
419
426
  onClick: function () {
420
427
  var range = {
421
428
  from: window["codemirror_" + editor.id].getCursor(true),
@@ -424,11 +431,11 @@
424
431
  window["codemirror_" + editor.id].commentRange(true, range.from, range.to);
425
432
  }
426
433
  }, {
427
- type: 'button',
428
- id: 'UncommentSelectedRange',
429
- label: '',
434
+ type: "button",
435
+ id: "UncommentSelectedRange",
436
+ label: "",
430
437
  title: lang.uncommentSelectedRange,
431
- 'class': 'UncommentSelectedRange',
438
+ 'class': "UncommentSelectedRange",
432
439
  onClick: function () {
433
440
  var range = {
434
441
  from: window["codemirror_" + editor.id].getCursor(true),
@@ -441,23 +448,23 @@
441
448
  }
442
449
  }]
443
450
  }, {
444
- type: 'checkbox',
445
- id: 'AutoComplete',
451
+ type: "checkbox",
452
+ id: "AutoComplete",
446
453
  label: lang.autoCompleteToggle,
447
454
  title: lang.autoCompleteToggle,
448
455
  onChange: function () {
449
456
  window["codemirror_" + editor.id].setOption("autoCloseTags", this.getValue());
450
457
  }
451
458
  }, {
452
- type: 'textarea',
453
- id: 'data',
454
- dir: 'ltr',
455
- inputStyle: 'cursor:auto;' +
456
- 'width:' + minWidth + 'px;' +
457
- 'height:' + minHeight + 'px;' +
458
- 'tab-size:4;' +
459
- 'text-align:left;',
460
- 'class': 'cke_source cke_enable_context_menu'
459
+ type: "textarea",
460
+ id: "data",
461
+ dir: "ltr",
462
+ inputStyle: "cursor:auto;" +
463
+ "width:" + minWidth + "px;" +
464
+ "height:" + minHeight + "px;" +
465
+ "tab-size:4;" +
466
+ "text-align:left;",
467
+ 'class': "cke_source cke_enable_context_menu"
461
468
  }
462
469
  ]
463
470
  }]
@@ -506,8 +513,8 @@
506
513
  };
507
514
 
508
515
  editor.commands.find.exec = function() {
509
- if (editor.mode === 'wysiwyg') {
510
- editor.openDialog('find');
516
+ if (editor.mode === "wysiwyg") {
517
+ editor.openDialog("find");
511
518
  } else {
512
519
  CodeMirror.commands.find(window["codemirror_" + editor.id]);
513
520
  }
@@ -522,8 +529,8 @@
522
529
  };
523
530
 
524
531
  editor.commands.replace.exec = function () {
525
- if (editor.mode === 'wysiwyg') {
526
- editor.openDialog('replace');
532
+ if (editor.mode === "wysiwyg") {
533
+ editor.openDialog("replace");
527
534
  } else {
528
535
  CodeMirror.commands.replace(window["codemirror_" + editor.id]);
529
536
  }
@@ -544,11 +551,11 @@
544
551
  editorFocus: false,
545
552
  readOnly: 1,
546
553
  exec: function(editorInstance) {
547
- if (editorInstance.mode === 'wysiwyg') {
548
- editorInstance.fire('saveSnapshot');
554
+ if (editorInstance.mode === "wysiwyg") {
555
+ editorInstance.fire("saveSnapshot");
549
556
  }
550
- editorInstance.getCommand('source').setState(CKEDITOR.TRISTATE_DISABLED);
551
- editorInstance.setMode(editorInstance.mode === 'source' ? 'wysiwyg' : 'source');
557
+ editorInstance.getCommand("source").setState(CKEDITOR.TRISTATE_DISABLED);
558
+ editorInstance.setMode(editorInstance.mode === "source" ? "wysiwyg" : "source");
552
559
  },
553
560
  canUndo: false
554
561
  },
@@ -638,30 +645,30 @@
638
645
  };
639
646
  }
640
647
 
641
- editor.addMode('source', function (callback) {
648
+ editor.addMode("source", function (callback) {
642
649
  if (!config.autoLoadCodeMirror) {
643
650
  return;
644
651
  }
645
652
 
646
- if (!IsStyleSheetAlreadyLoaded(rootPath + 'css/codemirror.min.css')) {
647
- CKEDITOR.document.appendStyleSheet(rootPath + 'css/codemirror.min.css');
653
+ if (!IsStyleSheetAlreadyLoaded(rootPath + "css/codemirror.min.css")) {
654
+ CKEDITOR.document.appendStyleSheet(rootPath + "css/codemirror.min.css");
648
655
  }
649
656
 
650
657
  if (config.theme.length &&
651
- config.theme != 'default' &&
652
- !IsStyleSheetAlreadyLoaded(rootPath + 'theme/' + config.theme + '.css')) {
653
- CKEDITOR.document.appendStyleSheet(rootPath + 'theme/' + config.theme + '.css');
658
+ config.theme != "default" &&
659
+ !IsStyleSheetAlreadyLoaded(rootPath + "theme/" + config.theme + ".css")) {
660
+ CKEDITOR.document.appendStyleSheet(rootPath + "theme/" + config.theme + ".css");
654
661
  }
655
662
 
656
663
  if (requirePresent) {
657
- require(getCodeMirrorDependencies(), function () {
664
+ pluginRequire(getCodeMirrorDependencies(), function () {
658
665
  loadCodeMirror(editor);
659
666
  callback();
660
667
  });
661
668
  } else {
662
- if (typeof (CodeMirror) == 'undefined') {
669
+ if (typeof (CodeMirror) == "undefined") {
663
670
 
664
- CKEDITOR.scriptLoader.load(rootPath + 'js/codemirror.min.js',
671
+ CKEDITOR.scriptLoader.load(rootPath + "js/codemirror.min.js",
665
672
  function() {
666
673
 
667
674
  CKEDITOR.scriptLoader.load(getCodeMirrorScripts(),
@@ -671,7 +678,7 @@
671
678
  });
672
679
  });
673
680
  } else {
674
- if (CodeMirror.prototype['autoFormatAll']) {
681
+ if (CodeMirror.prototype["autoFormatAll"]) {
675
682
  loadCodeMirror(editor);
676
683
  callback();
677
684
  } else {
@@ -687,127 +694,134 @@
687
694
 
688
695
  });
689
696
  function getCodeMirrorDependencies() {
690
- var dependencies = ['core', 'addons'];
697
+ var dependencies = ["core", "addons"];
691
698
  switch (config.mode) {
692
699
  case "bbcode":
693
700
  case "bbcodemixed":
694
- dependencies.push('modeHtml');
701
+ dependencies.push("modeHtml");
695
702
  break;
696
703
  case "application/x-httpd-php":
697
- dependencies.push('modePHP');
704
+ dependencies.push("modePHP");
698
705
  break;
699
706
  case "text/javascript":
700
- dependencies.push('modeJs');
707
+ dependencies.push("modeJs");
708
+ break;
709
+ case "handlebars":
710
+ dependencies.push("modeHandlebars");
701
711
  break;
702
712
  case "twig":
703
- dependencies.push('modeTwig');
713
+ dependencies.push("modeTwig");
704
714
  break;
705
715
  case "htmlmixed":
706
716
  case "text/html":
707
717
  default:
708
- dependencies.push('modeHtml');
718
+ dependencies.push("modeHtml");
709
719
  }
710
720
 
711
721
  if (config.useBeautifyOnStart) {
712
- dependencies.push('beautifyModule');
722
+ dependencies.push("beautifyModule");
713
723
  }
714
724
 
715
725
  if (config.enableSearchTools) {
716
- dependencies.push('addonSearch');
726
+ dependencies.push("addonSearch");
717
727
  }
718
728
  return dependencies;
719
729
  }
720
730
 
721
731
  function getCodeMirrorScripts() {
722
- var scriptFiles = [rootPath + 'js/codemirror.addons.min.js'];
732
+ var scriptFiles = [rootPath + "js/codemirror.addons.min.js"];
723
733
 
724
734
  switch (config.mode) {
735
+ case 'handlebars':
736
+ {
737
+ scriptFiles.push(rootPath + "js/codemirror.mode.handlebars.min.js");
738
+ }
725
739
  case "bbcode":
726
740
  {
727
- scriptFiles.push(rootPath + 'js/codemirror.mode.bbcode.min.js');
741
+ scriptFiles.push(rootPath + "js/codemirror.mode.bbcode.min.js");
728
742
  }
729
743
 
730
744
  break;
731
745
  case "bbcodemixed":
732
746
  {
733
- scriptFiles.push(rootPath + 'js/codemirror.mode.bbcodemixed.min.js');
747
+ scriptFiles.push(rootPath + "js/codemirror.mode.bbcodemixed.min.js");
734
748
  }
735
749
 
736
750
  break;
737
751
  case "htmlmixed":
738
752
  {
739
- scriptFiles.push(rootPath + 'js/codemirror.mode.htmlmixed.min.js');
753
+ scriptFiles.push(rootPath + "js/codemirror.mode.htmlmixed.min.js");
740
754
  }
741
755
 
742
756
  break;
743
757
  case "text/html":
744
758
  {
745
- scriptFiles.push(rootPath + 'js/codemirror.mode.htmlmixed.min.js');
759
+ scriptFiles.push(rootPath + "js/codemirror.mode.htmlmixed.min.js");
746
760
  }
747
761
 
748
762
  break;
749
763
  case "application/x-httpd-php":
750
764
  {
751
- scriptFiles.push(rootPath + 'js/codemirror.mode.php.min.js');
765
+ scriptFiles.push(rootPath + "js/codemirror.mode.php.min.js");
752
766
  }
753
767
 
754
768
  break;
755
769
  case "text/javascript":
756
770
  {
757
- scriptFiles.push(rootPath + 'js/codemirror.mode.javascript.min.js');
771
+ scriptFiles.push(rootPath + "js/codemirror.mode.javascript.min.js");
758
772
  }
759
773
 
760
774
  break;
761
775
  case "twig":
762
776
  {
763
- scriptFiles.push(rootPath + 'js/codemirror.mode.twig.min.js');
777
+ scriptFiles.push(rootPath + "js/codemirror.mode.twig.min.js");
764
778
  }
765
779
 
766
780
  break;
767
781
  default:
768
- scriptFiles.push(rootPath + 'js/codemirror.mode.htmlmixed.min.js');
782
+ scriptFiles.push(rootPath + "js/codemirror.mode.htmlmixed.min.js");
769
783
  }
770
784
 
771
785
  if (config.useBeautifyOnStart) {
772
- scriptFiles.push(rootPath + 'js/beautify.min.js');
786
+ scriptFiles.push(rootPath + "js/beautify.min.js");
773
787
  }
774
788
 
775
789
  if (config.enableSearchTools) {
776
- scriptFiles.push(rootPath + 'js/codemirror.addons.search.min.js');
790
+ scriptFiles.push(rootPath + "js/codemirror.addons.search.min.js");
777
791
  }
778
792
  return scriptFiles;
779
793
  }
780
794
 
781
795
  function loadCodeMirror(editor) {
782
- var contentsSpace = editor.ui.space('contents'),
783
- textarea = contentsSpace.getDocument().createElement('textarea');
796
+ var contentsSpace = editor.ui.space("contents"),
797
+ textarea = contentsSpace.getDocument().createElement("textarea");
784
798
 
785
799
  textarea.setStyles(
786
800
  CKEDITOR.tools.extend({
787
801
  // IE7 has overflow the <textarea> from wrapping table cell.
788
- width: CKEDITOR.env.ie7Compat ? '99%' : '100%',
789
- height: '100%',
790
- resize: 'none',
791
- outline: 'none',
792
- 'text-align': 'left'
802
+ width: CKEDITOR.env.ie7Compat ? "99%" : "100%",
803
+ height: "100%",
804
+ resize: "none",
805
+ outline: "none",
806
+ 'text-align': "left"
793
807
  },
794
- CKEDITOR.tools.cssVendorPrefix('tab-size', editor.config.sourceAreaTabSize || 4)));
795
- var ariaLabel = [editor.lang.editor, editor.name].join(',');
808
+ CKEDITOR.tools.cssVendorPrefix("tab-size", editor.config.sourceAreaTabSize || 4)));
809
+ var ariaLabel = [editor.lang.editor, editor.name].join(",");
796
810
  textarea.setAttributes({
797
- dir: 'ltr',
811
+ dir: "ltr",
798
812
  tabIndex: CKEDITOR.env.webkit ? -1 : editor.tabIndex,
799
- 'role': 'textbox',
813
+ 'role': "textbox",
800
814
  'aria-label': ariaLabel
801
815
  });
802
- textarea.addClass('cke_source');
803
- textarea.addClass('cke_reset');
804
- textarea.addClass('cke_enable_context_menu');
805
- editor.ui.space('contents').append(textarea);
816
+ textarea.addClass("cke_source");
817
+ textarea.addClass("cke_reset");
818
+ textarea.addClass("cke_enable_context_menu");
819
+ editor.ui.space("contents").append(textarea);
806
820
  window["editable_" + editor.id] = editor.editable(new sourceEditable(editor, textarea));
807
821
  // Fill the textarea with the current editor data.
808
822
  window["editable_" + editor.id].setData(editor.getData(1));
809
823
  window["editable_" + editor.id].editorID = editor.id;
810
- editor.fire('ariaWidget', this);
824
+ editor.fire("ariaWidget", this);
811
825
 
812
826
  var sourceAreaElement = window["editable_" + editor.id],
813
827
  holderElement = sourceAreaElement.getParent();
@@ -867,7 +881,7 @@
867
881
  addCKEditorKeystrokes(extraKeys);
868
882
 
869
883
  window["codemirror_" + editor.id] = CodeMirror.fromTextArea(sourceAreaElement.$, {
870
- mode: config.mode,
884
+ mode: config.mode === "handlebars" ? { name: "handlebars", base: "text/html" } : config.mode,
871
885
  matchBrackets: config.matchBrackets,
872
886
  maxHighlightLineLength: config.maxHighlightLineLength,
873
887
  matchTags: config.matchTags,
@@ -891,16 +905,16 @@
891
905
  gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
892
906
  });
893
907
 
894
- var holderHeight = holderElement.$.clientHeight == 0 ? editor.ui.space('contents').getStyle('height') : holderElement.$.clientHeight + 'px';
895
- var holderWidth = holderElement.$.clientWidth + 'px';
908
+ var holderHeight = holderElement.$.clientHeight == 0 ? editor.ui.space("contents").getStyle("height") : holderElement.$.clientHeight + "px";
909
+ var holderWidth = holderElement.$.clientWidth + "px";
896
910
 
897
911
  // Store config so we can access it within commands etc.
898
912
  window["codemirror_" + editor.id].config = config;
899
913
  if (config.autoFormatOnStart) {
900
914
  if (config.useBeautifyOnStart) {
901
915
  var indent_size = 4;
902
- var indent_char = ' ';
903
- var brace_style = 'collapse'; //collapse, expand, end-expand
916
+ var indent_char = " ";
917
+ var brace_style = "collapse"; //collapse, expand, end-expand
904
918
 
905
919
  var source = window["codemirror_" + editor.id].getValue();
906
920
 
@@ -925,7 +939,7 @@
925
939
 
926
940
  window["codemirror_" + editor.id].on("change", function () {
927
941
  window["codemirror_" + editor.id].save();
928
- editor.fire('change', this);
942
+ editor.fire("change", this);
929
943
  });
930
944
 
931
945
  window["codemirror_" + editor.id].setSize(null, holderHeight);
@@ -936,13 +950,13 @@
936
950
  }
937
951
 
938
952
  // Run config.onLoad callback, if present.
939
- if (typeof config.onLoad === 'function') {
953
+ if (typeof config.onLoad === "function") {
940
954
  config.onLoad(window["codemirror_" + editor.id], editor);
941
955
  }
942
956
 
943
957
  // inherit blur event
944
958
  window["codemirror_" + editor.id].on("blur", function () {
945
- editor.fire('blur', this);
959
+ editor.fire("blur", this);
946
960
  });
947
961
 
948
962
  window["codemirror_" + editor.id].on("keypress", function (codeMirror_Editor, evt) {
@@ -964,65 +978,65 @@
964
978
  });
965
979
  }
966
980
 
967
- editor.addCommand('source', sourcearea.commands.source);
981
+ editor.addCommand("source", sourcearea.commands.source);
968
982
  if (editor.ui.addButton) {
969
- editor.ui.addButton('Source', {
983
+ editor.ui.addButton("Source", {
970
984
  label: editor.lang.codemirror.toolbar,
971
- command: 'source',
972
- toolbar: 'mode,10'
985
+ command: "source",
986
+ toolbar: "mode,10"
973
987
  });
974
988
  }
975
989
  if (config.enableCodeFormatting) {
976
- editor.addCommand('searchCode', sourcearea.commands.searchCode);
977
- editor.addCommand('autoFormat', sourcearea.commands.autoFormat);
978
- editor.addCommand('commentSelectedRange', sourcearea.commands.commentSelectedRange);
979
- editor.addCommand('uncommentSelectedRange', sourcearea.commands.uncommentSelectedRange);
980
- editor.addCommand('autoCompleteToggle', sourcearea.commands.autoCompleteToggle);
990
+ editor.addCommand("searchCode", sourcearea.commands.searchCode);
991
+ editor.addCommand("autoFormat", sourcearea.commands.autoFormat);
992
+ editor.addCommand("commentSelectedRange", sourcearea.commands.commentSelectedRange);
993
+ editor.addCommand("uncommentSelectedRange", sourcearea.commands.uncommentSelectedRange);
994
+ editor.addCommand("autoCompleteToggle", sourcearea.commands.autoCompleteToggle);
981
995
 
982
996
  if (editor.ui.addButton) {
983
997
  if (config.showFormatButton || config.showCommentButton || config.showUncommentButton || config.showSearchButton) {
984
- editor.ui.add('-', CKEDITOR.UI_SEPARATOR, { toolbar: 'mode,30' });
998
+ editor.ui.add("-", CKEDITOR.UI_SEPARATOR, { toolbar: "mode,30" });
985
999
  }
986
1000
  if (config.showSearchButton && config.enableSearchTools) {
987
- editor.ui.addButton('searchCode', {
1001
+ editor.ui.addButton("searchCode", {
988
1002
  label: lang.searchCode,
989
- command: 'searchCode',
990
- toolbar: 'mode,40'
1003
+ command: "searchCode",
1004
+ toolbar: "mode,40"
991
1005
  });
992
1006
  }
993
1007
  if (config.showFormatButton) {
994
- editor.ui.addButton('autoFormat', {
1008
+ editor.ui.addButton("autoFormat", {
995
1009
  label: lang.autoFormat,
996
- command: 'autoFormat',
997
- toolbar: 'mode,50'
1010
+ command: "autoFormat",
1011
+ toolbar: "mode,50"
998
1012
  });
999
1013
  }
1000
1014
  if (config.showCommentButton) {
1001
- editor.ui.addButton('CommentSelectedRange', {
1015
+ editor.ui.addButton("CommentSelectedRange", {
1002
1016
  label: lang.commentSelectedRange,
1003
- command: 'commentSelectedRange',
1004
- toolbar: 'mode,60'
1017
+ command: "commentSelectedRange",
1018
+ toolbar: "mode,60"
1005
1019
  });
1006
1020
  }
1007
1021
  if (config.showUncommentButton) {
1008
- editor.ui.addButton('UncommentSelectedRange', {
1022
+ editor.ui.addButton("UncommentSelectedRange", {
1009
1023
  label: lang.uncommentSelectedRange,
1010
- command: 'uncommentSelectedRange',
1011
- toolbar: 'mode,70'
1024
+ command: "uncommentSelectedRange",
1025
+ toolbar: "mode,70"
1012
1026
  });
1013
1027
  }
1014
1028
  if (config.showAutoCompleteButton) {
1015
- editor.ui.addButton('AutoComplete', {
1029
+ editor.ui.addButton("AutoComplete", {
1016
1030
  label: lang.autoCompleteToggle,
1017
- command: 'autoCompleteToggle',
1018
- toolbar: 'mode,80'
1031
+ command: "autoCompleteToggle",
1032
+ toolbar: "mode,80"
1019
1033
  });
1020
1034
  }
1021
1035
  }
1022
1036
  }
1023
1037
 
1024
- editor.on('beforeModeUnload', function (evt) {
1025
- if (editor.mode === 'source' && editor.plugins.textselection && !editor.config.fullPage) {
1038
+ editor.on("beforeModeUnload", function (evt) {
1039
+ if (editor.mode === "source" && editor.plugins.textselection && !editor.config.fullPage) {
1026
1040
 
1027
1041
  var range = editor.getTextSelection();
1028
1042
 
@@ -1041,11 +1055,11 @@
1041
1055
  evt.data = range.content;
1042
1056
  }
1043
1057
  });
1044
- editor.on('mode', function () {
1045
- editor.getCommand('source').setState(editor.mode === 'source' ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
1058
+ editor.on("mode", function () {
1059
+ editor.getCommand("source").setState(editor.mode === "source" ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
1046
1060
 
1047
- if (editor.mode === 'source') {
1048
- editor.getCommand('autoCompleteToggle').setState(window["codemirror_" + editor.id].config.autoCloseTags ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
1061
+ if (editor.mode === "source") {
1062
+ editor.getCommand("autoCompleteToggle").setState(window["codemirror_" + editor.id].config.autoCloseTags ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
1049
1063
 
1050
1064
  if (editor.plugins.textselection && textRange && !editor.config.fullPage) {
1051
1065
 
@@ -1056,7 +1070,7 @@
1056
1070
 
1057
1071
  start = OffSetToLineChannel(window["codemirror_" + editor.id], textRange.startOffset);
1058
1072
 
1059
- if (typeof (textRange.endOffset) == 'undefined') {
1073
+ if (typeof (textRange.endOffset) == "undefined") {
1060
1074
  window["codemirror_" + editor.id].focus();
1061
1075
  window["codemirror_" + editor.id].setCursor(start);
1062
1076
  } else {
@@ -1068,22 +1082,22 @@
1068
1082
  }
1069
1083
 
1070
1084
  });
1071
- editor.on('resize', function() {
1072
- if (window["editable_" + editor.id] && editor.mode === 'source') {
1085
+ editor.on("resize", function() {
1086
+ if (window["editable_" + editor.id] && editor.mode === "source") {
1073
1087
  var holderElement = window["editable_" + editor.id].getParent();
1074
- var holderHeight = holderElement.$.clientHeight + 'px';
1075
- var holderWidth = holderElement.$.clientWidth + 'px';
1088
+ var holderHeight = holderElement.$.clientHeight + "px";
1089
+ var holderWidth = holderElement.$.clientWidth + "px";
1076
1090
  window["codemirror_" + editor.id].setSize(holderWidth, holderHeight);
1077
1091
  }
1078
1092
  });
1079
1093
 
1080
- editor.on('readOnly', function () {
1081
- if (window["editable_" + editor.id] && editor.mode === 'source') {
1094
+ editor.on("readOnly", function () {
1095
+ if (window["editable_" + editor.id] && editor.mode === "source") {
1082
1096
  window["codemirror_" + editor.id].setOption("readOnly", this.readOnly);
1083
1097
  }
1084
1098
  });
1085
1099
 
1086
- editor.on('instanceReady', function (evt) {
1100
+ editor.on("instanceReady", function (evt) {
1087
1101
 
1088
1102
  //editor.container.getPrivate().events.contextmenu.listeners.splice(0, 1);
1089
1103
 
@@ -1092,7 +1106,7 @@
1092
1106
  // Replace Complete SelectAll command from the plugin, otherwise it will not work in IE10
1093
1107
  if (selectAllCommand != null) {
1094
1108
  selectAllCommand.exec = function () {
1095
- if (editor.mode === 'source') {
1109
+ if (editor.mode === "source") {
1096
1110
  window["codemirror_" + editor.id].setSelection({
1097
1111
  line: 0,
1098
1112
  ch: 0
@@ -1102,8 +1116,8 @@
1102
1116
  });
1103
1117
  } else {
1104
1118
  var editable = editor.editable();
1105
- if (editable.is('body'))
1106
- editor.document.$.execCommand('SelectAll', false, null);
1119
+ if (editable.is("body"))
1120
+ editor.document.$.execCommand("SelectAll", false, null);
1107
1121
  else {
1108
1122
  var range = editor.createRange();
1109
1123
  range.selectNodeContents(editable);
@@ -1118,15 +1132,15 @@
1118
1132
  }
1119
1133
  });
1120
1134
 
1121
- if (typeof (jQuery) != 'undefined' && jQuery('a[data-toggle="tab"]') && window["codemirror_" + editor.id]) {
1122
- jQuery('a[data-toggle="tab"]').on('shown.bs.tab', function() {
1135
+ if (typeof (jQuery) != "undefined" && jQuery('a[data-toggle="tab"]') && window["codemirror_" + editor.id]) {
1136
+ jQuery('a[data-toggle="tab"]').on("shown.bs.tab", function() {
1123
1137
  window["codemirror_" + editor.id].refresh();
1124
1138
  });
1125
1139
  }
1126
1140
 
1127
- editor.on('setData', function(data) {
1141
+ editor.on("setData", function(data) {
1128
1142
 
1129
- if (window["editable_" + data.editor.id] && data.editor.mode === 'source') {
1143
+ if (window["editable_" + data.editor.id] && data.editor.mode === "source") {
1130
1144
  window["codemirror_" + data.editor.id].setValue(data.data.dataValue);
1131
1145
  }
1132
1146
  });
@@ -1139,11 +1153,11 @@
1139
1153
 
1140
1154
  this.setValue(data);
1141
1155
 
1142
- if (window["editable_" + this.editor.id] && this.editor.mode === 'source') {
1156
+ if (window["editable_" + this.editor.id] && this.editor.mode === "source") {
1143
1157
  window["codemirror_" + this.editor.id].setValue(data);
1144
1158
  }
1145
1159
 
1146
- this.editor.fire('dataReady');
1160
+ this.editor.fire("dataReady");
1147
1161
  },
1148
1162
  getData: function() {
1149
1163
  return this.getValue();
@@ -1157,7 +1171,7 @@
1157
1171
  },
1158
1172
  // Read-only support for textarea.
1159
1173
  setReadOnly: function(isReadOnly) {
1160
- this[(isReadOnly ? 'set' : 'remove') + 'Attribute']('readOnly', 'readonly');
1174
+ this[(isReadOnly ? "set" : "remove") + "Attribute"]("readOnly", "readonly");
1161
1175
  },
1162
1176
  editorID: null,
1163
1177
  detach: function() {
@@ -1185,12 +1199,12 @@ CKEDITOR.plugins.sourcearea = {
1185
1199
  editorFocus: false,
1186
1200
  readOnly: 1,
1187
1201
  exec: function(editor) {
1188
- if (editor.mode === 'wysiwyg') {
1189
- editor.fire('saveSnapshot');
1202
+ if (editor.mode === "wysiwyg") {
1203
+ editor.fire("saveSnapshot");
1190
1204
  }
1191
1205
 
1192
- editor.getCommand('source').setState(CKEDITOR.TRISTATE_DISABLED);
1193
- editor.setMode(editor.mode === 'source' ? 'wysiwyg' : 'source');
1206
+ editor.getCommand("source").setState(CKEDITOR.TRISTATE_DISABLED);
1207
+ editor.setMode(editor.mode === "source" ? "wysiwyg" : "source");
1194
1208
  },
1195
1209
  canUndo: false
1196
1210
  },
@@ -1213,7 +1227,7 @@ CKEDITOR.plugins.sourcearea = {
1213
1227
  },
1214
1228
  editorFocus: false,
1215
1229
  readOnly: 0,
1216
- exec: function (editor) {
1230
+ exec: function(editor) {
1217
1231
  var range = {
1218
1232
  from: window["codemirror_" + editor.id].getCursor(true),
1219
1233
  to: window["codemirror_" + editor.id].getCursor(false)
@@ -1229,7 +1243,7 @@ CKEDITOR.plugins.sourcearea = {
1229
1243
  },
1230
1244
  editorFocus: false,
1231
1245
  readOnly: 0,
1232
- exec: function (editor) {
1246
+ exec: function(editor) {
1233
1247
  var range = {
1234
1248
  from: window["codemirror_" + editor.id].getCursor(true),
1235
1249
  to: window["codemirror_" + editor.id].getCursor(false)
@@ -1266,7 +1280,7 @@ CKEDITOR.plugins.sourcearea = {
1266
1280
  },
1267
1281
  editorFocus: false,
1268
1282
  readOnly: 1,
1269
- exec: function (editor) {
1283
+ exec: function(editor) {
1270
1284
  if (this.state == CKEDITOR.TRISTATE_ON) {
1271
1285
  window["codemirror_" + editor.id].setOption("autoCloseTags", false);
1272
1286
  } else if (this.state == CKEDITOR.TRISTATE_OFF) {
@@ -1308,4 +1322,4 @@ function OffSetToLineChannel(ed, n) {
1308
1322
 
1309
1323
  function IsStyleSheetAlreadyLoaded(href) {
1310
1324
  return CKEDITOR.document.getHead().findOne('link[href="' + href + '"]') != null;
1311
- }
1325
+ }