elabs 3.0.0 → 4.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +89 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +7 -2
- data/README.md +24 -17
- data/ROADMAP.md +8 -7
- data/app/assets/javascripts/elabs/application.js.erb +42 -0
- data/app/assets/javascripts/elabs/forms.js +10 -0
- data/app/assets/javascripts/elabs/helpers-markdown.js +11 -33
- data/app/assets/javascripts/elabs/helpers.js +28 -0
- data/app/assets/javascripts/elabs/hljs.js +4 -0
- data/app/assets/stylesheets/elabs/_colors.scss +5 -0
- data/app/assets/stylesheets/elabs/_fixes.scss +6 -0
- data/app/assets/stylesheets/elabs/_icons.scss +4 -0
- data/app/assets/stylesheets/elabs/app/_acts.scss +11 -0
- data/app/assets/stylesheets/elabs/app/_buttons.scss +8 -0
- data/app/assets/stylesheets/elabs/app/_comments.scss +10 -1
- data/app/assets/stylesheets/elabs/app/_content.scss +15 -0
- data/app/assets/stylesheets/elabs/app/_content_statuses.scss +32 -0
- data/app/assets/stylesheets/elabs/app/_forms.scss +5 -0
- data/app/assets/stylesheets/elabs/app/_helpers.scss +10 -0
- data/app/assets/stylesheets/elabs/app/_layout.scss +4 -0
- data/app/assets/stylesheets/elabs/app/_modals.scss +4 -0
- data/app/assets/stylesheets/elabs/app/_tables.scss +31 -0
- data/app/assets/stylesheets/elabs/app/_typo.scss +14 -0
- data/app/assets/stylesheets/elabs/app/_users.scss +14 -6
- data/app/assets/stylesheets/elabs/app/admin-members/_forms.scss +8 -1
- data/app/assets/stylesheets/elabs/app/admin-members/_indexes.scss +1 -26
- data/app/assets/stylesheets/elabs/app/mixins/_content-card.scss +11 -1
- data/app/assets/stylesheets/elabs/app/mixins/_content-full.scss +26 -0
- data/app/assets/stylesheets/elabs/app/mixins/_content-inline.scss +7 -0
- data/app/assets/stylesheets/elabs/app/widgets/_git-cards.scss +88 -0
- data/app/assets/stylesheets/elabs/lib/_hljs.scss +5 -0
- data/app/assets/stylesheets/elabs/lib/fontawesome/_icons.scss +11 -11
- data/app/assets/stylesheets/elabs/lib/knacss/_knacss-variables.scss +10 -2
- data/app/assets/stylesheets/elabs/style.scss +11 -1
- data/app/controllers/elabs/admin/admin_application_controller.rb +1 -1
- data/app/controllers/elabs/admin/admin_content_application_controller.rb +2 -2
- data/app/controllers/elabs/admin/languages_controller.rb +1 -1
- data/app/controllers/elabs/admin/licenses_controller.rb +1 -1
- data/app/controllers/elabs/admin/tags_controller.rb +1 -1
- data/app/controllers/elabs/admin/users_controller.rb +1 -1
- data/app/controllers/elabs/albums_controller.rb +1 -1
- data/app/controllers/elabs/articles_controller.rb +1 -1
- data/app/controllers/elabs/content_application_controller.rb +2 -1
- data/app/controllers/elabs/elabs_public_controller.rb +28 -8
- data/app/controllers/elabs/languages_controller.rb +1 -1
- data/app/controllers/elabs/licenses_controller.rb +1 -1
- data/app/controllers/elabs/member/albums_controller.rb +1 -1
- data/app/controllers/elabs/member/articles_controller.rb +1 -1
- data/app/controllers/elabs/member/markdown_previewer_controller.rb +11 -0
- data/app/controllers/elabs/member/member_content_application_controller.rb +2 -2
- data/app/controllers/elabs/member/notes_controller.rb +1 -1
- data/app/controllers/elabs/member/projects_controller.rb +1 -1
- data/app/controllers/elabs/member/uploads_controller.rb +1 -1
- data/app/controllers/elabs/notes_controller.rb +1 -1
- data/app/controllers/elabs/projects_controller.rb +1 -1
- data/app/controllers/elabs/tags_controller.rb +1 -6
- data/app/controllers/elabs/uploads_controller.rb +1 -1
- data/app/controllers/elabs/users_controller.rb +1 -1
- data/app/helpers/elabs/acts_helper.rb +2 -2
- data/app/helpers/elabs/application_helper.rb +30 -3
- data/app/helpers/elabs/content_helper.rb +9 -3
- data/app/helpers/elabs/content_renderer_helper.rb +118 -8
- data/app/helpers/elabs/rss_helper.rb +9 -0
- data/app/helpers/elabs/thumbnails_helper.rb +24 -19
- data/app/helpers/elabs/time_helper.rb +7 -1
- data/app/models/elabs/album.rb +2 -0
- data/app/models/elabs/application_content_record.rb +3 -0
- data/app/models/elabs/article.rb +2 -0
- data/app/models/elabs/concerns/actable_entity.rb +17 -2
- data/app/models/elabs/concerns/content_entity.rb +2 -2
- data/app/models/elabs/concerns/sluggable.rb +40 -0
- data/app/models/elabs/language.rb +8 -0
- data/app/models/elabs/license.rb +5 -0
- data/app/models/elabs/note.rb +2 -0
- data/app/models/elabs/project.rb +3 -0
- data/app/models/elabs/tag.rb +5 -0
- data/app/models/elabs/upload.rb +2 -0
- data/app/models/elabs/user.rb +10 -2
- data/app/views/elabs/acts/_act.rss.builder +22 -0
- data/app/views/elabs/acts/index.html.haml +5 -1
- data/app/views/elabs/acts/index.rss.builder +15 -0
- data/app/views/elabs/admin/albums/index.html.haml +4 -4
- data/app/views/elabs/admin/articles/index.html.haml +4 -4
- data/app/views/elabs/admin/languages/_form.html.haml +2 -1
- data/app/views/elabs/admin/licenses/_form.html.haml +2 -1
- data/app/views/elabs/admin/notes/index.html.haml +5 -5
- data/app/views/elabs/admin/projects/index.html.haml +4 -4
- data/app/views/elabs/admin/reports/index.html.haml +2 -2
- data/app/views/elabs/admin/tags/_form.html.haml +2 -1
- data/app/views/elabs/admin/uploads/index.html.haml +4 -4
- data/app/views/elabs/admin/users/index.html.haml +3 -3
- data/app/views/elabs/admin/users/show.html.haml +2 -2
- data/app/views/elabs/albums/_album.html.haml +1 -1
- data/app/views/elabs/albums/_album.rss.builder +7 -0
- data/app/views/elabs/albums/_album_inline.html.haml +8 -0
- data/app/views/elabs/albums/index.rss.builder +14 -0
- data/app/views/elabs/albums/show.html.haml +3 -3
- data/app/views/elabs/articles/_article.html.haml +1 -1
- data/app/views/elabs/articles/_article.rss.builder +7 -0
- data/app/views/elabs/articles/_article_inline.html.haml +8 -0
- data/app/views/elabs/articles/index.rss.builder +14 -0
- data/app/views/elabs/articles/show.html.haml +4 -4
- data/app/views/elabs/comments/_comments.html.haml +4 -3
- data/app/views/elabs/comments/_form.html.haml +18 -6
- data/app/views/elabs/languages/_associations.html.haml +15 -5
- data/app/views/elabs/layouts/_footer.html.haml +8 -1
- data/app/views/elabs/layouts/_hidden_entry.html.haml +4 -4
- data/app/views/elabs/layouts/_hidden_entry_full.html.haml +4 -4
- data/app/views/elabs/layouts/_hidden_entry_inline.html.haml +6 -0
- data/app/views/elabs/layouts/_shortcode_infinite_loop.html.haml +2 -0
- data/app/views/elabs/layouts/_shortcode_infinite_loop_inline.html.haml +2 -0
- data/app/views/elabs/layouts/_shortcode_missing_content.html.haml +2 -0
- data/app/views/elabs/layouts/_shortcode_missing_content_inline.html.haml +2 -0
- data/app/views/elabs/layouts/_shortcode_open_to_see.html.haml +2 -0
- data/app/views/elabs/layouts/admin_application.html.haml +2 -2
- data/app/views/elabs/layouts/application.html.haml +11 -3
- data/app/views/elabs/layouts/member_application.html.haml +5 -2
- data/app/views/elabs/layouts/widgets/_github_repo_card.html.haml +12 -0
- data/app/views/elabs/layouts/widgets/_github_repo_inline.html.haml +8 -0
- data/app/views/elabs/layouts/widgets/_github_user_card.html.haml +7 -0
- data/app/views/elabs/layouts/widgets/_gitlab_group_card.html.haml +11 -0
- data/app/views/elabs/layouts/widgets/_gitlab_repo_card.html.haml +12 -0
- data/app/views/elabs/layouts/widgets/_gitlab_repo_inline.html.haml +8 -0
- data/app/views/elabs/layouts/widgets/_gitlab_user_card.html.haml +11 -0
- data/app/views/elabs/layouts/widgets/vue/_all_widgets.html.haml +5 -0
- data/app/views/elabs/layouts/widgets/vue/_github_repo_card_vue.html.haml +72 -0
- data/app/views/elabs/layouts/widgets/vue/_github_user_card_vue.html.haml +64 -0
- data/app/views/elabs/layouts/widgets/vue/_gitlab_group_card_vue.html.haml +64 -0
- data/app/views/elabs/layouts/widgets/vue/_gitlab_repo_card_vue.html.haml +69 -0
- data/app/views/elabs/layouts/widgets/vue/_gitlab_user_card_vue.html.haml +99 -0
- data/app/views/elabs/licenses/_associations.html.haml +15 -5
- data/app/views/elabs/licenses/show.json.jbuilder +1 -1
- data/app/views/elabs/member/albums/_form.html.haml +12 -1
- data/app/views/elabs/member/albums/index.html.haml +4 -4
- data/app/views/elabs/member/articles/_form.html.haml +12 -1
- data/app/views/elabs/member/articles/index.html.haml +4 -4
- data/app/views/elabs/member/markdown_previewer/preview.json.jbuilder +2 -0
- data/app/views/elabs/member/notes/_form.html.haml +12 -1
- data/app/views/elabs/member/notes/index.html.haml +4 -4
- data/app/views/elabs/member/notifications/index.html.haml +1 -1
- data/app/views/elabs/member/preferences/_form.html.haml +2 -1
- data/app/views/elabs/member/projects/_form.html.haml +18 -2
- data/app/views/elabs/member/projects/_project.json.jbuilder +2 -0
- data/app/views/elabs/member/projects/index.html.haml +4 -4
- data/app/views/elabs/member/uploads/_form.html.haml +12 -1
- data/app/views/elabs/member/uploads/index.html.haml +6 -9
- data/app/views/elabs/member/users/_form.html.haml +2 -1
- data/app/views/elabs/notes/_note.html.haml +2 -2
- data/app/views/elabs/notes/_note.rss.builder +7 -0
- data/app/views/elabs/notes/_note_inline.haml +8 -0
- data/app/views/elabs/notes/index.rss.builder +14 -0
- data/app/views/elabs/notes/show.html.haml +3 -3
- data/app/views/elabs/projects/_associations.html.haml +12 -4
- data/app/views/elabs/projects/_project.html.haml +1 -1
- data/app/views/elabs/projects/_project.json.jbuilder +2 -0
- data/app/views/elabs/projects/_project.rss.builder +7 -0
- data/app/views/elabs/projects/_project_inline.html.haml +9 -0
- data/app/views/elabs/projects/index.rss.builder +14 -0
- data/app/views/elabs/projects/show.html.haml +20 -9
- data/app/views/elabs/reports/_form.html.haml +2 -1
- data/app/views/elabs/tags/_associations.html.haml +15 -5
- data/app/views/elabs/tags/index.html.haml +2 -0
- data/app/views/elabs/uploads/_preview.html.haml +1 -6
- data/app/views/elabs/uploads/_upload.rss.builder +7 -0
- data/app/views/elabs/uploads/_upload_inline.html.haml +8 -0
- data/app/views/elabs/uploads/index.rss.builder +14 -0
- data/app/views/elabs/uploads/show.html.haml +7 -8
- data/app/views/elabs/users/_associations.html.haml +15 -5
- data/app/views/elabs/users/_user.html.haml +24 -18
- data/app/views/elabs/users/_user_inline.html.haml +7 -0
- data/app/views/elabs/users/show.html.haml +2 -2
- data/config/brakeman.ignore +13 -111
- data/config/locales/en.yml +6 -0
- data/config/locales/fr.yml +6 -0
- data/config/routes.rb +30 -28
- data/db/migrate/20180917133442_add_urls_to_projects.rb +6 -0
- data/db/migrate/20181005105642_add_reason_to_acts.rb +5 -0
- data/db/migrate/20181006073541_add_slugs.rb +39 -0
- data/docs/migrating.md +51 -0
- data/docs/setup.md +1 -0
- data/lib/elabs.rb +5 -0
- data/lib/elabs/version.rb +1 -1
- data/lib/generators/elabs/install_generator.rb +1 -0
- data/lib/generators/elabs/views_generator.rb +0 -1
- data/lib/generators/templates/elabs.rb +4 -0
- data/lib/generators/templates/user_model.rb +6 -0
- data/locale/app.pot +129 -9
- data/locale/en/app.edit.po +127 -7
- data/locale/en/app.po +127 -7
- data/locale/fr/app.edit.po +130 -10
- data/locale/fr/app.po +129 -9
- metadata +59 -5
- data/app/assets/javascripts/elabs/application.js +0 -27
- data/app/assets/stylesheets/elabs/app/_nsfw.scss +0 -5
- data/lib/assets/javascripts/markdown-it-8.4.2.min.js +0 -1
data/config/brakeman.ignore
CHANGED
|
@@ -1,124 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"ignored_warnings": [
|
|
3
3
|
{
|
|
4
|
-
"warning_type": "
|
|
5
|
-
"warning_code":
|
|
6
|
-
"fingerprint": "
|
|
7
|
-
"check_name": "
|
|
8
|
-
"message": "
|
|
9
|
-
"file": "app/controllers/
|
|
10
|
-
"line":
|
|
11
|
-
"link": "https://brakemanscanner.org/docs/warning_types/
|
|
12
|
-
"code": "
|
|
4
|
+
"warning_type": "SQL Injection",
|
|
5
|
+
"warning_code": 0,
|
|
6
|
+
"fingerprint": "7d9b0d8fb977bbc2cf5fc42d0ad2c836141fa5ddba8c1ce84fb0dd2108cad6bd",
|
|
7
|
+
"check_name": "SQL",
|
|
8
|
+
"message": "Possible SQL injection",
|
|
9
|
+
"file": "app/controllers/elabs/elabs_public_controller.rb",
|
|
10
|
+
"line": 48,
|
|
11
|
+
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
|
|
12
|
+
"code": "orm_request.where(\"#{details[:type]}_id\" => find_related_id_by_slug(details[:type], details[:slug_field], params[field]))",
|
|
13
13
|
"render_path": null,
|
|
14
14
|
"location": {
|
|
15
15
|
"type": "method",
|
|
16
|
-
"class": "
|
|
17
|
-
"method": "
|
|
16
|
+
"class": "Elabs::ElabsPublicController",
|
|
17
|
+
"method": "build_request_where"
|
|
18
18
|
},
|
|
19
|
-
"user_input": "
|
|
19
|
+
"user_input": "details[:type]",
|
|
20
20
|
"confidence": "Weak",
|
|
21
21
|
"note": ""
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"warning_type": "Cross-Site Scripting",
|
|
25
|
-
"warning_code": 4,
|
|
26
|
-
"fingerprint": "74d83c9e5d3fb98de33d9c690a9380c40f0e35f3b85f390e871858bb8d34c1fe",
|
|
27
|
-
"check_name": "LinkToHref",
|
|
28
|
-
"message": "Potentially unsafe model attribute in link_to href",
|
|
29
|
-
"file": "app/views/licenses/show.html.haml",
|
|
30
|
-
"line": 15,
|
|
31
|
-
"link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
|
|
32
|
-
"code": "link_to(_(\"TL; DR\"), License.find(params[:id]).tldr_url, :target => \"_blank\")",
|
|
33
|
-
"render_path": [{"type":"controller","class":"LicensesController","method":"show","line":18,"file":"app/controllers/licenses_controller.rb"}],
|
|
34
|
-
"location": {
|
|
35
|
-
"type": "template",
|
|
36
|
-
"template": "licenses/show"
|
|
37
|
-
},
|
|
38
|
-
"user_input": "License.find(params[:id]).tldr_url",
|
|
39
|
-
"confidence": "Weak",
|
|
40
|
-
"note": "URLS are set by admins only"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"warning_type": "Unscoped Find",
|
|
44
|
-
"warning_code": 82,
|
|
45
|
-
"fingerprint": "96f2f0238c7611c20a731155fa4ab107874326d762a84e9b1858c0801c10d741",
|
|
46
|
-
"check_name": "UnscopedFind",
|
|
47
|
-
"message": "Unscoped call to Note#find",
|
|
48
|
-
"file": "app/controllers/notes_controller.rb",
|
|
49
|
-
"line": 18,
|
|
50
|
-
"link": "https://brakemanscanner.org/docs/warning_types/unscoped_find/",
|
|
51
|
-
"code": "Note.find(params[:id])",
|
|
52
|
-
"render_path": null,
|
|
53
|
-
"location": {
|
|
54
|
-
"type": "method",
|
|
55
|
-
"class": "NotesController",
|
|
56
|
-
"method": "set_note"
|
|
57
|
-
},
|
|
58
|
-
"user_input": "params[:id]",
|
|
59
|
-
"confidence": "Weak",
|
|
60
|
-
"note": ""
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"warning_type": "Unscoped Find",
|
|
64
|
-
"warning_code": 82,
|
|
65
|
-
"fingerprint": "b65152f1b2c4e9e18bcc4a3fd637b7bd5dd4b79421460a2c764bc3ead2ad1aa0",
|
|
66
|
-
"check_name": "UnscopedFind",
|
|
67
|
-
"message": "Unscoped call to Project#find",
|
|
68
|
-
"file": "app/controllers/projects_controller.rb",
|
|
69
|
-
"line": 23,
|
|
70
|
-
"link": "https://brakemanscanner.org/docs/warning_types/unscoped_find/",
|
|
71
|
-
"code": "Project.find(params[:id])",
|
|
72
|
-
"render_path": null,
|
|
73
|
-
"location": {
|
|
74
|
-
"type": "method",
|
|
75
|
-
"class": "ProjectsController",
|
|
76
|
-
"method": "set_project"
|
|
77
|
-
},
|
|
78
|
-
"user_input": "params[:id]",
|
|
79
|
-
"confidence": "Weak",
|
|
80
|
-
"note": ""
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"warning_type": "Unscoped Find",
|
|
84
|
-
"warning_code": 82,
|
|
85
|
-
"fingerprint": "c03df681f497ea4ef182b6236295be2dd61879612b212e7a6ea3a1b2e6faf7d0",
|
|
86
|
-
"check_name": "UnscopedFind",
|
|
87
|
-
"message": "Unscoped call to Upload#find",
|
|
88
|
-
"file": "app/controllers/uploads_controller.rb",
|
|
89
|
-
"line": 17,
|
|
90
|
-
"link": "https://brakemanscanner.org/docs/warning_types/unscoped_find/",
|
|
91
|
-
"code": "Upload.find(params[:id])",
|
|
92
|
-
"render_path": null,
|
|
93
|
-
"location": {
|
|
94
|
-
"type": "method",
|
|
95
|
-
"class": "UploadsController",
|
|
96
|
-
"method": "set_upload"
|
|
97
|
-
},
|
|
98
|
-
"user_input": "params[:id]",
|
|
99
|
-
"confidence": "Weak",
|
|
100
|
-
"note": ""
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"warning_type": "Cross-Site Scripting",
|
|
104
|
-
"warning_code": 4,
|
|
105
|
-
"fingerprint": "c125f39a448be85c1445467afabaf1a1992e9e1bf59af040b0277b33fa708901",
|
|
106
|
-
"check_name": "LinkToHref",
|
|
107
|
-
"message": "Potentially unsafe model attribute in link_to href",
|
|
108
|
-
"file": "app/views/licenses/show.html.haml",
|
|
109
|
-
"line": 12,
|
|
110
|
-
"link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
|
|
111
|
-
"code": "link_to(_(\"Home page\"), License.find(params[:id]).url, :target => \"_blank\")",
|
|
112
|
-
"render_path": [{"type":"controller","class":"LicensesController","method":"show","line":18,"file":"app/controllers/licenses_controller.rb"}],
|
|
113
|
-
"location": {
|
|
114
|
-
"type": "template",
|
|
115
|
-
"template": "licenses/show"
|
|
116
|
-
},
|
|
117
|
-
"user_input": "License.find(params[:id]).url",
|
|
118
|
-
"confidence": "Weak",
|
|
119
|
-
"note": "URLS are set by admins only"
|
|
120
22
|
}
|
|
121
23
|
],
|
|
122
|
-
"updated": "2018-
|
|
24
|
+
"updated": "2018-10-09 00:22:09 +0200",
|
|
123
25
|
"brakeman_version": "4.3.1"
|
|
124
26
|
}
|
data/config/routes.rb
CHANGED
|
@@ -8,50 +8,50 @@ Elabs::Engine.routes.draw do
|
|
|
8
8
|
unlocks: 'elabs/auth/unlocks'
|
|
9
9
|
}
|
|
10
10
|
# Resources
|
|
11
|
-
resources :albums, only: %i[index show] do
|
|
11
|
+
resources :albums, only: %i[index show], param: :slug do
|
|
12
12
|
resources :uploads, only: %i[index]
|
|
13
|
-
post 'comment', to: 'albums#create_comment', as: 'create_comment'
|
|
13
|
+
post 'comment', to: 'albums#create_comment', as: 'create_comment', param: :slug
|
|
14
14
|
end
|
|
15
|
-
resources :articles, only: %i[index show] do
|
|
16
|
-
post 'comment', to: 'articles#create_comment', as: 'create_comment'
|
|
15
|
+
resources :articles, only: %i[index show], param: :slug do
|
|
16
|
+
post 'comment', to: 'articles#create_comment', as: 'create_comment', param: :slug
|
|
17
17
|
end
|
|
18
|
-
resources :notes, only: %i[index show] do
|
|
19
|
-
post 'comment', to: 'notes#create_comment', as: 'create_comment'
|
|
18
|
+
resources :notes, only: %i[index show], param: :slug do
|
|
19
|
+
post 'comment', to: 'notes#create_comment', as: 'create_comment', param: :slug
|
|
20
20
|
end
|
|
21
|
-
resources :projects, only: %i[index show] do
|
|
21
|
+
resources :projects, only: %i[index show], param: :slug do
|
|
22
22
|
resources :articles, only: %i[index]
|
|
23
23
|
resources :albums, only: %i[index]
|
|
24
24
|
resources :notes, only: %i[index]
|
|
25
25
|
resources :uploads, only: %i[index]
|
|
26
|
-
post 'comment', to: 'projects#create_comment', as: 'create_comment'
|
|
26
|
+
post 'comment', to: 'projects#create_comment', as: 'create_comment', param: :slug
|
|
27
27
|
end
|
|
28
|
-
resources :uploads, only: %i[index show] do
|
|
29
|
-
post 'comment', to: 'uploads#create_comment', as: 'create_comment'
|
|
28
|
+
resources :uploads, only: %i[index show], param: :slug do
|
|
29
|
+
post 'comment', to: 'uploads#create_comment', as: 'create_comment', param: :slug
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
# Classifiers
|
|
33
|
-
resources :languages, only: %i[index show] do
|
|
33
|
+
resources :languages, only: %i[index show], param: :iso639_1 do
|
|
34
34
|
resources :albums, only: %i[index]
|
|
35
35
|
resources :articles, only: %i[index]
|
|
36
36
|
resources :notes, only: %i[index]
|
|
37
37
|
resources :projects, only: %i[index]
|
|
38
38
|
resources :uploads, only: %i[index]
|
|
39
39
|
end
|
|
40
|
-
resources :licenses, only: %i[index show] do
|
|
40
|
+
resources :licenses, only: %i[index show], param: :slug do
|
|
41
41
|
resources :albums, only: %i[index]
|
|
42
42
|
resources :articles, only: %i[index]
|
|
43
43
|
resources :notes, only: %i[index]
|
|
44
44
|
resources :projects, only: %i[index]
|
|
45
45
|
resources :uploads, only: %i[index]
|
|
46
46
|
end
|
|
47
|
-
resources :tags, only: %i[index show] do
|
|
47
|
+
resources :tags, only: %i[index show], param: :slug do
|
|
48
48
|
resources :albums, only: %i[index]
|
|
49
49
|
resources :articles, only: %i[index]
|
|
50
50
|
resources :notes, only: %i[index]
|
|
51
51
|
resources :projects, only: %i[index]
|
|
52
52
|
resources :uploads, only: %i[index]
|
|
53
53
|
end
|
|
54
|
-
resources :users, only: %i[index show] do
|
|
54
|
+
resources :users, only: %i[index show], param: :username do
|
|
55
55
|
resources :albums, only: %i[index]
|
|
56
56
|
resources :articles, only: %i[index]
|
|
57
57
|
resources :notes, only: %i[index]
|
|
@@ -67,19 +67,19 @@ Elabs::Engine.routes.draw do
|
|
|
67
67
|
|
|
68
68
|
# Member
|
|
69
69
|
namespace :member do
|
|
70
|
-
resources :albums, except: %i[show] do
|
|
70
|
+
resources :albums, except: %i[show], param: :slug do
|
|
71
71
|
put 'toggle_publication', to: 'albums#toggle_publication', as: :toggle_publication
|
|
72
72
|
end
|
|
73
|
-
resources :articles, except: %i[show] do
|
|
73
|
+
resources :articles, except: %i[show], param: :slug do
|
|
74
74
|
put 'toggle_publication', to: 'articles#toggle_publication', as: :toggle_publication
|
|
75
75
|
end
|
|
76
|
-
resources :notes, except: %i[show] do
|
|
76
|
+
resources :notes, except: %i[show], param: :slug do
|
|
77
77
|
put 'toggle_publication', to: 'notes#toggle_publication', as: :toggle_publication
|
|
78
78
|
end
|
|
79
|
-
resources :projects, except: %i[show] do
|
|
79
|
+
resources :projects, except: %i[show], param: :slug do
|
|
80
80
|
put 'toggle_publication', to: 'projects#toggle_publication', as: :toggle_publication
|
|
81
81
|
end
|
|
82
|
-
resources :uploads, except: %i[show] do
|
|
82
|
+
resources :uploads, except: %i[show], param: :slug do
|
|
83
83
|
put 'toggle_publication', to: 'uploads#toggle_publication', as: :toggle_publication
|
|
84
84
|
end
|
|
85
85
|
|
|
@@ -90,32 +90,34 @@ Elabs::Engine.routes.draw do
|
|
|
90
90
|
|
|
91
91
|
get '/infos', to: 'users#edit', as: :edit_infos
|
|
92
92
|
patch '/infos', to: 'users#update', as: :update_infos
|
|
93
|
+
|
|
94
|
+
post '/markdown_previewer', to: 'markdown_previewer#preview', as: :markdown_preview
|
|
93
95
|
end
|
|
94
96
|
|
|
95
97
|
# Admin
|
|
96
98
|
namespace :admin do
|
|
97
99
|
# Content resources
|
|
98
|
-
resources :albums, only: %i[index destroy] do
|
|
100
|
+
resources :albums, only: %i[index destroy], param: :slug do
|
|
99
101
|
put 'toggle_lock', to: 'albums#toggle_lock', as: :toggle_lock
|
|
100
102
|
end
|
|
101
|
-
resources :articles, only: %i[index destroy] do
|
|
103
|
+
resources :articles, only: %i[index destroy], param: :slug do
|
|
102
104
|
put 'toggle_lock', to: 'articles#toggle_lock', as: :toggle_lock
|
|
103
105
|
end
|
|
104
|
-
resources :notes, only: %i[index destroy] do
|
|
106
|
+
resources :notes, only: %i[index destroy], param: :slug do
|
|
105
107
|
put 'toggle_lock', to: 'notes#toggle_lock', as: :toggle_lock
|
|
106
108
|
end
|
|
107
|
-
resources :projects, only: %i[index destroy] do
|
|
109
|
+
resources :projects, only: %i[index destroy], param: :slug do
|
|
108
110
|
put 'toggle_lock', to: 'projects#toggle_lock', as: :toggle_lock
|
|
109
111
|
end
|
|
110
|
-
resources :uploads, only: %i[index destroy] do
|
|
112
|
+
resources :uploads, only: %i[index destroy], param: :slug do
|
|
111
113
|
put 'toggle_lock', to: 'uploads#toggle_lock', as: :toggle_lock
|
|
112
114
|
end
|
|
113
115
|
|
|
114
116
|
# Basic resources
|
|
115
|
-
resources :languages, except: %i[show]
|
|
116
|
-
resources :licenses, except: %i[show]
|
|
117
|
+
resources :languages, except: %i[show], param: :iso639_1
|
|
118
|
+
resources :licenses, except: %i[show], param: :slug
|
|
117
119
|
resources :reports, only: %i[index destroy]
|
|
118
|
-
resources :tags, except: %i[create show]
|
|
119
|
-
resources :users, only: %i[index show destroy]
|
|
120
|
+
resources :tags, except: %i[create show], param: :slug
|
|
121
|
+
resources :users, only: %i[index show destroy], param: :username
|
|
120
122
|
end
|
|
121
123
|
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
class AddSlugs < ActiveRecord::Migration[5.2]
|
|
2
|
+
def up
|
|
3
|
+
%i[licenses tags albums articles notes projects uploads].each do |table|
|
|
4
|
+
add_column table, :slug, :string, null: true
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
ActiveRecord::Base.record_timestamps = false
|
|
8
|
+
begin
|
|
9
|
+
[
|
|
10
|
+
{ model: Elabs::License, actable: false },
|
|
11
|
+
{ model: Elabs::Tag, actable: false },
|
|
12
|
+
{ model: Elabs::Album, actable: true },
|
|
13
|
+
{ model: Elabs::Article, actable: true },
|
|
14
|
+
{ model: Elabs::Note, actable: true },
|
|
15
|
+
{ model: Elabs::Project, actable: true },
|
|
16
|
+
{ model: Elabs::Upload, actable: true }
|
|
17
|
+
].each do |table|
|
|
18
|
+
table[:model].all.each do |record|
|
|
19
|
+
record.fill_slug
|
|
20
|
+
record.minor_update = true if table[:actable]
|
|
21
|
+
record.save!
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
ensure
|
|
25
|
+
ActiveRecord::Base.record_timestamps = true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
%i[licenses tags albums articles notes projects uploads].each do |table|
|
|
29
|
+
change_column table, :slug, :string, null: false
|
|
30
|
+
add_index table, :slug, unique: true
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def down
|
|
35
|
+
%i[licenses tags albums articles notes projects uploads].each do |table|
|
|
36
|
+
remove_column table, :slug
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/docs/migrating.md
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
1
1
|
# Migration guide
|
|
2
2
|
|
|
3
|
+
## From 3.x to 4.0.0
|
|
4
|
+
|
|
5
|
+
First of all, read the changelog for the 4.0.0 release.
|
|
6
|
+
|
|
7
|
+
Use a version control system to manage the changes and the overrides you
|
|
8
|
+
made in your own application.
|
|
9
|
+
|
|
10
|
+
- Add the Commonmarker gem: `gem 'commonmarker'` if you use the default
|
|
11
|
+
views
|
|
12
|
+
- Update the base configuration (initializer, languages, ...):
|
|
13
|
+
`rails g elabs:install` and accept to override everything. Then check
|
|
14
|
+
changes
|
|
15
|
+
- Apply the last migrations: `rake elabs:install:migrations` then
|
|
16
|
+
`rails db:migrate`
|
|
17
|
+
|
|
18
|
+
Don't forget to rebuild the assets...
|
|
19
|
+
|
|
20
|
+
If you have existing content you need to redirect you can use a runner
|
|
21
|
+
like this one:
|
|
22
|
+
|
|
23
|
+
```rb
|
|
24
|
+
# Example for Apache
|
|
25
|
+
# Uncomment if you need to enable RewriteEngine (mod_rewrite is required)
|
|
26
|
+
puts "# RewriteEngine on"
|
|
27
|
+
|
|
28
|
+
[
|
|
29
|
+
{ model: Elabs::Language, subs: %w[albums articles notes projects uploads] },
|
|
30
|
+
{ model: Elabs::License, subs: %w[albums articles notes projects uploads] },
|
|
31
|
+
{ model: Elabs::Tag, subs: %w[albums articles notes projects uploads] },
|
|
32
|
+
{ model: Elabs::User, subs: %w[albums articles notes projects uploads] },
|
|
33
|
+
{ model: Elabs::Album, subs: [] },
|
|
34
|
+
{ model: Elabs::Article, subs: [] },
|
|
35
|
+
{ model: Elabs::Note, subs: [] },
|
|
36
|
+
{ model: Elabs::Project, subs: %w[albums articles notes uploads] },
|
|
37
|
+
{ model: Elabs::Upload, subs: [] },
|
|
38
|
+
].each do |config|
|
|
39
|
+
slug_field = config[:model]::SLUG_FIELD
|
|
40
|
+
endpoint = config[:model].to_s.demodulize.tableize
|
|
41
|
+
puts '# Entities redirection'
|
|
42
|
+
config[:model].all.each do |record|
|
|
43
|
+
# Entity
|
|
44
|
+
puts "Redirect 301 /#{endpoint}/#{record.id} /#{endpoint}/#{record.send(slug_field)}"
|
|
45
|
+
|
|
46
|
+
# Nested resources
|
|
47
|
+
config[:subs].each do |sub|
|
|
48
|
+
puts "Redirect 301 /#{endpoint}/#{record.id}/#{sub} /#{endpoint}/#{record.send(slug_field)}/#{sub}"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
```
|
|
53
|
+
|
|
3
54
|
## From 2.x to 3.0.0
|
|
4
55
|
|
|
5
56
|
First of all, read the changelog for the 3.0.0 release
|
data/docs/setup.md
CHANGED
data/lib/elabs.rb
CHANGED
|
@@ -34,9 +34,14 @@ module Elabs
|
|
|
34
34
|
mattr_accessor :av_formats_video
|
|
35
35
|
@@av_formats_video = ['video/mp4', 'video/webm', 'video/ogg']
|
|
36
36
|
|
|
37
|
+
# Whether or not to use avatars. This feature is experimental
|
|
37
38
|
mattr_accessor :use_avatars
|
|
38
39
|
@@use_avatars = false
|
|
39
40
|
|
|
41
|
+
# Close the registrations
|
|
42
|
+
mattr_accessor :users_can_register
|
|
43
|
+
@@users_can_register = true
|
|
44
|
+
|
|
40
45
|
def self.setup
|
|
41
46
|
yield self
|
|
42
47
|
end
|
data/lib/elabs/version.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# Don't forget to restart the server when you edit this file.
|
|
1
2
|
Elabs.setup do |config|
|
|
2
3
|
# Site name, used in menus and other places
|
|
3
4
|
config.site_name = 'A new app'
|
|
@@ -28,4 +29,7 @@ Elabs.setup do |config|
|
|
|
28
29
|
# attached file is deleted on failure, resulting on avatar suppression.
|
|
29
30
|
# Set this value to false to avoid using avatars
|
|
30
31
|
config.use_avatars = false
|
|
32
|
+
|
|
33
|
+
# Open/close the registrations
|
|
34
|
+
config.users_can_register = true
|
|
31
35
|
end
|