elabs 2.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
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,41 @@
1
+ require 'elabs/engine'
2
+
3
+ # rubocop:disable Style/ClassVars
4
+ module Elabs
5
+ # Site name, used in menus and other places
6
+ mattr_accessor :site_name
7
+ @@site_name = 'A new app'
8
+
9
+ # Maximum number of items per public "index" pages
10
+ mattr_accessor :max_items_per_page
11
+ @@max_items_per_page = 15
12
+
13
+ # Maximum number of items per admin "index" pages
14
+ mattr_accessor :max_admin_items_per_page
15
+ @@max_admin_items_per_page = 15
16
+
17
+ # Maximum number of items per member "index" pages
18
+ mattr_accessor :max_members_items_per_page
19
+ @@max_members_items_per_page = 15
20
+
21
+ # Maximum number related content items in "show" views
22
+ mattr_accessor :max_related_items
23
+ @@max_related_items = 10
24
+
25
+ # Number of uploads thumbnails to show on albums cards
26
+ mattr_accessor :albums_max_shown_uploads
27
+ @@albums_max_shown_uploads = 3
28
+
29
+ # List of audio formats that can be used with html5 players
30
+ mattr_accessor :av_formats_audio
31
+ @@av_formats_audio = ['audio/mpeg', 'audio/ogg', 'audio/wav']
32
+
33
+ # List of video formats that can be used with html5 players
34
+ mattr_accessor :av_formats_video
35
+ @@av_formats_video = ['video/mp4', 'video/webm', 'video/ogg']
36
+
37
+ def self.setup
38
+ yield self
39
+ end
40
+ end
41
+ # rubocop:enable Style/ClassVars
@@ -0,0 +1,5 @@
1
+ module Elabs
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Elabs
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module Elabs
2
+ VERSION = '2.0.0.pre'.freeze
3
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/base'
4
+
5
+ module Elabs
6
+ module Generators
7
+ class AssetsGenerator < Rails::Generators::Base
8
+ source_root File.expand_path('../../..', __dir__)
9
+
10
+ def set_source_paths
11
+ @source_paths = [
12
+ File.expand_path('../templates', __dir__),
13
+ File.expand_path('../../..', __dir__)
14
+ ]
15
+ end
16
+
17
+ desc 'Copies assets needed by Elabs for you to customize'
18
+
19
+ def copy_js
20
+ directory 'app/assets/javascripts/elabs'
21
+ end
22
+
23
+ def copy_css
24
+ directory 'app/assets/stylesheets/elabs'
25
+ end
26
+
27
+ def copy_js_vendors
28
+ directory 'lib/assets/javascripts'
29
+ end
30
+
31
+ def copy_css_vendors
32
+ directory 'lib/assets/stylesheets'
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/base'
4
+
5
+ module Elabs
6
+ module Generators
7
+ class DeviseViewsGenerator < Rails::Generators::Base
8
+ source_root File.expand_path('../../..', __dir__)
9
+
10
+ def set_source_paths
11
+ @source_paths = [
12
+ File.expand_path('../templates', __dir__),
13
+ File.expand_path('../../..', __dir__)
14
+ ]
15
+ end
16
+
17
+ desc 'Copies custom devise views in your app'
18
+
19
+ def copy_devise_views
20
+ directory 'spec/dummy/app/views/devise', 'app/views/devise'
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/base'
4
+
5
+ module Elabs
6
+ module Generators
7
+ class InstallGenerator < Rails::Generators::Base
8
+ source_root File.expand_path('../../..', __dir__)
9
+
10
+ def set_source_paths
11
+ @source_paths = [
12
+ File.expand_path('../templates', __dir__),
13
+ File.expand_path('../../..', __dir__)
14
+ ]
15
+ end
16
+
17
+ desc 'Creates the "elabs" initializer and copies needed files'
18
+
19
+ def copy_files
20
+ template 'elabs.rb', 'config/initializers/elabs.rb'
21
+ template 'fast_gettext.rb', 'config/initializers/fast_gettext.rb'
22
+ directory 'locale'
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/base'
4
+
5
+ module Elabs
6
+ module Generators
7
+ class RequiredAssetsGenerator < Rails::Generators::Base
8
+ source_root File.expand_path('../../..', __dir__)
9
+
10
+ def set_source_paths
11
+ @source_paths = [
12
+ File.expand_path('../templates', __dir__),
13
+ File.expand_path('../../..', __dir__)
14
+ ]
15
+ end
16
+
17
+ desc 'Copies required files if you plan to use elabs views'
18
+
19
+ def copy_files
20
+ directory 'app/assets/images/elabs'
21
+ template 'spec/dummy/package.json', 'package.json'
22
+ directory 'spec/dummy/public/fonts', 'public/fonts'
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/base'
4
+
5
+ module Elabs
6
+ module Generators
7
+ class ViewsGenerator < Rails::Generators::Base
8
+ source_root File.expand_path('../../..', __dir__)
9
+
10
+ def set_source_paths
11
+ @source_paths = [
12
+ File.expand_path('../templates', __dir__),
13
+ File.expand_path('../../..', __dir__)
14
+ ]
15
+ end
16
+
17
+ desc 'Makes a copy of elabs views and assets in your app'
18
+
19
+ def copy_views
20
+ directory 'app/views/elabs'
21
+ directory 'app/views/devise'
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ Elabs.setup do |config|
2
+ # Site name, used in menus and other places
3
+ config.site_name = 'A new app'
4
+
5
+ # Maximum number of items per public "index" pages
6
+ config.max_items_per_page = 25
7
+
8
+ # Maximum number of items per admin "index" pages
9
+ config.max_admin_items_per_page = 50
10
+
11
+ # Maximum number of items per member "index" pages
12
+ config.max_members_items_per_page = 25
13
+
14
+ # Maximum number related content items in "show" views
15
+ config.max_related_items = 10
16
+
17
+ # Number of uploads thumbnails to show on albums cards
18
+ config.albums_max_shown_uploads = 3
19
+
20
+ # List of audio formats that can be used with html5 players
21
+ config.av_formats_audio = ['audio/mpeg', 'audio/ogg', 'audio/wav']
22
+
23
+ # List of video formats that can be used with html5 players
24
+ config.av_formats_video = ['video/mp4', 'video/webm', 'video/ogg']
25
+ end
@@ -0,0 +1,3 @@
1
+ FastGettext.add_text_domain 'app', path: File.expand_path('../../locale', __dir__), type: :po
2
+ FastGettext.default_available_locales = %w[en fr] # all you want to allow
3
+ FastGettext.default_text_domain = 'app'
File without changes
@@ -0,0 +1,75 @@
1
+ # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
2
+ # It is recommended to regenerate this file in the future when you upgrade to a
3
+ # newer version of cucumber-rails. Consider adding your own code to a new file
4
+ # instead of editing this one. Cucumber will automatically load all features/**/*.rb
5
+ # files.
6
+
7
+ unless ARGV.any? { |a| a =~ /^gems/ } # Don't load anything when running the gems:* tasks
8
+
9
+ vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
10
+ $LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
11
+
12
+ begin
13
+ require 'cucumber/rake/task'
14
+
15
+ namespace :cucumber do
16
+ Cucumber::Rake::Task.new({ ok: 'test:prepare' }, 'Run features that should pass') do |t|
17
+ t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
18
+ t.fork = true # You may get faster startup if you set this to false
19
+ t.profile = 'default'
20
+ end
21
+
22
+ Cucumber::Rake::Task.new({ wip: 'test:prepare' }, 'Run features that are being worked on') do |t|
23
+ t.binary = vendored_cucumber_bin
24
+ t.fork = true # You may get faster startup if you set this to false
25
+ t.profile = 'wip'
26
+ end
27
+
28
+ Cucumber::Rake::Task.new({ rerun: 'test:prepare' }, 'Record failing features and run only them if any exist') do |t|
29
+ t.binary = vendored_cucumber_bin
30
+ t.fork = true # You may get faster startup if you set this to false
31
+ t.profile = 'rerun'
32
+ end
33
+
34
+ desc 'Run all features'
35
+ task all: %i[ok wip]
36
+
37
+ task :statsetup do
38
+ require 'rails/code_statistics'
39
+ ::STATS_DIRECTORIES << %w[Cucumber\ features features] if File.exist?('features')
40
+ ::CodeStatistics::TEST_TYPES << 'Cucumber features' if File.exist?('features')
41
+ end
42
+
43
+ task :annotations_setup do
44
+ Rails.application.configure do
45
+ if config.respond_to?(:annotations)
46
+ config.annotations.directories << 'features'
47
+ config.annotations.register_extensions('feature') { |tag| /#\s*(#{tag}):?\s*(.*)$/ }
48
+ end
49
+ end
50
+ end
51
+ end
52
+ desc 'Alias for cucumber:ok'
53
+ task cucumber: 'cucumber:ok'
54
+
55
+ task default: :cucumber
56
+
57
+ task features: :cucumber do
58
+ STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
59
+ end
60
+
61
+ # In case we don't have the generic Rails test:prepare hook, append a no-op task that we can depend upon.
62
+ task 'test:prepare' do
63
+ end
64
+
65
+ task stats: 'cucumber:statsetup'
66
+
67
+ task notes: 'cucumber:annotations_setup'
68
+ rescue LoadError
69
+ desc 'cucumber rake task not available (cucumber not installed)'
70
+ task :cucumber do
71
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
72
+ end
73
+ end
74
+
75
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :elabs do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,14 @@
1
+ namespace :factory_bot do
2
+ desc 'Verify that all FactoryBot factories are valid'
3
+ task lint: :environment do
4
+ if Rails.env.test?
5
+ require 'database_cleaner'
6
+ DatabaseCleaner.cleaning do
7
+ FactoryBot.lint
8
+ end
9
+ else
10
+ system("RAILS_ENV='test' bundle exec rake app:factory_bot:lint")
11
+ raise if $CHILD_STATUS.exitstatus.nonzero?
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,31 @@
1
+ # rubocop:disable Metrics/BlockLength
2
+ namespace :wipe do
3
+ desc 'Deletes development data'
4
+ task all: :environment do
5
+ abort "You're not in development environment. Aborting." unless Rails.env.development?
6
+ system('bundle exec rake wipe:db')
7
+ system('bundle exec rake wipe:logs')
8
+ system('bundle exec rake wipe:files')
9
+ end
10
+ task db: :environment do
11
+ abort "You're not in development environment. Aborting." unless Rails.env.development?
12
+ system('bundle exec rake db:drop')
13
+ system('bundle exec rake db:create')
14
+ system('bundle exec rake db:migrate')
15
+ end
16
+ task db_seed: :environment do
17
+ abort "You're not in development environment. Aborting." unless Rails.env.development?
18
+ system('bundle exec rake wipe:db')
19
+ system('bundle exec rake db:seed')
20
+ end
21
+ task logs: :environment do
22
+ abort "You're not in development environment. Aborting." unless Rails.env.development?
23
+ system("rm -f #{Rails.root}/log/*.log")
24
+ end
25
+ task files: :environment do
26
+ abort "You're not in development environment. Aborting." unless Rails.env.development?
27
+ system("rm -rf #{Rails.root}/storage/")
28
+ system("rm -rf #{Rails.root}/tmp/storage/")
29
+ end
30
+ end
31
+ # rubocop:enable Metrics/BlockLength
@@ -0,0 +1,1124 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the app package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: app 1.0.0\n"
10
+ "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2018-09-06 06:46+0200\n"
12
+ "PO-Revision-Date: 2018-09-06 06:46+0200\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "Language: \n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
20
+
21
+ msgid "%<icon>s %<text>s"
22
+ msgstr ""
23
+
24
+ msgid "%<model_name>s was successfully created."
25
+ msgstr ""
26
+
27
+ msgid "%<model_name>s was successfully destroyed."
28
+ msgstr ""
29
+
30
+ msgid "%<model_name>s was successfully locked."
31
+ msgstr ""
32
+
33
+ msgid "%<model_name>s was successfully published."
34
+ msgstr ""
35
+
36
+ msgid "%<model_name>s was successfully removed from publication."
37
+ msgstr ""
38
+
39
+ msgid "%<model_name>s was successfully unlocked."
40
+ msgstr ""
41
+
42
+ msgid "%<model_name>s was successfully updated."
43
+ msgstr ""
44
+
45
+ msgid "%<nb>i album"
46
+ msgid_plural "%<nb>i albums"
47
+ msgstr[0] ""
48
+ msgstr[1] ""
49
+
50
+ msgid "%<nb>i article"
51
+ msgid_plural "%<nb>i articles"
52
+ msgstr[0] ""
53
+ msgstr[1] ""
54
+
55
+ msgid "%<nb>i note"
56
+ msgid_plural "%<nb>i notes"
57
+ msgstr[0] ""
58
+ msgstr[1] ""
59
+
60
+ msgid "%<nb>i project"
61
+ msgid_plural "%<nb>i projects"
62
+ msgstr[0] ""
63
+ msgstr[1] ""
64
+
65
+ msgid "%<nb>i upload"
66
+ msgid_plural "%<nb>i uploads"
67
+ msgstr[0] ""
68
+ msgstr[1] ""
69
+
70
+ msgid "%<number>i characters minimum"
71
+ msgstr ""
72
+
73
+ msgid "%<s>s:"
74
+ msgstr ""
75
+
76
+ msgid "%<string>s has been %<event>s"
77
+ msgstr ""
78
+
79
+ msgid "%<text>s %<icon>s"
80
+ msgstr ""
81
+
82
+ msgid "%I:%M %p"
83
+ msgstr ""
84
+
85
+ msgid "%Y-%m-%d"
86
+ msgstr ""
87
+
88
+ msgid "(leave blank if you don't want to change it)"
89
+ msgstr ""
90
+
91
+ msgid "(we need your current password to confirm the following changes)"
92
+ msgstr ""
93
+
94
+ msgid "A note"
95
+ msgstr ""
96
+
97
+ msgid "About"
98
+ msgstr ""
99
+
100
+ msgid "Account"
101
+ msgstr ""
102
+
103
+ msgid "Act"
104
+ msgstr ""
105
+
106
+ msgid "Act|Content type"
107
+ msgstr ""
108
+
109
+ msgid "Act|Event"
110
+ msgstr ""
111
+
112
+ msgid "Admin"
113
+ msgstr ""
114
+
115
+ msgid "Administration:"
116
+ msgstr ""
117
+
118
+ msgid "Album count"
119
+ msgstr ""
120
+
121
+ msgid "Albums"
122
+ msgstr ""
123
+
124
+ msgid "Albums:"
125
+ msgstr ""
126
+
127
+ msgid "Allow contact"
128
+ msgstr ""
129
+
130
+ msgid "An error prevented the instructions from being sent:"
131
+ msgid_plural "%<nb>i errors prevented the instructions from being sent:"
132
+ msgstr[0] ""
133
+ msgstr[1] ""
134
+
135
+ msgid "An error prevented this album from being saved:"
136
+ msgid_plural "%<nb>i errors prevented this album from being saved:"
137
+ msgstr[0] ""
138
+ msgstr[1] ""
139
+
140
+ msgid "An error prevented this article from being saved:"
141
+ msgid_plural "%<nb>i errors prevented this article from being saved:"
142
+ msgstr[0] ""
143
+ msgstr[1] ""
144
+
145
+ msgid "An error prevented this language from being saved:"
146
+ msgid_plural "%<nb>i errors prevented this language from being saved:"
147
+ msgstr[0] ""
148
+ msgstr[1] ""
149
+
150
+ msgid "An error prevented this license from being saved:"
151
+ msgid_plural "%<nb>i errors prevented this license from being saved:"
152
+ msgstr[0] ""
153
+ msgstr[1] ""
154
+
155
+ msgid "An error prevented this note from being saved:"
156
+ msgid_plural "%<nb>i errors prevented this note from being saved:"
157
+ msgstr[0] ""
158
+ msgstr[1] ""
159
+
160
+ msgid "An error prevented this project from being saved:"
161
+ msgid_plural "%<nb>i errors prevented this project from being saved:"
162
+ msgstr[0] ""
163
+ msgstr[1] ""
164
+
165
+ msgid "An error prevented this tag from being saved:"
166
+ msgid_plural "%<nb>i errors prevented this tag from being saved:"
167
+ msgstr[0] ""
168
+ msgstr[1] ""
169
+
170
+ msgid "An error prevented this upload from being saved:"
171
+ msgid_plural "%<nb>i errors prevented this upload from being saved:"
172
+ msgstr[0] ""
173
+ msgstr[1] ""
174
+
175
+ msgid "An error prevented your account from being created:"
176
+ msgid_plural "%<nb>i errors prevented your account from being created:"
177
+ msgstr[0] ""
178
+ msgstr[1] ""
179
+
180
+ msgid "An error prevented your account from being updated:"
181
+ msgid_plural "%<nb>i errors prevented your account from being updated:"
182
+ msgstr[0] ""
183
+ msgstr[1] ""
184
+
185
+ msgid "An error prevented your comment from being saved:"
186
+ msgid_plural "%<nb>i errors prevented your comment from being saved:"
187
+ msgstr[0] ""
188
+ msgstr[1] ""
189
+
190
+ msgid "An error prevented your password from being changed:"
191
+ msgid_plural "%<nb>i errors prevented your password from being changed:"
192
+ msgstr[0] ""
193
+ msgstr[1] ""
194
+
195
+ msgid "An error prevented your preferences from being saved:"
196
+ msgid_plural "%<nb>i errors prevented your preferences from being saved:"
197
+ msgstr[0] ""
198
+ msgstr[1] ""
199
+
200
+ msgid "An error prevented your report from being saved:"
201
+ msgid_plural "%<nb>i errors prevented your report from being saved:"
202
+ msgstr[0] ""
203
+ msgstr[1] ""
204
+
205
+ msgid "Application content record"
206
+ msgstr ""
207
+
208
+ msgid "ApplicationContentRecord|Albums count"
209
+ msgstr ""
210
+
211
+ msgid "ApplicationContentRecord|Articles count"
212
+ msgstr ""
213
+
214
+ msgid "ApplicationContentRecord|Content"
215
+ msgstr ""
216
+
217
+ msgid "ApplicationContentRecord|Description"
218
+ msgstr ""
219
+
220
+ msgid "ApplicationContentRecord|Excerpt"
221
+ msgstr ""
222
+
223
+ msgid "ApplicationContentRecord|Hidden in history"
224
+ msgstr ""
225
+
226
+ msgid "ApplicationContentRecord|Locked"
227
+ msgstr ""
228
+
229
+ msgid "ApplicationContentRecord|Main url"
230
+ msgstr ""
231
+
232
+ msgid "ApplicationContentRecord|Name"
233
+ msgstr ""
234
+
235
+ msgid "ApplicationContentRecord|Notes count"
236
+ msgstr ""
237
+
238
+ msgid "ApplicationContentRecord|Published"
239
+ msgstr ""
240
+
241
+ msgid "ApplicationContentRecord|Published at"
242
+ msgstr ""
243
+
244
+ msgid "ApplicationContentRecord|Sfw"
245
+ msgstr ""
246
+
247
+ msgid "ApplicationContentRecord|Short description"
248
+ msgstr ""
249
+
250
+ msgid "ApplicationContentRecord|Title"
251
+ msgstr ""
252
+
253
+ msgid "ApplicationContentRecord|Uploads count"
254
+ msgstr ""
255
+
256
+ msgid "Are you sure?"
257
+ msgstr ""
258
+
259
+ msgid "Article count"
260
+ msgstr ""
261
+
262
+ msgid "Articles"
263
+ msgstr ""
264
+
265
+ msgid "Articles:"
266
+ msgstr ""
267
+
268
+ msgid "Author:"
269
+ msgstr ""
270
+
271
+ msgid "Authors"
272
+ msgstr ""
273
+
274
+ msgid "Bio"
275
+ msgstr ""
276
+
277
+ msgid "By submitting this comment, you agree to be recontacted by the author."
278
+ msgstr ""
279
+
280
+ msgid "By submitting this report, you agree to be recontacted by administrators."
281
+ msgstr ""
282
+
283
+ msgid "Cancel my account"
284
+ msgstr ""
285
+
286
+ msgid "Cancelling your account will delete all the content you created, with no possibility to restore it. This is definitive."
287
+ msgstr ""
288
+
289
+ msgid "Change my password"
290
+ msgstr ""
291
+
292
+ msgid "Change your password"
293
+ msgstr ""
294
+
295
+ msgid "Come back later, content is being created, somewhere"
296
+ msgstr ""
297
+
298
+ msgid "Comment"
299
+ msgstr ""
300
+
301
+ msgid "Comment was successfully created."
302
+ msgstr ""
303
+
304
+ msgid "Comments"
305
+ msgstr ""
306
+
307
+ msgid "Comment|Allow contact"
308
+ msgstr ""
309
+
310
+ msgid "Comment|Comment"
311
+ msgstr ""
312
+
313
+ msgid "Comment|Content type"
314
+ msgstr ""
315
+
316
+ msgid "Comment|Deleted"
317
+ msgstr ""
318
+
319
+ msgid "Comment|Email"
320
+ msgstr ""
321
+
322
+ msgid "Comment|Name"
323
+ msgstr ""
324
+
325
+ msgid "Confirm new password"
326
+ msgstr ""
327
+
328
+ msgid "Confirmation"
329
+ msgstr ""
330
+
331
+ msgid "Content"
332
+ msgstr ""
333
+
334
+ msgid "Content not displayed"
335
+ msgstr ""
336
+
337
+ msgid "Create some content"
338
+ msgstr ""
339
+
340
+ msgid "Created at"
341
+ msgstr ""
342
+
343
+ msgid "Currently waiting confirmation for: %<email>s"
344
+ msgstr ""
345
+
346
+ msgid "Date"
347
+ msgstr ""
348
+
349
+ msgid "Destroy"
350
+ msgstr ""
351
+
352
+ msgid "Didn't receive confirmation instructions?"
353
+ msgstr ""
354
+
355
+ msgid "Didn't receive unlock instructions?"
356
+ msgstr ""
357
+
358
+ msgid "Download"
359
+ msgstr ""
360
+
361
+ msgid "Edit"
362
+ msgstr ""
363
+
364
+ msgid "Edit \"%<language>s\""
365
+ msgstr ""
366
+
367
+ msgid "Edit \"%<name>s\""
368
+ msgstr ""
369
+
370
+ msgid "Editing album"
371
+ msgstr ""
372
+
373
+ msgid "Editing article"
374
+ msgstr ""
375
+
376
+ msgid "Editing license"
377
+ msgstr ""
378
+
379
+ msgid "Editing note"
380
+ msgstr ""
381
+
382
+ msgid "Editing preferences"
383
+ msgstr ""
384
+
385
+ msgid "Editing project"
386
+ msgstr ""
387
+
388
+ msgid "Editing upload"
389
+ msgstr ""
390
+
391
+ msgid "Email"
392
+ msgstr ""
393
+
394
+ msgid "Email:"
395
+ msgstr ""
396
+
397
+ msgid "Forgot your password?"
398
+ msgstr ""
399
+
400
+ msgid "Hide NSFW"
401
+ msgstr ""
402
+
403
+ msgid "Home page"
404
+ msgstr ""
405
+
406
+ msgid "ISO 639-1 code"
407
+ msgstr ""
408
+
409
+ msgid "ISO 639-1 code:"
410
+ msgstr ""
411
+
412
+ msgid "Icon"
413
+ msgstr ""
414
+
415
+ msgid "Icon:"
416
+ msgstr ""
417
+
418
+ msgid "Insc. date"
419
+ msgstr ""
420
+
421
+ msgid "Is SFW:"
422
+ msgstr ""
423
+
424
+ msgid "Javascript seems to be disabled."
425
+ msgstr ""
426
+
427
+ msgid "Language"
428
+ msgstr ""
429
+
430
+ msgid "Language was successfully created."
431
+ msgstr ""
432
+
433
+ msgid "Language was successfully destroyed."
434
+ msgstr ""
435
+
436
+ msgid "Language was successfully updated."
437
+ msgstr ""
438
+
439
+ msgid "Language:"
440
+ msgstr ""
441
+
442
+ msgid "Languages"
443
+ msgstr ""
444
+
445
+ msgid "Language|Albums count"
446
+ msgstr ""
447
+
448
+ msgid "Language|Articles count"
449
+ msgstr ""
450
+
451
+ msgid "Language|Iso639 1"
452
+ msgstr ""
453
+
454
+ msgid "Language|Name"
455
+ msgstr ""
456
+
457
+ msgid "Language|Notes count"
458
+ msgstr ""
459
+
460
+ msgid "Language|Projects count"
461
+ msgstr ""
462
+
463
+ msgid "Language|Uploads count"
464
+ msgstr ""
465
+
466
+ msgid "Last %<amount>i albums:"
467
+ msgstr ""
468
+
469
+ msgid "Last %<amount>i articles:"
470
+ msgstr ""
471
+
472
+ msgid "Last %<amount>i notes:"
473
+ msgstr ""
474
+
475
+ msgid "Last %<amount>i projects:"
476
+ msgstr ""
477
+
478
+ msgid "Last %<amount>i uploads:"
479
+ msgstr ""
480
+
481
+ msgid "Last events"
482
+ msgstr ""
483
+
484
+ msgid "Leave a comment"
485
+ msgstr ""
486
+
487
+ msgid "License"
488
+ msgstr ""
489
+
490
+ msgid "License was successfully created."
491
+ msgstr ""
492
+
493
+ msgid "License was successfully destroyed."
494
+ msgstr ""
495
+
496
+ msgid "License was successfully updated."
497
+ msgstr ""
498
+
499
+ msgid "License:"
500
+ msgstr ""
501
+
502
+ msgid "Licenses"
503
+ msgstr ""
504
+
505
+ msgid "License|Albums count"
506
+ msgstr ""
507
+
508
+ msgid "License|Articles count"
509
+ msgstr ""
510
+
511
+ msgid "License|Icon"
512
+ msgstr ""
513
+
514
+ msgid "License|Name"
515
+ msgstr ""
516
+
517
+ msgid "License|Notes count"
518
+ msgstr ""
519
+
520
+ msgid "License|Projects count"
521
+ msgstr ""
522
+
523
+ msgid "License|Tldr url"
524
+ msgstr ""
525
+
526
+ msgid "License|Uploads count"
527
+ msgstr ""
528
+
529
+ msgid "License|Url"
530
+ msgstr ""
531
+
532
+ msgid "List of comma-separated tags"
533
+ msgstr ""
534
+
535
+ msgid "Listing reports"
536
+ msgstr ""
537
+
538
+ msgid "Lock"
539
+ msgstr ""
540
+
541
+ msgid "Lock."
542
+ msgstr ""
543
+
544
+ msgid "Log in"
545
+ msgstr ""
546
+
547
+ msgid "Log out"
548
+ msgstr ""
549
+
550
+ msgid "Login"
551
+ msgstr ""
552
+
553
+ msgid "Main url"
554
+ msgstr ""
555
+
556
+ msgid "Main url:"
557
+ msgstr ""
558
+
559
+ msgid "Markdown supported. %<preview_button>s"
560
+ msgstr ""
561
+
562
+ msgid "Member"
563
+ msgstr ""
564
+
565
+ msgid "Name"
566
+ msgstr ""
567
+
568
+ msgid "New Album"
569
+ msgstr ""
570
+
571
+ msgid "New Article"
572
+ msgstr ""
573
+
574
+ msgid "New Language"
575
+ msgstr ""
576
+
577
+ msgid "New License"
578
+ msgstr ""
579
+
580
+ msgid "New Note"
581
+ msgstr ""
582
+
583
+ msgid "New Project"
584
+ msgstr ""
585
+
586
+ msgid "New Upload"
587
+ msgstr ""
588
+
589
+ msgid "New album"
590
+ msgstr ""
591
+
592
+ msgid "New article"
593
+ msgstr ""
594
+
595
+ msgid "New language"
596
+ msgstr ""
597
+
598
+ msgid "New license"
599
+ msgstr ""
600
+
601
+ msgid "New note"
602
+ msgstr ""
603
+
604
+ msgid "New password"
605
+ msgstr ""
606
+
607
+ msgid "New project"
608
+ msgstr ""
609
+
610
+ msgid "New upload"
611
+ msgstr ""
612
+
613
+ msgid "No comment has been left"
614
+ msgstr ""
615
+
616
+ msgid "No tags"
617
+ msgstr ""
618
+
619
+ msgid "Not in a project"
620
+ msgstr ""
621
+
622
+ msgid "Not in an album"
623
+ msgstr ""
624
+
625
+ msgid "Note count"
626
+ msgstr ""
627
+
628
+ msgid "Notes"
629
+ msgstr ""
630
+
631
+ msgid "Notes:"
632
+ msgstr ""
633
+
634
+ msgid "Oh noes ! There is nothing here!"
635
+ msgstr ""
636
+
637
+ msgid "Only NSFW"
638
+ msgstr ""
639
+
640
+ msgid "Only SFW"
641
+ msgstr ""
642
+
643
+ msgid "Permalink"
644
+ msgstr ""
645
+
646
+ msgid "Posted on:"
647
+ msgstr ""
648
+
649
+ msgid "Preference"
650
+ msgstr ""
651
+
652
+ msgid "Preference was successfully updated."
653
+ msgstr ""
654
+
655
+ msgid "Preferences"
656
+ msgstr ""
657
+
658
+ msgid "Preference|Locale"
659
+ msgstr ""
660
+
661
+ msgid "Preference|Show nsfw"
662
+ msgstr ""
663
+
664
+ msgid "Preview"
665
+ msgstr ""
666
+
667
+ msgid "Project count"
668
+ msgstr ""
669
+
670
+ msgid "Projects"
671
+ msgstr ""
672
+
673
+ msgid "Projects:"
674
+ msgstr ""
675
+
676
+ msgid "Pub."
677
+ msgstr ""
678
+
679
+ msgid "Pub. date"
680
+ msgstr ""
681
+
682
+ msgid "Publish"
683
+ msgstr ""
684
+
685
+ msgid "Published at"
686
+ msgstr ""
687
+
688
+ msgid "Published at:"
689
+ msgstr ""
690
+
691
+ msgid "Real name"
692
+ msgstr ""
693
+
694
+ msgid "Real name:"
695
+ msgstr ""
696
+
697
+ msgid "Reason"
698
+ msgstr ""
699
+
700
+ msgid "Report"
701
+ msgstr ""
702
+
703
+ msgid "Report this page"
704
+ msgstr ""
705
+
706
+ msgid "Report was successfully created."
707
+ msgstr ""
708
+
709
+ msgid "Report was successfully destroyed."
710
+ msgstr ""
711
+
712
+ msgid "Report will be posted as \"%<name>s\""
713
+ msgstr ""
714
+
715
+ msgid "Reports"
716
+ msgstr ""
717
+
718
+ msgid "Report|Allow contact"
719
+ msgstr ""
720
+
721
+ msgid "Report|Email"
722
+ msgstr ""
723
+
724
+ msgid "Report|Name"
725
+ msgstr ""
726
+
727
+ msgid "Report|Reason"
728
+ msgstr ""
729
+
730
+ msgid "Report|Url"
731
+ msgstr ""
732
+
733
+ msgid "Resend confirmation instructions"
734
+ msgstr ""
735
+
736
+ msgid "Resend unlock instructions"
737
+ msgstr ""
738
+
739
+ msgid "Role"
740
+ msgstr ""
741
+
742
+ msgid "Role:"
743
+ msgstr ""
744
+
745
+ msgid "SFW"
746
+ msgstr ""
747
+
748
+ msgid "SFW:"
749
+ msgstr ""
750
+
751
+ msgid "Save"
752
+ msgstr ""
753
+
754
+ msgid "Send me reset password instructions"
755
+ msgstr ""
756
+
757
+ msgid "Sensitive changes"
758
+ msgstr ""
759
+
760
+ msgid "Show"
761
+ msgstr ""
762
+
763
+ msgid "Show NSFW"
764
+ msgstr ""
765
+
766
+ msgid "Show all"
767
+ msgstr ""
768
+
769
+ msgid "Show online"
770
+ msgstr ""
771
+
772
+ msgid "Sign in with %<provider>s"
773
+ msgstr ""
774
+
775
+ msgid "Sign up"
776
+ msgstr ""
777
+
778
+ msgid "Since"
779
+ msgstr ""
780
+
781
+ msgid "Since:"
782
+ msgstr ""
783
+
784
+ msgid "Skip hist."
785
+ msgstr ""
786
+
787
+ msgid "Subscription date"
788
+ msgstr ""
789
+
790
+ msgid "Subscription date:"
791
+ msgstr ""
792
+
793
+ msgid "TL; DR"
794
+ msgstr ""
795
+
796
+ msgid "TL;DR URL"
797
+ msgstr ""
798
+
799
+ msgid "Tag"
800
+ msgstr ""
801
+
802
+ msgid "Tag was successfully destroyed."
803
+ msgstr ""
804
+
805
+ msgid "Tag was successfully updated."
806
+ msgstr ""
807
+
808
+ msgid "Tags"
809
+ msgstr ""
810
+
811
+ msgid "Tags list"
812
+ msgstr ""
813
+
814
+ msgid "Tags:"
815
+ msgstr ""
816
+
817
+ msgid "Tag|Albums count"
818
+ msgstr ""
819
+
820
+ msgid "Tag|Articles count"
821
+ msgstr ""
822
+
823
+ msgid "Tag|Name"
824
+ msgstr ""
825
+
826
+ msgid "Tag|Notes count"
827
+ msgstr ""
828
+
829
+ msgid "Tag|Projects count"
830
+ msgstr ""
831
+
832
+ msgid "Tag|Uploads count"
833
+ msgstr ""
834
+
835
+ msgid "The following formats will be viewable online; other will need a download: %<formats>s"
836
+ msgstr ""
837
+
838
+ msgid "This %<model>s is not yours"
839
+ msgstr ""
840
+
841
+ msgid "This comment will be posted as \"%<name>s\""
842
+ msgstr ""
843
+
844
+ msgid "This content might not be appropriate for every situation."
845
+ msgstr ""
846
+
847
+ msgid "This content needs review and have been retired for now."
848
+ msgstr ""
849
+
850
+ msgid "This space is empty"
851
+ msgstr ""
852
+
853
+ msgid "Title"
854
+ msgstr ""
855
+
856
+ msgid "URL"
857
+ msgstr ""
858
+
859
+ msgid "Unlock"
860
+ msgstr ""
861
+
862
+ msgid "Unpublish"
863
+ msgstr ""
864
+
865
+ msgid "Upd. date"
866
+ msgstr ""
867
+
868
+ msgid "Updated at:"
869
+ msgstr ""
870
+
871
+ msgid "Upload count"
872
+ msgstr ""
873
+
874
+ msgid "Uploads"
875
+ msgstr ""
876
+
877
+ msgid "Uploads:"
878
+ msgstr ""
879
+
880
+ msgid "User"
881
+ msgstr ""
882
+
883
+ msgid "User was successfully destroyed."
884
+ msgstr ""
885
+
886
+ msgid "User:"
887
+ msgstr ""
888
+
889
+ msgid "Username"
890
+ msgstr ""
891
+
892
+ msgid "Username:"
893
+ msgstr ""
894
+
895
+ msgid "Users"
896
+ msgstr ""
897
+
898
+ msgid "User|Albums count"
899
+ msgstr ""
900
+
901
+ msgid "User|Articles count"
902
+ msgstr ""
903
+
904
+ msgid "User|Biography"
905
+ msgstr ""
906
+
907
+ msgid "User|Confirmation sent at"
908
+ msgstr ""
909
+
910
+ msgid "User|Confirmation token"
911
+ msgstr ""
912
+
913
+ msgid "User|Confirmed at"
914
+ msgstr ""
915
+
916
+ msgid "User|Email"
917
+ msgstr ""
918
+
919
+ msgid "User|Encrypted password"
920
+ msgstr ""
921
+
922
+ msgid "User|Failed attempts"
923
+ msgstr ""
924
+
925
+ msgid "User|Locked at"
926
+ msgstr ""
927
+
928
+ msgid "User|Notes count"
929
+ msgstr ""
930
+
931
+ msgid "User|Projects count"
932
+ msgstr ""
933
+
934
+ msgid "User|Real name"
935
+ msgstr ""
936
+
937
+ msgid "User|Remember created at"
938
+ msgstr ""
939
+
940
+ msgid "User|Reset password sent at"
941
+ msgstr ""
942
+
943
+ msgid "User|Reset password token"
944
+ msgstr ""
945
+
946
+ msgid "User|Role"
947
+ msgstr ""
948
+
949
+ msgid "User|Unconfirmed email"
950
+ msgstr ""
951
+
952
+ msgid "User|Unlock token"
953
+ msgstr ""
954
+
955
+ msgid "User|Uploads count"
956
+ msgstr ""
957
+
958
+ msgid "User|Username"
959
+ msgstr ""
960
+
961
+ msgid "View online"
962
+ msgstr ""
963
+
964
+ msgid "With content only"
965
+ msgstr ""
966
+
967
+ msgid "Your browser does not support the audio tag."
968
+ msgstr ""
969
+
970
+ msgid "Your browser does not support the video tag."
971
+ msgstr ""
972
+
973
+ msgid "Your infos were successfully saved"
974
+ msgstr ""
975
+
976
+ msgid "created"
977
+ msgstr ""
978
+
979
+ msgid "devise.confirmations.confirmed"
980
+ msgstr ""
981
+
982
+ msgid "devise.confirmations.send_instructions"
983
+ msgstr ""
984
+
985
+ msgid "devise.confirmations.send_paranoid_instructions"
986
+ msgstr ""
987
+
988
+ msgid "devise.failure.already_authenticated"
989
+ msgstr ""
990
+
991
+ msgid "devise.failure.inactive"
992
+ msgstr ""
993
+
994
+ msgid "devise.failure.invalid"
995
+ msgstr ""
996
+
997
+ msgid "devise.failure.last_attempt"
998
+ msgstr ""
999
+
1000
+ msgid "devise.failure.locked"
1001
+ msgstr ""
1002
+
1003
+ msgid "devise.failure.not_found_in_database"
1004
+ msgstr ""
1005
+
1006
+ msgid "devise.failure.timeout"
1007
+ msgstr ""
1008
+
1009
+ msgid "devise.failure.unauthenticated"
1010
+ msgstr ""
1011
+
1012
+ msgid "devise.failure.unconfirmed"
1013
+ msgstr ""
1014
+
1015
+ msgid "devise.mailer.confirmation_instructions.subject"
1016
+ msgstr ""
1017
+
1018
+ msgid "devise.mailer.email_changed.subject"
1019
+ msgstr ""
1020
+
1021
+ msgid "devise.mailer.password_change.subject"
1022
+ msgstr ""
1023
+
1024
+ msgid "devise.mailer.reset_password_instructions.subject"
1025
+ msgstr ""
1026
+
1027
+ msgid "devise.mailer.unlock_instructions.subject"
1028
+ msgstr ""
1029
+
1030
+ msgid "devise.omniauth_callbacks.failure"
1031
+ msgstr ""
1032
+
1033
+ msgid "devise.omniauth_callbacks.success"
1034
+ msgstr ""
1035
+
1036
+ msgid "devise.passwords.no_token"
1037
+ msgstr ""
1038
+
1039
+ msgid "devise.passwords.send_instructions"
1040
+ msgstr ""
1041
+
1042
+ msgid "devise.passwords.send_paranoid_instructions"
1043
+ msgstr ""
1044
+
1045
+ msgid "devise.passwords.updated"
1046
+ msgstr ""
1047
+
1048
+ msgid "devise.passwords.updated_not_active"
1049
+ msgstr ""
1050
+
1051
+ msgid "devise.registrations.destroyed"
1052
+ msgstr ""
1053
+
1054
+ msgid "devise.registrations.signed_up"
1055
+ msgstr ""
1056
+
1057
+ msgid "devise.registrations.signed_up_but_inactive"
1058
+ msgstr ""
1059
+
1060
+ msgid "devise.registrations.signed_up_but_locked"
1061
+ msgstr ""
1062
+
1063
+ msgid "devise.registrations.signed_up_but_unconfirmed"
1064
+ msgstr ""
1065
+
1066
+ msgid "devise.registrations.update_needs_confirmation"
1067
+ msgstr ""
1068
+
1069
+ msgid "devise.registrations.updated"
1070
+ msgstr ""
1071
+
1072
+ msgid "devise.sessions.already_signed_out"
1073
+ msgstr ""
1074
+
1075
+ msgid "devise.sessions.signed_in"
1076
+ msgstr ""
1077
+
1078
+ msgid "devise.sessions.signed_out"
1079
+ msgstr ""
1080
+
1081
+ msgid "devise.unlocks.send_instructions"
1082
+ msgstr ""
1083
+
1084
+ msgid "devise.unlocks.send_paranoid_instructions"
1085
+ msgstr ""
1086
+
1087
+ msgid "devise.unlocks.unlocked"
1088
+ msgstr ""
1089
+
1090
+ msgid "errors.messages.already_confirmed"
1091
+ msgstr ""
1092
+
1093
+ msgid "errors.messages.confirmation_period_expired"
1094
+ msgstr ""
1095
+
1096
+ msgid "errors.messages.expired"
1097
+ msgstr ""
1098
+
1099
+ msgid "errors.messages.not_found"
1100
+ msgstr ""
1101
+
1102
+ msgid "errors.messages.not_locked"
1103
+ msgstr ""
1104
+
1105
+ msgid "errors.messages.not_saved.one"
1106
+ msgstr ""
1107
+
1108
+ msgid "errors.messages.not_saved.other"
1109
+ msgstr ""
1110
+
1111
+ msgid "locked"
1112
+ msgstr ""
1113
+
1114
+ msgid "published"
1115
+ msgstr ""
1116
+
1117
+ msgid "removed from publication"
1118
+ msgstr ""
1119
+
1120
+ msgid "unlocked"
1121
+ msgstr ""
1122
+
1123
+ msgid "updated"
1124
+ msgstr ""