elabs 4.0.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,4 @@
1
+ - unless flash.empty?
2
+ .page__messages
3
+ - flash.each do |name, message|
4
+ .alert{ class: "alert--#{name}" }= message
@@ -1,13 +1,21 @@
1
- %a.link-to-top{ href: '#top' }
2
- %i.fa.fa-fw.fa-2x.fa-arrow-up
1
+ - can_report = false if can_report.nil?
2
+
3
+ %a.fixed-link.to-top{ href: '#top' }
4
+ = icon 'arrow-up', %w[fw 2x]
5
+
6
+ - if can_report
7
+ %a.fixed-link.to-report{ href: '#', onclick: 'openModal(event, "report-modal")' }
8
+ = icon 'flag', %w[fw 2x]
3
9
 
4
10
  %footer.page__footer
5
11
  .page__footer__content
6
- © 2018 - Experiments Labs -
7
- = icon_text('rss', _('RSS:'), ['fw'])
8
- = link_to _('Activity'), activities_url(format: :rss, show_nsfw: show_nsfw?)
9
- = link_to _('Albums'), albums_url(format: :rss, show_nsfw: show_nsfw?)
10
- = link_to _('Articles'), articles_url(format: :rss, show_nsfw: show_nsfw?)
11
- = link_to _('Notes'), notes_url(format: :rss, show_nsfw: show_nsfw?)
12
- = link_to _('Projects'), projects_url(format: :rss, show_nsfw: show_nsfw?)
13
- = link_to _('Uploads'), uploads_url(format: :rss, show_nsfw: show_nsfw?)
12
+ %header
13
+ © 2018 - #{Elabs.site_name}
14
+ .rss-links
15
+ = icon_text('rss', _('RSS:'), ['fw'])
16
+ = link_to _('Activity'), activities_url(format: :rss, show_nsfw: show_nsfw?)
17
+ = link_to _('Albums'), albums_url(format: :rss, show_nsfw: show_nsfw?)
18
+ = link_to _('Articles'), articles_url(format: :rss, show_nsfw: show_nsfw?)
19
+ = link_to _('Notes'), notes_url(format: :rss, show_nsfw: show_nsfw?)
20
+ = link_to _('Projects'), projects_url(format: :rss, show_nsfw: show_nsfw?)
21
+ = link_to _('Uploads'), uploads_url(format: :rss, show_nsfw: show_nsfw?)
@@ -0,0 +1,12 @@
1
+ - if Elabs.trap_dumb_bots?
2
+ .field{ id: "form-#{field}" }
3
+ %label{ id: "form-#{field}-label", for: 'form-body-field' }= _('Body')
4
+ .field-input
5
+ %textarea{ id: "form-#{field}-field", name: 'body' }
6
+ .field-hint= _("Don't fill this field if you want this form to be saved.")
7
+
8
+ :javascript
9
+ documentReady(function(){
10
+ document.getElementById('form-#{field}').style.display = 'none';
11
+ document.getElementById('form-#{field}-label').innerText= "#{_('Robot area')}"
12
+ })
@@ -3,4 +3,4 @@
3
3
  = icon_text 'lock', _('This content needs review and have been retired for now.'), ['fw']
4
4
  - else
5
5
  .nsfw.nsfw--large
6
- = icon_text 'exclamation', _('This content might not be appropriate for every situation.'), ['fw']
6
+ = icon_text 'nsfw', _('This content might not be appropriate for every situation.'), ['fw']
@@ -1,6 +1,8 @@
1
1
  - if entity.locked?
2
2
  .locked.locked--full
3
- = icon_text 'lock', _('This content needs review and have been retired for now.'), ['fw']
3
+ .locked__title= icon_text 'lock', _('This content needs review and have been retired for now.'), ['fw']
4
+ .locked__subtitle= _('Come back in a few days to give time to the author to review it.')
4
5
  - else
5
6
  .nsfw.nsfw--full
6
- = icon_text 'exclamation', _('This content might not be appropriate for every situation.'), ['fw']
7
+ .nsfw__title= icon_text 'nsfw', _('This content might not be appropriate for every situation.'), ['fw']
8
+ .nsfw__subtitle= _('If you want to display NSFW content, click on "Show NSFW" in the main menu.')
@@ -3,4 +3,4 @@
3
3
  = icon_text 'lock', _('Sorry, content is locked for review'), ['fw']
4
4
  - else
5
5
  %span.nsfw.nsfw--inline
6
- = icon_text 'exclamation', _('Sorry, NSFW content'), ['fw']
6
+ = icon_text 'nsfw', _('Sorry, NSFW content'), ['fw']
@@ -1,2 +1,2 @@
1
- = link_to 'English', { locale: 'en' }, lang: 'en'
2
- = link_to 'Français', { locale: 'fr' }, lang: 'fr'
1
+ = link_to 'English', { locale: 'en' }, lang: 'en', class: 'menu_entry'
2
+ = link_to 'Français', { locale: 'fr' }, lang: 'fr', class: 'menu_entry'
@@ -1,77 +1,60 @@
1
- %header.page__menu.page__menu--main
2
- = link_to Elabs.site_name, main_app.root_path, class: 'page__menu__title'
1
+ %header.page__menu
2
+ .page__menu__title
3
+ = link_to Elabs.site_name, main_app.root_path, class: 'brand_link menu_entry'
4
+ %a.menu_entry.menu_button.menu_button--for-tiny{ href: '#', onclick: 'toggleSecondaryMenu()' }= icon 'bars', ['fw']
3
5
 
4
6
  .page__menu__group
5
- = icon('users', ['page__menu__group__icon'])
6
- = active_link_to _('Authors'), :users
7
-
8
- .page__menu__group
9
- = icon('file', ['page__menu__group__icon'])
10
- = active_link_to _('Projects'), :projects
11
- = active_link_to _('Articles'), :articles
12
- = active_link_to _('Notes'), :notes
13
- = active_link_to _('Albums'), :albums
14
- = active_link_to _('Uploads'), :uploads
15
-
16
- .page__menu__group
17
- = icon('tags', ['page__menu__group__icon'])
18
- = active_link_to _('Languages'), :languages
19
- = active_link_to _('Licenses'), :licenses
20
- = active_link_to _('Tags'), :tags
21
-
22
- .page__menu__group
23
- = icon('exclamation', ['page__menu__group__icon'])
24
- = link_to (show_nsfw? ? _('Hide NSFW') : _('Show NSFW')), params: { show_nsfw: !show_nsfw? }
25
-
26
- .page__menu__group
27
- = icon('language', ['page__menu__group__icon'])
28
- = render 'elabs/layouts/language_menu'
29
-
30
- - unless user_signed_in?
31
- .page__menu__group
32
- = active_link_to _('Login'), new_user_session_path
33
-
34
- - if user_signed_in?
35
- %header.page__menu.page__menu--member
36
- %span.page__menu__title= format(_('%<s>s:'), s: current_user.display_name)
37
-
38
- .page__menu__group
39
- = active_link_to _('Projects'), :member_projects
40
- = active_link_to _('Articles'), :member_articles
41
- = active_link_to _('Notes'), :member_notes
42
- = active_link_to _('Albums'), :member_albums
43
- = active_link_to _('Uploads'), :member_uploads
44
-
45
- .page__menu__group
46
- = active_link_to _('Infos'), :member_edit_infos
47
- = active_link_to _('Preferences'), :member_edit_preferences
48
- = active_link_to _('Account'), edit_user_registration_path
49
- = active_link_to member_notifications_path do
50
- = _('Notifications')
51
- - if notification_count.positive?
52
- %span.badge.badge--notification= notification_count
53
- = active_link_to _('Log out'), destroy_user_session_path, method: :delete
54
-
55
- - if current_user.admin?
56
- %header.page__menu.page__menu--admin
57
- %span.page__menu__title= _('Administration:')
58
-
59
- .page__menu__group
60
- = active_link_to _('Projects'), :admin_projects
61
- = active_link_to _('Articles'), :admin_articles
62
- = active_link_to _('Notes'), :admin_notes
63
- = active_link_to _('Albums'), :admin_albums
64
- = active_link_to _('Uploads'), :admin_uploads
65
- .page__menu__group
66
- = active_link_to _('Tags'), :admin_tags
67
- = active_link_to _('Languages'), :admin_languages
68
- = active_link_to _('Licenses'), :admin_licenses
69
- .page__menu__group
70
- = active_link_to _('Users'), :admin_users
71
- .page__menu__group
72
- = active_link_to _('Reports'), :admin_reports
73
-
74
- - unless flash.empty?
75
- .page__messages
76
- - flash.each do |name, message|
77
- .alert{ class: "alert--#{name}" }= message
7
+ = active_link_to :projects, class: 'menu_entry' do
8
+ = icon 'cogs', %w[fw icon]
9
+ = _('Projects')
10
+ = active_link_to :articles, class: 'menu_entry' do
11
+ = icon 'font', %w[fw icon]
12
+ = _('Articles')
13
+ = active_link_to :notes, class: 'menu_entry' do
14
+ = icon 'sticky-note', %w[fw icon]
15
+ = _('Notes')
16
+ = active_link_to :albums, class: 'menu_entry' do
17
+ = icon 'book', %w[fw icon]
18
+ = _('Albums')
19
+ = active_link_to :uploads, class: 'menu_entry' do
20
+ = icon 'file', %w[fw icon]
21
+ = _('Uploads')
22
+
23
+ .menu_entry.dropdown
24
+ %a{ href: '#' }
25
+ = icon 'ellipsis-h', ['fw']
26
+ .dropdown__menu.dropdown__menu--right
27
+ = active_link_to :users, class: 'menu_entry' do
28
+ = icon 'users', %w[fw icon]
29
+ = _('Authors')
30
+ = active_link_to :tags, class: 'menu_entry' do
31
+ = icon 'tags', %w[fw icon]
32
+ = _('Tags')
33
+ = active_link_to :licenses, class: 'menu_entry' do
34
+ = icon 'license', %w[fw icon]
35
+ = _('Licenses')
36
+ = active_link_to :languages, class: 'menu_entry' do
37
+ = icon 'language', %w[fw icon]
38
+ = _('Languages')
39
+
40
+ %a.menu_entry.menu_button.menu_button--for-small{ href: '#', onclick: 'toggleSecondaryMenu()' }= icon 'bars', ['fw']
41
+
42
+ .page__menu__group.page__menu__group--secondary#secondary-menu
43
+ %a.close_menu_button{ onclick: 'toggleSecondaryMenu()' }= icon 'times', %w[fw 2x]
44
+ %a.menu_entry{ href: url_for(params: { show_nsfw: !show_nsfw? }) }
45
+ = icon show_nsfw? ? 'eye-slash' : 'eye', %w[fw icon]
46
+ = show_nsfw? ? _('Hide NSFW') : _('Show NSFW')
47
+ .menu_entry.dropdown
48
+ %a{ href: '#' }
49
+ = icon 'language', ['fw']
50
+ = _('Language')
51
+ .dropdown__menu
52
+ = render 'elabs/layouts/language_menu'
53
+ - unless user_signed_in?
54
+ = active_link_to new_user_session_path, class: 'menu_entry' do
55
+ = icon 'sign-in-alt', %w[fw icon]
56
+ = _('Login')
57
+ - if user_signed_in?
58
+ = render 'elabs/layouts/menu_member'
59
+ - if current_user.admin?
60
+ = render 'elabs/layouts/menu_admin'
@@ -0,0 +1,40 @@
1
+ .menu_entry.dropdown
2
+ %a{ href: '#' }
3
+ = icon 'wrench', ['fw']
4
+ %span.menu_entry_description= _('Administration')
5
+ .dropdown__menu.dropdown__menu--right
6
+ = active_link_to :admin_projects, class: 'menu_entry' do
7
+ = icon 'cogs', %w[fw icon]
8
+ = _('Projects')
9
+ = active_link_to :admin_articles, class: 'menu_entry' do
10
+ = icon 'font', %w[fw icon]
11
+ = _('Articles')
12
+ = active_link_to :admin_notes, class: 'menu_entry' do
13
+ = icon 'sticky-note', %w[fw icon]
14
+ = _('Notes')
15
+ = active_link_to :admin_albums, class: 'menu_entry' do
16
+ = icon 'book', %w[fw icon]
17
+ = _('Albums')
18
+ = active_link_to :admin_uploads, class: 'menu_entry' do
19
+ = icon 'file', %w[fw icon]
20
+ = _('Uploads')
21
+
22
+ = active_link_to :admin_tags, class: 'menu_entry is-separator' do
23
+ = icon 'tags', %w[fw icon]
24
+ = _('Tags')
25
+ = active_link_to :admin_languages, class: 'menu_entry' do
26
+ = icon 'language', %w[fw icon]
27
+ = _('Languages')
28
+ = active_link_to :admin_licenses, class: 'menu_entry' do
29
+ = icon 'license', %w[fw icon]
30
+ = _('Licenses')
31
+
32
+ = active_link_to :admin_users, class: 'menu_entry is-separator' do
33
+ = icon 'users', %w[fw icon]
34
+ = _('Users')
35
+ = active_link_to :admin_reports, class: 'menu_entry' do
36
+ = icon 'flag', %w[fw icon]
37
+ = _('Reports')
38
+ = active_link_to :admin_announcements, class: 'menu_entry' do
39
+ = icon 'announcement', %w[fw icon]
40
+ = _('Announcements')
@@ -0,0 +1,57 @@
1
+ = active_link_to :member_notifications, class: 'menu_entry' do
2
+ = icon 'bell', ['fw']
3
+ - if notification_count.positive?
4
+ %span.badge.badge--notification= notification_count
5
+ %span.menu_entry_description= _('Notifications')
6
+ .menu_entry.dropdown
7
+ %a{ href: '#' }
8
+ = icon 'pen', ['fw']
9
+ %span.menu_entry_description= _('Your content')
10
+ .dropdown__menu.dropdown__menu--right
11
+ .has-action
12
+ = active_link_to :member_projects, class: 'menu_entry' do
13
+ = icon 'cogs', %w[fw icon]
14
+ = _('Projects')
15
+ = link_to :new_member_project, class: 'action' do
16
+ = icon 'plus', ['fw']
17
+ .has-action
18
+ = active_link_to :member_articles, class: 'menu_entry' do
19
+ = icon 'font', %w[fw icon]
20
+ = _('Articles')
21
+ = link_to :new_member_article, class: 'action' do
22
+ = icon 'plus', ['fw']
23
+ .has-action
24
+ = active_link_to :member_notes, class: 'menu_entry' do
25
+ = icon 'sticky-note', %w[fw icon]
26
+ = _('Notes')
27
+ = link_to :new_member_note, class: 'action' do
28
+ = icon 'plus', ['fw']
29
+ .has-action
30
+ = active_link_to :member_albums, class: 'menu_entry' do
31
+ = icon 'book', %w[fw icon]
32
+ = _('Albums')
33
+ = link_to :new_member_album, class: 'action' do
34
+ = icon 'plus', ['fw']
35
+ .has-action
36
+ = active_link_to :member_uploads, class: 'menu_entry' do
37
+ = icon 'file', %w[fw icon]
38
+ = _('Uploads')
39
+ = link_to :new_member_upload, class: 'action' do
40
+ = icon 'plus', ['fw']
41
+ .menu_entry.dropdown
42
+ %a{ href: '#' }
43
+ = icon 'user', ['fw']
44
+ %span.menu_entry_description= _('You')
45
+ .dropdown__menu.dropdown__menu--right
46
+ = active_link_to :member_edit_infos, class: 'menu_entry is-separator' do
47
+ = icon 'info', %w[fw icon]
48
+ = _('Infos')
49
+ = active_link_to :member_edit_preferences, class: 'menu_entry' do
50
+ = icon 'sliders-h', %w[fw icon]
51
+ = _('Preferences')
52
+ = active_link_to :edit_user_registration, class: 'menu_entry' do
53
+ = icon 'pen', %w[fw icon]
54
+ = _('Account')
55
+ = active_link_to :destroy_user_session, method: :delete, class: 'menu_entry' do
56
+ = icon 'sign-out-alt', %w[fw icon]
57
+ = _('Log out')
@@ -2,8 +2,11 @@
2
2
  %html{ lang: locale }
3
3
  %head
4
4
  %meta{ content: 'text/html; charset=UTF-8', 'http-equiv': 'Content-Type' }/
5
- %title= page_title(@page_title)
5
+ %meta{ name: 'viewport',
6
+ content: 'width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' }
7
+ %meta{ 'http-equiv': 'X-UA-Compatible', content: 'ie=edge' }
6
8
  = csrf_meta_tags
9
+ %title= page_title(@page_title)
7
10
  = stylesheet_link_tag 'application', media: 'all'
8
11
  = javascript_include_tag 'application'
9
12
  = auto_discovery_link_tag :rss, albums_url(format: :rss, show_nsfw: show_nsfw?)
@@ -16,18 +19,26 @@
16
19
  = _('Javascript seems to be disabled.')
17
20
  = render 'elabs/layouts/menu'
18
21
 
19
- - if @page_title # This variable should be set in views (or controllers)
20
- %h1.page__title= @page_title
22
+ .page__wrapper
23
+
24
+ = render 'elabs/layouts/announcements'
25
+
26
+ .page__header
27
+
28
+ - if @page_title # This variable should be set in views (or controllers)
29
+ %h1.page__header__title= @page_title
30
+
31
+ - if render_filters?
32
+ .page__header__actions
33
+ %a.page__header__actions_button{ href: '#' }
34
+ = icon 'filter', ['fw']
35
+ = render "elabs/#{controller_name}/filters"
21
36
 
22
- .page__actions
23
- = render "elabs/#{controller_name}/filters" if render_filters?
24
- %a.btn--report{ href: '#', onclick: 'openModal(event, "report-modal")' }
25
- %i.fa.fa-flag
26
- = _('Report this page')
37
+ = render 'elabs/layouts/flash_messages'
27
38
 
28
- .page__content
29
- .page__content__container
30
- = yield
39
+ .page__content
40
+ .page__content__container
41
+ = yield
31
42
 
32
43
  .modal#report-modal
33
44
  .modal__overlay{ onclick: 'closeModal("report-modal")' }
@@ -39,7 +50,7 @@
39
50
  .modal__window__content
40
51
  = render 'elabs/reports/form', new_report: @new_report
41
52
 
42
- = render 'elabs/layouts/footer'
53
+ = render 'elabs/layouts/footer', can_report: true
43
54
 
44
55
  -# Widget templates
45
- = render 'elabs/layouts/widgets/vue/all_widgets'
56
+ = render 'elabs/layouts/shortcodes/widgets/vue/all_widgets'
@@ -0,0 +1,33 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{ content: 'text/html; charset=UTF-8', 'http-equiv': 'Content-Type' }/
5
+ %meta{ name: 'viewport',
6
+ content: 'width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' }
7
+ %meta{ 'http-equiv': 'X-UA-Compatible', content: 'ie=edge' }
8
+ = csrf_meta_tags
9
+ %title= page_title(@page_title, _('Admin'))
10
+ = stylesheet_link_tag 'application', media: 'all'
11
+ = javascript_include_tag 'application'
12
+ %body.page.page--admin
13
+ %noscript
14
+ = _('Javascript seems to be disabled.')
15
+ = render 'elabs/layouts/menu'
16
+
17
+ .page__wrapper
18
+
19
+ .screen_size_warning
20
+ = _('You may want to use a real device to do administrative things. Content here will be a mess.')
21
+
22
+ .page__header
23
+ - if @page_title # This variable should be set in views (or controllers)
24
+ %h1.page__header__title= @page_title
25
+
26
+
27
+ = render 'elabs/layouts/flash_messages'
28
+
29
+ .page__content
30
+ .page__content__container
31
+ = yield
32
+
33
+ = render 'elabs/layouts/footer'
@@ -0,0 +1,36 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{ content: 'text/html; charset=UTF-8', 'http-equiv': 'Content-Type' }/
5
+ %meta{ name: 'viewport',
6
+ content: 'width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' }
7
+ %meta{ 'http-equiv': 'X-UA-Compatible', content: 'ie=edge' }
8
+ = csrf_meta_tags
9
+ %title= page_title(@page_title, _('Member'))
10
+ = stylesheet_link_tag 'application', media: 'all'
11
+ = javascript_include_tag 'application'
12
+ %body.page.page--member
13
+ %noscript
14
+ = _('Javascript seems to be disabled.')
15
+ = render 'elabs/layouts/menu'
16
+
17
+ .page__wrapper
18
+
19
+ .screen_size_warning= _('You may want to use a real device to manage things. Content here will be a mess.')
20
+
21
+ .page__header
22
+
23
+ - if @page_title # This variable should be set in views (or controllers)
24
+ %h1.page__header__title= @page_title
25
+
26
+
27
+ = render 'elabs/layouts/flash_messages'
28
+
29
+ .page__content
30
+ .page__content__container
31
+ = yield
32
+
33
+ = render 'elabs/layouts/footer'
34
+
35
+ -# Widget templates
36
+ = render 'elabs/layouts/shortcodes/widgets/vue/all_widgets'