releaf-core 1.1.21 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/releaf_core_manifest.js +3 -0
  3. data/app/assets/images/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png +0 -0
  4. data/app/assets/images/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  5. data/app/assets/images/ckeditor/plugins/flash/images/placeholder.png +0 -0
  6. data/app/assets/images/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  7. data/app/assets/images/ckeditor/plugins/icons.png +0 -0
  8. data/app/assets/images/ckeditor/plugins/iframe/images/placeholder.png +0 -0
  9. data/app/assets/images/ckeditor/plugins/image/images/noimage.png +0 -0
  10. data/app/assets/images/ckeditor/plugins/link/images/anchor.png +0 -0
  11. data/app/assets/images/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
  12. data/app/assets/images/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png +0 -0
  13. data/app/assets/images/ckeditor/plugins/magicline/images/hidpi/icon.png +0 -0
  14. data/app/assets/images/ckeditor/plugins/magicline/images/icon-rtl.png +0 -0
  15. data/app/assets/images/ckeditor/plugins/magicline/images/icon.png +0 -0
  16. data/app/assets/images/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  17. data/app/assets/images/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  18. data/app/assets/images/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  19. data/app/assets/images/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  20. data/app/assets/images/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  21. data/app/assets/images/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  22. data/app/assets/images/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  23. data/app/assets/images/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  24. data/app/assets/images/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  25. data/app/assets/images/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  26. data/app/assets/images/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  27. data/app/assets/images/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  28. data/app/assets/images/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  29. data/app/assets/images/ckeditor/plugins/smiley/images/angel_smile.png +0 -0
  30. data/app/assets/images/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  31. data/app/assets/images/ckeditor/plugins/smiley/images/angry_smile.png +0 -0
  32. data/app/assets/images/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  33. data/app/assets/images/ckeditor/plugins/smiley/images/broken_heart.png +0 -0
  34. data/app/assets/images/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  35. data/app/assets/images/ckeditor/plugins/smiley/images/confused_smile.png +0 -0
  36. data/app/assets/images/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  37. data/app/assets/images/ckeditor/plugins/smiley/images/cry_smile.png +0 -0
  38. data/app/assets/images/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  39. data/app/assets/images/ckeditor/plugins/smiley/images/devil_smile.png +0 -0
  40. data/app/assets/images/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  41. data/app/assets/images/ckeditor/plugins/smiley/images/embarrassed_smile.gif +0 -0
  42. data/app/assets/images/ckeditor/plugins/smiley/images/embarrassed_smile.png +0 -0
  43. data/app/assets/images/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  44. data/app/assets/images/ckeditor/plugins/smiley/images/envelope.png +0 -0
  45. data/app/assets/images/ckeditor/plugins/smiley/images/heart.gif +0 -0
  46. data/app/assets/images/ckeditor/plugins/smiley/images/heart.png +0 -0
  47. data/app/assets/images/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  48. data/app/assets/images/ckeditor/plugins/smiley/images/kiss.png +0 -0
  49. data/app/assets/images/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  50. data/app/assets/images/ckeditor/plugins/smiley/images/lightbulb.png +0 -0
  51. data/app/assets/images/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  52. data/app/assets/images/ckeditor/plugins/smiley/images/omg_smile.png +0 -0
  53. data/app/assets/images/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  54. data/app/assets/images/ckeditor/plugins/smiley/images/regular_smile.png +0 -0
  55. data/app/assets/images/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  56. data/app/assets/images/ckeditor/plugins/smiley/images/sad_smile.png +0 -0
  57. data/app/assets/images/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  58. data/app/assets/images/ckeditor/plugins/smiley/images/shades_smile.png +0 -0
  59. data/app/assets/images/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  60. data/app/assets/images/ckeditor/plugins/smiley/images/teeth_smile.png +0 -0
  61. data/app/assets/images/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  62. data/app/assets/images/ckeditor/plugins/smiley/images/thumbs_down.png +0 -0
  63. data/app/assets/images/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  64. data/app/assets/images/ckeditor/plugins/smiley/images/thumbs_up.png +0 -0
  65. data/app/assets/images/ckeditor/plugins/smiley/images/tongue_smile.gif +0 -0
  66. data/app/assets/images/ckeditor/plugins/smiley/images/tongue_smile.png +0 -0
  67. data/app/assets/images/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  68. data/app/assets/images/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  69. data/app/assets/images/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png +0 -0
  70. data/app/assets/images/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  71. data/app/assets/images/ckeditor/plugins/smiley/images/wink_smile.png +0 -0
  72. data/app/assets/images/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  73. data/app/assets/images/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  74. data/app/assets/images/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  75. data/app/assets/images/ckeditor/plugins/widget/images/handle.png +0 -0
  76. data/app/assets/images/ckeditor/skins/moono-lisa/icons.png +0 -0
  77. data/app/assets/images/ckeditor/skins/moono-lisa/icons_hidpi.png +0 -0
  78. data/app/assets/images/ckeditor/skins/moono-lisa/images/arrow.png +0 -0
  79. data/app/assets/images/ckeditor/skins/moono-lisa/images/close.png +0 -0
  80. data/app/assets/images/ckeditor/skins/moono-lisa/images/hidpi/close.png +0 -0
  81. data/app/assets/images/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png +0 -0
  82. data/app/assets/images/ckeditor/skins/moono-lisa/images/hidpi/lock.png +0 -0
  83. data/app/assets/images/ckeditor/skins/moono-lisa/images/hidpi/refresh.png +0 -0
  84. data/app/assets/images/ckeditor/skins/moono-lisa/images/lock-open.png +0 -0
  85. data/app/assets/images/ckeditor/skins/moono-lisa/images/lock.png +0 -0
  86. data/app/assets/images/ckeditor/skins/moono-lisa/images/refresh.png +0 -0
  87. data/app/assets/images/ckeditor/skins/moono-lisa/images/spinner.gif +0 -0
  88. data/app/assets/javascripts/ckeditor-jquery.js +3 -0
  89. data/app/assets/javascripts/ckeditor/CHANGES.md +1637 -0
  90. data/app/assets/javascripts/ckeditor/LICENSE.md +1420 -0
  91. data/app/assets/javascripts/ckeditor/README.md +39 -0
  92. data/app/assets/javascripts/ckeditor/basepath.js.erb +6 -0
  93. data/app/assets/javascripts/ckeditor/build-config.js +190 -0
  94. data/app/assets/javascripts/ckeditor/ckeditor.js +1331 -0
  95. data/app/assets/javascripts/ckeditor/config.js +10 -0
  96. data/app/assets/javascripts/ckeditor/jquery.js +10 -0
  97. data/app/assets/javascripts/ckeditor/lang/af.js +5 -0
  98. data/app/assets/javascripts/ckeditor/lang/ar.js +5 -0
  99. data/app/assets/javascripts/ckeditor/lang/az.js +5 -0
  100. data/app/assets/javascripts/ckeditor/lang/bg.js +5 -0
  101. data/app/assets/javascripts/ckeditor/lang/bn.js +5 -0
  102. data/app/assets/javascripts/ckeditor/lang/bs.js +5 -0
  103. data/app/assets/javascripts/ckeditor/lang/ca.js +5 -0
  104. data/app/assets/javascripts/ckeditor/lang/cs.js +5 -0
  105. data/app/assets/javascripts/ckeditor/lang/cy.js +5 -0
  106. data/app/assets/javascripts/ckeditor/lang/da.js +5 -0
  107. data/app/assets/javascripts/ckeditor/lang/de-ch.js +5 -0
  108. data/app/assets/javascripts/ckeditor/lang/de.js +5 -0
  109. data/app/assets/javascripts/ckeditor/lang/el.js +5 -0
  110. data/app/assets/javascripts/ckeditor/lang/en-au.js +5 -0
  111. data/app/assets/javascripts/ckeditor/lang/en-ca.js +5 -0
  112. data/app/assets/javascripts/ckeditor/lang/en-gb.js +5 -0
  113. data/app/assets/javascripts/ckeditor/lang/en.js +5 -0
  114. data/app/assets/javascripts/ckeditor/lang/eo.js +5 -0
  115. data/app/assets/javascripts/ckeditor/lang/es-mx.js +5 -0
  116. data/app/assets/javascripts/ckeditor/lang/es.js +5 -0
  117. data/app/assets/javascripts/ckeditor/lang/et.js +5 -0
  118. data/app/assets/javascripts/ckeditor/lang/eu.js +5 -0
  119. data/app/assets/javascripts/ckeditor/lang/fa.js +5 -0
  120. data/app/assets/javascripts/ckeditor/lang/fi.js +5 -0
  121. data/app/assets/javascripts/ckeditor/lang/fo.js +5 -0
  122. data/app/assets/javascripts/ckeditor/lang/fr-ca.js +5 -0
  123. data/app/assets/javascripts/ckeditor/lang/fr.js +5 -0
  124. data/app/assets/javascripts/ckeditor/lang/gl.js +5 -0
  125. data/app/assets/javascripts/ckeditor/lang/gu.js +5 -0
  126. data/app/assets/javascripts/ckeditor/lang/he.js +5 -0
  127. data/app/assets/javascripts/ckeditor/lang/hi.js +5 -0
  128. data/app/assets/javascripts/ckeditor/lang/hr.js +5 -0
  129. data/app/assets/javascripts/ckeditor/lang/hu.js +5 -0
  130. data/app/assets/javascripts/ckeditor/lang/id.js +5 -0
  131. data/app/assets/javascripts/ckeditor/lang/is.js +5 -0
  132. data/app/assets/javascripts/ckeditor/lang/it.js +5 -0
  133. data/app/assets/javascripts/ckeditor/lang/ja.js +5 -0
  134. data/app/assets/javascripts/ckeditor/lang/ka.js +5 -0
  135. data/app/assets/javascripts/ckeditor/lang/km.js +5 -0
  136. data/app/assets/javascripts/ckeditor/lang/ko.js +5 -0
  137. data/app/assets/javascripts/ckeditor/lang/ku.js +5 -0
  138. data/app/assets/javascripts/ckeditor/lang/lt.js +5 -0
  139. data/app/assets/javascripts/ckeditor/lang/lv.js +5 -0
  140. data/app/assets/javascripts/ckeditor/lang/mk.js +5 -0
  141. data/app/assets/javascripts/ckeditor/lang/mn.js +5 -0
  142. data/app/assets/javascripts/ckeditor/lang/ms.js +5 -0
  143. data/app/assets/javascripts/ckeditor/lang/nb.js +5 -0
  144. data/app/assets/javascripts/ckeditor/lang/nl.js +5 -0
  145. data/app/assets/javascripts/ckeditor/lang/no.js +5 -0
  146. data/app/assets/javascripts/ckeditor/lang/oc.js +5 -0
  147. data/app/assets/javascripts/ckeditor/lang/pl.js +5 -0
  148. data/app/assets/javascripts/ckeditor/lang/pt-br.js +5 -0
  149. data/app/assets/javascripts/ckeditor/lang/pt.js +5 -0
  150. data/app/assets/javascripts/ckeditor/lang/ro.js +5 -0
  151. data/app/assets/javascripts/ckeditor/lang/ru.js +5 -0
  152. data/app/assets/javascripts/ckeditor/lang/si.js +5 -0
  153. data/app/assets/javascripts/ckeditor/lang/sk.js +5 -0
  154. data/app/assets/javascripts/ckeditor/lang/sl.js +5 -0
  155. data/app/assets/javascripts/ckeditor/lang/sq.js +5 -0
  156. data/app/assets/javascripts/ckeditor/lang/sr-latn.js +5 -0
  157. data/app/assets/javascripts/ckeditor/lang/sr.js +5 -0
  158. data/app/assets/javascripts/ckeditor/lang/sv.js +5 -0
  159. data/app/assets/javascripts/ckeditor/lang/th.js +5 -0
  160. data/app/assets/javascripts/ckeditor/lang/tr.js +5 -0
  161. data/app/assets/javascripts/ckeditor/lang/tt.js +5 -0
  162. data/app/assets/javascripts/ckeditor/lang/ug.js +5 -0
  163. data/app/assets/javascripts/ckeditor/lang/uk.js +5 -0
  164. data/app/assets/javascripts/ckeditor/lang/vi.js +5 -0
  165. data/app/assets/javascripts/ckeditor/lang/zh-cn.js +5 -0
  166. data/app/assets/javascripts/ckeditor/lang/zh.js +5 -0
  167. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +10 -0
  168. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/af.js +11 -0
  169. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +11 -0
  170. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/az.js +11 -0
  171. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +11 -0
  172. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +13 -0
  173. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +12 -0
  174. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +11 -0
  175. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +11 -0
  176. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js +12 -0
  177. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +13 -0
  178. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +13 -0
  179. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en-au.js +11 -0
  180. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js +11 -0
  181. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +11 -0
  182. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +13 -0
  183. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js +13 -0
  184. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +13 -0
  185. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +11 -0
  186. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eu.js +12 -0
  187. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +11 -0
  188. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +11 -0
  189. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js +11 -0
  190. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +11 -0
  191. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +13 -0
  192. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +12 -0
  193. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +11 -0
  194. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +11 -0
  195. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +11 -0
  196. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +11 -0
  197. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +12 -0
  198. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/id.js +11 -0
  199. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +13 -0
  200. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +9 -0
  201. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +11 -0
  202. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +10 -0
  203. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +11 -0
  204. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +11 -0
  205. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +12 -0
  206. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +11 -0
  207. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +11 -0
  208. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +12 -0
  209. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +12 -0
  210. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +11 -0
  211. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/oc.js +12 -0
  212. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +13 -0
  213. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +13 -0
  214. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +12 -0
  215. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +12 -0
  216. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +11 -0
  217. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/si.js +10 -0
  218. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +11 -0
  219. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +11 -0
  220. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +12 -0
  221. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +11 -0
  222. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +11 -0
  223. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +11 -0
  224. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +11 -0
  225. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +12 -0
  226. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +11 -0
  227. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +12 -0
  228. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +12 -0
  229. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +11 -0
  230. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +9 -0
  231. data/app/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +9 -0
  232. data/app/assets/javascripts/ckeditor/plugins/about/dialogs/about.js +8 -0
  233. data/app/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +11 -0
  234. data/app/assets/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +14 -0
  235. data/app/assets/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
  236. data/app/assets/javascripts/ckeditor/plugins/div/dialogs/div.js +9 -0
  237. data/app/assets/javascripts/ckeditor/plugins/find/dialogs/find.js +25 -0
  238. data/app/assets/javascripts/ckeditor/plugins/flash/dialogs/flash.js +24 -0
  239. data/app/assets/javascripts/ckeditor/plugins/forms/dialogs/button.js +8 -0
  240. data/app/assets/javascripts/ckeditor/plugins/forms/dialogs/checkbox.js +9 -0
  241. data/app/assets/javascripts/ckeditor/plugins/forms/dialogs/form.js +8 -0
  242. data/app/assets/javascripts/ckeditor/plugins/forms/dialogs/hiddenfield.js +7 -0
  243. data/app/assets/javascripts/ckeditor/plugins/forms/dialogs/radio.js +9 -0
  244. data/app/assets/javascripts/ckeditor/plugins/forms/dialogs/select.js +21 -0
  245. data/app/assets/javascripts/ckeditor/plugins/forms/dialogs/textarea.js +8 -0
  246. data/app/assets/javascripts/ckeditor/plugins/forms/dialogs/textfield.js +11 -0
  247. data/app/assets/javascripts/ckeditor/plugins/iframe/dialogs/iframe.js +10 -0
  248. data/app/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +44 -0
  249. data/app/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +8 -0
  250. data/app/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +30 -0
  251. data/app/assets/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +10 -0
  252. data/app/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +55 -0
  253. data/app/assets/javascripts/ckeditor/plugins/preview/preview.html +13 -0
  254. data/app/assets/javascripts/ckeditor/plugins/scayt/CHANGELOG.md +20 -0
  255. data/app/assets/javascripts/ckeditor/plugins/scayt/LICENSE.md +28 -0
  256. data/app/assets/javascripts/ckeditor/plugins/scayt/README.md +25 -0
  257. data/app/assets/javascripts/ckeditor/plugins/scayt/dialogs/options.js +32 -0
  258. data/app/assets/javascripts/ckeditor/plugins/smiley/dialogs/smiley.js +11 -0
  259. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/af.js +13 -0
  260. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ar.js +13 -0
  261. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/az.js +10 -0
  262. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/bg.js +13 -0
  263. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ca.js +14 -0
  264. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cs.js +13 -0
  265. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cy.js +14 -0
  266. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/da.js +11 -0
  267. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/de-ch.js +13 -0
  268. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/de.js +13 -0
  269. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/el.js +13 -0
  270. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en-au.js +13 -0
  271. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js +13 -0
  272. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js +13 -0
  273. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en.js +13 -0
  274. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/eo.js +12 -0
  275. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/es-mx.js +13 -0
  276. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/es.js +13 -0
  277. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/et.js +13 -0
  278. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/eu.js +13 -0
  279. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fa.js +12 -0
  280. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fi.js +13 -0
  281. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js +10 -0
  282. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fr.js +12 -0
  283. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/gl.js +13 -0
  284. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/he.js +12 -0
  285. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/hr.js +13 -0
  286. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/hu.js +12 -0
  287. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/id.js +13 -0
  288. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/it.js +14 -0
  289. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ja.js +9 -0
  290. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/km.js +13 -0
  291. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ko.js +10 -0
  292. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ku.js +13 -0
  293. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/lt.js +13 -0
  294. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/lv.js +13 -0
  295. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nb.js +11 -0
  296. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nl.js +13 -0
  297. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/no.js +11 -0
  298. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/oc.js +12 -0
  299. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pl.js +12 -0
  300. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +11 -0
  301. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pt.js +13 -0
  302. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ro.js +13 -0
  303. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ru.js +13 -0
  304. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/si.js +13 -0
  305. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sk.js +13 -0
  306. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sl.js +12 -0
  307. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sq.js +13 -0
  308. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sv.js +11 -0
  309. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/th.js +13 -0
  310. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tr.js +12 -0
  311. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tt.js +13 -0
  312. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ug.js +13 -0
  313. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/uk.js +12 -0
  314. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/vi.js +14 -0
  315. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +9 -0
  316. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/zh.js +9 -0
  317. data/app/assets/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +14 -0
  318. data/app/assets/javascripts/ckeditor/plugins/table/dialogs/table.js +21 -0
  319. data/app/assets/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +18 -0
  320. data/app/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.js +10 -0
  321. data/app/assets/javascripts/ckeditor/plugins/templates/templates/default.js +7 -0
  322. data/app/assets/javascripts/ckeditor/plugins/wsc/LICENSE.md +28 -0
  323. data/app/assets/javascripts/ckeditor/plugins/wsc/README.md +25 -0
  324. data/app/assets/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +66 -0
  325. data/app/assets/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
  326. data/app/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +91 -0
  327. data/app/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc_ie.js +11 -0
  328. data/app/assets/javascripts/ckeditor/styles.js +137 -0
  329. data/app/assets/javascripts/releaf/include/remote_validator.js +1 -1
  330. data/app/assets/javascripts/releaf/include/store_settings.js +2 -2
  331. data/app/assets/javascripts/releaf/include/url_builder.js +130 -130
  332. data/app/assets/stylesheets/ckeditor/contents.css +208 -0
  333. data/app/assets/stylesheets/ckeditor/plugins/colordialog/dialogs/colordialog.css +20 -0
  334. data/app/assets/stylesheets/ckeditor/plugins/copyformatting/styles/copyformatting.css +45 -0
  335. data/app/assets/stylesheets/ckeditor/plugins/scayt/dialogs/dialog.css +23 -0
  336. data/app/assets/stylesheets/ckeditor/plugins/scayt/dialogs/toolbar.css +71 -0
  337. data/app/assets/stylesheets/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css +25 -0
  338. data/app/assets/stylesheets/ckeditor/plugins/tableselection/styles/tableselection.css +36 -0
  339. data/app/assets/stylesheets/ckeditor/plugins/templates/dialogs/templates.css +84 -0
  340. data/app/assets/stylesheets/ckeditor/plugins/wsc/dialogs/wsc.css +82 -0
  341. data/app/assets/stylesheets/ckeditor/plugins/wsc/skins/moono-lisa/wsc.css +43 -0
  342. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/dialog.css +5 -0
  343. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/dialog_ie.css +5 -0
  344. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/dialog_ie8.css +5 -0
  345. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/dialog_iequirks.css +5 -0
  346. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/editor.css +5 -0
  347. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/editor_gecko.css +5 -0
  348. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/editor_ie.css +5 -0
  349. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/editor_ie8.css +5 -0
  350. data/app/assets/stylesheets/ckeditor/skins/moono-lisa/editor_iequirks.css +5 -0
  351. data/app/builders/releaf/builders.rb +4 -1
  352. data/app/builders/releaf/builders/base.rb +1 -1
  353. data/app/builders/releaf/builders/form_builder/associations.rb +1 -1
  354. data/app/builders/releaf/builders/page/layout_builder.rb +1 -1
  355. data/app/builders/releaf/builders/pagination_builder.rb +1 -1
  356. data/app/builders/releaf/builders/table_builder.rb +0 -1
  357. data/app/controllers/releaf/action_controller.rb +2 -2
  358. data/app/controllers/releaf/root_controller.rb +9 -7
  359. data/app/helpers/releaf/application_helper.rb +2 -2
  360. data/app/lib/releaf/action_controller/features.rb +1 -6
  361. data/app/lib/releaf/build_errors_hash.rb +12 -12
  362. data/app/lib/releaf/responders.rb +0 -1
  363. data/app/lib/releaf/search.rb +5 -18
  364. data/app/models/releaf/settings.rb +1 -1
  365. data/app/views/releaf/action/create_releaf_richtext_attachment.haml +2 -1
  366. data/app/views/releaf/error_pages/access_denied.html.haml +1 -1
  367. data/lib/generators/dummy/install_generator.rb +2 -1
  368. data/lib/generators/dummy/templates/assets/config/manifest.js +3 -0
  369. data/lib/generators/dummy/templates/controllers/application_controller.rb +1 -1
  370. data/lib/generators/dummy/templates/migrations/create_authors.rb +1 -1
  371. data/lib/generators/dummy/templates/migrations/create_banner_groups.rb +1 -1
  372. data/lib/generators/dummy/templates/migrations/create_banner_pages.rb +2 -2
  373. data/lib/generators/dummy/templates/migrations/create_banners.rb +2 -2
  374. data/lib/generators/dummy/templates/migrations/create_book_sequels.rb +1 -1
  375. data/lib/generators/dummy/templates/migrations/create_books.rb +1 -1
  376. data/lib/generators/dummy/templates/migrations/create_bundles.rb +1 -1
  377. data/lib/generators/dummy/templates/migrations/create_chapters.rb +1 -1
  378. data/lib/generators/dummy/templates/migrations/create_home_pages.rb +1 -1
  379. data/lib/generators/dummy/templates/migrations/create_node_extra_fields.rb +1 -1
  380. data/lib/generators/dummy/templates/migrations/create_other_nodes.rb +1 -1
  381. data/lib/generators/dummy/templates/migrations/create_publishers.rb +1 -1
  382. data/lib/generators/dummy/templates/migrations/create_text_pages.rb +1 -1
  383. data/lib/generators/dummy/templates/models/author.rb +1 -1
  384. data/lib/generators/dummy/templates/models/banner.rb +1 -1
  385. data/lib/generators/dummy/templates/models/banner_group.rb +1 -1
  386. data/lib/generators/dummy/templates/models/book.rb +1 -1
  387. data/lib/generators/releaf/templates/migrations/create_releaf_nodes.rb +1 -1
  388. data/lib/generators/releaf/templates/migrations/create_releaf_permissions.rb +1 -1
  389. data/lib/generators/releaf/templates/migrations/create_releaf_richtext_attachments.rb +1 -1
  390. data/lib/generators/releaf/templates/migrations/create_releaf_roles.rb +1 -1
  391. data/lib/generators/releaf/templates/migrations/create_releaf_settings.rb +1 -1
  392. data/lib/generators/releaf/templates/migrations/create_releaf_translations.rb +1 -1
  393. data/lib/generators/releaf/templates/migrations/create_releaf_users.rb +1 -1
  394. data/lib/releaf-core.rb +1 -2
  395. data/lib/releaf/engine.rb +2 -3
  396. data/lib/releaf/rails_ext/globalize-accessors.rb +64 -0
  397. data/lib/releaf/rails_ext/validation_error_codes.rb +0 -36
  398. metadata +420 -222
  399. data/app/lib/releaf/responders/feature_disabled_responder.rb +0 -9
  400. data/app/views/releaf/error_pages/feature_disabled.html.haml +0 -1
  401. data/spec/builders/releaf/builders/association_reflector_spec.rb +0 -138
  402. data/spec/builders/releaf/builders/base_spec.rb +0 -272
  403. data/spec/builders/releaf/builders/collection_spec.rb +0 -18
  404. data/spec/builders/releaf/builders/confirm_destroy_dialog_builder_spec.rb +0 -71
  405. data/spec/builders/releaf/builders/confirm_dialog_builder_spec.rb +0 -107
  406. data/spec/builders/releaf/builders/edit_builder_spec.rb +0 -322
  407. data/spec/builders/releaf/builders/form_builder/associations_spec.rb +0 -129
  408. data/spec/builders/releaf/builders/form_builder/date_fields_spec.rb +0 -86
  409. data/spec/builders/releaf/builders/form_builder/i18n_fields_spec.rb +0 -48
  410. data/spec/builders/releaf/builders/form_builder/label_spec.rb +0 -106
  411. data/spec/builders/releaf/builders/form_builder/number_fields_spec.rb +0 -37
  412. data/spec/builders/releaf/builders/form_builder_spec.rb +0 -228
  413. data/spec/builders/releaf/builders/index_builder_spec.rb +0 -364
  414. data/spec/builders/releaf/builders/page/header_builder_spec.rb +0 -65
  415. data/spec/builders/releaf/builders/page/layout_builder_spec.rb +0 -237
  416. data/spec/builders/releaf/builders/page/menu_builder_spec.rb +0 -345
  417. data/spec/builders/releaf/builders/pagination_builder_spec.rb +0 -330
  418. data/spec/builders/releaf/builders/resource_dialog_spec.rb +0 -21
  419. data/spec/builders/releaf/builders/resource_view_spec.rb +0 -158
  420. data/spec/builders/releaf/builders/show_builder_spec.rb +0 -7
  421. data/spec/builders/releaf/builders/table_builder_spec.rb +0 -637
  422. data/spec/builders/releaf/builders/template_spec.rb +0 -12
  423. data/spec/builders/releaf/builders/toolbox_builder_spec.rb +0 -67
  424. data/spec/builders/releaf/builders/toolbox_spec.rb +0 -48
  425. data/spec/builders/releaf/builders/utilities/date_fields_spec.rb +0 -125
  426. data/spec/builders/releaf/builders/utilities/resolve_attribute_field_method_name_spec.rb +0 -318
  427. data/spec/builders/releaf/builders/view_spec.rb +0 -281
  428. data/spec/builders/releaf/builders_spec.rb +0 -134
  429. data/spec/builders/releaf/settings/form_builder_spec.rb +0 -48
  430. data/spec/builders/releaf/settings/table_builder_spec.rb +0 -23
  431. data/spec/controllers/concerns/releaf/richtext_attachments_spec.rb +0 -51
  432. data/spec/controllers/releaf/action_controller_spec.rb +0 -423
  433. data/spec/controllers/releaf/root_controller_spec.rb +0 -45
  434. data/spec/controllers/releaf/settings_controller_spec.rb +0 -52
  435. data/spec/error_hash_builder_spec.rb +0 -83
  436. data/spec/ext/array_reorder_spec.rb +0 -12
  437. data/spec/features/ajaxbox_spec.rb +0 -111
  438. data/spec/features/authorization_spec.rb +0 -50
  439. data/spec/features/breadcrumbs_spec.rb +0 -16
  440. data/spec/features/dragonfly_integration_spec.rb +0 -24
  441. data/spec/features/edit_actions_spec.rb +0 -186
  442. data/spec/features/errors_spec.rb +0 -47
  443. data/spec/features/index_actions_spec.rb +0 -85
  444. data/spec/features/index_table_spec.rb +0 -35
  445. data/spec/features/menu_spec.rb +0 -71
  446. data/spec/features/richtext_attachments_spec.rb +0 -64
  447. data/spec/features/richtext_custom_config_spec.rb +0 -28
  448. data/spec/features/richtext_embed_spec.rb +0 -29
  449. data/spec/features/richtext_spec.rb +0 -31
  450. data/spec/features/search_spec.rb +0 -825
  451. data/spec/features/settings_spec.rb +0 -70
  452. data/spec/features/title_spec.rb +0 -13
  453. data/spec/fixtures/common_fields.yml +0 -17
  454. data/spec/fixtures/cs.png +0 -0
  455. data/spec/fixtures/time.formats.xlsx +0 -0
  456. data/spec/fixtures/unicorn.jpg +0 -0
  457. data/spec/helpers/application_helper_spec.rb +0 -73
  458. data/spec/helpers/button_helper_spec.rb +0 -146
  459. data/spec/lib/releaf/action_controller/features_spec.rb +0 -171
  460. data/spec/lib/releaf/action_controller/search_spec.rb +0 -84
  461. data/spec/lib/releaf/application_spec.rb +0 -43
  462. data/spec/lib/releaf/assets_resolver_spec.rb +0 -130
  463. data/spec/lib/releaf/build_errors_hash_spec.rb +0 -141
  464. data/spec/lib/releaf/configuration_spec.rb +0 -205
  465. data/spec/lib/releaf/controller_definition_spec.rb +0 -78
  466. data/spec/lib/releaf/controller_group_definition_spec.rb +0 -33
  467. data/spec/lib/releaf/default_searchable_fields_spec.rb +0 -161
  468. data/spec/lib/releaf/instance_cache_spec.rb +0 -98
  469. data/spec/lib/releaf/resource_base_spec.rb +0 -212
  470. data/spec/lib/releaf/resource_fields_spec.rb +0 -12
  471. data/spec/lib/releaf/resource_params_spec.rb +0 -115
  472. data/spec/lib/releaf/resource_table_fields_spec.rb +0 -20
  473. data/spec/lib/releaf/resource_utilities_spec.rb +0 -87
  474. data/spec/lib/releaf/responders/access_denied_responder_spec.rb +0 -12
  475. data/spec/lib/releaf/responders/after_save_responder_spec.rb +0 -88
  476. data/spec/lib/releaf/responders/confirm_destroy_responder_spec.rb +0 -26
  477. data/spec/lib/releaf/responders/destroy_responder_spec.rb +0 -30
  478. data/spec/lib/releaf/responders/error_responder_spec.rb +0 -26
  479. data/spec/lib/releaf/responders/feature_disabled_responder_spec.rb +0 -12
  480. data/spec/lib/releaf/responders/page_not_found_responder_spec.rb +0 -12
  481. data/spec/lib/releaf/responders_spec.rb +0 -60
  482. data/spec/lib/releaf/root/configuration_spec.rb +0 -9
  483. data/spec/lib/releaf/root/default_controller_resolver_spec.rb +0 -44
  484. data/spec/lib/releaf/root_spec.rb +0 -13
  485. data/spec/lib/releaf/service_spec.rb +0 -20
  486. data/spec/lib/releaf/settings/normalize_value_spec.rb +0 -103
  487. data/spec/lib/releaf/settings/register_spec.rb +0 -135
  488. data/spec/lib/releaf/settings_manager_spec.rb +0 -22
  489. data/spec/lib/validation_error_codes_spec.rb +0 -56
  490. data/spec/misc/factories_spec.rb +0 -31
  491. data/spec/models/settings_spec.rb +0 -100
  492. data/spec/routing/route_mapper_spec.rb +0 -185
  493. data/spec/rspec_helpers/test_helpers_spec.rb +0 -20
  494. data/spec/rspec_helpers/test_spec.rb +0 -14
  495. data/spec/services/array/reorder_spec.rb +0 -121
@@ -1,47 +0,0 @@
1
- require 'rails_helper'
2
- describe "Errors feature" do
3
- before do
4
- auth_as_user
5
- end
6
-
7
- it "returns 404 status code and generic error page for nonexistent records" do
8
- visit "/admin/users/712323/edit"
9
-
10
- expect(page.status_code).to eq(404)
11
- within "main" do
12
- expect(page).to have_text("Page not found")
13
- expect(page).to have_text("You may have mistyped the address or the page may have moved")
14
- end
15
- end
16
-
17
- it "returns 404 status code and generic error page for nonexistent routes" do
18
- visit(releaf_root_path + "/asdassd")
19
-
20
- expect(page.status_code).to eq(404)
21
- within "main" do
22
- expect(page).to have_text("Page not found")
23
- expect(page).to have_text("You may have mistyped the address or the page may have moved")
24
- end
25
- end
26
-
27
- it "returns 403 status code and generic error page for disabled feature" do
28
- allow_any_instance_of(Releaf::Permissions::RolesController).to receive(:verify_feature_availability!)
29
- .and_raise(Releaf::FeatureDisabled, "edit")
30
- visit releaf_permissions_roles_path
31
-
32
- expect(page.status_code).to eq(403)
33
- within "main" do
34
- expect(page).to have_text("edit feature disabled for roles")
35
- end
36
- end
37
-
38
- it "returns 403 status code and generic error page for restricted content" do
39
- allow_any_instance_of(Releaf::Permissions::AccessControl).to receive(:controller_permitted?).and_return(false)
40
- visit releaf_permissions_roles_path
41
-
42
- expect(page.status_code).to eq(403)
43
- within "main" do
44
- expect(page).to have_text("You are not authorized to access roles")
45
- end
46
- end
47
- end
@@ -1,85 +0,0 @@
1
- require 'rails_helper'
2
- feature "Base controller index", js: true do
3
- background do
4
- auth_as_user
5
- author = FactoryGirl.create(:author)
6
- good_book = FactoryGirl.create(:book, title: "good book", author: author, published_at: Date.parse("2015-12-12"))
7
- FactoryGirl.create(:chapter, title: 'Scary night', text: 'Once upon a time...', book: good_book)
8
- FactoryGirl.create(:book, title: "bad book", author: author)
9
- end
10
-
11
- scenario "shows resource count" do
12
- visit admin_books_path
13
- expect(page).to have_number_of_resources(2)
14
- end
15
-
16
- scenario "search resources dynamically" do
17
- visit admin_books_path
18
- search "good"
19
- expect(page).to have_number_of_resources(1)
20
-
21
- check "Only active"
22
- expect(page).to have_number_of_resources(0)
23
-
24
- uncheck "Only active"
25
- expect(page).to have_number_of_resources(1)
26
-
27
- fill_in "Published between", with: "2015-11-11"
28
- click_button "Filter"
29
-
30
- expect(page).to have_number_of_resources(1)
31
- end
32
-
33
- scenario "search by 2nd level nested fields" do
34
- visit admin_authors_path
35
- search "upon"
36
- expect(page).to have_number_of_resources(1)
37
- end
38
-
39
- scenario "search nonexisting stuff" do
40
- visit admin_authors_path
41
- search "bunnyrabit"
42
- expect(page).to have_number_of_resources(0)
43
- end
44
-
45
- scenario "no row urls when :edit feature is not available" do
46
- visit admin_books_path
47
- expect(page).to have_link("good book")
48
-
49
- allow_any_instance_of(Admin::BooksController).to receive(:feature_available?).with(:edit).and_return(false)
50
- visit admin_books_path
51
- expect(page).to_not have_link("good book")
52
- end
53
-
54
- scenario "keeps search parameters when navigating to edit and back" do
55
- visit admin_books_path(search: "good")
56
- click_link("good book")
57
- wait_for_all_richtexts
58
- click_link("Back to list")
59
- expect(page).to have_number_of_resources(1)
60
- end
61
-
62
- scenario "keeps search parameters after delete" do
63
- visit admin_books_path(search: "good")
64
- open_toolbox_dialog('Delete', Book.first)
65
- click_button("Yes")
66
- expect(page).to have_number_of_resources(0)
67
- end
68
-
69
- scenario "when deleting item in edit" do
70
- visit admin_books_path(search: "good")
71
- click_link("good book")
72
- open_toolbox_dialog('Delete')
73
- click_button("Yes")
74
- expect(page).to have_number_of_resources(0)
75
- end
76
-
77
- scenario "when deleting item with restrict relation" do
78
- visit admin_authors_path
79
- open_toolbox_dialog('Delete', Author.first)
80
-
81
- within_dialog do
82
- expect(page).to have_css('.restricted-relations .relations li', count: 2)
83
- end
84
- end
85
- end
@@ -1,35 +0,0 @@
1
- require 'rails_helper'
2
- feature "Index tables" do
3
- background do
4
- auth_as_user
5
- publisher = create(:publisher, title: "ABC books")
6
- author = create(:author, publisher: publisher)
7
- another_author = create(:author, name: "Steve", publisher: nil)
8
- @book_1 = create(:book, title: "good book", author: author)
9
- @book_2 = create(:book, title: "steevs book", author: another_author)
10
- end
11
-
12
- scenario "shows books author publisher title" do
13
- visit admin_books_path
14
-
15
- within ".table.books thead tr" do
16
- cells = [
17
- "Title", "Year", "Author", "Genre", "Active", "Published at",
18
- "Price", "Stars", "Description", "Author publisher title"
19
- ]
20
- expect(page).to have_cells_text(cells, type: "th")
21
- end
22
-
23
- within ".table.books tbody" do
24
- within "tr[data-id='#{@book_1.id}']" do
25
- cells = ["good book", "", "Aleksandrs Lielais", "", "", "No", "", "", "", "ABC books"]
26
- expect(page).to have_cells_text(cells)
27
- end
28
-
29
- within "tr[data-id='#{@book_2.id}']" do
30
- cells = ["steevs book", "", "Steve Lielais", "", "", "No", "", "", "", ""]
31
- expect(page).to have_cells_text(cells)
32
- end
33
- end
34
- end
35
- end
@@ -1,71 +0,0 @@
1
- require 'rails_helper'
2
- describe "Side menu visual appearance", js: true do
3
- before do
4
- Rails.cache.clear
5
- @user = auth_as_user
6
- visit releaf_permissions_user_profile_path
7
- end
8
-
9
- describe "collapsing functionality" do
10
- context "when logged first time" do
11
- it "has side menu opened" do
12
- expect(page).to_not have_css('body.side-compact')
13
- end
14
- end
15
-
16
- context "when click to collapse button" do
17
- it "collapses side menu" do
18
- find('aside .compacter button').click
19
-
20
- expect(page).to have_css('body.side-compact')
21
- end
22
-
23
- it "has permanent collapsing status" do
24
- find('aside .compacter button').click
25
- wait_for_settings_update('releaf.side.compact')
26
- visit releaf_permissions_user_profile_path
27
-
28
- expect(page).to have_css('body.side-compact')
29
- end
30
- end
31
- end
32
-
33
- describe "menu groups collapsing" do
34
- context "when logged first time" do
35
- it "menu item groups is not collapsed" do
36
- expect(page).to have_css('aside li[data-name="permissions"]:not(.collapsed)')
37
- end
38
- end
39
-
40
- context "when collapsing submenu group with active item" do
41
- it "collapses menu group" do
42
- find('aside li[data-name="permissions"] > .trigger').click
43
- expect(page).to have_css('aside li[data-name="permissions"].collapsed')
44
- end
45
-
46
- it "does not keep menu group collapsing permanent" do
47
- find('aside li[data-name="permissions"] > .trigger').click
48
- wait_for_settings_update('releaf.menu.collapsed.permissions')
49
-
50
- visit releaf_permissions_users_path
51
- expect(page).to have_css('aside li[data-name="permissions"]:not(.collapsed)')
52
- end
53
- end
54
-
55
- context "when collapsing submenu group without active item" do
56
- it "collapses menu group" do
57
- find('aside li[data-name="inventory"] > .trigger').click
58
-
59
- expect(page).to have_css('aside li[data-name="inventory"].collapsed')
60
- end
61
-
62
- it "keeps menu group collapsing permanent" do
63
- find('aside li[data-name="inventory"] > .trigger').click
64
- wait_for_settings_update('releaf.menu.collapsed.inventory')
65
- visit releaf_permissions_user_profile_path
66
-
67
- expect(page).to have_css('aside li[data-name="inventory"].collapsed')
68
- end
69
- end
70
- end
71
- end
@@ -1,64 +0,0 @@
1
- require 'rails_helper'
2
- feature "Richtext attachments", js: true do
3
- background do
4
- # preload ActsAsNode classes
5
- Rails.application.eager_load!
6
- auth_as_user
7
- end
8
-
9
- scenario "Upload image and insert it within text" do
10
- visit new_admin_node_path(content_type: 'HomePage')
11
- fill_in("Name", with: "Image test")
12
- select('en', from: 'Locale')
13
-
14
- status_script = 'CKEDITOR.instances["resource_content_attributes_intro_text_html"].status=="ready"'
15
- expect { page.evaluate_script(status_script) }.to become_true
16
-
17
- find(".cke_toolbox a[title='Image']").click
18
- expect(page).to have_css(".cke_dialog_title", text: "Image Properties")
19
- click_link "Upload"
20
-
21
- within_frame(find("iframe.cke_dialog_ui_input_file")) do
22
- fixture_path = File.expand_path('../fixtures/cs.png', __dir__)
23
- attach_file(:upload, fixture_path)
24
- end
25
-
26
- click_link "Send it to the Server"
27
- expect(page).to have_content("Preview")
28
- click_link "OK"
29
-
30
- expect(page).to have_css(".cke_editor_resource_content_attributes_intro_text_html") # wait focus switch finished
31
- save_and_check_response "Create succeeded"
32
-
33
- visit "/image-test"
34
- expect(page).to have_css("img[src='#{Releaf::RichtextAttachment.last.file.url}']")
35
- end
36
-
37
- scenario "Upload file and insert url to it" do
38
- visit new_admin_node_path(content_type: 'HomePage')
39
- fill_in("Name", with: "Link test")
40
- select('en', from: 'Locale')
41
-
42
- status_script = 'CKEDITOR.instances["resource_content_attributes_intro_text_html"].status=="ready"'
43
- expect { page.evaluate_script(status_script) }.to become_true
44
-
45
- find(".cke_toolbox a.cke_button__link").click
46
- expect(page).to have_css(".cke_dialog_title", text: "Link")
47
- click_link "Upload"
48
-
49
- within_frame(find("iframe.cke_dialog_ui_input_file")) do
50
- fixture_path = File.expand_path('../fixtures/cs.png', __dir__)
51
- attach_file(:upload, fixture_path)
52
- end
53
-
54
- click_link "Send it to the Server"
55
- expect(page).to have_content("Link Type")
56
- click_link "OK"
57
-
58
- expect(page).to have_css(".cke_editor_resource_content_attributes_intro_text_html") # wait focus switch finished
59
- save_and_check_response "Create succeeded"
60
-
61
- visit "/link-test"
62
- expect(page).to have_css("a[href='#{Releaf::RichtextAttachment.last.file.url}']")
63
- end
64
- end
@@ -1,28 +0,0 @@
1
- require 'rails_helper'
2
- feature "Richtext custom config", js: true do
3
- background do
4
- # preload ActsAsNode classes
5
- Rails.application.eager_load!
6
- auth_as_user
7
- end
8
-
9
- scenario "Add embed to richtext" do
10
- visit new_admin_book_path
11
- wait_for_all_richtexts
12
-
13
- within "section[data-name=\"chapters\"]" do
14
- click_button "Add item"
15
- expect(page).to have_css(".cke_toolbar a.cke_button__bold")
16
- expect(page).to have_css(".cke_toolbar a.cke_button__italic")
17
- expect(page).to_not have_css(".cke_toolbar a.cke_button__image")
18
- expect(page).to_not have_css(".cke_toolbar a.cke_button__format")
19
- end
20
-
21
- within ".field[data-name=\"summary_html\"]" do
22
- expect(page).to have_css(".cke_toolbar a.cke_button__bold")
23
- expect(page).to have_css(".cke_toolbar a.cke_button__italic")
24
- expect(page).to have_css(".cke_toolbar a.cke_button__image")
25
- expect(page).to_not have_css(".cke_toolbar a.cke_button__format")
26
- end
27
- end
28
- end
@@ -1,29 +0,0 @@
1
- require 'rails_helper'
2
- feature "Richtext embed", js: true do
3
- background do
4
- # preload ActsAsNode classes
5
- Rails.application.eager_load!
6
- auth_as_user
7
- end
8
-
9
- scenario "Add embed to richtext" do
10
- visit new_admin_node_path(content_type: 'HomePage')
11
- fill_in("Name", with: "Embed test")
12
- select('en', from: 'Locale')
13
-
14
- status_script = 'CKEDITOR.instances["resource_content_attributes_intro_text_html"].status=="ready"'
15
- expect { page.evaluate_script(status_script) }.to become_true
16
-
17
- find(".cke_toolbox a[title='Embed Media']").click
18
- expect(page).to have_css(".cke_dialog_title", text: "Embed Media")
19
-
20
- fill_in "Paste Embed Code Here", with: '<iframe src="500.html" />'
21
- click_link "OK"
22
-
23
- expect(page).to have_css(".cke_editor_resource_content_attributes_intro_text_html") # wait focus switch finished
24
- save_and_check_response "Create succeeded"
25
-
26
- visit "/embed-test"
27
- expect(page).to have_css("iframe[src='500.html']")
28
- end
29
- end
@@ -1,31 +0,0 @@
1
- require 'rails_helper'
2
- feature "Richtext editing", js: true do
3
- background do
4
- auth_as_user
5
- end
6
-
7
- scenario "Image toolbar available when controller support attachments" do
8
- visit new_admin_node_path(content_type: 'TextPage')
9
- wait_for_all_richtexts
10
- fill_in_richtext 'Text', with: "some text"
11
- expect(page).to have_css("a.cke_button__image")
12
- end
13
-
14
- scenario "Image toolbar unavailable when controller doesn't support attachments" do
15
- allow_any_instance_of(Admin::BooksController).to receive(:releaf_richtext_attachment_upload_url).and_return("")
16
- visit new_admin_book_path
17
- wait_for_all_richtexts
18
- fill_in_richtext "Summary", with: "some text"
19
- expect(page).to_not have_css("a.cke_button__image")
20
- end
21
-
22
- scenario "Test helper fills in correct value" do
23
- visit new_admin_node_path(content_type: 'TextPage')
24
- html = %Q[ <p class="xxx" id='yyy'> &quot;HTML&quot; 'content' </p> ]
25
- wait_for_all_richtexts
26
- fill_in_richtext 'Text', with: html
27
- content = evaluate_script('CKEDITOR.instances["resource_content_attributes_text_html"].getData();')
28
- expect(content).to match_html html
29
- end
30
-
31
- end
@@ -1,825 +0,0 @@
1
- require "rails_helper"
2
-
3
- describe Releaf::Search do
4
-
5
- describe "searching in models attributes" do
6
- with_model :Tester, scope: :all do
7
- table do |t|
8
- t.string :name
9
- t.string :surname
10
- end
11
- end
12
-
13
- before(:all) do
14
- @tester1 = Tester.create!(name: 'Jānis')
15
- @tester2 = Tester.create!(name: 'Pēteris', surname: 'Grābeklis')
16
- @tester3 = Tester.create!(name: 'Pēteris', surname: 'Lazdiņš')
17
- @tester4 = Tester.create!(surname: 'Lazdiņš')
18
- end
19
-
20
- it "can search in single column" do
21
- params = {
22
- relation: Tester,
23
- fields: [:name],
24
- text: 'Pēteris'
25
- }
26
- expect( described_class.prepare(params) ).to match_array [@tester2, @tester3]
27
- end
28
-
29
- it "can search in multiple columns" do
30
- params = {
31
- relation: Tester,
32
- fields: [:name, :surname],
33
- text: 'Lazdiņš Pēteris'
34
- }
35
- expect( described_class.prepare(params) ).to match_array [@tester3]
36
- end
37
-
38
- it "is case insensitive" do
39
- params = {
40
- relation: Tester,
41
- fields: [:name],
42
- text: 'jānis'
43
- }
44
- expect( described_class.prepare(params) ).to match_array [@tester1]
45
- end
46
-
47
- it "doesn't suffer from injections" do
48
- expected_results = if mysql?
49
- /LIKE '%SQL\\\'injection%'/
50
- elsif postgresql?
51
- /ILIKE '%SQL''injection%'/
52
- else
53
- fail
54
- end
55
- params = {
56
- relation: Tester,
57
- fields: [:name],
58
- text: "SQL'injection"
59
- }
60
- expect( described_class.prepare(params).to_sql ).to match(expected_results)
61
- end
62
- end
63
-
64
- describe "searching in has_many association attributes" do
65
- with_model :Programmer, scope: :all do
66
- model do
67
- has_many :projects
68
- end
69
- end
70
-
71
- with_model :Project, scope: :all do
72
- table do |t|
73
- t.string :title
74
- t.string :description
75
- t.integer :programmer_id
76
- end
77
-
78
- model do
79
- belongs_to :programmer
80
- end
81
- end
82
-
83
- before(:all) do
84
- @programmer1 = Programmer.create!
85
- @programmer2 = Programmer.create!
86
- @programmer3 = Programmer.create!
87
-
88
- Project.create(programmer: @programmer1, title: 'Good')
89
- Project.create(programmer: @programmer1, title: 'Bad', description: 'legacy code')
90
- Project.create(programmer: @programmer2, title: 'Ugy', description: 'php')
91
- Project.create(programmer: @programmer3, title: 'Very good')
92
- Project.create(programmer: @programmer3, title: 'good', description: 'ruby')
93
- end
94
-
95
- it "finds records" do
96
- params = {
97
- relation: Programmer,
98
- fields: [projects: [:title]],
99
- text: 'bad'
100
- }
101
- expect( described_class.prepare(params) ).to match_array [@programmer1]
102
- end
103
-
104
- it "returns distinct records" do
105
- params = {
106
- relation: Programmer,
107
- fields: [projects: [:title]],
108
- text: 'good'
109
- }
110
- expect( described_class.prepare(params) ).to match_array [@programmer1, @programmer3]
111
- end
112
-
113
- it "searches different columns" do
114
- params = {
115
- relation: Programmer,
116
- fields: [projects: [:title, :description]],
117
- text: 'good ruby'
118
- }
119
- expect( described_class.prepare(params) ).to match_array [@programmer3]
120
- end
121
- end
122
-
123
- describe "searching in belongs_to association attributes" do
124
- with_model :Programmer, scope: :all do
125
- table do |t|
126
- t.integer :project_manager_id
127
- end
128
-
129
- model do
130
- belongs_to :project_manager
131
- end
132
- end
133
-
134
- with_model :ProjectManager, scope: :all do
135
- table do |t|
136
- t.string :name
137
- t.string :surname
138
- end
139
- end
140
-
141
- before(:all) do
142
- project_manager1 = ProjectManager.create!(name: 'Jānis')
143
- project_manager2 = ProjectManager.create!(name: 'Pēteris', surname: 'Ozols')
144
- project_manager3 = ProjectManager.create!(name: 'Jānis', surname: 'Ozols')
145
-
146
- @programmer1 = Programmer.create!(project_manager: project_manager1)
147
- @programmer2 = Programmer.create!(project_manager: project_manager2)
148
- @programmer3 = Programmer.create!(project_manager: project_manager3)
149
- end
150
-
151
- it "finds records" do
152
- params = {
153
- relation: Programmer,
154
- fields: [project_manager: [:name]],
155
- text: 'pēteris'
156
- }
157
- expect( described_class.prepare(params) ).to match_array [@programmer2]
158
- end
159
-
160
- it "searches different columns" do
161
- params = {
162
- relation: Programmer,
163
- fields: [project_manager: [:name, :surname]],
164
- text: 'jānis ozols'
165
- }
166
- expect( described_class.prepare(params) ).to match_array [@programmer3]
167
- end
168
- end
169
-
170
- describe "searching in has_one association attributes" do
171
- with_model :Programmer, scope: :all do
172
- model do
173
- has_one :account
174
- end
175
- end
176
-
177
- with_model :Account, scope: :all do
178
- table do |t|
179
- t.string :login
180
- t.string :email
181
- t.integer :programmer_id
182
- end
183
-
184
- model do
185
- belongs_to :programmer
186
- end
187
- end
188
-
189
- before(:all) do
190
- @programmer1 = Programmer.create!
191
- @programmer2 = Programmer.create!
192
- @programmer3 = Programmer.create!
193
-
194
- Account.create!(programmer: @programmer1, login: 'god', email: 'god@example.com')
195
- Account.create!(programmer: @programmer2, login: 'devil', email: 'devil@example.com')
196
- Account.create!(programmer: @programmer3, login: 'unknown', email: 'who@example.com')
197
- end
198
-
199
- it "finds records" do
200
- params = {
201
- relation: Programmer,
202
- fields: [account: [:login]],
203
- text: 'god'
204
- }
205
- expect( described_class.prepare(params) ).to match_array [@programmer1]
206
- end
207
-
208
- it "searches different columns" do
209
- params = {
210
- relation: Programmer,
211
- fields: [account: [:login, :email]],
212
- text: 'unknown who'
213
- }
214
- expect( described_class.prepare(params) ).to match_array [@programmer3]
215
- end
216
-
217
- end
218
-
219
- describe "searching in has_many through assocation attributes" do
220
- with_model :Programmer, scope: :all do
221
- model do
222
- has_many :commits
223
- has_many :projects, through: :commits
224
- end
225
- end
226
-
227
- with_model :Commit, scope: :all do
228
- table do |t|
229
- t.integer :programmer_id
230
- t.integer :project_id
231
- end
232
-
233
- model do
234
- belongs_to :programmer
235
- belongs_to :project
236
- end
237
- end
238
-
239
- with_model :Project, scope: :all do
240
- table do |t|
241
- t.string :name
242
- t.string :description
243
- end
244
- end
245
-
246
- before(:all) do
247
- @programmer1 = Programmer.create!
248
- @programmer2 = Programmer.create!
249
- @programmer3 = Programmer.create!
250
-
251
- project1 = Project.create!(name: 'Good')
252
- project2 = Project.create!(name: 'Bad', description: 'legacy code')
253
- project3 = Project.create!(name: 'Ugy', description: 'php')
254
- project4 = Project.create!(name: 'Very good')
255
- project5 = Project.create!(name: 'good', description: 'ruby')
256
-
257
- Commit.create!(programmer: @programmer1, project: project1)
258
- Commit.create!(programmer: @programmer1, project: project2)
259
- Commit.create!(programmer: @programmer2, project: project2)
260
- Commit.create!(programmer: @programmer2, project: project3)
261
- Commit.create!(programmer: @programmer1, project: project4)
262
- Commit.create!(programmer: @programmer3, project: project5)
263
- end
264
-
265
- it "finds records" do
266
- params = {
267
- relation: Programmer,
268
- fields: [projects: [:name, :description]],
269
- text: 'good'
270
- }
271
- expect( described_class.prepare(params) ).to match_array [@programmer1, @programmer3]
272
- end
273
- end
274
-
275
- describe "searching in has_one through assocation attributes" do
276
- with_model :Supplier, scope: :all do
277
- model do |t|
278
- has_one :account
279
- has_one :account_history, through: :account
280
- end
281
- end
282
-
283
- with_model :Account, scope: :all do
284
- table do |t|
285
- t.integer :supplier_id
286
- end
287
-
288
- model do
289
- belongs_to :supplier
290
- has_one :account_history
291
- end
292
- end
293
-
294
- with_model :AccountHistory, scope: :all do
295
- table do |t|
296
- t.integer :account_id
297
- t.string :old_login
298
- end
299
-
300
- model do
301
- belongs_to :account
302
- end
303
- end
304
-
305
- before(:all) do
306
- @supplier1 = Supplier.create!
307
- @supplier2 = Supplier.create!
308
- @supplier3 = Supplier.create!
309
-
310
- account1 = Account.create!(supplier: @supplier1)
311
- account2 = Account.create!(supplier: @supplier2)
312
- account3 = Account.create!(supplier: @supplier3)
313
-
314
- AccountHistory.create!(account: account1, old_login: 'marusja')
315
- AccountHistory.create!(account: account2, old_login: 'ķirmis')
316
- AccountHistory.create!(account: account3, old_login: 'grauzējs')
317
- end
318
-
319
- it "finds correct records" do
320
- params = {
321
- relation: Supplier,
322
- fields: [account_history: [:old_login]],
323
- text: 'ķirmis'
324
- }
325
- expect( described_class.prepare(params) ).to match_array [@supplier2]
326
- end
327
-
328
- end
329
-
330
- describe "searching in polymorphic has_many association" do
331
- with_model :Note, scope: :all do
332
- table do |t|
333
- t.integer :owner_id
334
- t.string :owner_type
335
- t.string :text
336
- end
337
-
338
- model do
339
- belongs_to :owner, polymorphic: true
340
- end
341
- end
342
-
343
- with_model :Account, scope: :all do
344
- model do
345
- has_many :notes, as: :owner
346
- end
347
- end
348
-
349
- with_model :Supplier, scope: :all do
350
- model do
351
- has_many :notes, as: :owner
352
- end
353
- end
354
-
355
- before(:all) do
356
- @account1 = Account.create!
357
- @account2 = Account.create!
358
- @supplier1 = Supplier.create!
359
- @supplier2 = Supplier.create!
360
-
361
- Note.create!(owner: @account1, text: 'one')
362
- Note.create!(owner: @supplier1, text: 'two')
363
- Note.create!(owner: @account2, text: 'three')
364
- Note.create!(owner: @supplier2, text: 'four')
365
- end
366
-
367
- it "finds correct record" do
368
- params = {
369
- relation: Account,
370
- fields: [notes: [:text]],
371
- text: 'one'
372
- }
373
- expect( described_class.prepare(params) ).to match_array [@account1]
374
- end
375
-
376
- it "uses owner_type when joining" do
377
- params = {
378
- relation: Account,
379
- fields: [notes: [:text]],
380
- text: 'two'
381
- }
382
- expect( described_class.prepare(params) ).to match_array []
383
- end
384
- end
385
-
386
- describe "searching in polymorphic has_one association" do
387
- with_model :Note, scope: :all do
388
- table do |t|
389
- t.integer :owner_id
390
- t.string :owner_type
391
- t.string :text
392
- end
393
-
394
- model do
395
- belongs_to :owner, polymorphic: true
396
- end
397
- end
398
-
399
- with_model :Account, scope: :all do
400
- model do
401
- has_one :note, as: :owner
402
- end
403
- end
404
-
405
- with_model :Supplier, scope: :all do
406
- model do
407
- has_one :note, as: :owner
408
- end
409
- end
410
-
411
- before(:all) do
412
- @account1 = Account.create!
413
- @account2 = Account.create!
414
- @supplier1 = Supplier.create!
415
- @supplier2 = Supplier.create!
416
-
417
- Note.create!(owner: @account1, text: 'one')
418
- Note.create!(owner: @supplier1, text: 'two')
419
- Note.create!(owner: @account2, text: 'three')
420
- Note.create!(owner: @supplier2, text: 'four')
421
- end
422
-
423
- it "finds correct record" do
424
- params = {
425
- relation: Account,
426
- fields: [note: [:text]],
427
- text: 'one'
428
- }
429
- expect( described_class.prepare(params) ).to match_array [@account1]
430
- end
431
-
432
- it "uses owner_type when joining" do
433
- params = {
434
- relation: Account,
435
- fields: [note: [:text]],
436
- text: 'two'
437
- }
438
- expect( described_class.prepare(params) ).to match_array []
439
- end
440
-
441
- end
442
-
443
- describe "searching in scoped association" do
444
- with_model :Post, scope: :all do
445
- model do
446
- has_many :comments, -> { where(deleted: false) }
447
- has_many :deleted_comments, -> { where(deleted: true) }, class_name: :Comment
448
- end
449
- end
450
-
451
- with_model :Comment, scope: :all do
452
- table do |t|
453
- t.integer :post_id
454
- t.boolean :deleted, default: false
455
- t.string :text
456
- end
457
-
458
- model do
459
- belongs_to :post
460
- end
461
- end
462
-
463
- before(:all) do
464
- @post1 = Post.create!
465
- @post2 = Post.create!
466
- @post3 = Post.create!
467
-
468
- Comment.create!(post: @post1, text: 'one')
469
- Comment.create!(post: @post2, text: 'one', deleted: true)
470
- Comment.create!(post: @post3, text: 'two')
471
- Comment.create!(post: @post3, text: 'one', deleted: true)
472
- end
473
-
474
- it "finds correct records" do
475
- params = {
476
- relation: Post,
477
- fields: [comments: [:text]],
478
- text: 'one'
479
- }
480
- expect( described_class.prepare(params) ).to match_array [@post1]
481
- end
482
-
483
- it "finds correct records" do
484
- params = {
485
- relation: Post,
486
- fields: [deleted_comments: [:text]],
487
- text: 'one'
488
- }
489
- expect( described_class.prepare(params) ).to match_array [@post2, @post3]
490
- end
491
- end
492
-
493
- describe "searching in same table through different associations" do
494
-
495
- with_model :Writer, scope: :all do
496
- table do |t|
497
- t.string :name
498
- end
499
- end
500
-
501
- with_model :Post, scope: :all do
502
- table do |t|
503
- t.integer :writer_id
504
- t.integer :editor_id
505
- end
506
-
507
- model do
508
- belongs_to :writer, class_name: :Writer
509
- belongs_to :editor, class_name: :Writer
510
- end
511
- end
512
-
513
- before(:all) do
514
- writer1 = Writer.create!(name: 'Jānis')
515
- writer2 = Writer.create!(name: 'Pēteris')
516
- writer3 = Writer.create!(name: 'Juris')
517
- writer4 = Writer.create!(name: 'Jurģis')
518
-
519
- @post1 = Post.create!(writer: writer1, editor: writer2)
520
- @post2 = Post.create!(writer: writer1, editor: writer3)
521
- @post3 = Post.create!(writer: writer2, editor: writer1)
522
- @post4 = Post.create!(writer: writer2)
523
- @post5 = Post.create!(writer: writer3, editor: writer4)
524
- @post6 = Post.create!( editor: writer3)
525
- end
526
-
527
- it "returns correct records" do
528
- params = {
529
- relation: Post,
530
- fields: [writer: [:name], editor: [:name]],
531
- text: 'Pēteris'
532
- }
533
- expect( described_class.prepare(params) ).to match_array [@post1, @post3, @post4]
534
- end
535
-
536
- it "returns correct records" do
537
- params = {
538
- relation: Post,
539
- fields: [writer: [:name], editor: [:name]],
540
- text: 'Juris'
541
- }
542
- expect( described_class.prepare(params) ).to match_array [@post2, @post5, @post6]
543
- end
544
- end
545
-
546
- describe "searching in association table that is already joined" do
547
- with_model :Writer, scope: :all do
548
- table do |t|
549
- t.string :name
550
- end
551
- end
552
-
553
- with_model :Post, scope: :all do
554
- table do |t|
555
- t.integer :writer_id
556
- end
557
-
558
- model do
559
- belongs_to :writer
560
- end
561
- end
562
-
563
- before(:all) do
564
- writer1 = Writer.create!(name: 'Jānis')
565
- writer2 = Writer.create!(name: 'Pēteris')
566
- writer3 = Writer.create!(name: 'Juris')
567
- writer4 = Writer.create!(name: 'Jurģis')
568
-
569
- @post1 = Post.create!(writer: writer1)
570
- @post2 = Post.create!(writer: writer1)
571
- @post3 = Post.create!(writer: writer2)
572
- @post4 = Post.create!(writer: writer2)
573
- @post5 = Post.create!(writer: writer3)
574
- @post6 = Post.create!
575
- end
576
-
577
- it "returns correct records" do
578
- params = {
579
- relation: Post.joins(:writer),
580
- fields: [writer: [:name]],
581
- text: 'Pēteris'
582
- }
583
- expect( described_class.prepare(params) ).to match_array [@post3, @post4]
584
- end
585
- end
586
-
587
- describe "searching deeply nested attributes" do
588
- with_model :Programmer, scope: :all do
589
- table do |t|
590
- t.integer :manager_id
591
- end
592
-
593
- model do
594
- belongs_to :manager, class_name: :ProjectManager
595
- end
596
- end
597
-
598
- with_model :ProjectManager, scope: :all do
599
- table do |t|
600
- t.string :name
601
- t.string :surname
602
- end
603
-
604
- model do
605
- has_many :programmers, foreign_key: :manager_id
606
- has_many :projects, foreign_key: :manager_id
607
- end
608
- end
609
-
610
- with_model :Project, scope: :all do
611
- table do |t|
612
- t.string :name
613
- t.integer :manager_id
614
- end
615
-
616
- model do
617
- belongs_to :manager, class_name: :ProjectManager
618
- end
619
- end
620
-
621
- before(:all) do
622
- manager1 = ProjectManager.create!
623
- manager2 = ProjectManager.create!
624
- manager3 = ProjectManager.create!
625
-
626
- @programmer1 = Programmer.create!(manager: manager1)
627
- @programmer2 = Programmer.create!(manager: manager2)
628
- @programmer3 = Programmer.create!(manager: manager2)
629
-
630
- Project.create!(name: 'one', manager: manager1)
631
- Project.create!(name: 'two', manager: manager1)
632
- Project.create!(name: 'three', manager: manager2)
633
- Project.create!(name: 'four', manager: manager3)
634
- end
635
-
636
- it "returns correct records" do
637
- params = {
638
- relation: Programmer,
639
- fields: [manager: [projects: [:name]]],
640
- text: 'three'
641
- }
642
- expect( described_class.prepare(params) ).to match_array [@programmer2, @programmer3]
643
- end
644
- end
645
-
646
- describe "searching with joins and includes" do
647
- with_model :Writer, scope: :all do
648
- table do |t|
649
- t.string :name
650
- end
651
- end
652
-
653
- with_model :Post, scope: :all do
654
- table do |t|
655
- t.integer :writer_id
656
- end
657
-
658
- model do
659
- belongs_to :writer
660
- end
661
- end
662
-
663
- before(:all) do
664
- writer1 = Writer.create!(name: 'Jānis')
665
- writer2 = Writer.create!(name: 'Pēteris')
666
- writer3 = Writer.create!(name: 'Juris')
667
- writer4 = Writer.create!(name: 'Jurģis')
668
-
669
- @post1 = Post.create!(writer: writer1)
670
- @post2 = Post.create!(writer: writer1)
671
- @post3 = Post.create!(writer: writer2)
672
- @post4 = Post.create!(writer: writer2)
673
- @post5 = Post.create!(writer: writer3)
674
- @post6 = Post.create!
675
- end
676
-
677
- it "returns correct records" do
678
- params = {
679
- relation: Post.includes(:writer).references(:writer),
680
- fields: [writer: [:name]],
681
- text: 'Pēteris'
682
- }
683
- expect( described_class.prepare(params) ).to match_array [@post3, @post4]
684
- end
685
- end
686
-
687
- describe "searching in polymorphic association form STI class" do
688
- with_model :Note, scope: :all do
689
- table do |t|
690
- t.integer :owner_id
691
- t.string :owner_type
692
- t.string :text
693
- end
694
-
695
- model do
696
- belongs_to :owner, polymorphic: true
697
- end
698
- end
699
-
700
- with_model :Account, scope: :all do
701
- table do |t|
702
- t.string :type
703
- end
704
-
705
- model do
706
- has_many :notes, as: :owner
707
- end
708
- end
709
-
710
- before(:all) do
711
- class SecretAccount < Account; end
712
-
713
- @account1 = Account.create!
714
- @account2 = SecretAccount.create!
715
- @account3 = Account.create!
716
- @account4 = SecretAccount.create!
717
-
718
- Note.create!(owner: @account1, text: 'one')
719
- Note.create!(owner: @account2, text: 'two')
720
- Note.create!(owner: @account3, text: 'three')
721
- Note.create!(owner: @account4, text: 'four')
722
- end
723
-
724
- after(:all) do
725
- # clenaup temp constant
726
- Object.send(:remove_const, :SecretAccount) if Object.constants.include?(:SecretAccount)
727
- end
728
-
729
- it "finds correct record" do
730
- params = {
731
- relation: SecretAccount,
732
- fields: [notes: [:text]],
733
- text: 'one'
734
- }
735
- expect( described_class.prepare(params) ).to match_array []
736
- end
737
-
738
- it "finds correct record" do
739
- params = {
740
- relation: SecretAccount,
741
- fields: [notes: [:text]],
742
- text: 'two'
743
- }
744
- expect( described_class.prepare(params) ).to match_array [@account2]
745
- end
746
-
747
- it "finds correct record" do
748
- params = {
749
- relation: Account,
750
- fields: [notes: [:text]],
751
- text: 'two'
752
- }
753
- expect( described_class.prepare(params) ).to match_array [@account2]
754
- end
755
-
756
- it "finds correct record" do
757
- params = {
758
- relation: Account,
759
- fields: [notes: [:text]],
760
- text: 'one'
761
- }
762
- expect( described_class.prepare(params) ).to match_array [@account1]
763
- end
764
-
765
- end
766
-
767
- describe "searching in localized attributes" do
768
-
769
- with_model :Post, scope: :all do
770
- model do
771
- translates :title
772
- globalize_accessors
773
- end
774
- end
775
-
776
- with_model :PostTranslation, scope: :all do
777
- table do |t|
778
- t.integer Post.reflect_on_association(:translations).foreign_key
779
- t.string :locale
780
- t.string :title
781
- end
782
- end
783
-
784
- before(:all) do
785
- Post::Translation.send(:table_name=, PostTranslation.table_name)
786
-
787
- @post1 = Post.create!(title_lv: 'bar', title_en: 'foo')
788
- @post2 = Post.create!(title_lv: 'foo', title_en: 'bar')
789
- @post3 = Post.create!(title_lv: 'foo', title_en: 'foo')
790
- @post4 = Post.create!(title_lv: 'bar', title_en: 'bar')
791
- end
792
-
793
- context "when current locale is lv" do
794
- before(:each) do
795
- I18n.locale = 'lv'
796
- end
797
-
798
- after(:each) do
799
- I18n.locale = 'en'
800
- end
801
-
802
- it "it searches in current locale only", focus: true do
803
- params = {
804
- relation: Post,
805
- fields: [translations: [:title]],
806
- text: 'foo'
807
- }
808
- expect( described_class.prepare(params) ).to match_array [@post2, @post3]
809
- end
810
- end
811
-
812
- context "when current locale is en" do
813
- it "it searches in current locale only", focus: true do
814
- params = {
815
- relation: Post,
816
- fields: [translations: [:title]],
817
- text: 'foo'
818
- }
819
- expect( described_class.prepare(params) ).to match_array [@post1, @post3]
820
- end
821
- end
822
-
823
- end
824
-
825
- end