decidim-meetings 0.11.2 → 0.12.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/admin/decidim_meetings_manifest.js +2 -0
  3. data/app/assets/javascripts/decidim/meetings/admin/agendas.js.es6 +158 -0
  4. data/app/assets/javascripts/decidim/meetings/admin/meetings_form.js.es6 +19 -0
  5. data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +15 -0
  6. data/app/cells/decidim/meetings/join_meeting_button/show.erb +27 -0
  7. data/app/cells/decidim/meetings/join_meeting_button_cell.rb +37 -0
  8. data/app/cells/decidim/meetings/meeting_cell.rb +2 -13
  9. data/app/cells/decidim/meetings/meeting_list_item_cell.rb +8 -0
  10. data/app/cells/decidim/meetings/meeting_m/address.erb +14 -0
  11. data/app/cells/decidim/meetings/meeting_m/data.erb +2 -0
  12. data/app/cells/decidim/meetings/meeting_m/date.erb +8 -0
  13. data/app/cells/decidim/meetings/meeting_m/footer.erb +9 -0
  14. data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +17 -0
  15. data/app/cells/decidim/meetings/meeting_m/single_date.erb +9 -0
  16. data/app/cells/decidim/meetings/meeting_m/tags.erb +1 -0
  17. data/app/cells/decidim/meetings/meeting_m_cell.rb +37 -4
  18. data/app/commands/decidim/meetings/admin/copy_meeting.rb +3 -0
  19. data/app/commands/decidim/meetings/admin/create_agenda.rb +93 -0
  20. data/app/commands/decidim/meetings/admin/create_meeting.rb +3 -0
  21. data/app/commands/decidim/meetings/admin/create_minutes.rb +55 -0
  22. data/app/commands/decidim/meetings/admin/update_agenda.rb +90 -0
  23. data/app/commands/decidim/meetings/admin/update_meeting.rb +4 -1
  24. data/app/commands/decidim/meetings/admin/update_minutes.rb +62 -0
  25. data/app/controllers/decidim/meetings/admin/agenda_controller.rb +75 -0
  26. data/app/controllers/decidim/meetings/admin/attachments_controller.rb +1 -1
  27. data/app/controllers/decidim/meetings/admin/invites_controller.rb +4 -0
  28. data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +4 -0
  29. data/app/controllers/decidim/meetings/admin/meeting_copies_controller.rb +4 -0
  30. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +10 -0
  31. data/app/controllers/decidim/meetings/admin/minutes_controller.rb +69 -0
  32. data/app/controllers/decidim/meetings/admin/registrations_controller.rb +6 -0
  33. data/app/controllers/decidim/meetings/meetings_controller.rb +7 -1
  34. data/app/controllers/decidim/meetings/registrations_controller.rb +12 -6
  35. data/app/forms/decidim/meetings/admin/meeting_agenda_form.rb +54 -0
  36. data/app/forms/decidim/meetings/admin/meeting_agenda_items_form.rb +33 -0
  37. data/app/forms/decidim/meetings/admin/meeting_copy_form.rb +8 -0
  38. data/app/forms/decidim/meetings/admin/meeting_form.rb +8 -0
  39. data/app/forms/decidim/meetings/admin/meeting_registration_invite_form.rb +2 -1
  40. data/app/forms/decidim/meetings/admin/minutes_form.rb +20 -0
  41. data/app/helpers/decidim/meetings/admin/application_helper.rb +13 -0
  42. data/{lib/decidim/meetings/view_model.rb → app/helpers/decidim/meetings/meeting_cells_helper.rb} +7 -1
  43. data/app/helpers/decidim/meetings/meetings_helper.rb +67 -0
  44. data/app/models/decidim/meetings/agenda.rb +19 -0
  45. data/app/models/decidim/meetings/agenda_item.rb +35 -0
  46. data/app/models/decidim/meetings/meeting.rb +52 -3
  47. data/app/models/decidim/meetings/minutes.rb +19 -0
  48. data/app/permissions/decidim/meetings/admin/permissions.rb +69 -0
  49. data/app/permissions/decidim/meetings/permissions.rb +41 -0
  50. data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +4 -1
  51. data/app/presenters/decidim/meetings/admin_log/minutes_presenter.rb +42 -0
  52. data/app/presenters/decidim/meetings/admin_log/value_types/organizer_presenter.rb +69 -0
  53. data/app/types/decidim/meetings/meeting_type.rb +4 -4
  54. data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +50 -0
  55. data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +26 -0
  56. data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +19 -0
  57. data/app/views/decidim/meetings/admin/agenda/_form.html.erb +66 -0
  58. data/app/views/decidim/meetings/admin/agenda/edit.html.erb +7 -0
  59. data/app/views/decidim/meetings/admin/agenda/new.html.erb +8 -0
  60. data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
  61. data/app/views/decidim/meetings/admin/meeting_copies/_form.html.erb +15 -1
  62. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +15 -0
  63. data/app/views/decidim/meetings/admin/meetings/index.html.erb +9 -7
  64. data/app/views/decidim/meetings/admin/minutes/_form.html.erb +23 -0
  65. data/app/views/decidim/meetings/admin/minutes/edit.html.erb +7 -0
  66. data/app/views/decidim/meetings/admin/minutes/new.html.erb +7 -0
  67. data/app/views/decidim/meetings/admin/registrations/_form.html.erb +11 -9
  68. data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +0 -1
  69. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +31 -0
  70. data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +48 -0
  71. data/app/views/decidim/meetings/meetings/_meetings.html.erb +1 -1
  72. data/app/views/decidim/meetings/meetings/show.html.erb +23 -12
  73. data/app/views/decidim/participatory_spaces/_meeting.html.erb +1 -1
  74. data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +6 -0
  75. data/config/locales/ca.yml +106 -4
  76. data/config/locales/en.yml +106 -4
  77. data/config/locales/es.yml +106 -4
  78. data/config/locales/eu.yml +106 -4
  79. data/config/locales/fi.yml +106 -4
  80. data/config/locales/fr.yml +106 -4
  81. data/config/locales/gl.yml +106 -4
  82. data/config/locales/it.yml +106 -4
  83. data/config/locales/nl.yml +106 -4
  84. data/config/locales/pl.yml +112 -4
  85. data/config/locales/pt-BR.yml +106 -4
  86. data/config/locales/pt.yml +106 -4
  87. data/config/locales/ru.yml +97 -4
  88. data/config/locales/sv.yml +106 -4
  89. data/config/locales/uk.yml +112 -4
  90. data/db/migrate/20180403145218_add_meeting_types.rb +8 -0
  91. data/db/migrate/20180404075312_add_organizer_to_meetings.rb +7 -0
  92. data/db/migrate/20180406080619_create_meetings_minutes.rb +15 -0
  93. data/db/migrate/20180419131924_create_decidim_agendas.rb +13 -0
  94. data/db/migrate/20180419132104_create_decidim_agenda_items.rb +16 -0
  95. data/db/migrate/20180516102301_index_meetings_as_searchable_resources.rb +24 -0
  96. data/lib/decidim/meetings/admin_engine.rb +2 -0
  97. data/lib/decidim/meetings/component.rb +3 -2
  98. data/lib/decidim/meetings/engine.rb +16 -6
  99. data/lib/decidim/meetings/test/factories.rb +44 -0
  100. data/lib/decidim/meetings/version.rb +1 -1
  101. metadata +63 -21
  102. data/app/cells/decidim/meetings/meeting_m/header.erb +0 -5
  103. data/app/cells/decidim/meetings/meeting_m/show.erb +0 -21
  104. data/app/models/decidim/meetings/abilities/current_user_ability.rb +0 -43
  105. data/app/views/decidim/meetings/meetings/_registration_confirm.html.erb +0 -15
@@ -7,10 +7,10 @@ module Decidim
7
7
  description "A meeting"
8
8
 
9
9
  interfaces [
10
- Decidim::Comments::CommentableInterface,
11
- Decidim::Core::CategorizableInterface,
12
- Decidim::Core::ScopableInterface,
13
- Decidim::Core::AttachableInterface
10
+ -> { Decidim::Comments::CommentableInterface },
11
+ -> { Decidim::Core::CategorizableInterface },
12
+ -> { Decidim::Core::ScopableInterface },
13
+ -> { Decidim::Core::AttachableInterface }
14
14
  ]
15
15
 
16
16
  field :id, !types.ID
@@ -0,0 +1,50 @@
1
+ <% agenda_item = form.object %>
2
+ <div class="card meeting-agenda-item" id="<%= tabs_id %>-field">
3
+ <div class="card-divider agenda-item-divider">
4
+ <h2 class="card-title">
5
+ <span>
6
+ <%== "#{icon("move")} #{t(".agenda_item")}" %>
7
+ </span>
8
+
9
+ <button class="button small alert hollow move-up-agenda-item button--title">
10
+ <%== "#{icon("arrow-top")} #{t(".up")}" %>
11
+ </button>
12
+
13
+ <button class="button small alert hollow move-down-agenda-item button--title">
14
+ <%== "#{icon("arrow-bottom")} #{t(".down")}" %>
15
+ </button>
16
+
17
+ <button class="button small alert hollow remove-agenda-item button--title">
18
+ <%= t(".remove") %>
19
+ </button>
20
+ </h2>
21
+ </div>
22
+
23
+ <div class="card-section">
24
+ <%= render "agenda_item_fields", tabs_id: tabs_id, form: form, agenda_item: agenda_item %>
25
+
26
+ <div class="card">
27
+ <div class="card-divider">
28
+ <h2 class="card-title"><%= t(".agenda_item_children") %></h2>
29
+ </div>
30
+ <div class="card-section">
31
+ <div class="meeting-agenda-item-childs">
32
+ <template>
33
+ <%= fields_for "meeting_agenda[agenda_items][#{agenda_item.to_param}][agenda_item_children][#{blank_agenda_item.to_param_child}]", blank_agenda_item do |agenda_item_child_form| %>
34
+ <%= render "agenda_item_child", form: agenda_item_child_form, tabs_id: tabs_id, tabs_id_child: tabs_id_for_agenda_item_child(blank_agenda_item), editable: true %>
35
+ <% end %>
36
+ </template>
37
+
38
+ <div class="meeting-agenda-item-childs-list">
39
+ <% agenda_item.agenda_item_children.each do |agenda_item_child| %>
40
+ <%= fields_for "meeting_agenda[agenda_items][#{agenda_item.to_param}][agenda_item_children][]", agenda_item_child do |agenda_item_child_form| %>
41
+ <%= render "agenda_item_child", form: agenda_item_child_form, tabs_id: tabs_id, tabs_id_child: tabs_id_for_agenda_item_child(agenda_item_child), editable: true %>
42
+ <% end %>
43
+ <% end %>
44
+ </div>
45
+ <button class="button add-agenda-item-child"><%= t(".add_agenda_item_child") %></button>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
@@ -0,0 +1,26 @@
1
+ <% agenda_item_child = form.object %>
2
+ <div class="card meeting-agenda-item-child" id="<%= tabs_id %>-child-<%= tabs_id_child %>-field">
3
+ <div class="card-divider agenda-item-child-divider">
4
+ <h2 class="card-title">
5
+ <span>
6
+ <%== "#{icon("move")} #{t(".agenda_item_child")}" %>
7
+ </span>
8
+
9
+ <button class="button small alert hollow move-up-agenda-item-child button--title">
10
+ <%== "#{icon("arrow-top")} #{t(".up")}" %>
11
+ </button>
12
+
13
+ <button class="button small alert hollow move-down-agenda-item-child button--title">
14
+ <%== "#{icon("arrow-bottom")} #{t(".down")}" %>
15
+ </button>
16
+
17
+ <button class="button small alert hollow remove-agenda-item-child button--title">
18
+ <%= t(".remove") %>
19
+ </button>
20
+ </h2>
21
+ </div>
22
+
23
+ <div class="card-section">
24
+ <%= render "agenda_item_fields", tabs_id: tabs_id_child, form: form, agenda_item: agenda_item_child %>
25
+ </div>
26
+ </div>
@@ -0,0 +1,19 @@
1
+ <div class="grid-x">
2
+ <div class="cell auto">
3
+ <%= form.translated :text_field, :title, tabs_id: tabs_id %>
4
+ </div>
5
+ <div class="cell small-2">
6
+ <%= form.number_field :duration, tabs_id: tabs_id, min: 0 %>
7
+ </div>
8
+ </div>
9
+
10
+ <div class="grid-x">
11
+ <div class="cell auto">
12
+ <%= form.translated :editor, :description, tabs_id: tabs_id, rows: 6 %>
13
+ </div>
14
+ </div>
15
+
16
+ <%= form.hidden_field :id %>
17
+ <%= form.hidden_field :parent_id %>
18
+ <%= form.hidden_field :position, value: agenda_item.position || 0 %>
19
+ <%= form.hidden_field :deleted %>
@@ -0,0 +1,66 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title">
4
+ <div class="flex--sbc">
5
+ <div class="grid-x align-middle">
6
+ <u> <%= translated_attribute(meeting.title) %> </u> &nbsp;<%= icon "arrow-right" %>&nbsp;<%= title %>
7
+ </div>
8
+ </div>
9
+ </h2>
10
+ </div>
11
+ <div class="card-section">
12
+ <div class="grid-x card-title">
13
+ <div class="cell small-2"><strong><%= t(".start_date") %></strong></div>
14
+ <div class="cell small-2"><strong><%= t(".end_date") %></strong></div>
15
+ </div>
16
+ <div class="grid-x text-muted">
17
+ <div class="cell small-2"><%= meeting.start_time.strftime("%m/%d/%Y %R") %></div>
18
+ <div class="cell small-2"><%= meeting.end_time.strftime("%m/%d/%Y %R") %></div>
19
+ </div>
20
+ </div>
21
+ </div>
22
+
23
+ <div class="card">
24
+ <div class="card-divider">
25
+ <h2 class="card-title">
26
+ <%= title %>
27
+ </h2>
28
+ </div>
29
+
30
+ <div class="card-section">
31
+ <div class="row column">
32
+ <%= form.translated :text_field, :title, autofocus: true %>
33
+ </div>
34
+
35
+ <div class="row column">
36
+ <%= form.check_box :visible %>
37
+ </div>
38
+ </div>
39
+ </div>
40
+
41
+ <div class="card">
42
+ <div class="card-divider">
43
+ <h2 class="card-title"><%= t(".agenda_items") %></h2>
44
+ </div>
45
+
46
+ <div class="card-section">
47
+ <div class="meeting-agenda-items">
48
+ <template>
49
+ <%= fields_for "meeting_agenda[agenda_items][#{blank_agenda_item.to_param}]", blank_agenda_item do |agenda_item_form| %>
50
+ <%= render "agenda_item", form: agenda_item_form, tabs_id: tabs_id_for_agenda_item(blank_agenda_item), editable: true %>
51
+ <% end %>
52
+ </template>
53
+
54
+ <div class="meeting-agenda-items-list">
55
+ <% @form.agenda_items.each do |agenda_item| %>
56
+ <%= fields_for "meeting_agenda[agenda_items][]", agenda_item do |agenda_item_form| %>
57
+ <%= render "agenda_item", form: agenda_item_form, tabs_id: tabs_id_for_agenda_item(agenda_item), editable: true %>
58
+ <% end %>
59
+ <% end %>
60
+ </div>
61
+ <button class="button add-agenda-item"><%= t(".add_agenda_item") %></button>
62
+ </div>
63
+ </div>
64
+ </div>
65
+
66
+ <%= javascript_include_tag "decidim/meetings/admin/agendas" %>
@@ -0,0 +1,7 @@
1
+ <%= decidim_form_for(@form, url: meeting_agenda_path(meeting, agenda), html: { class: "form edit_agenda" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
+
4
+ <div class="button--double form-general-submit">
5
+ <%= f.submit t(".update") %>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <%= decidim_form_for(@form, url: meeting_agenda_index_path(meeting), html: { method: :post, class: "form new_agenda" }) do |f| %>
2
+
3
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
4
+
5
+ <div class="button--double form-general-submit">
6
+ <%= f.submit t(".create") %>
7
+ </div>
8
+ <% end %>
@@ -33,8 +33,22 @@
33
33
  <%= form.datetime_field :end_time %>
34
34
  </div>
35
35
  </div>
36
- </div>
37
36
 
37
+ <div class="row column">
38
+ <% prompt_options = { url: decidim_admin.users_organization_url, text: t(".select_organizer") } %>
39
+ <%= form.autocomplete_select(:organizer_id, form.object.organizer.presence, { multiple: false }, prompt_options) do |user|
40
+ { value: user.id, label: "#{user.name} (@#{user.nickname})" }
41
+ end %>
42
+ </div>
43
+
44
+ <div class="row column" id="private_meeting">
45
+ <%= form.check_box :private_meeting %>
46
+ </div>
47
+
48
+ <div class="row column" id="transparent">
49
+ <%= form.check_box :transparent %>
50
+ </div>
51
+ </div>
38
52
  </div>
39
53
 
40
54
  <%= render "decidim/meetings/admin/meetings/services", form: form %>
@@ -44,6 +44,21 @@
44
44
  <%= form.categories_select :decidim_category_id, current_participatory_space.categories, prompt: "", disable_parents: false %>
45
45
  </div>
46
46
  </div>
47
+
48
+ <div class="row column">
49
+ <% prompt_options = { url: decidim_admin.users_organization_url, text: t(".select_organizer") } %>
50
+ <%= form.autocomplete_select(:organizer_id, form.object.organizer.presence, { multiple: false }, prompt_options) do |user|
51
+ { value: user.id, label: "#{user.name} (@#{user.nickname})" }
52
+ end %>
53
+ </div>
54
+
55
+ <div class="row column" id="private_meeting">
56
+ <%= form.check_box :private_meeting %>
57
+ </div>
58
+
59
+ <div class="row column" id="transparent">
60
+ <%= form.check_box :transparent %>
61
+ </div>
47
62
  </div>
48
63
  </div>
49
64
 
@@ -2,7 +2,7 @@
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title">
4
4
  <%= t(".title") %>
5
- <%= link_to t("actions.new", scope: "decidim.meetings", name: t("models.meeting.name", scope: "decidim.meetings.admin")), new_meeting_path, class: "button tiny button--title" if can? :manage, current_component %>
5
+ <%= link_to t("actions.new", scope: "decidim.meetings", name: t("models.meeting.name", scope: "decidim.meetings.admin")), new_meeting_path, class: "button tiny button--title" if allowed_to? :create, :meeting %>
6
6
  </h2>
7
7
  </div>
8
8
 
@@ -48,28 +48,30 @@
48
48
  <td class="table-list__actions">
49
49
  <%= icon_link_to "eye", resource_locator(meeting).path, t("actions.preview", scope: "decidim.meetings"), class: "action-icon--preview", target: :blank %>
50
50
 
51
- <% if can? :update, current_component %>
51
+ <% if allowed_to? :copy, :meeting, meeting: meeting %>
52
52
  <%= icon_link_to "clipboard", new_meeting_copy_path(meeting), t("actions.duplicate", scope: "decidim.admin"), class: "action-icon--copy" %>
53
53
  <% end %>
54
54
 
55
- <% if can? :update, current_component %>
55
+ <% if allowed_to? :update, :meeting, meeting: meeting %>
56
56
  <%= icon_link_to "pencil", edit_meeting_path(meeting), t("actions.edit", scope: "decidim.meetings"), class: "action-icon--edit" %>
57
57
  <%= icon_link_to "people", edit_meeting_registrations_path(meeting), t("actions.registrations", scope: "decidim.meetings"), class: "action-icon--registrations" %>
58
+ <%= icon_link_to "clock", meeting.minutes.present? ? edit_meeting_minute_path(meeting, meeting.minutes) : new_meeting_minute_path(meeting), t("actions.minutes", scope: "decidim.meetings"), class: "action-icon--minutes" %>
59
+ <%= icon_link_to "calendar", meeting.agenda.present? ? edit_meeting_agenda_path(meeting, meeting.agenda) : new_meeting_agenda_path(meeting), t("actions.agenda", scope: "decidim.meetings"), class: "action-icon--agenda" %>
58
60
  <% end %>
59
61
 
60
- <% if can? :update, current_component %>
62
+ <% if allowed_to? :close, :meeting, meeting: meeting %>
61
63
  <%= icon_link_to "lock-locked", edit_meeting_meeting_close_path(meeting_id: meeting.id, id: meeting.id), t("actions.close", scope: "decidim.meetings"), class: "action-icon--close" %>
62
64
  <% end %>
63
65
 
64
- <% if can? :update, current_component %>
66
+ <% if allowed_to? :update, :meeting, meeting: meeting %>
65
67
  <%= icon_link_to "folder", meeting_attachment_collections_path(meeting), t("actions.attachment_collections", scope: "decidim.meetings"), class: "action-icon--attachment_collections" %>
66
68
  <% end %>
67
69
 
68
- <% if can? :update, current_component %>
70
+ <% if allowed_to? :update, :meeting, meeting: meeting %>
69
71
  <%= icon_link_to "paperclip", meeting_attachments_path(meeting), t("actions.attachments", scope: "decidim.meetings"), class: "action-icon--attachments" %>
70
72
  <% end %>
71
73
 
72
- <% if can? :destroy, current_component %>
74
+ <% if allowed_to? :destroy, :meeting, meeting: meeting %>
73
75
  <%= icon_link_to "circle-x", meeting_path(meeting), t("actions.destroy", scope: "decidim.meetings"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.meetings") } %>
74
76
  <% end %>
75
77
  </td>
@@ -0,0 +1,23 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title"><%= title %></h2>
4
+ </div>
5
+
6
+ <div class="card-section">
7
+ <div class="row column">
8
+ <%= form.translated :editor, :description %>
9
+ </div>
10
+
11
+ <div class="row column">
12
+ <%= form.text_field :video_url %>
13
+ </div>
14
+
15
+ <div class="row column">
16
+ <%= form.text_field :audio_url %>
17
+ </div>
18
+
19
+ <div class="row column">
20
+ <%= form.check_box :visible %>
21
+ </div>
22
+ </div>
23
+ </div>
@@ -0,0 +1,7 @@
1
+ <%= decidim_form_for(@form, url: meeting_minute_path(@current_meeting, @minutes), html: { class: "form edit_minutes" }) do |f| %>
2
+ <%= render partial: "form", object: f %>
3
+
4
+ <div class="button--double form-general-submit">
5
+ <%= f.submit t(".update") %>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <%= decidim_form_for(@form, url: meeting_minutes_path(current_meeting), html: { method: :post, class: "form new_minutes" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
+
4
+ <div class="button--double form-general-submit">
5
+ <%= f.submit t(".create") %>
6
+ </div>
7
+ <% end %>
@@ -2,15 +2,17 @@
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title">
4
4
  <%= title %>
5
- <%= link_to t(".invite_user"), meeting.registrations_enabled ? new_meeting_registrations_invites_path(meeting) : "#", class: "button tiny button--title #{'disabled' unless meeting.registrations_enabled?}" %>
6
- <span class="exports dropdown tiny button button--simple button--title" data-toggle="export-dropdown"><%= t "actions.export", scope: "decidim.admin" %></span>
7
- <div class="dropdown-pane" id="export-dropdown" data-dropdown data-auto-focus="true" data-close-on-click="true">
8
- <ul class="vertical menu add-components">
9
- <% %w{CSV JSON Excel}.each do |format| %>
10
- <li class="exports--format--<%= format.downcase %> exports--registrations"><%= link_to t("decidim.admin.exports.export_as", name: t("decidim.#{current_component.manifest.name}.admin.exports.registrations"), export_format: format), export_meeting_registrations_path(meeting_id: meeting, format: format) %></li>
11
- <% end %>
12
- </ul>
13
- </div>
5
+ <%= link_to t(".invite_user"), meeting.registrations_enabled ? new_meeting_registrations_invites_path(meeting) : "#", class: "button tiny button--title #{'disabled' unless allowed_to? :invite_user, :meeting, meeting: meeting}" %>
6
+ <% if allowed_to? :export_registrations, :meeting, meeting: meeting %>
7
+ <span class="exports dropdown tiny button button--simple button--title" data-toggle="export-dropdown"><%= t "actions.export", scope: "decidim.admin" %></span>
8
+ <div class="dropdown-pane" id="export-dropdown" data-dropdown data-auto-focus="true" data-close-on-click="true">
9
+ <ul class="vertical menu add-components">
10
+ <% %w{CSV JSON Excel}.each do |format| %>
11
+ <li class="exports--format--<%= format.downcase %> exports--registrations"><%= link_to t("decidim.admin.exports.export_as", name: t("decidim.#{current_component.manifest.name}.admin.exports.registrations"), export_format: format), export_meeting_registrations_path(meeting_id: meeting, format: format) %></li>
12
+ <% end %>
13
+ </ul>
14
+ </div>
15
+ <% end %>
14
16
  </h2>
15
17
  </div>
16
18
 
@@ -1,6 +1,5 @@
1
1
  <div class="row small-up-1 medium-up-2 card-grid">
2
2
  <% resources.each do |meeting| %>
3
- <% next unless meeting.component.published? %>
4
3
  <div class="column">
5
4
  <article class="card card--meeting">
6
5
  <div class="card__content">
@@ -0,0 +1,31 @@
1
+ <div class="section agenda-section">
2
+ <div class="flex--sbe">
3
+ <h2 class="section-heading"><%= translated_attribute(meeting.agenda.title) %></h2>
4
+ </div>
5
+ <div class="card">
6
+ <div class="card__content scroll">
7
+ <% agenda_items_times = calculate_start_and_end_time_of_agenda_items(meeting.agenda.agenda_items.first_class, meeting) %>
8
+ <% meeting.agenda.agenda_items.first_class.each_with_index do |agenda_item, index| %>
9
+ <h5 class="agenda-item--title heading5">
10
+ <strong class="text-uppercase"><%= translated_attribute(agenda_item.title) %></strong>&nbsp;
11
+ <span class="text-small"><%= display_duration_agenda_items(agenda_item.id, index, agenda_items_times) %></span>
12
+ </h5>
13
+ <hr class="reset m-none mb-s" />
14
+ <p><%= translated_attribute(agenda_item.description).html_safe %></p>
15
+
16
+ <% if agenda_item.agenda_item_children.presence %>
17
+ <% parent_start_time = agenda_items_times[index][:start_time] %>
18
+ <% agenda_item_children_times = calculate_start_and_end_time_of_agenda_items(agenda_item.agenda_item_children, meeting, parent_start_time) %>
19
+
20
+ <% agenda_item.agenda_item_children.each_with_index do |agenda_item_child, index_child| %>
21
+ <h6 class="heading6">
22
+ <strong class="text-uppercase"><%= translated_attribute(agenda_item_child.title) %></strong>&nbsp;
23
+ <span class="text-small"><%= display_duration_agenda_items(agenda_item_child.id, index_child, agenda_item_children_times) %></span>
24
+ </h6>
25
+ <p><%= translated_attribute(agenda_item_child.description).html_safe %></p>
26
+ <% end %>
27
+ <% end %>
28
+ <% end %>
29
+ </div>
30
+ </div>
31
+ </div>
@@ -0,0 +1,48 @@
1
+ <div class="section minutes-section">
2
+ <h3 class="section-heading"><%= t(".meeting_minutes") %></h3>
3
+ <% if translated_attribute(meeting.minutes.description).present? %>
4
+ <div class="card">
5
+ <div class="card-section">
6
+ <div class="row column">
7
+ <%= decidim_sanitize translated_attribute meeting.minutes.description %>
8
+ </div>
9
+ </div>
10
+ </div>
11
+ <% end %>
12
+
13
+ <% if meeting.minutes.video_url.presence || meeting.minutes.audio_url.presence %>
14
+ <div class="section">
15
+ <h4 class="section-heading"><%= t(".related_information") %></h4>
16
+ <div class="card card--list">
17
+ <% if meeting.minutes.video_url.presence %>
18
+ <div class="card--list__item">
19
+ <div class="card--list__text">
20
+ <div>
21
+ <%= link_to meeting.minutes.video_url, meeting.minutes.video_url, target: "_blank" %>
22
+ </div>
23
+ </div>
24
+ <div class="card--list__data">
25
+ <%= link_to meeting.minutes.video_url, target: "_blank", class: "card--list__data__icon" do %>
26
+ <%= icon "external-link" %>
27
+ <% end %>
28
+ </div>
29
+ </div>
30
+ <% end %>
31
+ <% if meeting.minutes.video_url.presence %>
32
+ <div class="card--list__item">
33
+ <div class="card--list__text">
34
+ <div>
35
+ <%= link_to meeting.minutes.audio_url, meeting.minutes.audio_url, target: "_blank" %>
36
+ </div>
37
+ </div>
38
+ <div class="card--list__data">
39
+ <%= link_to meeting.minutes.audio_url, target: "_blank", class: "card--list__data__icon" do %>
40
+ <%= icon "external-link" %>
41
+ <% end %>
42
+ </div>
43
+ </div>
44
+ <% end %>
45
+ </div>
46
+ </div>
47
+ <% end %>
48
+ </div>