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,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 ""