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
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
.field-hint= format(_('Your picture should be in "png" or "jpg", preferably a square of 512px.'))
|
|
35
35
|
|
|
36
36
|
.actions
|
|
37
|
-
|
|
37
|
+
.actions-buttons
|
|
38
|
+
= f.submit _('Save'), class: 'btn btn--save'
|
|
38
39
|
|
|
39
40
|
= render 'elabs/member/layouts/markdown-preview'
|
|
40
41
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
.headers
|
|
8
8
|
%ul.informations
|
|
9
9
|
%li
|
|
10
|
-
= icon('
|
|
10
|
+
= icon('permalink', ['fw'])
|
|
11
11
|
= link_to _('Permalink'), note, class: 'title'
|
|
12
12
|
%li
|
|
13
13
|
= icon('user', ['fw'])
|
|
@@ -28,4 +28,4 @@
|
|
|
28
28
|
%li= render 'elabs/layouts/lists/projects', projects: note.projects
|
|
29
29
|
%li= render 'elabs/layouts/lists/tags', tags: note.tags
|
|
30
30
|
|
|
31
|
-
%article{ lang: note.language.iso639_1 }=
|
|
31
|
+
%article{ lang: note.language.iso639_1 }= render_entity_content note, :content, true
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
- if !show_item? note
|
|
2
|
+
= render 'elabs/layouts/hidden_entry_inline', entity: note
|
|
3
|
+
- else
|
|
4
|
+
%span.note.note--inline
|
|
5
|
+
= icon 'sticky-note', ['fw']
|
|
6
|
+
= link_to format(_('Note #%<id>i'), id: note.id), note
|
|
7
|
+
- if note.language.iso639_1 != locale
|
|
8
|
+
(#{note.language.iso639_1})
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
xml.instruct! :xml, version: '1.0'
|
|
2
|
+
xml.rss version: '2.0' do
|
|
3
|
+
xml.channel do
|
|
4
|
+
xml.title "#{Elabs.site_name} - notes"
|
|
5
|
+
xml.description "Last #{params['show_nsfw'] == 'false' ? 'SFW' : ''} notes from #{Elabs.site_name}"
|
|
6
|
+
xml.link notes_url
|
|
7
|
+
|
|
8
|
+
@notes.each do |note|
|
|
9
|
+
next if params['show_nsfw'] == 'false' && !note.sfw
|
|
10
|
+
|
|
11
|
+
render 'note', builder: xml, note: note
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
%li
|
|
14
14
|
= icon('calendar-check', ['fw'])
|
|
15
15
|
%b= _('Published at:')
|
|
16
|
-
=
|
|
16
|
+
= medium_datetime @note.published_at
|
|
17
17
|
%li
|
|
18
18
|
= icon('calendar', ['fw'])
|
|
19
19
|
%b= _('Updated at:')
|
|
20
|
-
=
|
|
20
|
+
= medium_datetime @note.updated_at
|
|
21
21
|
%li.separator
|
|
22
22
|
= icon('info', ['fw'])
|
|
23
23
|
%b= _('SFW:')
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
|
|
37
37
|
.content
|
|
38
38
|
%article{ lang: @note.language.iso639_1 }
|
|
39
|
-
=
|
|
39
|
+
= render_entity_content @note, :content
|
|
40
40
|
|
|
41
41
|
= render 'elabs/comments/comments',
|
|
42
42
|
entity: @note,
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
%aside.tabs
|
|
2
2
|
%ul.tabs__tabs-list
|
|
3
3
|
%li.tabs__tabs-list__tab#tab-albums
|
|
4
|
-
%a{ href: '#tab-content-albums', onclick: 'selectTab(event, "albums")' }
|
|
4
|
+
%a{ href: '#tab-content-albums', onclick: 'selectTab(event, "albums")' }
|
|
5
|
+
= _('Albums')
|
|
6
|
+
%span.badge.badge--notification= project.albums_count
|
|
5
7
|
%li.tabs__tabs-list__tab#tab-articles
|
|
6
|
-
%a{ href: '#tab-content-articles', onclick: 'selectTab(event, "articles")' }
|
|
8
|
+
%a{ href: '#tab-content-articles', onclick: 'selectTab(event, "articles")' }
|
|
9
|
+
= _('Articles')
|
|
10
|
+
%span.badge.badge--notification= project.articles_count
|
|
7
11
|
%li.tabs__tabs-list__tab#tab-notes
|
|
8
|
-
%a{ href: '#tab-content-notes', onclick: 'selectTab(event, "notes")' }
|
|
12
|
+
%a{ href: '#tab-content-notes', onclick: 'selectTab(event, "notes")' }
|
|
13
|
+
= _('Notes')
|
|
14
|
+
%span.badge.badge--notification= project.notes_count
|
|
9
15
|
%li.tabs__tabs-list__tab#tab-uploads
|
|
10
|
-
%a{ href: '#tab-content-uploads', onclick: 'selectTab(event, "uploads")' }
|
|
16
|
+
%a{ href: '#tab-content-uploads', onclick: 'selectTab(event, "uploads")' }
|
|
17
|
+
= _('Uploads')
|
|
18
|
+
%span.badge.badge--notification= project.uploads_count
|
|
11
19
|
|
|
12
20
|
%section.tabs__tab-content.albums-list#tab-content-albums
|
|
13
21
|
.tabs__tab-content__title
|
|
@@ -26,4 +26,4 @@
|
|
|
26
26
|
= boolean_icon_tag project.sfw, 'is-sfw', 'is-nsfw'
|
|
27
27
|
%li= render 'elabs/layouts/lists/tags', tags: project.tags
|
|
28
28
|
|
|
29
|
-
%article{ lang: project.language.iso639_1 }=
|
|
29
|
+
%article{ lang: project.language.iso639_1 }= render_entity_content project, :short_description, false
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
builder.item do
|
|
2
|
+
builder.title rss_title(project, 'name')
|
|
3
|
+
builder.description "#{project.short_description}\n\n#{project.description}"
|
|
4
|
+
builder.pubDate project.published_at.to_s(:rfc822)
|
|
5
|
+
builder.link project_url(project)
|
|
6
|
+
builder.guid project_url(project)
|
|
7
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
- if !show_item? project
|
|
2
|
+
= render 'elabs/layouts/hidden_entry_inline', entity: project
|
|
3
|
+
- else
|
|
4
|
+
%span.project.project--inline
|
|
5
|
+
= icon 'cog', ['fw']
|
|
6
|
+
= link_to project.name, project, lang: project.language.iso639_1
|
|
7
|
+
- if project.language.iso639_1 != locale
|
|
8
|
+
(#{project.language.iso639_1})
|
|
9
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
xml.instruct! :xml, version: '1.0'
|
|
2
|
+
xml.rss version: '2.0' do
|
|
3
|
+
xml.channel do
|
|
4
|
+
xml.title "#{Elabs.site_name} - projects"
|
|
5
|
+
xml.description "Last #{params['show_nsfw'] == 'false' ? 'SFW' : ''} projects from #{Elabs.site_name}"
|
|
6
|
+
xml.link projects_url
|
|
7
|
+
|
|
8
|
+
@projects.each do |project|
|
|
9
|
+
next if params['show_nsfw'] == 'false' && !project.sfw
|
|
10
|
+
|
|
11
|
+
render 'project', builder: xml, project: project
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -10,19 +10,30 @@
|
|
|
10
10
|
= icon('user', ['fw'])
|
|
11
11
|
%strong= _('Creator:')
|
|
12
12
|
= link_to @project.user.display_name, @project.user
|
|
13
|
-
- if @project.main_url.present?
|
|
14
|
-
%li
|
|
15
|
-
= icon('home', ['fw'])
|
|
16
|
-
%strong= _('Main url:')
|
|
17
|
-
= @project.main_url
|
|
18
13
|
%li
|
|
19
14
|
= icon('calendar-check', ['fw'])
|
|
20
15
|
%strong= _('Published at:')
|
|
21
|
-
=
|
|
16
|
+
= medium_datetime @project.published_at
|
|
22
17
|
%li
|
|
23
18
|
= icon('calendar', ['fw'])
|
|
24
19
|
%strong= _('Updated at:')
|
|
25
|
-
=
|
|
20
|
+
= medium_datetime @project.updated_at
|
|
21
|
+
|
|
22
|
+
- if @project.main_url.present?
|
|
23
|
+
%li.separator
|
|
24
|
+
= icon('home', ['fw'])
|
|
25
|
+
%strong= _('Home page:')
|
|
26
|
+
= @project.main_url
|
|
27
|
+
- if @project.sources_url.present?
|
|
28
|
+
%li{ class: @project.main_url.present? ? '' : 'separator' }
|
|
29
|
+
= icon('code', ['fw'])
|
|
30
|
+
%strong= _('Sources:')
|
|
31
|
+
= @project.sources_url
|
|
32
|
+
- if @project.docs_url.present?
|
|
33
|
+
%li{ class: @project.main_url.present? || @project.sources_url.present? ? '' : 'separator' }
|
|
34
|
+
= icon('book', ['fw'])
|
|
35
|
+
%strong= _('Documentation:')
|
|
36
|
+
= @project.docs_url
|
|
26
37
|
|
|
27
38
|
%li.separator
|
|
28
39
|
= icon('info', ['fw'])
|
|
@@ -58,8 +69,8 @@
|
|
|
58
69
|
|
|
59
70
|
.content
|
|
60
71
|
%article{ lang: @project.language.iso639_1 }
|
|
61
|
-
=
|
|
62
|
-
=
|
|
72
|
+
= render_entity_content @project, :short_description
|
|
73
|
+
= render_entity_content @project, :description
|
|
63
74
|
|
|
64
75
|
= render 'associations',
|
|
65
76
|
project: @project,
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
%aside.tabs
|
|
2
2
|
%ul.tabs__tabs-list
|
|
3
3
|
%li.tabs__tabs-list__tab#tab-albums
|
|
4
|
-
%a{ href: '#tab-content-albums', onclick: 'selectTab(event, "albums")' }
|
|
4
|
+
%a{ href: '#tab-content-albums', onclick: 'selectTab(event, "albums")' }
|
|
5
|
+
= _('Albums')
|
|
6
|
+
.badge.badge--notification= tag.albums_count
|
|
5
7
|
%li.tabs__tabs-list__tab#tab-articles
|
|
6
|
-
%a{ href: '#tab-content-articles', onclick: 'selectTab(event, "articles")' }
|
|
8
|
+
%a{ href: '#tab-content-articles', onclick: 'selectTab(event, "articles")' }
|
|
9
|
+
= _('Articles')
|
|
10
|
+
.badge.badge--notification= tag.articles_count
|
|
7
11
|
%li.tabs__tabs-list__tab#tab-notes
|
|
8
|
-
%a{ href: '#tab-content-notes', onclick: 'selectTab(event, "notes")' }
|
|
12
|
+
%a{ href: '#tab-content-notes', onclick: 'selectTab(event, "notes")' }
|
|
13
|
+
= _('Notes')
|
|
14
|
+
.badge.badge--notification= tag.notes_count
|
|
9
15
|
%li.tabs__tabs-list__tab#tab-projects
|
|
10
|
-
%a{ href: '#tab-content-projects', onclick: 'selectTab(event, "projects")' }
|
|
16
|
+
%a{ href: '#tab-content-projects', onclick: 'selectTab(event, "projects")' }
|
|
17
|
+
= _('Projects')
|
|
18
|
+
.badge.badge--notification= tag.projects_count
|
|
11
19
|
%li.tabs__tabs-list__tab#tab-uploads
|
|
12
|
-
%a{ href: '#tab-content-uploads', onclick: 'selectTab(event, "uploads")' }
|
|
20
|
+
%a{ href: '#tab-content-uploads', onclick: 'selectTab(event, "uploads")' }
|
|
21
|
+
= _('Uploads')
|
|
22
|
+
.badge.badge--notification= tag.uploads_count
|
|
13
23
|
|
|
14
24
|
%section.tabs__tab-content.albums-list#tab-content-albums
|
|
15
25
|
.tabs__tab-content__title
|
|
@@ -4,12 +4,7 @@
|
|
|
4
4
|
= image_tag 'preview_placeholder_nsfw.png'
|
|
5
5
|
- else
|
|
6
6
|
= link_to upload_url(upload) do
|
|
7
|
-
|
|
8
|
-
= image_tag main_app.url_for(upload.file.variant(thumbnail_center_crop_properties).processed)
|
|
9
|
-
- elsif upload.file.previewable?
|
|
10
|
-
= image_tag main_app.url_for(upload.file.preview(thumbnail_center_crop_properties).processed)
|
|
11
|
-
- else
|
|
12
|
-
= image_tag thumbnail_preview_placeholder_file
|
|
7
|
+
= image_tag thumbnail_center_crop(upload.file)
|
|
13
8
|
.content
|
|
14
9
|
.upload__title `#{upload.title} (#{upload.file.content_type})`
|
|
15
10
|
= link_to main_app.url_for(upload.file), class: 'action' do
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
- if !show_item? upload
|
|
2
|
+
= render 'elabs/layouts/hidden_entry_inline', entity: upload
|
|
3
|
+
- else
|
|
4
|
+
%span.upload.upload--inline
|
|
5
|
+
= image_tag thumbnail_center_crop(upload.file, :small), class: 'icon'
|
|
6
|
+
= link_to upload.title, upload
|
|
7
|
+
- if upload.language.iso639_1 != locale
|
|
8
|
+
(#{upload.language.iso639_1})
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
xml.instruct! :xml, version: '1.0'
|
|
2
|
+
xml.rss version: '2.0' do
|
|
3
|
+
xml.channel do
|
|
4
|
+
xml.title "#{Elabs.site_name} - uploads"
|
|
5
|
+
xml.description "Last #{params['show_nsfw'] == 'false' ? 'SFW' : ''} uploads from #{Elabs.site_name}"
|
|
6
|
+
xml.link uploads_url
|
|
7
|
+
|
|
8
|
+
@uploads.each do |upload|
|
|
9
|
+
next if params['show_nsfw'] == 'false' && !upload.sfw
|
|
10
|
+
|
|
11
|
+
render 'upload', builder: xml, upload: upload
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
%li
|
|
14
14
|
= icon('calendar-check', ['fw'])
|
|
15
15
|
%b= _('Published at:')
|
|
16
|
-
=
|
|
16
|
+
= medium_datetime @upload.published_at
|
|
17
17
|
%li
|
|
18
18
|
= icon('calendar', ['fw'])
|
|
19
19
|
%b= _('Updated at:')
|
|
20
|
-
=
|
|
20
|
+
= medium_datetime @upload.updated_at
|
|
21
21
|
%li
|
|
22
22
|
= icon('font', ['fw'])
|
|
23
23
|
%b= _('Original name:')
|
|
@@ -51,13 +51,12 @@
|
|
|
51
51
|
|
|
52
52
|
.content
|
|
53
53
|
%article{ lang: @upload.language.iso639_1 }
|
|
54
|
-
=
|
|
55
|
-
- if @upload.file
|
|
56
|
-
= image_tag main_app.url_for(@upload.file.variant(image_resize_properties).processed), class: 'thumbnail'
|
|
57
|
-
- elsif playable? @upload.file
|
|
54
|
+
= render_entity_content @upload, :description
|
|
55
|
+
- if playable? @upload.file
|
|
58
56
|
= render 'player', file: @upload.file
|
|
59
|
-
- elsif @upload.file.
|
|
60
|
-
= image_tag main_app.url_for(@upload.file.
|
|
57
|
+
- elsif @upload.file.representable?
|
|
58
|
+
= image_tag main_app.url_for(@upload.file.representation(image_resize_properties).processed),
|
|
59
|
+
class: 'thumbnail'
|
|
61
60
|
- else
|
|
62
61
|
= image_tag main_app.url_for(thumbnail_preview_placeholder_file), class: 'thumbnail'
|
|
63
62
|
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
%aside.tabs
|
|
2
2
|
%ul.tabs__tabs-list
|
|
3
3
|
%li.tabs__tabs-list__tab#tab-albums
|
|
4
|
-
%a{ href: '#tab-content-albums', onclick: 'selectTab(event, "albums")' }
|
|
4
|
+
%a{ href: '#tab-content-albums', onclick: 'selectTab(event, "albums")' }
|
|
5
|
+
= _('Albums')
|
|
6
|
+
%span.badge.badge--notification= user.albums_count
|
|
5
7
|
%li.tabs__tabs-list__tab#tab-articles
|
|
6
|
-
%a{ href: '#tab-content-articles', onclick: 'selectTab(event, "articles")' }
|
|
8
|
+
%a{ href: '#tab-content-articles', onclick: 'selectTab(event, "articles")' }
|
|
9
|
+
= _('Articles')
|
|
10
|
+
%span.badge.badge--notification= user.articles_count
|
|
7
11
|
%li.tabs__tabs-list__tab#tab-notes
|
|
8
|
-
%a{ href: '#tab-content-notes', onclick: 'selectTab(event, "notes")' }
|
|
12
|
+
%a{ href: '#tab-content-notes', onclick: 'selectTab(event, "notes")' }
|
|
13
|
+
= _('Notes')
|
|
14
|
+
%span.badge.badge--notification= user.notes_count
|
|
9
15
|
%li.tabs__tabs-list__tab#tab-projects
|
|
10
|
-
%a{ href: '#tab-content-projects', onclick: 'selectTab(event, "projects")' }
|
|
16
|
+
%a{ href: '#tab-content-projects', onclick: 'selectTab(event, "projects")' }
|
|
17
|
+
= _('Projects')
|
|
18
|
+
%span.badge.badge--notification= user.projects_count
|
|
11
19
|
%li.tabs__tabs-list__tab#tab-uploads
|
|
12
|
-
%a{ href: '#tab-content-uploads', onclick: 'selectTab(event, "uploads")' }
|
|
20
|
+
%a{ href: '#tab-content-uploads', onclick: 'selectTab(event, "uploads")' }
|
|
21
|
+
= _('Uploads')
|
|
22
|
+
%span.badge.badge--notification= user.uploads_count
|
|
13
23
|
|
|
14
24
|
%section.tabs__tab-content.albums-list#tab-content-albums
|
|
15
25
|
.tabs__tab-content__title
|
|
@@ -2,37 +2,43 @@
|
|
|
2
2
|
%header
|
|
3
3
|
.icon
|
|
4
4
|
- if Elabs.use_avatars && user.avatar.attached?
|
|
5
|
-
= image_tag
|
|
5
|
+
= image_tag avatar_image(user.avatar, :small)
|
|
6
6
|
- else
|
|
7
7
|
= icon 'user', %w[3x fw]
|
|
8
8
|
.headers
|
|
9
9
|
%h3= link_to user.display_name, user, class: 'title'
|
|
10
10
|
|
|
11
11
|
%ul.informations
|
|
12
|
-
- if user.real_name
|
|
12
|
+
- if user.real_name.present?
|
|
13
13
|
%li
|
|
14
14
|
%b @#{user.username}
|
|
15
|
+
%ul.informations
|
|
15
16
|
%li
|
|
16
17
|
%b= _('Role:')
|
|
17
18
|
= user.role
|
|
18
|
-
|
|
19
19
|
%li
|
|
20
20
|
%b= _('Since:')
|
|
21
21
|
= short_date user.created_at
|
|
22
22
|
|
|
23
23
|
.content
|
|
24
|
-
|
|
25
|
-
=
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
=
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
=
|
|
38
|
-
|
|
24
|
+
.btn-group.btn-group--block
|
|
25
|
+
= link_to user_projects_path(user),
|
|
26
|
+
class: 'btn btn--small',
|
|
27
|
+
title: format(n_('%<nb>i project', '%<nb>i projects', user.projects_count), nb: user.projects_count) do
|
|
28
|
+
= icon_text 'cog', user.projects_count, ['fw']
|
|
29
|
+
= link_to user_articles_path(user),
|
|
30
|
+
class: 'btn btn--small',
|
|
31
|
+
title: format(n_('%<nb>i article', '%<nb>i articles', user.articles_count), nb: user.articles_count) do
|
|
32
|
+
= icon_text 'font', user.articles_count, ['fw']
|
|
33
|
+
= link_to user_notes_path(user),
|
|
34
|
+
class: 'btn btn--small',
|
|
35
|
+
title: format(n_('%<nb>i note', '%<nb>i notes', user.notes_count), nb: user.notes_count) do
|
|
36
|
+
= icon_text 'sticky-note', user.notes_count, ['fw']
|
|
37
|
+
= link_to user_uploads_path(user),
|
|
38
|
+
class: 'btn btn--small',
|
|
39
|
+
title: format(n_('%<nb>i upload', '%<nb>i uploads', user.uploads_count), nb: user.uploads_count) do
|
|
40
|
+
= icon_text 'image', user.uploads_count, ['fw']
|
|
41
|
+
= link_to user_albums_path(user),
|
|
42
|
+
class: 'btn btn--small',
|
|
43
|
+
title: format(n_('%<nb>i album', '%<nb>i albums', user.albums_count), nb: user.albums_count) do
|
|
44
|
+
= icon_text 'book', user.albums_count, ['fw']
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
%ul
|
|
5
5
|
- if Elabs.use_avatars && @user.avatar.attached?
|
|
6
6
|
%li.image
|
|
7
|
-
= image_tag
|
|
7
|
+
= image_tag avatar_image(@user.avatar, :medium)
|
|
8
8
|
%li
|
|
9
9
|
= icon('user', ['fw'])
|
|
10
10
|
%strong= _('Username:')
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
.content
|
|
43
43
|
- if @user.biography.present?
|
|
44
44
|
%article
|
|
45
|
-
=
|
|
45
|
+
= render_entity_content @user, :biography
|
|
46
46
|
|
|
47
47
|
= render 'associations',
|
|
48
48
|
user: @user,
|