elabs 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +9 -0
  3. data/.node-version +1 -1
  4. data/.rubocop.yml +4 -0
  5. data/.stylelintrc.yml +12 -2
  6. data/CHANGELOG.md +81 -12
  7. data/Gemfile +1 -1
  8. data/Gemfile.lock +96 -94
  9. data/README.md +2 -0
  10. data/ROADMAP.md +4 -2
  11. data/app/assets/config/elabs_manifest.js +2 -1
  12. data/app/assets/fonts/elabs/FontAwesome/fa-brands-400.eot +0 -0
  13. data/app/assets/fonts/elabs/FontAwesome/fa-brands-400.svg +1148 -0
  14. data/app/assets/fonts/elabs/FontAwesome/fa-brands-400.ttf +0 -0
  15. data/app/assets/fonts/elabs/FontAwesome/fa-brands-400.woff +0 -0
  16. data/app/assets/fonts/elabs/FontAwesome/fa-brands-400.woff2 +0 -0
  17. data/app/assets/fonts/elabs/FontAwesome/fa-regular-400.eot +0 -0
  18. data/app/assets/fonts/elabs/FontAwesome/fa-regular-400.svg +467 -0
  19. data/app/assets/fonts/elabs/FontAwesome/fa-regular-400.ttf +0 -0
  20. data/app/assets/fonts/elabs/FontAwesome/fa-regular-400.woff +0 -0
  21. data/app/assets/fonts/elabs/FontAwesome/fa-regular-400.woff2 +0 -0
  22. data/app/assets/fonts/elabs/FontAwesome/fa-solid-900.eot +0 -0
  23. data/app/assets/fonts/elabs/FontAwesome/fa-solid-900.svg +2231 -0
  24. data/app/assets/fonts/elabs/FontAwesome/fa-solid-900.ttf +0 -0
  25. data/app/assets/fonts/elabs/FontAwesome/fa-solid-900.woff +0 -0
  26. data/app/assets/fonts/elabs/FontAwesome/fa-solid-900.woff2 +0 -0
  27. data/app/assets/fonts/elabs/OpenSans/Apache License.txt +201 -0
  28. data/app/assets/fonts/elabs/OpenSans/OpenSans-Bold.ttf +0 -0
  29. data/app/assets/fonts/elabs/OpenSans/OpenSans-Light.ttf +0 -0
  30. data/app/assets/fonts/elabs/OpenSans/OpenSans-Regular.ttf +0 -0
  31. data/app/assets/fonts/elabs/OpenSans/OpenSans-Semibold.ttf +0 -0
  32. data/app/assets/fonts/elabs/license-icons/license-icons.eot +0 -0
  33. data/app/assets/fonts/elabs/license-icons/license-icons.svg +51 -0
  34. data/app/assets/fonts/elabs/license-icons/license-icons.ttf +0 -0
  35. data/app/assets/fonts/elabs/license-icons/license-icons.woff +0 -0
  36. data/app/assets/fonts/elabs/license-icons/license-icons.woff2 +0 -0
  37. data/app/assets/images/elabs/preview_placeholder.png +0 -0
  38. data/app/assets/images/elabs/preview_placeholder_nsfw.png +0 -0
  39. data/app/assets/javascripts/elabs/announcements.js +33 -0
  40. data/app/assets/javascripts/elabs/application.js.erb +17 -14
  41. data/app/assets/javascripts/elabs/forms.js +0 -1
  42. data/app/assets/javascripts/elabs/helpers-markdown.js +2 -2
  43. data/app/assets/javascripts/elabs/helpers.js +17 -0
  44. data/app/assets/javascripts/elabs/menu.js +5 -0
  45. data/app/assets/stylesheets/elabs/_fonts.scss +32 -0
  46. data/app/assets/stylesheets/elabs/_variables.scss +286 -5
  47. data/app/assets/stylesheets/elabs/app/components/_act.scss +83 -0
  48. data/app/assets/stylesheets/elabs/app/components/_announcement.scss +41 -0
  49. data/app/assets/stylesheets/elabs/app/components/_classifier_types.scss +43 -0
  50. data/app/assets/stylesheets/elabs/app/components/_comment.scss +29 -0
  51. data/app/assets/stylesheets/elabs/app/components/_content_relations.scss +53 -0
  52. data/app/assets/stylesheets/elabs/app/components/_content_statuses.scss +39 -0
  53. data/app/assets/stylesheets/elabs/app/components/_content_types.scss +41 -0
  54. data/app/assets/stylesheets/elabs/app/components/_git_cards.scss +122 -0
  55. data/app/assets/stylesheets/elabs/app/elements/_alerts.scss +3 -0
  56. data/app/assets/stylesheets/elabs/app/elements/_badges.scss +17 -0
  57. data/app/assets/stylesheets/elabs/app/elements/_buttons.scss +34 -0
  58. data/app/assets/stylesheets/elabs/app/elements/_dropdowns.scss +78 -0
  59. data/app/assets/stylesheets/elabs/app/elements/_empty.scss +31 -0
  60. data/app/assets/stylesheets/elabs/app/elements/_errors.scss +15 -0
  61. data/app/assets/stylesheets/elabs/app/elements/_filter_link.scss +23 -0
  62. data/app/assets/stylesheets/elabs/app/elements/_fixed_links.scss +19 -0
  63. data/app/assets/stylesheets/elabs/app/elements/_forms.scss +123 -0
  64. data/app/assets/stylesheets/elabs/app/elements/_icons.scss +74 -0
  65. data/app/assets/stylesheets/elabs/app/{_medias.scss → elements/_medias.scss} +2 -0
  66. data/app/assets/stylesheets/elabs/app/{_modals.scss → elements/_modals.scss} +8 -4
  67. data/app/assets/stylesheets/elabs/app/elements/_nsfw.scss +41 -0
  68. data/app/assets/stylesheets/elabs/app/{_pagination.scss → elements/_pagination.scss} +0 -0
  69. data/app/assets/stylesheets/elabs/app/{_tables.scss → elements/_tables.scss} +2 -2
  70. data/app/assets/stylesheets/elabs/app/elements/_tabs.scss +73 -0
  71. data/app/assets/stylesheets/elabs/app/helpers/_cards.scss +80 -0
  72. data/app/assets/stylesheets/elabs/app/helpers/_containers.scss +7 -0
  73. data/app/assets/stylesheets/elabs/app/helpers/_states.scss +3 -0
  74. data/app/assets/stylesheets/elabs/app/{_helpers.scss → helpers/_typo.scss} +6 -4
  75. data/app/assets/stylesheets/elabs/app/layouts/_acts.scss +25 -0
  76. data/app/assets/stylesheets/elabs/app/layouts/_classifiers.scss +32 -0
  77. data/app/assets/stylesheets/elabs/app/{_comments.scss → layouts/_comments.scss} +0 -2
  78. data/app/assets/stylesheets/elabs/app/layouts/_devise.scss +65 -0
  79. data/app/assets/stylesheets/elabs/app/layouts/_layout.scss +40 -0
  80. data/app/assets/stylesheets/elabs/app/layouts/_page.scss +14 -0
  81. data/app/assets/stylesheets/elabs/app/layouts/_page_content.scss +13 -0
  82. data/app/assets/stylesheets/elabs/app/layouts/_page_footer.scss +20 -0
  83. data/app/assets/stylesheets/elabs/app/layouts/_page_header.scss +146 -0
  84. data/app/assets/stylesheets/elabs/app/layouts/_page_menu.scss +232 -0
  85. data/app/assets/stylesheets/elabs/app/layouts/_page_messages.scss +4 -0
  86. data/app/assets/stylesheets/elabs/app/layouts/_private_layout.scss +78 -0
  87. data/app/assets/stylesheets/elabs/app/{_typo.scss → layouts/_typo.scss} +3 -0
  88. data/app/assets/stylesheets/elabs/app/mixins/_classifier_card.scss +43 -0
  89. data/app/assets/stylesheets/elabs/app/mixins/_content_card.scss +103 -0
  90. data/app/assets/stylesheets/elabs/app/mixins/_content_full.scss +158 -0
  91. data/app/assets/stylesheets/elabs/app/mixins/{_content-inline.scss → _content_inline.scss} +0 -0
  92. data/app/assets/stylesheets/elabs/lib/_codemirror.scss +2 -2
  93. data/app/assets/stylesheets/elabs/{_colors.scss → lib/_colors_reference.scss} +0 -52
  94. data/app/assets/stylesheets/elabs/lib/_license_icons.scss +121 -0
  95. data/app/assets/stylesheets/elabs/lib/fontawesome/_fontawesome.scss +1 -1
  96. data/app/assets/stylesheets/elabs/lib/fontawesome/_fonts.scss +18 -18
  97. data/app/assets/stylesheets/elabs/lib/knacss/_knacss.scss +1 -1
  98. data/app/assets/stylesheets/elabs/lib/knacss/_knacss_variables.scss +227 -0
  99. data/app/assets/stylesheets/elabs/style.scss +62 -57
  100. data/app/controllers/elabs/admin/admin_application_controller.rb +1 -1
  101. data/app/controllers/elabs/admin/announcements_controller.rb +71 -0
  102. data/app/controllers/elabs/concerns/elabs_controller.rb +3 -0
  103. data/app/controllers/elabs/content_application_controller.rb +4 -0
  104. data/app/controllers/elabs/elabs_public_controller.rb +15 -0
  105. data/app/controllers/elabs/languages_controller.rb +1 -5
  106. data/app/controllers/elabs/member/comments_controller.rb +42 -0
  107. data/app/controllers/elabs/member/member_application_controller.rb +1 -1
  108. data/app/controllers/elabs/reports_controller.rb +2 -0
  109. data/app/helpers/elabs/acts_helper.rb +7 -2
  110. data/app/helpers/elabs/application_helper.rb +8 -50
  111. data/app/helpers/elabs/content_filters_helper.rb +17 -24
  112. data/app/helpers/elabs/content_helper.rb +8 -35
  113. data/app/helpers/elabs/content_renderer_helper.rb +4 -112
  114. data/app/helpers/elabs/form_helper.rb +11 -11
  115. data/app/helpers/elabs/icons_helper.rb +63 -0
  116. data/app/helpers/elabs/{admin_content_helper.rb → links_admin_helper.rb} +1 -1
  117. data/app/helpers/elabs/links_helper.rb +58 -0
  118. data/app/helpers/elabs/{member_content_helper.rb → links_member_helper.rb} +2 -2
  119. data/app/helpers/elabs/notification_helper.rb +17 -3
  120. data/app/helpers/elabs/shortcodes_helper.rb +108 -0
  121. data/app/helpers/elabs/thumbnails_helper.rb +1 -1
  122. data/app/models/elabs/album.rb +14 -0
  123. data/app/models/elabs/announcement.rb +33 -0
  124. data/app/models/elabs/article.rb +14 -0
  125. data/app/models/elabs/comment.rb +10 -4
  126. data/app/models/elabs/note.rb +14 -0
  127. data/app/models/elabs/project.rb +12 -0
  128. data/app/models/elabs/report.rb +1 -0
  129. data/app/models/elabs/upload.rb +16 -0
  130. data/app/models/elabs/user.rb +2 -1
  131. data/app/views/elabs/acts/_filters.html.haml +3 -2
  132. data/app/views/elabs/acts/index.html.haml +2 -13
  133. data/app/views/elabs/admin/announcements/_announcement.json.jbuilder +10 -0
  134. data/app/views/elabs/admin/announcements/_form.html.haml +52 -0
  135. data/app/views/elabs/admin/announcements/edit.html.haml +3 -0
  136. data/app/views/elabs/admin/announcements/index.html.haml +28 -0
  137. data/app/views/elabs/admin/announcements/index.json.jbuilder +1 -0
  138. data/app/views/elabs/admin/announcements/new.html.haml +3 -0
  139. data/app/views/elabs/admin/licenses/index.html.haml +2 -2
  140. data/app/views/elabs/admin/uploads/_upload.json.jbuilder +3 -3
  141. data/app/views/elabs/albums/_card_content.html.haml +8 -0
  142. data/app/views/elabs/albums/_filters.html.haml +5 -3
  143. data/app/views/elabs/albums/index.html.haml +1 -1
  144. data/app/views/elabs/albums/show.html.haml +38 -29
  145. data/app/views/elabs/articles/_filters.html.haml +5 -3
  146. data/app/views/elabs/articles/index.html.haml +1 -1
  147. data/app/views/elabs/articles/show.html.haml +33 -25
  148. data/app/views/elabs/auth/confirmations/new.html.haml +1 -1
  149. data/app/views/elabs/auth/passwords/edit.html.haml +1 -1
  150. data/app/views/elabs/auth/passwords/new.html.haml +1 -1
  151. data/app/views/elabs/auth/registrations/new.html.haml +7 -2
  152. data/app/views/elabs/auth/sessions/_new.html.haml +1 -1
  153. data/app/views/elabs/auth/unlocks/new.html.haml +1 -1
  154. data/app/views/elabs/comments/_comments.html.haml +29 -20
  155. data/app/views/elabs/comments/_form.html.haml +40 -36
  156. data/app/views/elabs/languages/_filters.html.haml +3 -5
  157. data/app/views/elabs/languages/index.html.haml +12 -13
  158. data/app/views/elabs/languages/show.html.haml +36 -31
  159. data/app/views/elabs/layouts/_announcements.html.haml +9 -0
  160. data/app/views/elabs/layouts/_content_associations.html.haml +89 -0
  161. data/app/views/elabs/layouts/_content_card.html.haml +41 -0
  162. data/app/views/elabs/layouts/_flash_messages.html.haml +4 -0
  163. data/app/views/elabs/layouts/_footer.html.haml +18 -10
  164. data/app/views/elabs/layouts/_form_honeypot.html.haml +12 -0
  165. data/app/views/elabs/layouts/_hidden_entry.html.haml +1 -1
  166. data/app/views/elabs/layouts/_hidden_entry_full.html.haml +4 -2
  167. data/app/views/elabs/layouts/_hidden_entry_inline.html.haml +1 -1
  168. data/app/views/elabs/layouts/_language_menu.html.haml +2 -2
  169. data/app/views/elabs/layouts/_menu.html.haml +58 -75
  170. data/app/views/elabs/layouts/_menu_admin.html.haml +40 -0
  171. data/app/views/elabs/layouts/_menu_member.html.haml +57 -0
  172. data/app/views/elabs/layouts/application.html.haml +24 -13
  173. data/app/views/elabs/layouts/application_admin.html.haml +33 -0
  174. data/app/views/elabs/layouts/application_member.html.haml +36 -0
  175. data/app/views/elabs/layouts/{lists → content_classifiers_lists}/_albums.html.haml +0 -0
  176. data/app/views/elabs/layouts/{lists → content_classifiers_lists}/_projects.html.haml +0 -0
  177. data/app/views/elabs/layouts/{lists → content_classifiers_lists}/_tags.html.haml +0 -0
  178. data/app/views/elabs/layouts/{_shortcode_infinite_loop.html.haml → shortcodes/_infinite_loop.html.haml} +1 -1
  179. data/app/views/elabs/layouts/{_shortcode_infinite_loop_inline.html.haml → shortcodes/_infinite_loop_inline.html.haml} +0 -0
  180. data/app/views/elabs/layouts/{_shortcode_missing_content.html.haml → shortcodes/_missing_content.html.haml} +1 -1
  181. data/app/views/elabs/layouts/{_shortcode_missing_content_inline.html.haml → shortcodes/_missing_content_inline.html.haml} +0 -0
  182. data/app/views/elabs/layouts/shortcodes/_open_to_see.html.haml +2 -0
  183. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/_github_repo_card.html.haml +1 -1
  184. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/_github_repo_inline.html.haml +0 -0
  185. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/_github_user_card.html.haml +0 -0
  186. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/_gitlab_group_card.html.haml +1 -1
  187. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/_gitlab_repo_card.html.haml +1 -1
  188. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/_gitlab_repo_inline.html.haml +0 -0
  189. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/_gitlab_user_card.html.haml +1 -1
  190. data/app/views/elabs/layouts/shortcodes/widgets/vue/_all_widgets.html.haml +5 -0
  191. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/vue/_github_repo_card_vue.html.haml +8 -8
  192. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/vue/_github_user_card_vue.html.haml +5 -5
  193. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/vue/_gitlab_group_card_vue.html.haml +5 -5
  194. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/vue/_gitlab_repo_card_vue.html.haml +8 -8
  195. data/app/views/elabs/layouts/{widgets → shortcodes/widgets}/vue/_gitlab_user_card_vue.html.haml +4 -4
  196. data/app/views/elabs/licenses/_filters.html.haml +3 -2
  197. data/app/views/elabs/licenses/index.html.haml +14 -12
  198. data/app/views/elabs/licenses/show.html.haml +40 -34
  199. data/app/views/elabs/member/albums/_form.html.haml +1 -43
  200. data/app/views/elabs/member/articles/_form.html.haml +1 -39
  201. data/app/views/elabs/member/layouts/_form_commons.html.haml +55 -0
  202. data/app/views/elabs/member/notes/_form.html.haml +1 -39
  203. data/app/views/elabs/member/preferences/edit.html.haml +1 -2
  204. data/app/views/elabs/member/projects/_form.html.haml +3 -38
  205. data/app/views/elabs/member/uploads/_form.html.haml +1 -42
  206. data/app/views/elabs/member/uploads/_upload.json.jbuilder +3 -3
  207. data/app/views/elabs/member/users/edit.html.haml +3 -4
  208. data/app/views/elabs/notes/_filters.html.haml +5 -3
  209. data/app/views/elabs/notes/index.html.haml +1 -1
  210. data/app/views/elabs/notes/show.html.haml +33 -25
  211. data/app/views/elabs/projects/_filters.html.haml +5 -3
  212. data/app/views/elabs/projects/index.html.haml +1 -1
  213. data/app/views/elabs/projects/show.html.haml +68 -62
  214. data/app/views/elabs/reports/_form.html.haml +2 -0
  215. data/app/views/elabs/tags/_filters.html.haml +3 -2
  216. data/app/views/elabs/tags/index.html.haml +11 -11
  217. data/app/views/elabs/tags/show.html.haml +31 -28
  218. data/app/views/elabs/uploads/_filters.html.haml +5 -3
  219. data/app/views/elabs/uploads/_preview.html.haml +5 -4
  220. data/app/views/elabs/uploads/_thumbnail.html.haml +9 -0
  221. data/app/views/elabs/uploads/_upload.json.jbuilder +3 -3
  222. data/app/views/elabs/uploads/index.html.haml +1 -1
  223. data/app/views/elabs/uploads/show.html.haml +45 -39
  224. data/app/views/elabs/users/_filters.html.haml +3 -2
  225. data/app/views/elabs/users/_user.html.haml +3 -3
  226. data/app/views/elabs/users/show.html.haml +48 -43
  227. data/config/routes.rb +13 -8
  228. data/db/migrate/20181025084232_add_archived_field_to_comments.rb +5 -0
  229. data/db/migrate/20181026071743_delete_comment_notifications.rb +5 -0
  230. data/db/migrate/20181030063505_create_announcements.rb +14 -0
  231. data/docs/CODEOWNERS +10 -0
  232. data/docs/migrating.md +16 -1
  233. data/docs/shortcodes_guide.md +51 -0
  234. data/lib/assets/javascripts/README-highlight.js.md +5 -5
  235. data/lib/assets/javascripts/highlight.js-9.13.1/highlight.pack.js +2 -0
  236. data/lib/assets/stylesheets/{highlight.js-9.12.0 → highlight.js-9.13.1}/styles/atelier-sulphurpool-light.css +0 -0
  237. data/lib/elabs.rb +8 -0
  238. data/lib/elabs/version.rb +1 -1
  239. data/lib/generators/elabs/{devise_views_generator.rb → devise_mailer_views_generator.rb} +2 -2
  240. data/lib/generators/elabs/images_generator.rb +24 -0
  241. data/lib/generators/elabs/required_assets_generator.rb +0 -2
  242. data/lib/generators/templates/elabs.rb +3 -0
  243. data/locale/app.pot +132 -19
  244. data/locale/en/app.edit.po +130 -17
  245. data/locale/en/app.po +130 -17
  246. data/locale/fr/app.edit.po +145 -28
  247. data/locale/fr/app.po +141 -27
  248. data/package.json +10 -12
  249. data/yarn.lock +885 -668
  250. metadata +136 -97
  251. data/app/assets/stylesheets/elabs/_icons.scss +0 -17
  252. data/app/assets/stylesheets/elabs/app/_acts.scss +0 -69
  253. data/app/assets/stylesheets/elabs/app/_alerts.scss +0 -3
  254. data/app/assets/stylesheets/elabs/app/_badges.scss +0 -11
  255. data/app/assets/stylesheets/elabs/app/_buttons.scss +0 -29
  256. data/app/assets/stylesheets/elabs/app/_content.scss +0 -25
  257. data/app/assets/stylesheets/elabs/app/_content_statuses.scss +0 -32
  258. data/app/assets/stylesheets/elabs/app/_content_uploads.scss +0 -39
  259. data/app/assets/stylesheets/elabs/app/_empty.scss +0 -19
  260. data/app/assets/stylesheets/elabs/app/_errors.scss +0 -9
  261. data/app/assets/stylesheets/elabs/app/_filter_links.scss +0 -27
  262. data/app/assets/stylesheets/elabs/app/_forms.scss +0 -74
  263. data/app/assets/stylesheets/elabs/app/_languages.scss +0 -6
  264. data/app/assets/stylesheets/elabs/app/_layout.scss +0 -206
  265. data/app/assets/stylesheets/elabs/app/_licenses.scss +0 -6
  266. data/app/assets/stylesheets/elabs/app/_link-to-top.scss +0 -8
  267. data/app/assets/stylesheets/elabs/app/_tabs.scss +0 -54
  268. data/app/assets/stylesheets/elabs/app/_tags.scss +0 -6
  269. data/app/assets/stylesheets/elabs/app/_toolbars.scss +0 -3
  270. data/app/assets/stylesheets/elabs/app/_users.scss +0 -21
  271. data/app/assets/stylesheets/elabs/app/admin-members/_forms.scss +0 -13
  272. data/app/assets/stylesheets/elabs/app/admin-members/_indexes.scss +0 -46
  273. data/app/assets/stylesheets/elabs/app/admin-members/_layout.scss +0 -17
  274. data/app/assets/stylesheets/elabs/app/areas/_devise.scss +0 -31
  275. data/app/assets/stylesheets/elabs/app/components/_cards.scss +0 -16
  276. data/app/assets/stylesheets/elabs/app/components/_container.scss +0 -4
  277. data/app/assets/stylesheets/elabs/app/mixins/_classifier-card.scss +0 -16
  278. data/app/assets/stylesheets/elabs/app/mixins/_content-card.scss +0 -72
  279. data/app/assets/stylesheets/elabs/app/mixins/_content-full.scss +0 -77
  280. data/app/assets/stylesheets/elabs/app/widgets/_git-cards.scss +0 -88
  281. data/app/assets/stylesheets/elabs/lib/fontawesome/_icons.scss +0 -1118
  282. data/app/assets/stylesheets/elabs/lib/knacss/_knacss-variables.scss +0 -239
  283. data/app/views/elabs/albums/_album.html.haml +0 -38
  284. data/app/views/elabs/articles/_article.html.haml +0 -30
  285. data/app/views/elabs/languages/_associations.html.haml +0 -61
  286. data/app/views/elabs/layouts/_shortcode_open_to_see.html.haml +0 -2
  287. data/app/views/elabs/layouts/admin_application.html.haml +0 -21
  288. data/app/views/elabs/layouts/member_application.html.haml +0 -24
  289. data/app/views/elabs/layouts/widgets/vue/_all_widgets.html.haml +0 -5
  290. data/app/views/elabs/licenses/_associations.html.haml +0 -61
  291. data/app/views/elabs/notes/_note.html.haml +0 -31
  292. data/app/views/elabs/projects/_associations.html.haml +0 -54
  293. data/app/views/elabs/projects/_project.html.haml +0 -29
  294. data/app/views/elabs/tags/_associations.html.haml +0 -61
  295. data/app/views/elabs/uploads/_upload.html.haml +0 -41
  296. data/app/views/elabs/users/_associations.html.haml +0 -61
  297. data/db/seeds.rb +0 -10
  298. data/db/seeds_development.rb +0 -21
  299. data/db/seeds_production.rb +0 -0
  300. data/lib/assets/javascripts/codemirror-5.39.2/addon/mode/overlay.js +0 -90
  301. data/lib/assets/javascripts/codemirror-5.39.2/lib/codemirror.js +0 -9684
  302. data/lib/assets/javascripts/codemirror-5.39.2/mode/clike/clike.js +0 -834
  303. data/lib/assets/javascripts/codemirror-5.39.2/mode/css/css.js +0 -832
  304. data/lib/assets/javascripts/codemirror-5.39.2/mode/gfm/gfm.js +0 -129
  305. data/lib/assets/javascripts/codemirror-5.39.2/mode/htmlmixed/htmlmixed.js +0 -152
  306. data/lib/assets/javascripts/codemirror-5.39.2/mode/javascript/javascript.js +0 -896
  307. data/lib/assets/javascripts/codemirror-5.39.2/mode/markdown/markdown.js +0 -882
  308. data/lib/assets/javascripts/codemirror-5.39.2/mode/meta.js +0 -217
  309. data/lib/assets/javascripts/codemirror-5.39.2/mode/xml/xml.js +0 -402
  310. data/lib/assets/javascripts/highlight.js-9.12.0/highlight.pack.js +0 -2
  311. data/lib/assets/stylesheets/codemirror-5.39.2/lib/codemirror.css +0 -346
  312. data/lib/assets/stylesheets/codemirror-5.39.2/theme/base16-dark.css +0 -38
  313. data/lib/assets/stylesheets/codemirror-5.39.2/theme/base16-light.css +0 -38
@@ -21,6 +21,6 @@
21
21
  autocomplete: 'email',
22
22
  value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email)
23
23
  .actions
24
- = f.submit _('Resend confirmation instructions'), class: 'btn btn--brand btn--block'
24
+ = f.submit _('Resend confirmation instructions'), class: 'btn btn--primary btn--block'
25
25
 
26
26
  = render 'elabs/auth/shared/links'
@@ -26,6 +26,6 @@
26
26
  = f.label :password_confirmation, _('Confirm new password')
27
27
  .field-input= f.password_field :password_confirmation, autocomplete: 'off'
28
28
  .actions
29
- = f.submit _('Change my password'), class: 'btn btn--brand btn--block'
29
+ = f.submit _('Change my password'), class: 'btn btn--primary btn--block'
30
30
 
31
31
  = render 'elabs/auth/shared/links'
@@ -18,6 +18,6 @@
18
18
  = f.label :email
19
19
  .field-input= f.email_field :email, autofocus: true, autocomplete: 'email'
20
20
  .actions
21
- = f.submit _('Send me reset password instructions'), class: 'btn btn--brand btn--block'
21
+ = f.submit _('Send me reset password instructions'), class: 'btn btn--primary btn--block'
22
22
 
23
23
  = render 'elabs/auth/shared/links'
@@ -14,7 +14,12 @@
14
14
  %li= message
15
15
  .field
16
16
  = f.label :username
17
- .field-input= f.text_field :username, autofocus: true, autocomplete: 'email'
17
+ .field-input
18
+ = f.text_field :username, autofocus: true, autocomplete: 'username'
19
+ .field-hint
20
+ -# haml-lint:disable LineLength
21
+ = _('Username can be upper/lower case ascii letters, digits, hyphens and underscores. Make it at least 4 characters. As in "super_man", "super-woman", "uberCat01"')
22
+ -# haml-lint:enable LineLength
18
23
  .field
19
24
  = f.label :email
20
25
  .field-input= f.email_field :email, autocomplete: 'email'
@@ -29,6 +34,6 @@
29
34
  .field-input= f.password_field :password_confirmation, autocomplete: 'off'
30
35
 
31
36
  .actions
32
- = f.submit _('Sign up'), class: 'btn btn--brand btn--block'
37
+ = f.submit _('Sign up'), class: 'btn btn--primary btn--block'
33
38
 
34
39
  = render 'elabs/auth/shared/links'
@@ -12,4 +12,4 @@
12
12
  = f.label :remember_me
13
13
 
14
14
  .actions
15
- = f.submit _('Log in'), class: 'btn btn--block btn--brand'
15
+ = f.submit _('Log in'), class: 'btn btn--block btn--primary'
@@ -18,6 +18,6 @@
18
18
  = f.label :email
19
19
  .field-input= f.email_field :email, autofocus: true, autocomplete: 'email'
20
20
  .actions
21
- = f.submit _('Resend unlock instructions'), class: 'btn btn--brand btn--block'
21
+ = f.submit _('Resend unlock instructions'), class: 'btn btn--primary btn--block'
22
22
 
23
23
  = render 'elabs/auth/shared/links'
@@ -1,22 +1,31 @@
1
- = render 'elabs/comments/form', url: url, new_comment: new_comment
1
+ .comments-area
2
+ = render 'elabs/comments/form', url: url, new_comment: new_comment, entity: entity
2
3
 
3
- %section.comments-list
4
- - if user_is_author_of entity
5
- %h2= _('Comments')
6
- - if entity.comments.count.zero?
7
- .empty
8
- = _('No comment has been left')
9
- - entity.comments.each do |comment|
10
- .comment.comment-card
11
- %header
12
- .headers
13
- %ul.informations
14
- %li
15
- = icon('user', ['fw'])
16
- = comment.name || link_to(comment.user.display_name, comment.user)
17
- %li
18
- = icon('calendar', ['fw'])
19
- %strong= _('Posted on:')
20
- = medium_datetime comment.created_at
21
- %article= render_entity_content comment, :comment, false
4
+ %section.comments-list
5
+ - if user_is_author_of entity
6
+ %h2= _('Comments')
7
+ - if entity.comments.count.zero?
8
+ .empty
9
+ = _('No comment has been left')
10
+ - entity.comments.each do |comment|
11
+ .comment.comment-card{ class: comment.archived ? 'comment-card--archived' : '' }
12
+ %header
13
+ .headers
14
+ %ul.information
15
+ %li
16
+ .btn-group
17
+ = member_destroy_link 'comment', comment
18
+ - if comment.archived
19
+ %a.btn.btn--small{ disabled: true }= icon 'archive', ['fw']
20
+ - else
21
+ = link_to icon('archive', ['fw']),
22
+ member_comment_archive_path(comment), method: :put, class: 'btn btn--small btn--primary'
23
+ %li
24
+ = icon('user', ['fw'])
25
+ = comment.name || link_to(comment.user.display_name, comment.user)
26
+ %li
27
+ = icon('calendar', ['fw'])
28
+ %strong= _('Posted on:')
29
+ = medium_datetime comment.created_at
30
+ %article= render_entity_content comment, :comment, false
22
31
 
@@ -1,43 +1,47 @@
1
1
  -# You must provide an url for the form
2
2
 
3
- %h2= _('Leave a comment')
3
+ - unless user_is_author_of(entity)
4
+ %h2= _('Leave a comment')
4
5
 
5
- %p= _('You want to react to this content or ask something to the author? Just leave a comment here!')
6
+ %p= _('You want to react to this content or ask something to the author? Just leave a comment here!')
6
7
 
7
- .alert.alert--info
8
- %p= _("Note that the comments are not publicly visible, so don't worry if you don't see yours.")
9
- %p= _("All the information you give will only be visible to the author. We don't share anything with anyone.")
8
+ .alert.alert--info
9
+ %p= _("Note that the comments are not publicly visible, so don't worry if you don't see yours.")
10
+ %p= _("All the information you give will only be visible to the author. We don't share anything with anyone.")
10
11
 
11
- = form_for new_comment, url: url do |f|
12
- - if new_comment.errors.any?
13
- .error
14
- %h2= format(n_('An error prevented your comment from being saved:',
15
- '%<nb>i errors prevented your comment from being saved:',
16
- new_comment.errors.count), nb: new_comment.errors.count)
17
- %ul
18
- - new_comment.errors.full_messages.each do |message|
19
- %li= message
12
+ = form_for new_comment, url: url do |f|
13
+ - if new_comment.errors.any?
14
+ .error
15
+ %h2= format(n_('An error prevented your comment from being saved:',
16
+ '%<nb>i errors prevented your comment from being saved:',
17
+ new_comment.errors.count), nb: new_comment.errors.count)
18
+ %ul
19
+ - new_comment.errors.full_messages.each do |message|
20
+ %li= message
20
21
 
21
- - if user_signed_in?
22
- .alert.alert--info
23
- -# haml-lint:disable LineLength
24
- = format(_('This comment will be posted as "%<name>s". By submitting this comment, you agree to be recontacted by the author.'),
25
- name: current_user.username)
26
- -# haml-lint:enable LineLength
27
- - else
22
+ - if user_signed_in?
23
+ .alert.alert--info
24
+ -# haml-lint:disable LineLength
25
+ = format(_('This comment will be posted as "%<name>s". By submitting this comment, you agree to be recontacted by the author.'),
26
+ name: current_user.username)
27
+ -# haml-lint:enable LineLength
28
+ - else
29
+ .field
30
+ = f.label :name
31
+ .field-input= f.text_field :name, required: true
32
+ .field
33
+ = f.label :email
34
+ .field-input= f.text_field :email, required: true, type: :email
35
+ .field
36
+ .field-input
37
+ = f.check_box :allow_contact
38
+ = f.label :allow_contact, _('I agree to be recontacted')
28
39
  .field
29
- = f.label :name
30
- .field-input= f.text_field :name, required: true
31
- .field
32
- = f.label :email
33
- .field-input= f.text_field :email, required: true
34
- .field
35
- .field-input
36
- = f.check_box :allow_contact
37
- = f.label :allow_contact, _('I agree to be recontacted')
38
- .field
39
- = f.label :comment
40
- .field-input= f.text_area :comment, required: true
41
- .actions
42
- .actions-buttons
43
- = f.submit 'Save', class: 'btn btn--save'
40
+ = f.label :comment
41
+ .field-input= f.text_area :comment, required: true, class: 'textarea--large'
42
+
43
+ = render 'elabs/layouts/form_honeypot', field: 'body'
44
+
45
+ .actions
46
+ .actions-buttons
47
+ = f.submit 'Save', class: 'btn btn--save'
@@ -1,6 +1,4 @@
1
- .filter-links
2
- .filter-links__group
1
+ .page__header__actions__filters
2
+ .page__header__actions__filters__group
3
+ .page__header__actions__filters__group__title= _('Sort by…')
3
4
  = order_link _('Name'), 'name'
4
-
5
- .filter-links__group
6
- = with_content_filter_links
@@ -6,28 +6,27 @@
6
6
  %header
7
7
  .icon= icon 'language', %w[3x fw]
8
8
  .headers
9
- %h3{ lang: language.iso639_1 }= link_to language.name, language, class: 'title'
9
+ %h3.title{ lang: language.iso639_1 }= link_to language.name, language
10
10
 
11
- %ul.informations
11
+ %ul.information
12
12
  %li
13
- = icon('info', ['fw'])
14
13
  %strong= _('ISO 639-1 code:')
15
14
  = language.iso639_1
16
15
  .content
17
16
  = link_to language_projects_path(language), class: 'btn btn--block' do
18
- = icon 'cog'
19
- = format(n_('%<nb>i project', '%<nb>i projects', language.projects_count), nb: language.projects_count)
17
+ = icon 'cog', %w[fw icon]
18
+ .text= format(n_('%<nb>i project', '%<nb>i projects', language.projects_count), nb: language.projects_count)
20
19
  = link_to language_articles_path(language), class: 'btn btn--block' do
21
- = icon 'font'
22
- = format(n_('%<nb>i article', '%<nb>i articles', language.articles_count), nb: language.articles_count)
20
+ = icon 'font', %w[fw icon]
21
+ .text= format(n_('%<nb>i article', '%<nb>i articles', language.articles_count), nb: language.articles_count)
23
22
  = link_to language_notes_path(language), class: 'btn btn--block' do
24
- = icon 'sticky-note'
25
- = format(n_('%<nb>i note', '%<nb>i notes', language.notes_count), nb: language.notes_count)
23
+ = icon 'sticky-note', %w[fw icon]
24
+ .text= format(n_('%<nb>i note', '%<nb>i notes', language.notes_count), nb: language.notes_count)
26
25
  = link_to language_uploads_path(language), class: 'btn btn--block' do
27
- = icon 'image'
28
- = format(n_('%<nb>i upload', '%<nb>i uploads', language.uploads_count), nb: language.uploads_count)
26
+ = icon 'image', %w[fw icon]
27
+ .text= format(n_('%<nb>i upload', '%<nb>i uploads', language.uploads_count), nb: language.uploads_count)
29
28
  = link_to language_albums_path(language), class: 'btn btn--block' do
30
- = icon 'book'
31
- = format(n_('%<nb>i album', '%<nb>i albums', language.albums_count), nb: language.albums_count)
29
+ = icon 'book', %w[fw icon]
30
+ .text= format(n_('%<nb>i album', '%<nb>i albums', language.albums_count), nb: language.albums_count)
32
31
 
33
32
  = paginate @languages
@@ -1,38 +1,43 @@
1
1
  - @page_title = @language.name
2
2
 
3
3
  .language.language--full
4
- %aside
4
+ %aside.always--inline
5
5
  %ul
6
- %li
7
- = icon('info', ['fw'])
8
- %strong= _('ISO 639-1 code')
9
- = @language.iso639_1
10
6
  %li.separator
11
- = icon('amount', ['fw'])
12
- %b= _('Albums:')
13
- = @language.albums_count
14
- %li
15
- = icon('amount', ['fw'])
16
- %b= _('Articles:')
17
- = @language.articles_count
18
- %li
19
- = icon('amount', ['fw'])
20
- %b= _('Notes:')
21
- = @language.notes_count
22
- %li
23
- = icon('amount', ['fw'])
24
- %b= _('Projects:')
25
- = @language.projects_count
26
- %li
27
- = icon('amount', ['fw'])
28
- %b= _('Uploads:')
29
- = @language.uploads_count
7
+ %ul
8
+ %li
9
+ = icon('info', ['fw'])
10
+ %strong= _('ISO 639-1 code')
11
+ = @language.iso639_1
12
+ %li.separator
13
+ %ul
14
+ %li
15
+ = icon('amount', ['fw'])
16
+ %b= _('Albums:')
17
+ = @language.albums_count
18
+ %li
19
+ = icon('amount', ['fw'])
20
+ %b= _('Articles:')
21
+ = @language.articles_count
22
+ %li
23
+ = icon('amount', ['fw'])
24
+ %b= _('Notes:')
25
+ = @language.notes_count
26
+ %li
27
+ = icon('amount', ['fw'])
28
+ %b= _('Projects:')
29
+ = @language.projects_count
30
+ %li
31
+ = icon('amount', ['fw'])
32
+ %b= _('Uploads:')
33
+ = @language.uploads_count
30
34
 
31
35
  .content
32
- = render 'associations',
33
- language: @language,
34
- language_albums: @language_albums,
35
- language_articles: @language_articles,
36
- language_notes: @language_notes,
37
- language_projects: @language_projects,
38
- language_uploads: @language_uploads
36
+ = render 'elabs/layouts/content_associations',
37
+ is_section: true,
38
+ entity: @language,
39
+ albums: @language_albums,
40
+ articles: @language_articles,
41
+ notes: @language_notes,
42
+ projects: @language_projects,
43
+ uploads: @language_uploads
@@ -0,0 +1,9 @@
1
+ - annoucements = Elabs::Announcement.for_user(current_user)
2
+
3
+ - if annoucements.count.positive?
4
+ .announcements
5
+ - annoucements.each do |a|
6
+ .announcement{ class: "announcement--#{a.level}", id: "announce-#{a.id}" }
7
+ .close-button{ onclick: "hideAnnounce(#{a.id})" }
8
+ = icon 'times', ['fw']
9
+ = markdown a.content
@@ -0,0 +1,89 @@
1
+ - is_section = false if is_section.nil?
2
+
3
+ %aside.tabs{ class: is_section ? 'is-section' : '' }
4
+ %ul.tabs__tabs-list
5
+ - if entity.respond_to?(:albums)
6
+ %li.tabs__tabs-list__tab#tab-albums
7
+ %a{ href: '#tab-content-albums', onclick: 'selectTab(event, "albums")' }
8
+ = _('Albums')
9
+ %span.badge= entity.albums_count
10
+ - if entity.respond_to?(:articles)
11
+ %li.tabs__tabs-list__tab#tab-articles
12
+ %a{ href: '#tab-content-articles', onclick: 'selectTab(event, "articles")' }
13
+ = _('Articles')
14
+ %span.badge= entity.articles_count
15
+ - if entity.respond_to?(:notes)
16
+ %li.tabs__tabs-list__tab#tab-notes
17
+ %a{ href: '#tab-content-notes', onclick: 'selectTab(event, "notes")' }
18
+ = _('Notes')
19
+ %span.badge= entity.notes_count
20
+ - if entity.respond_to?(:projects)
21
+ %li.tabs__tabs-list__tab#tab-projects
22
+ %a{ href: '#tab-content-projects', onclick: 'selectTab(event, "projects")' }
23
+ = _('Projects')
24
+ %span.badge= entity.projects_count
25
+ - if entity.respond_to?(:uploads)
26
+ %li.tabs__tabs-list__tab#tab-uploads
27
+ %a{ href: '#tab-content-uploads', onclick: 'selectTab(event, "uploads")' }
28
+ = _('Uploads')
29
+ %span.badge= entity.uploads_count
30
+
31
+ - if entity.respond_to?(:albums)
32
+ %section.tabs__tab-content.albums-list#tab-content-albums
33
+ .tabs__tab-content__title
34
+ %h2= format _('Last %<amount>i albums:'), amount: Elabs.max_related_items
35
+ .actions= related_content_show_all_link entity.albums_count, entity_nested_resource_url(entity, :albums)
36
+
37
+ - entity.albums.each do |a|
38
+ = render 'elabs/layouts/content_card', entity: a
39
+ - if entity.albums_count.zero?
40
+ = render 'elabs/layouts/empty'
41
+
42
+ - if entity.respond_to?(:articles)
43
+ %section.tabs__tab-content.articles-list#tab-content-articles
44
+ .tabs__tab-content__title
45
+ %h2= format _('Last %<amount>i articles:'), amount: Elabs.max_related_items
46
+ .actions= related_content_show_all_link entity.articles_count, entity_nested_resource_url(entity, :articles)
47
+
48
+ - articles.each do |a|
49
+ = render 'elabs/layouts/content_card', entity: a
50
+ - if entity.articles_count.zero?
51
+ = render 'elabs/layouts/empty'
52
+
53
+
54
+ - if entity.respond_to?(:notes)
55
+ %section.tabs__tab-content.notes-list#tab-content-notes
56
+ .tabs__tab-content__title
57
+ %h2= format _('Last %<amount>i notes:'), amount: Elabs.max_related_items
58
+ .actions= related_content_show_all_link entity.notes_count, entity_nested_resource_url(entity, :notes)
59
+
60
+ - notes.each do |n|
61
+ = render 'elabs/layouts/content_card', entity: n
62
+ - if entity.notes_count.zero?
63
+ = render 'elabs/layouts/empty'
64
+
65
+ - if entity.respond_to?(:projects)
66
+ %section.tabs__tab-content.projects-list#tab-content-projects
67
+ .tabs__tab-content__title
68
+ %h2= format _('Last %<amount>i projects:'), amount: Elabs.max_related_items
69
+ .actions= related_content_show_all_link entity.projects_count, entity_nested_resource_url(entity, :projects)
70
+
71
+ - projects.each do |p|
72
+ = render 'elabs/layouts/content_card', entity: p
73
+ - if entity.projects_count.zero?
74
+ = render 'elabs/layouts/empty'
75
+
76
+ - if entity.respond_to?(:uploads)
77
+ %section.tabs__tab-content.uploads-list#tab-content-uploads
78
+ .tabs__tab-content__title
79
+ %h2= format _('Last %<amount>i uploads:'), amount: Elabs.max_related_items
80
+ .actions= related_content_show_all_link entity.uploads_count, entity_nested_resource_url(entity, :uploads)
81
+
82
+ - uploads.each do |u|
83
+ = render 'elabs/layouts/content_card', entity: u
84
+ - if entity.uploads_count.zero?
85
+ = render 'elabs/layouts/empty'
86
+
87
+ :javascript
88
+ initializeTabs ()
89
+ selectTab('#{first_type_with_content(entity)}')
@@ -0,0 +1,41 @@
1
+ - entity_type = entity.class.table_name.singularize
2
+
3
+ - if !show_item? entity
4
+ = render 'elabs/layouts/hidden_entry', entity: entity
5
+ - else
6
+ %div{ class: "#{entity_type} #{entity_type}-card" }
7
+ %header
8
+ .header
9
+ %h3.title{ lang: entity.language.iso639_1 }
10
+ = content_type_icon_from_entity entity, %w[fw]
11
+ = link_to entity.title_to_display, entity
12
+ .subtitle= format(_('by %<name>s'), name: link_to(entity.user.display_name, entity.user)).html_safe
13
+
14
+ %ul.information
15
+ %li
16
+ = icon('language', ['fw'])
17
+ %strong= _('Language:')
18
+ = link_to entity.language.name, entity.language
19
+ %li
20
+ = icon('license', ['fw'])
21
+ %strong= _('License:')
22
+ = link_to entity.license do
23
+ = license_icon entity.license
24
+ = entity.license.name
25
+ %li
26
+ = icon('info', ['fw'])
27
+ %strong= _('SFW:')
28
+ = boolean_icon_tag entity.sfw, 'is-sfw', 'is-nsfw'
29
+ - if entity.respond_to? :visible_projects
30
+ %li= render 'elabs/layouts/content_classifiers_lists/projects', projects: entity.visible_projects
31
+ - if entity.respond_to? :tags
32
+ %li= render 'elabs/layouts/content_classifiers_lists/tags', tags: entity.tags
33
+ - if entity.respond_to? :visible_albums
34
+ %li= render 'elabs/layouts/content_classifiers_lists/albums', albums: entity.visible_albums
35
+
36
+ - if entity.short_text_to_display.present?
37
+ %article{ lang: entity.language.iso639_1 }= render_entity_content entity, :short_text_to_display, false
38
+ - if entity.class.name == 'Elabs::Album'
39
+ = render 'elabs/albums/card_content', album: entity
40
+ - if entity.class.name == 'Elabs::Upload'
41
+ = render 'elabs/uploads/thumbnail', upload: entity