elabs 2.0.0.pre

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 (404) hide show
  1. checksums.yaml +7 -0
  2. data/.eslintrc.yml +26 -0
  3. data/.gitignore +49 -0
  4. data/.gitlab-ci.yml +93 -0
  5. data/.haml-lint.yml +4 -0
  6. data/.node-version +1 -0
  7. data/.rspec +1 -0
  8. data/.rubocop.yml +59 -0
  9. data/.ruby-version +1 -0
  10. data/.simplecov +5 -0
  11. data/.stylelintrc.yml +218 -0
  12. data/CHANGELOG.md +273 -0
  13. data/CODE_OF_CONDUCT.md +78 -0
  14. data/Gemfile +75 -0
  15. data/Gemfile.lock +376 -0
  16. data/LICENSE +21 -0
  17. data/LICENSES.md +6 -0
  18. data/README.md +41 -0
  19. data/ROADMAP.md +61 -0
  20. data/Rakefile +32 -0
  21. data/app/assets/config/elabs_manifest.js +3 -0
  22. data/app/assets/images/elabs/preview_placeholder.png +0 -0
  23. data/app/assets/images/elabs/preview_placeholder_nsfw.png +0 -0
  24. data/app/assets/javascripts/elabs/application.js +27 -0
  25. data/app/assets/javascripts/elabs/helpers-codemirror.js +29 -0
  26. data/app/assets/javascripts/elabs/helpers-markdown.js +42 -0
  27. data/app/assets/javascripts/elabs/helpers.js +17 -0
  28. data/app/assets/javascripts/elabs/modals.js +19 -0
  29. data/app/assets/javascripts/elabs/tabs.js +32 -0
  30. data/app/assets/stylesheets/elabs/_colors.scss +345 -0
  31. data/app/assets/stylesheets/elabs/_icons.scss +9 -0
  32. data/app/assets/stylesheets/elabs/_variables.scss +13 -0
  33. data/app/assets/stylesheets/elabs/app/_acts.scss +58 -0
  34. data/app/assets/stylesheets/elabs/app/_alerts.scss +3 -0
  35. data/app/assets/stylesheets/elabs/app/_buttons.scss +21 -0
  36. data/app/assets/stylesheets/elabs/app/_comments.scss +1 -0
  37. data/app/assets/stylesheets/elabs/app/_content.scss +10 -0
  38. data/app/assets/stylesheets/elabs/app/_content_uploads.scss +39 -0
  39. data/app/assets/stylesheets/elabs/app/_empty.scss +19 -0
  40. data/app/assets/stylesheets/elabs/app/_errors.scss +9 -0
  41. data/app/assets/stylesheets/elabs/app/_filter_links.scss +27 -0
  42. data/app/assets/stylesheets/elabs/app/_forms.scss +69 -0
  43. data/app/assets/stylesheets/elabs/app/_helpers.scss +3 -0
  44. data/app/assets/stylesheets/elabs/app/_languages.scss +6 -0
  45. data/app/assets/stylesheets/elabs/app/_layout.scss +194 -0
  46. data/app/assets/stylesheets/elabs/app/_licenses.scss +6 -0
  47. data/app/assets/stylesheets/elabs/app/_link-to-top.scss +8 -0
  48. data/app/assets/stylesheets/elabs/app/_medias.scss +12 -0
  49. data/app/assets/stylesheets/elabs/app/_modals.scss +53 -0
  50. data/app/assets/stylesheets/elabs/app/_nsfw.scss +5 -0
  51. data/app/assets/stylesheets/elabs/app/_pagination.scss +16 -0
  52. data/app/assets/stylesheets/elabs/app/_tabs.scss +54 -0
  53. data/app/assets/stylesheets/elabs/app/_tags.scss +6 -0
  54. data/app/assets/stylesheets/elabs/app/_toolbars.scss +3 -0
  55. data/app/assets/stylesheets/elabs/app/_users.scss +6 -0
  56. data/app/assets/stylesheets/elabs/app/admin-members/_forms.scss +6 -0
  57. data/app/assets/stylesheets/elabs/app/admin-members/_indexes.scss +70 -0
  58. data/app/assets/stylesheets/elabs/app/admin-members/_layout.scss +17 -0
  59. data/app/assets/stylesheets/elabs/app/areas/_devise.scss +31 -0
  60. data/app/assets/stylesheets/elabs/app/components/_cards.scss +16 -0
  61. data/app/assets/stylesheets/elabs/app/components/_container.scss +4 -0
  62. data/app/assets/stylesheets/elabs/app/mixins/_classifier-card.scss +16 -0
  63. data/app/assets/stylesheets/elabs/app/mixins/_content-card.scss +58 -0
  64. data/app/assets/stylesheets/elabs/app/mixins/_content-full.scss +39 -0
  65. data/app/assets/stylesheets/elabs/app/mixins/_icon.scss +9 -0
  66. data/app/assets/stylesheets/elabs/application.css +14 -0
  67. data/app/assets/stylesheets/elabs/lib/_codemirror.scss +26 -0
  68. data/app/assets/stylesheets/elabs/lib/fontawesome/_fontawesome.scss +38 -0
  69. data/app/assets/stylesheets/elabs/lib/fontawesome/_fonts.scss +42 -0
  70. data/app/assets/stylesheets/elabs/lib/fontawesome/_icons.scss +1118 -0
  71. data/app/assets/stylesheets/elabs/lib/knacss/_knacss-variables.scss +230 -0
  72. data/app/assets/stylesheets/elabs/lib/knacss/_knacss.scss +59 -0
  73. data/app/assets/stylesheets/elabs/style.scss +72 -0
  74. data/app/controllers/elabs/acts_controller.rb +12 -0
  75. data/app/controllers/elabs/admin/admin_application_controller.rb +19 -0
  76. data/app/controllers/elabs/admin/admin_content_application_controller.rb +66 -0
  77. data/app/controllers/elabs/admin/albums_controller.rb +10 -0
  78. data/app/controllers/elabs/admin/articles_controller.rb +10 -0
  79. data/app/controllers/elabs/admin/languages_controller.rb +77 -0
  80. data/app/controllers/elabs/admin/licenses_controller.rb +77 -0
  81. data/app/controllers/elabs/admin/notes_controller.rb +10 -0
  82. data/app/controllers/elabs/admin/projects_controller.rb +10 -0
  83. data/app/controllers/elabs/admin/reports_controller.rb +34 -0
  84. data/app/controllers/elabs/admin/tags_controller.rb +56 -0
  85. data/app/controllers/elabs/admin/uploads_controller.rb +10 -0
  86. data/app/controllers/elabs/admin/users_controller.rb +43 -0
  87. data/app/controllers/elabs/albums_controller.rb +26 -0
  88. data/app/controllers/elabs/articles_controller.rb +25 -0
  89. data/app/controllers/elabs/auth/callbacks_controller.rb +38 -0
  90. data/app/controllers/elabs/auth/confirmations_controller.rb +43 -0
  91. data/app/controllers/elabs/auth/passwords_controller.rb +47 -0
  92. data/app/controllers/elabs/auth/registrations_controller.rb +70 -0
  93. data/app/controllers/elabs/auth/sessions_controller.rb +36 -0
  94. data/app/controllers/elabs/auth/unlocks_controller.rb +38 -0
  95. data/app/controllers/elabs/concerns/elabs_controller.rb +18 -0
  96. data/app/controllers/elabs/concerns/localizable.rb +11 -0
  97. data/app/controllers/elabs/concerns/reportable.rb +17 -0
  98. data/app/controllers/elabs/content_application_controller.rb +45 -0
  99. data/app/controllers/elabs/elabs_application_controller.rb +95 -0
  100. data/app/controllers/elabs/languages_controller.rb +36 -0
  101. data/app/controllers/elabs/licenses_controller.rb +31 -0
  102. data/app/controllers/elabs/member/albums_controller.rb +11 -0
  103. data/app/controllers/elabs/member/articles_controller.rb +11 -0
  104. data/app/controllers/elabs/member/member_application_controller.rb +12 -0
  105. data/app/controllers/elabs/member/member_content_application_controller.rb +128 -0
  106. data/app/controllers/elabs/member/notes_controller.rb +11 -0
  107. data/app/controllers/elabs/member/preferences_controller.rb +36 -0
  108. data/app/controllers/elabs/member/projects_controller.rb +11 -0
  109. data/app/controllers/elabs/member/uploads_controller.rb +11 -0
  110. data/app/controllers/elabs/member/users_controller.rb +28 -0
  111. data/app/controllers/elabs/notes_controller.rb +25 -0
  112. data/app/controllers/elabs/projects_controller.rb +30 -0
  113. data/app/controllers/elabs/reports_controller.rb +36 -0
  114. data/app/controllers/elabs/tags_controller.rb +36 -0
  115. data/app/controllers/elabs/uploads_controller.rb +24 -0
  116. data/app/controllers/elabs/users_controller.rb +36 -0
  117. data/app/helpers/elabs/acts_helper.rb +22 -0
  118. data/app/helpers/elabs/admin_content_helper.rb +54 -0
  119. data/app/helpers/elabs/application_helper.rb +54 -0
  120. data/app/helpers/elabs/content_filters_helper.rb +97 -0
  121. data/app/helpers/elabs/content_renderer_helper.rb +13 -0
  122. data/app/helpers/elabs/member_content_helper.rb +47 -0
  123. data/app/helpers/elabs/thumbnails_helper.rb +28 -0
  124. data/app/helpers/elabs/time_helper.rb +19 -0
  125. data/app/helpers/elabs/uploads_helper.rb +19 -0
  126. data/app/jobs/elabs/application_job.rb +4 -0
  127. data/app/mailers/elabs/application_mailer.rb +6 -0
  128. data/app/models/elabs/act.rb +7 -0
  129. data/app/models/elabs/album.rb +24 -0
  130. data/app/models/elabs/albums_tag.rb +21 -0
  131. data/app/models/elabs/albums_upload.rb +21 -0
  132. data/app/models/elabs/application_content_record.rb +10 -0
  133. data/app/models/elabs/application_record.rb +5 -0
  134. data/app/models/elabs/article.rb +23 -0
  135. data/app/models/elabs/articles_tag.rb +21 -0
  136. data/app/models/elabs/comment.rb +12 -0
  137. data/app/models/elabs/concerns/actable_entity.rb +52 -0
  138. data/app/models/elabs/concerns/content_entity.rb +70 -0
  139. data/app/models/elabs/concerns/countable_entity.rb +81 -0
  140. data/app/models/elabs/concerns/taggable.rb +33 -0
  141. data/app/models/elabs/language.rb +17 -0
  142. data/app/models/elabs/license.rb +15 -0
  143. data/app/models/elabs/note.rb +21 -0
  144. data/app/models/elabs/notes_tag.rb +21 -0
  145. data/app/models/elabs/preference.rb +9 -0
  146. data/app/models/elabs/project.rb +25 -0
  147. data/app/models/elabs/projects_album.rb +21 -0
  148. data/app/models/elabs/projects_article.rb +21 -0
  149. data/app/models/elabs/projects_note.rb +21 -0
  150. data/app/models/elabs/projects_tag.rb +21 -0
  151. data/app/models/elabs/projects_upload.rb +21 -0
  152. data/app/models/elabs/report.rb +11 -0
  153. data/app/models/elabs/tag.rb +18 -0
  154. data/app/models/elabs/upload.rb +28 -0
  155. data/app/models/elabs/uploads_tag.rb +21 -0
  156. data/app/models/elabs/user.rb +30 -0
  157. data/app/validators/elabs/associated_author_validator.rb +11 -0
  158. data/app/views/elabs/acts/_act.json.jbuilder +2 -0
  159. data/app/views/elabs/acts/_filters.html.haml +3 -0
  160. data/app/views/elabs/acts/index.html.haml +27 -0
  161. data/app/views/elabs/acts/index.json.jbuilder +1 -0
  162. data/app/views/elabs/admin/albums/_album.json.jbuilder +2 -0
  163. data/app/views/elabs/admin/albums/index.html.haml +43 -0
  164. data/app/views/elabs/admin/albums/index.json.jbuilder +1 -0
  165. data/app/views/elabs/admin/articles/_article.json.jbuilder +2 -0
  166. data/app/views/elabs/admin/articles/index.html.haml +41 -0
  167. data/app/views/elabs/admin/articles/index.json.jbuilder +1 -0
  168. data/app/views/elabs/admin/languages/_form.html.haml +18 -0
  169. data/app/views/elabs/admin/languages/_language.json.jbuilder +2 -0
  170. data/app/views/elabs/admin/languages/edit.html.haml +6 -0
  171. data/app/views/elabs/admin/languages/index.html.haml +34 -0
  172. data/app/views/elabs/admin/languages/index.json.jbuilder +1 -0
  173. data/app/views/elabs/admin/languages/new.html.haml +3 -0
  174. data/app/views/elabs/admin/licenses/_form.html.haml +25 -0
  175. data/app/views/elabs/admin/licenses/_license.json.jbuilder +2 -0
  176. data/app/views/elabs/admin/licenses/edit.html.haml +6 -0
  177. data/app/views/elabs/admin/licenses/index.html.haml +42 -0
  178. data/app/views/elabs/admin/licenses/index.json.jbuilder +1 -0
  179. data/app/views/elabs/admin/licenses/new.html.haml +3 -0
  180. data/app/views/elabs/admin/notes/_note.json.jbuilder +2 -0
  181. data/app/views/elabs/admin/notes/index.html.haml +40 -0
  182. data/app/views/elabs/admin/notes/index.json.jbuilder +1 -0
  183. data/app/views/elabs/admin/projects/_project.json.jbuilder +2 -0
  184. data/app/views/elabs/admin/projects/index.html.haml +45 -0
  185. data/app/views/elabs/admin/projects/index.json.jbuilder +1 -0
  186. data/app/views/elabs/admin/reports/index.html.haml +27 -0
  187. data/app/views/elabs/admin/reports/index.json.jbuilder +1 -0
  188. data/app/views/elabs/admin/tags/_form.html.haml +17 -0
  189. data/app/views/elabs/admin/tags/_tag.json.jbuilder +2 -0
  190. data/app/views/elabs/admin/tags/edit.html.haml +6 -0
  191. data/app/views/elabs/admin/tags/index.html.haml +27 -0
  192. data/app/views/elabs/admin/tags/index.json.jbuilder +1 -0
  193. data/app/views/elabs/admin/uploads/_upload.json.jbuilder +2 -0
  194. data/app/views/elabs/admin/uploads/index.html.haml +45 -0
  195. data/app/views/elabs/admin/uploads/index.json.jbuilder +1 -0
  196. data/app/views/elabs/admin/users/_admin_user.json.jbuilder +2 -0
  197. data/app/views/elabs/admin/users/index.html.haml +33 -0
  198. data/app/views/elabs/admin/users/index.json.jbuilder +1 -0
  199. data/app/views/elabs/admin/users/show.html.haml +26 -0
  200. data/app/views/elabs/admin/users/show.json.jbuilder +1 -0
  201. data/app/views/elabs/albums/_album.html.haml +38 -0
  202. data/app/views/elabs/albums/_album.json.jbuilder +2 -0
  203. data/app/views/elabs/albums/_filters.html.haml +8 -0
  204. data/app/views/elabs/albums/index.html.haml +9 -0
  205. data/app/views/elabs/albums/index.json.jbuilder +1 -0
  206. data/app/views/elabs/albums/show.html.haml +60 -0
  207. data/app/views/elabs/albums/show.json.jbuilder +1 -0
  208. data/app/views/elabs/articles/_article.html.haml +30 -0
  209. data/app/views/elabs/articles/_article.json.jbuilder +2 -0
  210. data/app/views/elabs/articles/_filters.html.haml +8 -0
  211. data/app/views/elabs/articles/index.html.haml +9 -0
  212. data/app/views/elabs/articles/index.json.jbuilder +1 -0
  213. data/app/views/elabs/articles/show.html.haml +45 -0
  214. data/app/views/elabs/articles/show.json.jbuilder +1 -0
  215. data/app/views/elabs/auth/confirmations/new.html.haml +26 -0
  216. data/app/views/elabs/auth/passwords/edit.html.haml +31 -0
  217. data/app/views/elabs/auth/passwords/new.html.haml +23 -0
  218. data/app/views/elabs/auth/registrations/edit.html.haml +48 -0
  219. data/app/views/elabs/auth/registrations/new.html.haml +34 -0
  220. data/app/views/elabs/auth/sessions/_new.html.haml +15 -0
  221. data/app/views/elabs/auth/sessions/new.html.haml +8 -0
  222. data/app/views/elabs/auth/shared/_links.html.haml +16 -0
  223. data/app/views/elabs/auth/unlocks/new.html.haml +23 -0
  224. data/app/views/elabs/comments/_comment.json.jbuilder +2 -0
  225. data/app/views/elabs/comments/_comments.html.haml +21 -0
  226. data/app/views/elabs/comments/_form.html.haml +31 -0
  227. data/app/views/elabs/languages/_associations.html.haml +51 -0
  228. data/app/views/elabs/languages/_filters.html.haml +6 -0
  229. data/app/views/elabs/languages/_language.json.jbuilder +2 -0
  230. data/app/views/elabs/languages/index.html.haml +33 -0
  231. data/app/views/elabs/languages/index.json.jbuilder +1 -0
  232. data/app/views/elabs/languages/show.html.haml +38 -0
  233. data/app/views/elabs/languages/show.json.jbuilder +1 -0
  234. data/app/views/elabs/layouts/_empty.html.haml +3 -0
  235. data/app/views/elabs/layouts/_footer.html.haml +6 -0
  236. data/app/views/elabs/layouts/_hidden_entry.html.haml +6 -0
  237. data/app/views/elabs/layouts/_hidden_entry_full.html.haml +6 -0
  238. data/app/views/elabs/layouts/_language_menu.html.haml +2 -0
  239. data/app/views/elabs/layouts/_menu.html.haml +72 -0
  240. data/app/views/elabs/layouts/admin_application.html.haml +21 -0
  241. data/app/views/elabs/layouts/application.html.haml +37 -0
  242. data/app/views/elabs/layouts/lists/_albums.html.haml +10 -0
  243. data/app/views/elabs/layouts/lists/_projects.html.haml +10 -0
  244. data/app/views/elabs/layouts/lists/_tags.html.haml +9 -0
  245. data/app/views/elabs/layouts/mailer.html.haml +8 -0
  246. data/app/views/elabs/layouts/mailer.text.haml +1 -0
  247. data/app/views/elabs/layouts/member_application.html.haml +21 -0
  248. data/app/views/elabs/licenses/_associations.html.haml +51 -0
  249. data/app/views/elabs/licenses/_filters.html.haml +3 -0
  250. data/app/views/elabs/licenses/_license.json.jbuilder +2 -0
  251. data/app/views/elabs/licenses/index.html.haml +27 -0
  252. data/app/views/elabs/licenses/index.json.jbuilder +1 -0
  253. data/app/views/elabs/licenses/show.html.haml +44 -0
  254. data/app/views/elabs/licenses/show.json.jbuilder +1 -0
  255. data/app/views/elabs/member/albums/_album.json.jbuilder +2 -0
  256. data/app/views/elabs/member/albums/_form.html.haml +64 -0
  257. data/app/views/elabs/member/albums/edit.html.haml +6 -0
  258. data/app/views/elabs/member/albums/index.html.haml +49 -0
  259. data/app/views/elabs/member/albums/index.json.jbuilder +1 -0
  260. data/app/views/elabs/member/albums/new.html.haml +3 -0
  261. data/app/views/elabs/member/articles/_article.json.jbuilder +2 -0
  262. data/app/views/elabs/member/articles/_form.html.haml +70 -0
  263. data/app/views/elabs/member/articles/edit.html.haml +6 -0
  264. data/app/views/elabs/member/articles/index.html.haml +47 -0
  265. data/app/views/elabs/member/articles/index.json.jbuilder +1 -0
  266. data/app/views/elabs/member/articles/new.html.haml +3 -0
  267. data/app/views/elabs/member/layouts/_empty.html.haml +4 -0
  268. data/app/views/elabs/member/layouts/_markdown-preview.html.haml +8 -0
  269. data/app/views/elabs/member/notes/_form.html.haml +54 -0
  270. data/app/views/elabs/member/notes/_note.json.jbuilder +2 -0
  271. data/app/views/elabs/member/notes/edit.html.haml +6 -0
  272. data/app/views/elabs/member/notes/index.html.haml +47 -0
  273. data/app/views/elabs/member/notes/index.json.jbuilder +1 -0
  274. data/app/views/elabs/member/notes/new.html.haml +3 -0
  275. data/app/views/elabs/member/preferences/_form.html.haml +20 -0
  276. data/app/views/elabs/member/preferences/edit.html.haml +3 -0
  277. data/app/views/elabs/member/projects/_form.html.haml +71 -0
  278. data/app/views/elabs/member/projects/_project.json.jbuilder +2 -0
  279. data/app/views/elabs/member/projects/edit.html.haml +6 -0
  280. data/app/views/elabs/member/projects/index.html.haml +53 -0
  281. data/app/views/elabs/member/projects/index.json.jbuilder +1 -0
  282. data/app/views/elabs/member/projects/new.html.haml +3 -0
  283. data/app/views/elabs/member/uploads/_form.html.haml +67 -0
  284. data/app/views/elabs/member/uploads/_upload.json.jbuilder +2 -0
  285. data/app/views/elabs/member/uploads/edit.html.haml +6 -0
  286. data/app/views/elabs/member/uploads/index.html.haml +61 -0
  287. data/app/views/elabs/member/uploads/index.json.jbuilder +1 -0
  288. data/app/views/elabs/member/uploads/new.html.haml +3 -0
  289. data/app/views/elabs/member/users/_form.html.haml +38 -0
  290. data/app/views/elabs/notes/_filters.html.haml +7 -0
  291. data/app/views/elabs/notes/_note.html.haml +31 -0
  292. data/app/views/elabs/notes/_note.json.jbuilder +2 -0
  293. data/app/views/elabs/notes/index.html.haml +9 -0
  294. data/app/views/elabs/notes/index.json.jbuilder +1 -0
  295. data/app/views/elabs/notes/show.html.haml +44 -0
  296. data/app/views/elabs/notes/show.json.jbuilder +1 -0
  297. data/app/views/elabs/projects/_associations.html.haml +46 -0
  298. data/app/views/elabs/projects/_filters.html.haml +8 -0
  299. data/app/views/elabs/projects/_project.html.haml +29 -0
  300. data/app/views/elabs/projects/index.html.haml +9 -0
  301. data/app/views/elabs/projects/index.json.jbuilder +1 -0
  302. data/app/views/elabs/projects/show.html.haml +71 -0
  303. data/app/views/elabs/projects/show.json.jbuilder +1 -0
  304. data/app/views/elabs/reports/_form.html.haml +29 -0
  305. data/app/views/elabs/tags/_associations.html.haml +51 -0
  306. data/app/views/elabs/tags/_filters.html.haml +3 -0
  307. data/app/views/elabs/tags/_tag.json.jbuilder +2 -0
  308. data/app/views/elabs/tags/index.html.haml +26 -0
  309. data/app/views/elabs/tags/index.json.jbuilder +1 -0
  310. data/app/views/elabs/tags/show.html.haml +34 -0
  311. data/app/views/elabs/tags/show.json.jbuilder +1 -0
  312. data/app/views/elabs/uploads/_filters.html.haml +7 -0
  313. data/app/views/elabs/uploads/_player.html.haml +10 -0
  314. data/app/views/elabs/uploads/_preview.html.haml +17 -0
  315. data/app/views/elabs/uploads/_upload.html.haml +41 -0
  316. data/app/views/elabs/uploads/_upload.json.jbuilder +2 -0
  317. data/app/views/elabs/uploads/index.html.haml +9 -0
  318. data/app/views/elabs/uploads/index.json.jbuilder +1 -0
  319. data/app/views/elabs/uploads/show.html.haml +58 -0
  320. data/app/views/elabs/uploads/show.json.jbuilder +1 -0
  321. data/app/views/elabs/users/_associations.html.haml +51 -0
  322. data/app/views/elabs/users/_filters.html.haml +4 -0
  323. data/app/views/elabs/users/_user.html.haml +31 -0
  324. data/app/views/elabs/users/_user.json.jbuilder +2 -0
  325. data/app/views/elabs/users/index.html.haml +7 -0
  326. data/app/views/elabs/users/index.json.jbuilder +1 -0
  327. data/app/views/elabs/users/show.html.haml +48 -0
  328. data/app/views/elabs/users/show.json.jbuilder +1 -0
  329. data/bin/rails +14 -0
  330. data/config.ru +5 -0
  331. data/config/brakeman.ignore +124 -0
  332. data/config/brakeman.yml +3 -0
  333. data/config/cucumber.yml +9 -0
  334. data/config/routes.rb +116 -0
  335. data/db/migrate/20180813000000_devise_update_users.rb +15 -0
  336. data/db/migrate/20180813000001_create_languages.rb +16 -0
  337. data/db/migrate/20180813000002_create_tags.rb +14 -0
  338. data/db/migrate/20180813000004_create_licenses.rb +17 -0
  339. data/db/migrate/20180813000005_create_reports.rb +15 -0
  340. data/db/migrate/20180813000006_create_comments.rb +15 -0
  341. data/db/migrate/20180813000007_create_acts.rb +10 -0
  342. data/db/migrate/20180813000008_create_preferences.rb +13 -0
  343. data/db/migrate/20180813000009_create_active_storage_tables.active_storage.rb +26 -0
  344. data/db/migrate/20180813000010_create_albums.rb +23 -0
  345. data/db/migrate/20180813000011_create_articles.rb +23 -0
  346. data/db/migrate/20180813000012_create_notes.rb +21 -0
  347. data/db/migrate/20180813000013_create_uploads.rb +26 -0
  348. data/db/migrate/20180813000014_create_projects.rb +44 -0
  349. data/db/seeds.rb +10 -0
  350. data/db/seeds_development.rb +21 -0
  351. data/db/seeds_production.rb +0 -0
  352. data/docs/contributing.md +52 -0
  353. data/docs/cucumber_terms.md +9 -0
  354. data/docs/migrating.md +4 -0
  355. data/docs/overriding.md +20 -0
  356. data/docs/setup.md +136 -0
  357. data/docs/tips.md +13 -0
  358. data/elabs.gemspec +25 -0
  359. data/lib/assets/javascripts/README-highlight.js.md +39 -0
  360. data/lib/assets/javascripts/codemirror-5.39.2/addon/mode/overlay.js +90 -0
  361. data/lib/assets/javascripts/codemirror-5.39.2/lib/codemirror.js +9684 -0
  362. data/lib/assets/javascripts/codemirror-5.39.2/mode/clike/clike.js +834 -0
  363. data/lib/assets/javascripts/codemirror-5.39.2/mode/css/css.js +832 -0
  364. data/lib/assets/javascripts/codemirror-5.39.2/mode/gfm/gfm.js +129 -0
  365. data/lib/assets/javascripts/codemirror-5.39.2/mode/htmlmixed/htmlmixed.js +152 -0
  366. data/lib/assets/javascripts/codemirror-5.39.2/mode/javascript/javascript.js +896 -0
  367. data/lib/assets/javascripts/codemirror-5.39.2/mode/markdown/markdown.js +882 -0
  368. data/lib/assets/javascripts/codemirror-5.39.2/mode/meta.js +217 -0
  369. data/lib/assets/javascripts/codemirror-5.39.2/mode/xml/xml.js +402 -0
  370. data/lib/assets/javascripts/highlight.js-9.12.0/highlight.pack.js +2 -0
  371. data/lib/assets/javascripts/markdown-it-8.4.2.min.js +1 -0
  372. data/lib/assets/stylesheets/codemirror-5.39.2/lib/codemirror.css +346 -0
  373. data/lib/assets/stylesheets/codemirror-5.39.2/theme/base16-dark.css +38 -0
  374. data/lib/assets/stylesheets/codemirror-5.39.2/theme/base16-light.css +38 -0
  375. data/lib/assets/stylesheets/highlight.js-9.12.0/styles/atelier-sulphurpool-light.css +69 -0
  376. data/lib/elabs.rb +41 -0
  377. data/lib/elabs/engine.rb +5 -0
  378. data/lib/elabs/version.rb +3 -0
  379. data/lib/generators/elabs/assets_generator.rb +36 -0
  380. data/lib/generators/elabs/devise_views_generator.rb +24 -0
  381. data/lib/generators/elabs/install_generator.rb +26 -0
  382. data/lib/generators/elabs/required_assets_generator.rb +26 -0
  383. data/lib/generators/elabs/views_generator.rb +25 -0
  384. data/lib/generators/templates/elabs.rb +25 -0
  385. data/lib/generators/templates/fast_gettext.rb +3 -0
  386. data/lib/tasks/.keep +0 -0
  387. data/lib/tasks/cucumber.rake +75 -0
  388. data/lib/tasks/elabs_tasks.rake +4 -0
  389. data/lib/tasks/factory_bot.rake +14 -0
  390. data/lib/tasks/wipe.rake +31 -0
  391. data/locale/app.pot +1124 -0
  392. data/locale/devise_strings.rb +88 -0
  393. data/locale/en/app.edit.po +1123 -0
  394. data/locale/en/app.po +1123 -0
  395. data/locale/en/app.po.time_stamp +0 -0
  396. data/locale/fr/app.edit.po +1126 -0
  397. data/locale/fr/app.po +1125 -0
  398. data/locale/fr/app.po.time_stamp +0 -0
  399. data/locale/model_attributes.rb +85 -0
  400. data/package.json +22 -0
  401. data/script/cucumber +10 -0
  402. data/tmp/pids/.keep +0 -0
  403. data/yarn.lock +2759 -0
  404. metadata +463 -0
@@ -0,0 +1,273 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ ## [1.0.0] - 2018-08-09 - First v1 \o/
5
+ ### Added
6
+
7
+ - Updated translations
8
+ - Added methods to access the elabs configuration quickly
9
+
10
+ ### Changed
11
+
12
+ - A lot of methods were returning constant strings. They are now constants.
13
+
14
+ ### Improved
15
+
16
+ - Improved configuration
17
+ - Improved setup
18
+ - Improved README
19
+
20
+ ## [0.15.0] - 2018-08-05 - "Tests improvements"
21
+ ### Added
22
+
23
+ - Shared examples for RSpec controllers tests
24
+ - Completed the maximum of cucumber steps tagged with `@wip`
25
+ - Option to enable sendmail email transport
26
+
27
+ ### Changed
28
+
29
+ - Capybara screenshots are now in `tmp/`
30
+
31
+ ### Improved
32
+
33
+ - Renamed and moved Cucumber's features and steps
34
+ - Refactored some of the existing Cucumber steps
35
+ - Updated all controller tests to use shared examples
36
+
37
+ ### Removed
38
+
39
+ - Removed unused method "validate_related_data" in `content_entity.rb`
40
+
41
+ ### Fixed
42
+
43
+ - Fixed the relation validator which was not working and badly tested
44
+
45
+ ## [0.14.0] - 2018-08-04 - "Markdown preview"
46
+ ### Added
47
+
48
+ - Content textareas are now previewable
49
+
50
+ ### Changed
51
+
52
+ - Replaced RedCarpet by Markdown-it, a JS markdown parser. The choice
53
+ has been made to render content on the client side to have the same
54
+ renderer as in previews. Additionally, Highlight.js was added to
55
+ render code blocks.
56
+
57
+ ## [0.13.0] - 2018-08-03 - "Improvements"
58
+ ### Added
59
+
60
+ - Added Brakeman to CI to check for known vulnerabilities
61
+ - Added HTML5 audio/video previews
62
+ - Created a configuration file for the app's config, `config/elabs.yml`
63
+ - Placeholders when there is no content to display
64
+
65
+ ### Changed
66
+
67
+ ### Improved
68
+
69
+ - Added thumbnails helper with methods returning properties for thumbnail
70
+ generation.
71
+ - Made the generated files variant saved
72
+ - Made counter caches take care of the state of the entity (draft/locked)
73
+ - Refactored 'application_content_record' model in multiple concerns
74
+
75
+ ### Removed
76
+
77
+ - "Pages" controller, as it was not used anymore.
78
+
79
+ ### Fixed
80
+
81
+ - Updated failing steps by specifying username and email: creating an
82
+ user from email only don't allow to target it simply, randomly
83
+ leading to wrong user being clicked on during tests
84
+ - Fixed public content that can be accessed even when it's a draft.
85
+ (locked content are still found, control is made in the view)
86
+
87
+ ## [0.12.0] - 2018-07-30 - "Design"
88
+ ### Added
89
+
90
+ ### Changed
91
+
92
+ - `rake wipe:db` is now `rake wipe:db_seed`. `rake wipe:db` will only drop/create/migrate
93
+ - Created general layout style
94
+ - Created style for public/member/admin views:
95
+ - albums
96
+ - articles
97
+ - notes
98
+ - projects
99
+ - uploads
100
+ - languages/licenses/tags
101
+ - users
102
+ - Added CodeMirror for editable textareas
103
+ - Added helpers and links to filter/order content on indexes
104
+
105
+ ### Improved
106
+
107
+ ### Removed
108
+
109
+ ### Fixed
110
+
111
+ - Fixed scopes "for_relation" which was badly constructed, leading to
112
+ incorrect content being fetched
113
+
114
+ ## [0.11.0] - 2018-07-15 - "Acts": content actions history
115
+ ### Added
116
+
117
+ - Actions on generic content are now logged in the `acts table`
118
+
119
+ ### Changed
120
+
121
+ - "root" route is now `acts#index`
122
+
123
+ ## [0.10.0] - 2018-07-14 - Comment system
124
+ ### Added
125
+
126
+ - Simple comment system
127
+
128
+ ### Improved
129
+
130
+ - Public controllers related to content now extends a
131
+ `ContentApplicationController` instead of the `ApplicationController`
132
+
133
+ ## [0.9.0] - 2018-07-14 - Preferences
134
+ ### Added
135
+
136
+ - Members now have preferences for the default locale and to display
137
+ or not the NSFW content
138
+
139
+ ## [0.8.0] - 2018-07-14 - Toggle SFW/NSFW
140
+ ### Added
141
+
142
+ - NSFW content is hidden
143
+ - Users can now toggle the NSFW content visibility
144
+
145
+ ### Fixed
146
+
147
+ - Updated notes table, setting default values for `sfw` and
148
+ `hidden_in_history` fields
149
+
150
+ ## [0.7.0] - 2018-07-11 - Lock/unlock content
151
+ ### Added
152
+
153
+ - Admin:
154
+ - actions to lock/unlock content
155
+ - Members:
156
+ - actions to publish/unpublish content
157
+
158
+ ### Improved
159
+
160
+ - Admin:
161
+ - all content controllers now extends an unique controller which contains all the shared methods
162
+ - Member
163
+ - all content controllers now extends an unique controller which contains all the shared methods
164
+
165
+ ### Fixed
166
+ - Issues with FactoryBot seems fixed (waiting for the Faker PRs to be merged)
167
+ - Faker PR 1307: [Add a "add_to_previous" method for `UniqueGenerator`](https://github.com/stympy/faker/pull/1307)
168
+ - Faker PR 1302: [Add `Faker::Alphanum` generator](https://github.com/stympy/faker/pull/1302)
169
+
170
+ ## [0.6.0] - 2018-07-09 - Nested content and pagination
171
+ ### Added
172
+
173
+ - List of the 10 last elements related to a given content
174
+ - Pagination for all indexes (except tags and licenses)
175
+ - Filters for nested resources
176
+ - PostgreSQL support (gem and sample config file)
177
+
178
+ ### Changed
179
+
180
+ - Database used on CI is now PostgreSQL
181
+
182
+ ### Improved
183
+
184
+ - Content in development seeds for the administrator
185
+ - Faker's "unique" status is reset before every Cucumber scenario and RSpec examples
186
+ - Installer now copies database configuration files.
187
+
188
+ ### Fixed
189
+
190
+ - Tests failing due to locked database
191
+
192
+ ## [0.5.0] - 2018-06-29 - Relations and counters
193
+ ### Added
194
+
195
+ - Tags support for albums/articles/notes/projects/uploads
196
+ - Relations counts on languages/tags/licenses/albums/projects/users
197
+ - Update tags show view to display the last related content
198
+ - Update languages show view to display the last related content
199
+ - Update licenses show view to display the last related content
200
+
201
+ ### Changed
202
+
203
+ - Changed content's habtm relations to `has_many through`
204
+
205
+ ### Improved
206
+
207
+ - Improved some cucumber steps
208
+
209
+ ## [0.4.0] - 2018-06-29 - CRUD MVC for content
210
+ ### Added
211
+
212
+ - Articles basic MVC for public/member/admin zones
213
+ - Notes basic MVC for public/member/admin zones
214
+ - Uploads basic MVC for public/member/admin zones
215
+ - Albums basic MVC for public/member/admin zones
216
+ - Projects basic MVC for public/member/admin zones
217
+ - Member layout
218
+
219
+ ### Improved
220
+
221
+ - Improved factories to only use Faker, specialization comes after
222
+ - Added `factory_bot:lint` rake task to test factories reusability
223
+
224
+ ## [0.3.1] - 2018-06-17 - Fixes, licenses
225
+ ### Added
226
+
227
+ - Licenses support: Public/admin MVC and cucumber tests
228
+
229
+ ### Improved
230
+
231
+ - Updated controller with missing translation calls
232
+ - Changed Rubocop Metrics/ABCSize to 16 to allow translations in basic actions
233
+
234
+ ### Fixed
235
+
236
+ - Reports required fields
237
+
238
+ ## [0.3.0] - 2018-06-17 - Languages, tags and reports
239
+ ### Added
240
+
241
+ - Language support: Public/admin MVC and cucumber tests
242
+ - Tags support: Public/admin MVC and cucumber tests
243
+ - Admin layout
244
+
245
+ ### Fixed
246
+
247
+ - Simplecov is now configured
248
+
249
+ ## [0.2.1] - 2018-06-12 - Tests
250
+ ### Added
251
+
252
+ - Added Cucumber scenarios and steps to test language switching
253
+
254
+ ### Improved
255
+
256
+ - Removed "fuzzy" comments in french translations
257
+
258
+ ## [0.2.0] - 2018-06-12 - Site translations
259
+ ### Added
260
+
261
+ - Added mechanism to change the website's language using Gettext
262
+ - Created the configuration files
263
+ - Created french translations
264
+
265
+ ## [0.1.0] - 2018-06-11 - Base setup
266
+ ### Added
267
+
268
+ - Readme
269
+ - Changelog
270
+ - Code of conduct
271
+ - Basic Cucumber features, scenarios and tests
272
+ - Devise setups
273
+ - Basic users listing
@@ -0,0 +1,78 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our
7
+ project and our community a harassment-free experience for everyone,
8
+ regardless of age, body size, disability, ethnicity, gender identity and
9
+ expression, level of experience, nationality, personal appearance, race,
10
+ religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual
26
+ attention or advances
27
+ * Trolling, insulting/derogatory comments, and personal or political
28
+ attacks
29
+ * Public or private harassment
30
+ * Publishing others' private information, such as a physical or
31
+ electronic address, without explicit permission
32
+ * Other conduct which could reasonably be considered inappropriate in a
33
+ professional setting
34
+
35
+ ## Our Responsibilities
36
+
37
+ Project maintainers are responsible for clarifying the standards of
38
+ acceptable behavior and are expected to take appropriate and fair
39
+ corrective action in response to any instances of unacceptable behavior.
40
+
41
+ Project maintainers have the right and responsibility to remove, edit,
42
+ or reject comments, commits, code, wiki edits, issues, and other
43
+ contributions that are not aligned to this Code of Conduct, or to ban
44
+ temporarily or permanently any contributor for other behaviors that they
45
+ deem inappropriate, threatening, offensive, or harmful.
46
+
47
+ ## Scope
48
+
49
+ This Code of Conduct applies both within project spaces and in public
50
+ spaces when an individual is representing the project or its community.
51
+ Examples of representing a project or community include using an
52
+ official project e-mail address, posting via an official social media
53
+ account, or acting as an appointed representative at an online or
54
+ offline event. Representation of a project may be further defined and
55
+ clarified by project maintainers.
56
+
57
+ ## Enforcement
58
+
59
+ Instances of abusive, harassing, or otherwise unacceptable behavior may
60
+ be reported by contacting the project team at info@experimentslabs.com.
61
+ The project team will review and investigate all complaints, and will
62
+ respond in a way that it deems appropriate to the circumstances. The
63
+ project team is obligated to maintain confidentiality with regard to
64
+ the reporter of an incident. Further details of specific enforcement
65
+ policies may be posted separately.
66
+
67
+ Project maintainers who do not follow or enforce the Code of Conduct in
68
+ good faith may face temporary or permanent repercussions as determined
69
+ by other members of the project's leadership.
70
+
71
+ ## Attribution
72
+
73
+ This Code of Conduct is adapted from the
74
+ [Contributor Covenant][homepage], version 1.4, available at
75
+ [http://contributor-covenant.org/version/1/4][version]
76
+
77
+ [homepage]: http://contributor-covenant.org
78
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,75 @@
1
+ source 'https://rubygems.org'
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ # Declare your gem's dependencies in elabs.gemspec.
5
+ # Bundler will treat runtime dependencies like base dependencies, and
6
+ # development dependencies will be added by default to the :development group.
7
+ gemspec
8
+
9
+ # Declare any dependencies that are still in development here instead of in
10
+ # your gemspec. These might include edge Rails or gems from your path or
11
+ # Git. Remember to move these dependencies to your gemspec before releasing
12
+ # your gem to rubygems.org.
13
+
14
+ group :development, :test do
15
+ # -------------------------------------------------------
16
+ # Gems needed for the dummy application
17
+ # -------------------------------------------------------
18
+ # See https://github.com/rails/execjs#readme for more supported runtimes
19
+ gem 'mini_racer', platforms: :ruby
20
+ # Use ActiveStorage variant
21
+ gem 'mini_magick', '~> 4.8'
22
+ # DB
23
+ gem 'pg'
24
+ # Rails and plugins:
25
+ gem 'active_link_to'
26
+ gem 'devise'
27
+ gem 'haml-rails'
28
+ gem 'kaminari'
29
+ gem 'rails', '~> 5.2.1'
30
+ gem 'sass-rails', '~> 5.0'
31
+ # Translations
32
+ gem 'gettext_i18n_rails'
33
+
34
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
35
+ gem 'byebug', platforms: %i[mri mingw x64_mingw]
36
+
37
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
38
+ gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
39
+ end
40
+
41
+ group :development do
42
+ # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
43
+ gem 'listen', '>= 3.0.5', '< 3.2'
44
+ gem 'web-console', '>= 3.3.0'
45
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
46
+ gem 'spring'
47
+ gem 'spring-watcher-listen', '~> 2.0.0'
48
+ # Locales
49
+ gem 'gettext', '>=3.0.2', require: false
50
+ end
51
+
52
+ group :test do
53
+ # Adds support for Capybara system testing and selenium driver
54
+ gem 'capybara', '>= 2.15', '< 4.0'
55
+ gem 'capybara-screenshot'
56
+ gem 'selenium-webdriver'
57
+ # Easy installation and use of chromedriver to run system tests with Chrome
58
+ gem 'chromedriver-helper'
59
+ # Cucumber
60
+ gem 'cucumber-rails', require: false
61
+ gem 'database_cleaner'
62
+ # Factories
63
+ gem 'factory_bot_rails'
64
+ gem 'faker', git: 'https://github.com/el-cms/faker.git', branch: 'elabs'
65
+ # Linters
66
+ gem 'haml_lint', require: false
67
+ gem 'rubocop'
68
+ # Rspec
69
+ gem 'rails-controller-testing'
70
+ gem 'rspec-rails'
71
+ gem 'ruby_parser', require: false
72
+ gem 'simplecov', require: false
73
+ # Security scanner
74
+ gem 'brakeman'
75
+ end
@@ -0,0 +1,376 @@
1
+ GIT
2
+ remote: https://github.com/el-cms/faker.git
3
+ revision: b776fb025871d0bc9f38a32730d241cff8e159ab
4
+ branch: elabs
5
+ specs:
6
+ faker (1.8.7)
7
+ i18n (>= 0.7)
8
+
9
+ PATH
10
+ remote: .
11
+ specs:
12
+ elabs (2.0.0.pre)
13
+ rails (~> 5.2.1)
14
+
15
+ GEM
16
+ remote: https://rubygems.org/
17
+ specs:
18
+ actioncable (5.2.1)
19
+ actionpack (= 5.2.1)
20
+ nio4r (~> 2.0)
21
+ websocket-driver (>= 0.6.1)
22
+ actionmailer (5.2.1)
23
+ actionpack (= 5.2.1)
24
+ actionview (= 5.2.1)
25
+ activejob (= 5.2.1)
26
+ mail (~> 2.5, >= 2.5.4)
27
+ rails-dom-testing (~> 2.0)
28
+ actionpack (5.2.1)
29
+ actionview (= 5.2.1)
30
+ activesupport (= 5.2.1)
31
+ rack (~> 2.0)
32
+ rack-test (>= 0.6.3)
33
+ rails-dom-testing (~> 2.0)
34
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
35
+ actionview (5.2.1)
36
+ activesupport (= 5.2.1)
37
+ builder (~> 3.1)
38
+ erubi (~> 1.4)
39
+ rails-dom-testing (~> 2.0)
40
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
41
+ active_link_to (1.0.5)
42
+ actionpack
43
+ addressable
44
+ activejob (5.2.1)
45
+ activesupport (= 5.2.1)
46
+ globalid (>= 0.3.6)
47
+ activemodel (5.2.1)
48
+ activesupport (= 5.2.1)
49
+ activerecord (5.2.1)
50
+ activemodel (= 5.2.1)
51
+ activesupport (= 5.2.1)
52
+ arel (>= 9.0)
53
+ activestorage (5.2.1)
54
+ actionpack (= 5.2.1)
55
+ activerecord (= 5.2.1)
56
+ marcel (~> 0.3.1)
57
+ activesupport (5.2.1)
58
+ concurrent-ruby (~> 1.0, >= 1.0.2)
59
+ i18n (>= 0.7, < 2)
60
+ minitest (~> 5.1)
61
+ tzinfo (~> 1.1)
62
+ addressable (2.5.2)
63
+ public_suffix (>= 2.0.2, < 4.0)
64
+ archive-zip (0.11.0)
65
+ io-like (~> 0.3.0)
66
+ arel (9.0.0)
67
+ ast (2.4.0)
68
+ backports (3.11.3)
69
+ bcrypt (3.1.12)
70
+ bindex (0.5.0)
71
+ brakeman (4.3.1)
72
+ builder (3.2.3)
73
+ byebug (10.0.2)
74
+ capybara (3.6.0)
75
+ addressable
76
+ mini_mime (>= 0.1.3)
77
+ nokogiri (~> 1.8)
78
+ rack (>= 1.6.0)
79
+ rack-test (>= 0.6.3)
80
+ xpath (~> 3.1)
81
+ capybara-screenshot (1.0.21)
82
+ capybara (>= 1.0, < 4)
83
+ launchy
84
+ childprocess (0.9.0)
85
+ ffi (~> 1.0, >= 1.0.11)
86
+ chromedriver-helper (1.2.0)
87
+ archive-zip (~> 0.10)
88
+ nokogiri (~> 1.8)
89
+ concurrent-ruby (1.0.5)
90
+ crass (1.0.4)
91
+ cucumber (3.1.2)
92
+ builder (>= 2.1.2)
93
+ cucumber-core (~> 3.2.0)
94
+ cucumber-expressions (~> 6.0.1)
95
+ cucumber-wire (~> 0.0.1)
96
+ diff-lcs (~> 1.3)
97
+ gherkin (~> 5.1.0)
98
+ multi_json (>= 1.7.5, < 2.0)
99
+ multi_test (>= 0.1.2)
100
+ cucumber-core (3.2.0)
101
+ backports (>= 3.8.0)
102
+ cucumber-tag_expressions (~> 1.1.0)
103
+ gherkin (>= 5.0.0)
104
+ cucumber-expressions (6.0.1)
105
+ cucumber-rails (1.6.0)
106
+ capybara (>= 1.1.2, < 4)
107
+ cucumber (>= 3.0.2, < 4)
108
+ mime-types (>= 1.17, < 4)
109
+ nokogiri (~> 1.8)
110
+ railties (>= 4, < 6)
111
+ cucumber-tag_expressions (1.1.1)
112
+ cucumber-wire (0.0.1)
113
+ database_cleaner (1.7.0)
114
+ devise (4.5.0)
115
+ bcrypt (~> 3.0)
116
+ orm_adapter (~> 0.1)
117
+ railties (>= 4.1.0, < 6.0)
118
+ responders
119
+ warden (~> 1.2.3)
120
+ diff-lcs (1.3)
121
+ docile (1.3.1)
122
+ erubi (1.7.1)
123
+ erubis (2.7.0)
124
+ factory_bot (4.11.0)
125
+ activesupport (>= 3.0.0)
126
+ factory_bot_rails (4.11.0)
127
+ factory_bot (~> 4.11.0)
128
+ railties (>= 3.0.0)
129
+ fast_gettext (1.7.0)
130
+ ffi (1.9.25)
131
+ gettext (3.2.9)
132
+ locale (>= 2.0.5)
133
+ text (>= 1.3.0)
134
+ gettext_i18n_rails (1.8.0)
135
+ fast_gettext (>= 0.9.0)
136
+ gherkin (5.1.0)
137
+ globalid (0.4.1)
138
+ activesupport (>= 4.2.0)
139
+ haml (5.0.4)
140
+ temple (>= 0.8.0)
141
+ tilt
142
+ haml-rails (1.0.0)
143
+ actionpack (>= 4.0.1)
144
+ activesupport (>= 4.0.1)
145
+ haml (>= 4.0.6, < 6.0)
146
+ html2haml (>= 1.0.1)
147
+ railties (>= 4.0.1)
148
+ haml_lint (0.28.0)
149
+ haml (>= 4.0, < 5.1)
150
+ rainbow
151
+ rake (>= 10, < 13)
152
+ rubocop (>= 0.50.0)
153
+ sysexits (~> 1.1)
154
+ html2haml (2.2.0)
155
+ erubis (~> 2.7.0)
156
+ haml (>= 4.0, < 6)
157
+ nokogiri (>= 1.6.0)
158
+ ruby_parser (~> 3.5)
159
+ i18n (1.1.0)
160
+ concurrent-ruby (~> 1.0)
161
+ io-like (0.3.0)
162
+ jaro_winkler (1.5.1)
163
+ json (2.1.0)
164
+ kaminari (1.1.1)
165
+ activesupport (>= 4.1.0)
166
+ kaminari-actionview (= 1.1.1)
167
+ kaminari-activerecord (= 1.1.1)
168
+ kaminari-core (= 1.1.1)
169
+ kaminari-actionview (1.1.1)
170
+ actionview
171
+ kaminari-core (= 1.1.1)
172
+ kaminari-activerecord (1.1.1)
173
+ activerecord
174
+ kaminari-core (= 1.1.1)
175
+ kaminari-core (1.1.1)
176
+ launchy (2.4.3)
177
+ addressable (~> 2.3)
178
+ libv8 (6.7.288.46.1)
179
+ listen (3.1.5)
180
+ rb-fsevent (~> 0.9, >= 0.9.4)
181
+ rb-inotify (~> 0.9, >= 0.9.7)
182
+ ruby_dep (~> 1.2)
183
+ locale (2.1.2)
184
+ loofah (2.2.2)
185
+ crass (~> 1.0.2)
186
+ nokogiri (>= 1.5.9)
187
+ mail (2.7.0)
188
+ mini_mime (>= 0.1.1)
189
+ marcel (0.3.2)
190
+ mimemagic (~> 0.3.2)
191
+ method_source (0.9.0)
192
+ mime-types (3.2.2)
193
+ mime-types-data (~> 3.2015)
194
+ mime-types-data (3.2018.0812)
195
+ mimemagic (0.3.2)
196
+ mini_magick (4.8.0)
197
+ mini_mime (1.0.1)
198
+ mini_portile2 (2.3.0)
199
+ mini_racer (0.2.0)
200
+ libv8 (>= 6.3)
201
+ minitest (5.11.3)
202
+ multi_json (1.13.1)
203
+ multi_test (0.1.2)
204
+ nio4r (2.3.1)
205
+ nokogiri (1.8.4)
206
+ mini_portile2 (~> 2.3.0)
207
+ orm_adapter (0.5.0)
208
+ parallel (1.12.1)
209
+ parser (2.5.1.2)
210
+ ast (~> 2.4.0)
211
+ pg (1.1.0)
212
+ powerpack (0.1.2)
213
+ public_suffix (3.0.3)
214
+ rack (2.0.5)
215
+ rack-test (1.1.0)
216
+ rack (>= 1.0, < 3)
217
+ rails (5.2.1)
218
+ actioncable (= 5.2.1)
219
+ actionmailer (= 5.2.1)
220
+ actionpack (= 5.2.1)
221
+ actionview (= 5.2.1)
222
+ activejob (= 5.2.1)
223
+ activemodel (= 5.2.1)
224
+ activerecord (= 5.2.1)
225
+ activestorage (= 5.2.1)
226
+ activesupport (= 5.2.1)
227
+ bundler (>= 1.3.0)
228
+ railties (= 5.2.1)
229
+ sprockets-rails (>= 2.0.0)
230
+ rails-controller-testing (1.0.2)
231
+ actionpack (~> 5.x, >= 5.0.1)
232
+ actionview (~> 5.x, >= 5.0.1)
233
+ activesupport (~> 5.x)
234
+ rails-dom-testing (2.0.3)
235
+ activesupport (>= 4.2.0)
236
+ nokogiri (>= 1.6)
237
+ rails-html-sanitizer (1.0.4)
238
+ loofah (~> 2.2, >= 2.2.2)
239
+ railties (5.2.1)
240
+ actionpack (= 5.2.1)
241
+ activesupport (= 5.2.1)
242
+ method_source
243
+ rake (>= 0.8.7)
244
+ thor (>= 0.19.0, < 2.0)
245
+ rainbow (3.0.0)
246
+ rake (12.3.1)
247
+ rb-fsevent (0.10.3)
248
+ rb-inotify (0.9.10)
249
+ ffi (>= 0.5.0, < 2)
250
+ responders (2.4.0)
251
+ actionpack (>= 4.2.0, < 5.3)
252
+ railties (>= 4.2.0, < 5.3)
253
+ rspec-core (3.8.0)
254
+ rspec-support (~> 3.8.0)
255
+ rspec-expectations (3.8.1)
256
+ diff-lcs (>= 1.2.0, < 2.0)
257
+ rspec-support (~> 3.8.0)
258
+ rspec-mocks (3.8.0)
259
+ diff-lcs (>= 1.2.0, < 2.0)
260
+ rspec-support (~> 3.8.0)
261
+ rspec-rails (3.8.0)
262
+ actionpack (>= 3.0)
263
+ activesupport (>= 3.0)
264
+ railties (>= 3.0)
265
+ rspec-core (~> 3.8.0)
266
+ rspec-expectations (~> 3.8.0)
267
+ rspec-mocks (~> 3.8.0)
268
+ rspec-support (~> 3.8.0)
269
+ rspec-support (3.8.0)
270
+ rubocop (0.58.2)
271
+ jaro_winkler (~> 1.5.1)
272
+ parallel (~> 1.10)
273
+ parser (>= 2.5, != 2.5.1.1)
274
+ powerpack (~> 0.1)
275
+ rainbow (>= 2.2.2, < 4.0)
276
+ ruby-progressbar (~> 1.7)
277
+ unicode-display_width (~> 1.0, >= 1.0.1)
278
+ ruby-progressbar (1.10.0)
279
+ ruby_dep (1.5.0)
280
+ ruby_parser (3.11.0)
281
+ sexp_processor (~> 4.9)
282
+ rubyzip (1.2.1)
283
+ sass (3.5.7)
284
+ sass-listen (~> 4.0.0)
285
+ sass-listen (4.0.0)
286
+ rb-fsevent (~> 0.9, >= 0.9.4)
287
+ rb-inotify (~> 0.9, >= 0.9.7)
288
+ sass-rails (5.0.7)
289
+ railties (>= 4.0.0, < 6)
290
+ sass (~> 3.1)
291
+ sprockets (>= 2.8, < 4.0)
292
+ sprockets-rails (>= 2.0, < 4.0)
293
+ tilt (>= 1.1, < 3)
294
+ selenium-webdriver (3.14.0)
295
+ childprocess (~> 0.5)
296
+ rubyzip (~> 1.2)
297
+ sexp_processor (4.11.0)
298
+ simplecov (0.16.1)
299
+ docile (~> 1.1)
300
+ json (>= 1.8, < 3)
301
+ simplecov-html (~> 0.10.0)
302
+ simplecov-html (0.10.2)
303
+ spring (2.0.2)
304
+ activesupport (>= 4.2)
305
+ spring-watcher-listen (2.0.1)
306
+ listen (>= 2.7, < 4.0)
307
+ spring (>= 1.2, < 3.0)
308
+ sprockets (3.7.2)
309
+ concurrent-ruby (~> 1.0)
310
+ rack (> 1, < 3)
311
+ sprockets-rails (3.2.1)
312
+ actionpack (>= 4.0)
313
+ activesupport (>= 4.0)
314
+ sprockets (>= 3.0.0)
315
+ sysexits (1.2.0)
316
+ temple (0.8.0)
317
+ text (1.3.1)
318
+ thor (0.20.0)
319
+ thread_safe (0.3.6)
320
+ tilt (2.0.8)
321
+ tzinfo (1.2.5)
322
+ thread_safe (~> 0.1)
323
+ unicode-display_width (1.4.0)
324
+ warden (1.2.7)
325
+ rack (>= 1.0)
326
+ web-console (3.6.2)
327
+ actionview (>= 5.0)
328
+ activemodel (>= 5.0)
329
+ bindex (>= 0.4.0)
330
+ railties (>= 5.0)
331
+ websocket-driver (0.7.0)
332
+ websocket-extensions (>= 0.1.0)
333
+ websocket-extensions (0.1.3)
334
+ xpath (3.1.0)
335
+ nokogiri (~> 1.8)
336
+
337
+ PLATFORMS
338
+ ruby
339
+
340
+ DEPENDENCIES
341
+ active_link_to
342
+ brakeman
343
+ byebug
344
+ capybara (>= 2.15, < 4.0)
345
+ capybara-screenshot
346
+ chromedriver-helper
347
+ cucumber-rails
348
+ database_cleaner
349
+ devise
350
+ elabs!
351
+ factory_bot_rails
352
+ faker!
353
+ gettext (>= 3.0.2)
354
+ gettext_i18n_rails
355
+ haml-rails
356
+ haml_lint
357
+ kaminari
358
+ listen (>= 3.0.5, < 3.2)
359
+ mini_magick (~> 4.8)
360
+ mini_racer
361
+ pg
362
+ rails (~> 5.2.1)
363
+ rails-controller-testing
364
+ rspec-rails
365
+ rubocop
366
+ ruby_parser
367
+ sass-rails (~> 5.0)
368
+ selenium-webdriver
369
+ simplecov
370
+ spring
371
+ spring-watcher-listen (~> 2.0.0)
372
+ tzinfo-data
373
+ web-console (>= 3.3.0)
374
+
375
+ BUNDLED WITH
376
+ 1.16.2