Skip to content

Commit 1147a89

Browse files
MrSerthDome-GER
authored andcommitted
Unify usage of Bootstrap modal
* Use a common template for all modals * Align structure with CodeOcean
1 parent bb28432 commit 1147a89

7 files changed

Lines changed: 66 additions & 73 deletions

File tree

app/views/shared/_modal.html.slim

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
- modal_root_attributes ||= {}
2+
- modal_body_attributes ||= {}
23
- title ||= ''
34
- size ||= '' # default is medium size, which is just ''
45

56

6-
.modal.fade *modal_root_attributes aria-hidden="true" tabindex="-1"
7-
.modal-dialog.modal-dialog-centered class=size
7+
.modal.fade *modal_root_attributes aria-hidden='true' aria-labelledby='modal-title' role='dialog' tabindex='-1'
8+
.modal-dialog.modal-dialog-centered.modal-dialog-scrollable class=size
89
.modal-content
910
.modal-header
10-
h6.modal-title = title
11-
button.btn-close data-bs-dismiss="modal" aria-label=t('common.button.close') type="button"
11+
h6.modal-title#modal-title = title
12+
button.btn-close data-bs-dismiss='modal' aria-label=t('common.button.close') type='button'
1213
span.visually-hidden = t('common.button.close')
1314

14-
.modal-body
15-
= clear_content_for :modal_body
15+
.modal-body *modal_body_attributes
16+
= render(layout: false, locals: (local_assigns[:template_variables] || {}).merge(modal: true), template:)
1617

1718
- if content_for? :modal_footer
1819
.modal-footer
Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
.bootstrap-modal.modal.fade#import-export-dialog.hide
2-
.modal-dialog.modal-lg
3-
.modal-content
4-
.modal-header
5-
h4.modal-title
6-
= title
7-
= button_tag class: 'btn-close', 'data-bs-dismiss': 'modal' do
8-
span.visually-hidden = t('common.button.close')
9-
.modal-body#import-export-modal-body
10-
.modal-footer
11-
= button_tag class: 'btn btn-important', 'data-bs-dismiss': 'modal' do
12-
= t('common.button.close')
1+
- content_for :modal_footer, flush: true do
2+
= button_tag class: 'btn btn-important', 'data-bs-dismiss': 'modal' do
3+
= t('common.button.close')
Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,16 @@
1-
- content_for :modal_body, flush: true do
2-
- Rating::SUBCATEGORIES.each do |category|
3-
span.rating-category-container
4-
span
5-
= t("activerecord.attributes.rating.#{category}")
6-
span.task-rating
7-
= render('task_star_rating', rating: @user_rating.send(category), is_input: true, category:)
8-
hr
1+
- Rating::SUBCATEGORIES.each do |category|
92
span.rating-category-container
103
span
11-
= t('activerecord.attributes.rating.overall_rating')
4+
= t("activerecord.attributes.rating.#{category}")
125
span.task-rating
13-
= render('task_star_rating', rating: @user_rating.overall_rating, is_input: true, category: :overall_rating)
6+
= render('task_star_rating', rating: @user_rating.send(category), is_input: true, category:)
7+
hr
8+
span.rating-category-container
9+
span
10+
= t('activerecord.attributes.rating.overall_rating')
11+
span.task-rating
12+
= render('task_star_rating', rating: @user_rating.overall_rating, is_input: true, category: :overall_rating)
1413

1514
- content_for :modal_footer, flush: true do
1615
button.btn.btn-light.m-0#ratingModalSaveButton data-bs-dismiss="modal" disabled=@user_rating.invalid?
1716
= t('common.button.save')
18-
19-
= render 'shared/modal',
20-
title: Rating.model_name.human,
21-
size: 'modal-sm',
22-
modal_root_attributes: {id: 'ratingModal', 'data-task-id': @task.id}

app/views/tasks/index.html.slim

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,8 @@
7979

8080
= render 'tasks/tasks'
8181

82-
= render 'tasks/import_export_dialog', title: t('.button.import_tasks')
82+
= render 'shared/modal',
83+
title: t('.button.import_tasks'),
84+
modal_root_attributes: {id: 'import-export-dialog'},
85+
modal_body_attributes: {id: 'import-export-modal-body'},
86+
template: 'tasks/_import_export_dialog'

app/views/tasks/show.html.slim

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@
1919
- if current_user && policy(Rating).new_for_task?(@task)
2020
.btn.btn-light.btn-sm#ratingModalOpenButton data-bs-toggle="modal" data-bs-target="#ratingModal"
2121
= t('.button.rate')
22-
= render 'rating_modal'
22+
= render 'shared/modal',
23+
title: Rating.model_name.human,
24+
size: 'modal-sm',
25+
modal_root_attributes: {id: 'ratingModal', 'data-task-id': @task.id},
26+
template: 'tasks/_rating_modal'
2327
.row
2428
- section_index = 1
2529
.col-md-12.my-3
@@ -644,5 +648,8 @@
644648

645649
#page_end.mt-5
646650

647-
648-
= render 'tasks/import_export_dialog', title: t('.button.export_tasks')
651+
= render 'shared/modal',
652+
title: t('.button.export_tasks'),
653+
modal_root_attributes: {id: 'import-export-dialog'},
654+
modal_body_attributes: {id: 'import-export-modal-body'},
655+
template: 'tasks/_import_export_dialog'
Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1-
.bootstrap-modal.modal.fade#notification-modal
2-
.modal-dialog
3-
.modal-content
4-
.modal-header
5-
h4.modal-title
6-
= title
7-
= button_tag class: 'btn-close', data: {'bs-dismiss': 'modal'} do
8-
span.visually-hidden = t('common.button.close')
9-
.modal-body#notification-modal-body
10-
= yield
11-
.modal-footer
12-
- if defined?(confirm_notification_javascript)
13-
= button_tag class: 'btn btn-important green-border', onclick: confirm_notification_javascript do
14-
= t('common.button.confirm')
15-
- elsif defined?(confirm_notification_button)
16-
= button_to confirm_notification_button[:target], method: confirm_notification_button[:method], form_class: 'd-inline margin-right-5px', class: 'btn btn-important green-border' do
17-
= t('common.button.confirm')
18-
= button_tag class: 'btn btn-important red-border', data: {'bs-dismiss': 'modal'} do
19-
= t('common.button.cancel')
1+
= t('users.shared.notification_modal.delete_modal.content.intro')
2+
ul
3+
li
4+
= t('users.shared.notification_modal.delete_modal.content.tasks_header')
5+
ul
6+
li
7+
= t('users.shared.notification_modal.delete_modal.content.tasks_content')
8+
li
9+
= t('users.shared.notification_modal.delete_modal.content.groups_header')
10+
ul
11+
li
12+
= t('users.shared.notification_modal.delete_modal.content.groups_1')
13+
li
14+
= t('users.shared.notification_modal.delete_modal.content.groups_2')
15+
li
16+
= t('users.shared.notification_modal.delete_modal.content.groups_3')
17+
18+
- content_for :modal_footer, flush: true do
19+
- if defined?(confirm_notification_javascript)
20+
= button_tag class: 'btn btn-important green-border', onclick: confirm_notification_javascript do
21+
= t('common.button.confirm')
22+
- elsif defined?(confirm_notification_button)
23+
= button_to confirm_notification_button[:target], method: confirm_notification_button[:method], form_class: 'd-inline margin-right-5px', class: 'btn btn-important green-border' do
24+
= t('common.button.confirm')
25+
= button_tag class: 'btn btn-important red-border', data: {'bs-dismiss': 'modal'} do
26+
= t('common.button.cancel')

app/views/users/show.html.slim

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,20 +113,9 @@
113113
=< t('common.button.delete')
114114
= link_to t('common.button.back'), :back, class: 'btn btn-important'
115115

116-
= render layout: 'users/shared/notification_modal', locals: {title: t('.delete_modal.title'), confirm_notification_button: {target: user_registration_path, method: 'delete'}} do
117-
= t('users.shared.notification_modal.delete_modal.content.intro')
118-
ul
119-
li
120-
= t('users.shared.notification_modal.delete_modal.content.tasks_header')
121-
ul
122-
li
123-
= t('users.shared.notification_modal.delete_modal.content.tasks_content')
124-
li
125-
= t('users.shared.notification_modal.delete_modal.content.groups_header')
126-
ul
127-
li
128-
= t('users.shared.notification_modal.delete_modal.content.groups_1')
129-
li
130-
= t('users.shared.notification_modal.delete_modal.content.groups_2')
131-
li
132-
= t('users.shared.notification_modal.delete_modal.content.groups_3')
116+
= render 'shared/modal',
117+
title: t('.delete_modal.title'),
118+
modal_root_attributes: {id: 'notification-modal'},
119+
modal_body_attributes: {id: 'notification-modal-body'},
120+
template: 'users/shared/_notification_modal',
121+
template_variables: {title: t('.delete_modal.title'), confirm_notification_button: {target: user_registration_path, method: 'delete'}}

0 commit comments

Comments
 (0)