decidim-meetings 0.10.1 → 0.11.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/assets/config/admin/decidim_meetings_manifest.js +1 -0
  4. data/app/assets/javascripts/decidim/meetings/admin/meetings_form.js.es6 +78 -0
  5. data/app/assets/javascripts/decidim/meetings/admin/registrations_form.js.es6 +9 -7
  6. data/app/cells/decidim/meetings/meeting_cell.rb +71 -0
  7. data/app/cells/decidim/meetings/meeting_list_item/show.erb +14 -0
  8. data/app/cells/decidim/meetings/meeting_list_item_cell.rb +26 -0
  9. data/app/cells/decidim/meetings/meeting_m/header.erb +5 -0
  10. data/app/cells/decidim/meetings/meeting_m/show.erb +21 -0
  11. data/app/cells/decidim/meetings/meeting_m_cell.rb +17 -0
  12. data/app/commands/decidim/meetings/admin/copy_meeting.rb +82 -0
  13. data/app/commands/decidim/meetings/admin/create_meeting.rb +3 -1
  14. data/app/commands/decidim/meetings/admin/export_meeting_registrations.rb +44 -0
  15. data/app/commands/decidim/meetings/admin/update_meeting.rb +1 -0
  16. data/app/commands/decidim/meetings/admin/update_registrations.rb +1 -0
  17. data/app/commands/decidim/meetings/join_meeting.rb +1 -1
  18. data/app/commands/decidim/meetings/leave_meeting.rb +1 -1
  19. data/app/controllers/decidim/meetings/admin/application_controller.rb +3 -3
  20. data/app/controllers/decidim/meetings/admin/attachment_collections_controller.rb +2 -2
  21. data/app/controllers/decidim/meetings/admin/attachments_controller.rb +1 -1
  22. data/app/controllers/decidim/meetings/admin/invites_controller.rb +1 -1
  23. data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +1 -1
  24. data/app/controllers/decidim/meetings/admin/meeting_copies_controller.rb +43 -0
  25. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +10 -2
  26. data/app/controllers/decidim/meetings/admin/registrations_controller.rb +6 -5
  27. data/app/controllers/decidim/meetings/application_controller.rb +2 -2
  28. data/app/controllers/decidim/meetings/meeting_widgets_controller.rb +1 -1
  29. data/app/controllers/decidim/meetings/meetings_controller.rb +2 -2
  30. data/app/controllers/decidim/meetings/registrations_controller.rb +1 -1
  31. data/app/forms/decidim/meetings/admin/meeting_copy_form.rb +54 -0
  32. data/app/forms/decidim/meetings/admin/meeting_form.rb +17 -6
  33. data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +10 -1
  34. data/app/forms/decidim/meetings/admin/meeting_service_form.rb +23 -0
  35. data/app/helpers/decidim/meetings/admin/application_helper.rb +4 -0
  36. data/app/mailers/decidim/meetings/admin/invite_join_meeting_mailer.rb +1 -1
  37. data/app/models/decidim/meetings/abilities/current_user_ability.rb +6 -6
  38. data/app/models/decidim/meetings/meeting.rb +14 -8
  39. data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +1 -1
  40. data/app/services/decidim/meetings/meeting_search.rb +2 -2
  41. data/app/types/decidim/meetings/meeting_type.rb +38 -0
  42. data/app/types/decidim/meetings/meetings_type.rb +32 -0
  43. data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +1 -1
  44. data/app/views/decidim/meetings/admin/invites/new.html.erb +3 -3
  45. data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +2 -3
  46. data/app/views/decidim/meetings/admin/meeting_closes/edit.html.erb +2 -2
  47. data/app/views/decidim/meetings/admin/meeting_copies/_form.html.erb +42 -0
  48. data/app/views/decidim/meetings/admin/meeting_copies/new.html.erb +7 -0
  49. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +15 -11
  50. data/app/views/decidim/meetings/admin/meetings/_service.html.erb +48 -0
  51. data/app/views/decidim/meetings/admin/meetings/_services.html.erb +25 -0
  52. data/app/views/decidim/meetings/admin/meetings/edit.html.erb +2 -3
  53. data/app/views/decidim/meetings/admin/meetings/index.html.erb +13 -9
  54. data/app/views/decidim/meetings/admin/meetings/new.html.erb +2 -2
  55. data/app/views/decidim/meetings/admin/registrations/_form.html.erb +7 -2
  56. data/app/views/decidim/meetings/admin/registrations/edit.html.erb +2 -3
  57. data/app/views/decidim/meetings/meetings/_filters.html.erb +2 -2
  58. data/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +1 -1
  59. data/app/views/decidim/meetings/meetings/_meetings.html.erb +1 -18
  60. data/app/views/decidim/meetings/meetings/_registration_confirm.html.erb +2 -2
  61. data/app/views/decidim/meetings/meetings/index.html.erb +3 -3
  62. data/app/views/decidim/meetings/meetings/show.html.erb +21 -4
  63. data/app/views/decidim/participatory_processes/participatory_process_groups/_highlighted_meetings.html.erb +2 -2
  64. data/app/views/decidim/participatory_spaces/_highlighted_meetings.html.erb +4 -4
  65. data/app/views/decidim/participatory_spaces/_meeting.html.erb +1 -14
  66. data/app/views/devise/mailer/join_meeting.html.erb +1 -1
  67. data/app/views/devise/mailer/join_meeting.text.erb +1 -1
  68. data/config/locales/ca.yml +35 -12
  69. data/config/locales/en.yml +35 -12
  70. data/config/locales/es.yml +35 -12
  71. data/config/locales/eu.yml +35 -12
  72. data/config/locales/fi.yml +35 -12
  73. data/config/locales/fr.yml +35 -12
  74. data/config/locales/gl.yml +35 -12
  75. data/config/locales/it.yml +35 -12
  76. data/config/locales/nl.yml +73 -50
  77. data/config/locales/pl.yml +35 -12
  78. data/config/locales/pt-BR.yml +35 -12
  79. data/config/locales/pt.yml +35 -12
  80. data/config/locales/ru.yml +0 -3
  81. data/config/locales/sv.yml +35 -12
  82. data/config/locales/uk.yml +0 -3
  83. data/db/migrate/20180305133634_rename_features_to_components_at_meetings.rb +11 -0
  84. data/db/migrate/20180326082611_add_fields_for_registrations.rb +7 -0
  85. data/db/migrate/20180407110934_add_services_to_meetings.rb +7 -0
  86. data/lib/decidim/meetings.rb +2 -1
  87. data/lib/decidim/meetings/admin_engine.rb +1 -0
  88. data/lib/decidim/meetings/{feature.rb → component.rb} +27 -19
  89. data/lib/decidim/meetings/engine.rb +27 -4
  90. data/lib/decidim/meetings/test/factories.rb +10 -3
  91. data/lib/decidim/meetings/version.rb +1 -1
  92. data/lib/decidim/meetings/view_model.rb +12 -0
  93. metadata +65 -15
@@ -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_feature %>
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 %>
6
6
  </h2>
7
7
  </div>
8
8
 
@@ -30,12 +30,12 @@
30
30
  <td>
31
31
  <% if meeting.start_time %>
32
32
  <%= l meeting.start_time, format: :long %>
33
- <% end%>
33
+ <% end %>
34
34
  </td>
35
35
  <td>
36
36
  <% if meeting.end_time %>
37
37
  <%= l meeting.end_time, format: :long %>
38
- <% end%>
38
+ <% end %>
39
39
  </td>
40
40
  <td>
41
41
  <%= humanize_boolean meeting.closed? %>
@@ -48,24 +48,28 @@
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_feature %>
51
+ <% if can? :update, current_component %>
52
+ <%= icon_link_to "clipboard", new_meeting_copy_path(meeting), t("actions.duplicate", scope: "decidim.admin"), class: "action-icon--copy" %>
53
+ <% end %>
54
+
55
+ <% if can? :update, current_component %>
52
56
  <%= icon_link_to "pencil", edit_meeting_path(meeting), t("actions.edit", scope: "decidim.meetings"), class: "action-icon--edit" %>
53
57
  <%= icon_link_to "people", edit_meeting_registrations_path(meeting), t("actions.registrations", scope: "decidim.meetings"), class: "action-icon--registrations" %>
54
58
  <% end %>
55
59
 
56
- <% if can? :update, current_feature %>
60
+ <% if can? :update, current_component %>
57
61
  <%= 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" %>
58
62
  <% end %>
59
63
 
60
- <% if can? :update, current_feature %>
64
+ <% if can? :update, current_component %>
61
65
  <%= icon_link_to "folder", meeting_attachment_collections_path(meeting), t("actions.attachment_collections", scope: "decidim.meetings"), class: "action-icon--attachment_collections" %>
62
66
  <% end %>
63
67
 
64
- <% if can? :update, current_feature %>
68
+ <% if can? :update, current_component %>
65
69
  <%= icon_link_to "paperclip", meeting_attachments_path(meeting), t("actions.attachments", scope: "decidim.meetings"), class: "action-icon--attachments" %>
66
70
  <% end %>
67
71
 
68
- <% if can? :destroy, current_feature %>
72
+ <% if can? :destroy, current_component %>
69
73
  <%= 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") } %>
70
74
  <% end %>
71
75
  </td>
@@ -76,4 +80,4 @@
76
80
  <%= paginate meetings, theme: "decidim" %>
77
81
  </div>
78
82
  </div>
79
- <div>
83
+ </div>
@@ -1,5 +1,5 @@
1
- <%= decidim_form_for(@form, html: { class: "form new_meeting" }) do |f| %>
2
- <%= render partial: 'form', object: f, locals: { title: t('.title') } %>
1
+ <%= decidim_form_for(@form, html: { class: "form new_meeting" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
3
 
4
4
  <div class="button--double form-general-submit">
5
5
  <%= f.submit t(".create") %>
@@ -5,9 +5,9 @@
5
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
6
  <span class="exports dropdown tiny button button--simple button--title" data-toggle="export-dropdown"><%= t "actions.export", scope: "decidim.admin" %></span>
7
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-features">
8
+ <ul class="vertical menu add-components">
9
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_feature.manifest.name}.admin.exports.registrations"), export_format: format), export_meeting_registrations_path(meeting_id: meeting, format: format) %></li>
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
11
  <% end %>
12
12
  </ul>
13
13
  </div>
@@ -25,6 +25,11 @@
25
25
  <p class="help-text"><%= t(".available_slots_help") %></p>
26
26
  </div>
27
27
 
28
+ <div class="row column">
29
+ <%= form.number_field :reserved_slots %>
30
+ <p class="help-text"><%= t(".reserved_slots_help") %></p>
31
+ </div>
32
+
28
33
  <div class="row column">
29
34
  <%= form.translated :editor, :registration_terms %>
30
35
  </div>
@@ -1,8 +1,7 @@
1
- <%= decidim_form_for(@form, url: meeting_registrations_path, html: { class: "form edit_meeting_registrations" }) do |f| %>
2
- <%= render partial: 'form', object: f %>
1
+ <%= decidim_form_for(@form, url: meeting_registrations_path, html: { class: "form edit_meeting_registrations" }) do |f| %>
2
+ <%= render partial: "form", object: f %>
3
3
 
4
4
  <div class="button--double form-general-submit">
5
5
  <%= f.submit t(".save") %>
6
6
  </div>
7
7
  <% end %>
8
-
@@ -20,7 +20,7 @@
20
20
  <%= scopes_picker_filter form, :scope_id %>
21
21
  <% end %>
22
22
 
23
- <% if current_feature.categories.any? %>
24
- <%= form.categories_select :category_id, current_feature.categories, legend_title: t(".category"), disable_parents: false, label: false, prompt: t('.category_prompt') %>
23
+ <% if current_component.categories.any? %>
24
+ <%= form.categories_select :category_id, current_component.categories, legend_title: t(".category"), disable_parents: false, label: false, prompt: t(".category_prompt") %>
25
25
  <% end %>
26
26
  <% end %>
@@ -1,7 +1,7 @@
1
1
  <div class="filters-controls hide-for-mediumlarge">
2
2
  <button data-open="filter-box" class="filters-controls__trigger">
3
3
  <%= t ".filter" %>
4
- <%= icon "caret-bottom", class: "icon--small float-right", aria_label: t('.unfold'), role: "img" %>
4
+ <%= icon "caret-bottom", class: "icon--small float-right", aria_label: t(".unfold"), role: "img" %>
5
5
  </button>
6
6
  </div>
7
7
 
@@ -12,24 +12,7 @@
12
12
 
13
13
  <div class="row small-up-1 medium-up-2 card-grid">
14
14
  <% meetings.each do |meeting| %>
15
- <div class="column">
16
- <article class="card card--meeting">
17
- <div class="card__content">
18
- <%= link_to meeting, class: "card__link" do %>
19
- <h5 class="card__title"><%= translated_attribute meeting.title %></h5>
20
- <% end %>
21
- <%= render partial: "datetime", locals: { meeting: meeting } %>
22
- <%= decidim_sanitize meeting_description(meeting) %>
23
- <%= render partial: "decidim/shared/tags", locals: { resource: meeting, tags_class_extra: "tags--meeting" } %>
24
- <div class="address card__extra">
25
- <div class="address__icon">
26
- <%= icon "meetings", remove_icon_class: true, width: 40, height: 70 %>
27
- </div>
28
- <%= render partial: "decidim/shared/address_details", locals: { icon_name: "meetings", geolocalizable: meeting } %>
29
- </div>
30
- </div>
31
- </article>
32
- </div>
15
+ <%= card_for meeting %>
33
16
  <% end %>
34
17
  </div>
35
18
  <%= decidim_paginate meetings, order_start_time: params[:order_start_time], scope_id: params[:scope_id] %>
@@ -6,10 +6,10 @@
6
6
  </div>
7
7
  <div class="row">
8
8
  <div class="columns medium-8 medium-offset-2">
9
- <%= button_to t('.confirm'), meeting_registration_path(meeting), class: "button expanded", data: { disable: true } %>
9
+ <%= button_to t(".confirm"), meeting_registration_path(meeting), class: "button expanded", data: { disable: true } %>
10
10
  </div>
11
11
  </div>
12
12
  <div class="text-center">
13
- <button class="link" data-close><%= t('.cancel') %></button>
13
+ <button class="link" data-close><%= t(".cancel") %></button>
14
14
  </div>
15
15
  </div>
@@ -1,4 +1,4 @@
1
- <%= render partial: "decidim/shared/feature_announcement" %>
1
+ <%= render partial: "decidim/shared/component_announcement" %>
2
2
 
3
3
  <%= dynamic_map_for meetings_data_for_map(geocoded_meetings) do %>
4
4
  <template id="marker-popup">
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
  <div class="map-info__button">
26
26
  <a href="${link}" class="button button--sc">
27
- <%= t('.view_meeting') %>
27
+ <%= t(".view_meeting") %>
28
28
  </a>
29
29
  </div>
30
30
  </div>
@@ -37,7 +37,7 @@
37
37
  <div class="row">
38
38
  <div class="columns mediumlarge-4 large-3">
39
39
  <%= render partial: "filters_small_view" %>
40
- <div class="card card--secondary show-for-mediumlarge" >
40
+ <div class="card card--secondary show-for-mediumlarge">
41
41
  <%= render partial: "filters" %>
42
42
  </div>
43
43
  </div>
@@ -20,11 +20,11 @@
20
20
  <div class="extra__time">
21
21
  <%= meeting.start_time.strftime("%H:%M") %> - <%= meeting.end_time.strftime("%H:%M") %>
22
22
  </div>
23
- <% if !meeting.closed? && meeting.registrations_enabled? %>
23
+ <% if !meeting.closed? && meeting.registrations_enabled? && meeting.can_participate?(current_user) %>
24
24
  <% if meeting.has_registration_for? current_user %>
25
- <%= action_authorized_button_to :leave, t('.going'), meeting_registration_path(meeting), method: :delete, class: "button expanded button--sc success", data: { disable: true } %>
25
+ <%= action_authorized_button_to :leave, t(".going"), meeting_registration_path(meeting), method: :delete, class: "button expanded button--sc success", data: { disable: true } %>
26
26
  <% else %>
27
- <%= action_authorized_button_to :join, meeting.has_available_slots? ? t('.join') : t('.no_slots_available'), "", class: "button expanded button--sc", disabled: !meeting.has_available_slots?, data: { open: current_user.present? ? "meeting-registration-confirm" : "loginModal" } %>
27
+ <%= action_authorized_button_to :join, meeting.has_available_slots? ? t(".join") : t(".no_slots_available"), "", class: "button expanded button--sc", disabled: !meeting.has_available_slots?, data: { open: current_user.present? ? "meeting-registration-confirm" : "loginModal" } %>
28
28
  <% end %>
29
29
  <% if meeting.available_slots.positive? %>
30
30
  <span><%= t(".remaining_slots", count: meeting.remaining_slots) %></span>
@@ -51,11 +51,28 @@
51
51
  <% end %>
52
52
  <div class="definition-data__item">
53
53
  <span class="definition-data__title"><%= t(".organizations") %></span>
54
- <span class="definition-data__text"><%= meeting.attending_organizations %></span>
54
+ <span class="definition-data__text"><%= simple_format(meeting.attending_organizations) %></span>
55
55
  </div>
56
56
  </div>
57
57
  <% end %>
58
58
  </div>
59
+
60
+ <% if meeting.services.any? %>
61
+ <div class="card card--list">
62
+ <% meeting.services.each do |service| %>
63
+ <div class="card--list__item">
64
+ <div class="card--list__text card--list__text--top">
65
+ <%= icon "actions", class: "card--list__icon alert" %>
66
+ <div>
67
+ <h5 class="card--list__heading heading-small"><%= translated_attribute(service["title"]) %></h5>
68
+ <span class="text-medium"><%= translated_attribute(service["description"]) %></span>
69
+ </div>
70
+ </div>
71
+ </div>
72
+ <% end %>
73
+ </div>
74
+ <% end %>
75
+
59
76
  <%= resource_reference(meeting) %>
60
77
  <%= render partial: "decidim/shared/share_modal" %>
61
78
  <%= embed_modal_for meeting_meeting_widget_url(meeting, format: :js) %>
@@ -2,14 +2,14 @@
2
2
  <section class="section row collapse upcoming_meetings">
3
3
  <h2 class="section-heading"><%= t(".upcoming_meetings") %></h2>
4
4
  <div class="row small-up-1 medium-up-2 large-up-3 card-grid">
5
- <%= render partial: 'decidim/participatory_processes/participatory_process_groups/meeting', collection: upcoming_meetings %>
5
+ <%= render partial: "decidim/participatory_processes/participatory_process_groups/meeting", collection: upcoming_meetings %>
6
6
  </div>
7
7
  </section>
8
8
  <% elsif past_meetings.any? %>
9
9
  <section class="section row collapse past_meetings">
10
10
  <h2 class="section-heading"><%= t(".past_meetings") %></h2>
11
11
  <div class="row small-up-1 medium-up-2 large-up-3 card-grid">
12
- <%= render partial: 'decidim/participatory_processes/participatory_process_groups/meeting', collection: past_meetings %>
12
+ <%= render partial: "decidim/participatory_processes/participatory_process_groups/meeting", collection: past_meetings %>
13
13
  </div>
14
14
  </section>
15
15
  <% end %>
@@ -1,19 +1,19 @@
1
1
  <% if upcoming_meetings.any? %>
2
2
  <div class="section upcoming_meetings">
3
3
  <h4 class="section-heading">
4
- <%= t(".upcoming_meetings") %> <a href="<%= main_feature_path(upcoming_meetings.first.feature) %>" class="text-small"><%= t(".see_all_meetings") %></a>
4
+ <%= t(".upcoming_meetings") %> <a href="<%= main_component_path(upcoming_meetings.first.component) %>" class="text-small"><%= t(".see_all_meetings") %></a>
5
5
  </h4>
6
6
  <div class="card card--list">
7
- <%= render partial: 'decidim/participatory_spaces/meeting', collection: upcoming_meetings %>
7
+ <%= render partial: "decidim/participatory_spaces/meeting", collection: upcoming_meetings %>
8
8
  </div>
9
9
  </div>
10
10
  <% elsif past_meetings.any? %>
11
11
  <div class="section past_meetings">
12
12
  <h4 class="section-heading">
13
- <%= t(".past_meetings") %> <a href="<%= main_feature_path(past_meetings.first.feature) %>" class="text-small"><%= t(".see_all_meetings") %></a>
13
+ <%= t(".past_meetings") %> <a href="<%= main_component_path(past_meetings.first.component) %>" class="text-small"><%= t(".see_all_meetings") %></a>
14
14
  </h4>
15
15
  <div class="card card--list">
16
- <%= render partial: 'decidim/participatory_spaces/meeting', collection: past_meetings %>
16
+ <%= render partial: "decidim/participatory_spaces/meeting", collection: past_meetings %>
17
17
  </div>
18
18
  </div>
19
19
  <% end %>
@@ -1,14 +1 @@
1
- <div class="card--list__item">
2
- <div class="card--list__text">
3
- <div>
4
- <a href="<%= resource_locator(meeting).path %>" class="card__link">
5
- <h6 class="card--list__heading heading6">
6
- <%= translated_attribute meeting.title %>
7
- </h6>
8
- <span class="text-medium">
9
- <%= l meeting.start_time, format: :decidim_day_of_year %> - <%= l meeting.start_time, format: :time_of_day %> - <%= l meeting.end_time, format: :time_of_day %>
10
- </span>
11
- </a>
12
- </div>
13
- </div>
14
- </div>
1
+ <%= card_for meeting, size: :list_item %>
@@ -4,7 +4,7 @@
4
4
  <%= t("decidim.meetings.admin.invite_join_meeting_mailer.invite.invited_you_to_join_a_meeting", invited_by: @resource.invited_by.name, application: @resource.organization.name) %>
5
5
  </p>
6
6
 
7
- <p><%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, invitation_token: @token, invite_redirect: Decidim::EngineRouter.main_proxy(@opts[:meeting].feature).meeting_registration_path(meeting_id: @opts[:meeting], participatory_space_id: @opts[:meeting].feature.participatory_space), host: @resource.organization.host) %></p>
7
+ <p><%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, invitation_token: @token, invite_redirect: Decidim::EngineRouter.main_proxy(@opts[:meeting].component).meeting_registration_path(meeting_id: @opts[:meeting], participatory_space_id: @opts[:meeting].component.participatory_space), host: @resource.organization.host) %></p>
8
8
 
9
9
  <% if @resource.invitation_due_at %>
10
10
  <p><%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :long)) %></p>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <%= t("decidim.meetings.admin.invite_join_meeting_mailer.invite.invited_you_to_join_a_meeting", invited_by: @resource.invited_by.name, application: @resource.organization.name) %>
4
4
 
5
- <% accept_invitation_url(@resource, invitation_token: @token, invite_redirect: Decidim::EngineRouter.main_proxy(@opts[:meeting].feature).meeting_registration_path(meeting_id: @opts[:meeting], participatory_space_id: @opts[:meeting].feature.participatory_space), host: @resource.organization.host) %>
5
+ <% accept_invitation_url(@resource, invitation_token: @token, invite_redirect: Decidim::EngineRouter.main_proxy(@opts[:meeting].component).meeting_registration_path(meeting_id: @opts[:meeting], participatory_space_id: @opts[:meeting].component.participatory_space), host: @resource.organization.host) %>
6
6
 
7
7
  <% if @resource.invitation_due_at %>
8
8
  <%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :long)) %>
@@ -21,6 +21,28 @@ ca:
21
21
  start_time: Hora d'inici
22
22
  title: Títol
23
23
  decidim:
24
+ admin:
25
+ meeting_copies:
26
+ create:
27
+ error: S'ha produït un error en duplicar aquesta trobada.
28
+ success: Trobada duplicada amb èxit.
29
+ new:
30
+ copy: Copia
31
+ select: Selecciona quines dades vols duplicar
32
+ title: Duplicar trobada
33
+ components:
34
+ meetings:
35
+ actions:
36
+ join: Inscriu-t'hi
37
+ name: Trobades
38
+ settings:
39
+ global:
40
+ announcement: Anunci
41
+ comments_enabled: Comentaris habilitats
42
+ default_registration_terms: Termes de registre per defecte
43
+ step:
44
+ announcement: Anunci
45
+ comments_blocked: Comentaris bloquejats
24
46
  events:
25
47
  meetings:
26
48
  meeting_closed:
@@ -53,18 +75,6 @@ ca:
53
75
  email_outro: Has rebut aquesta notificació perquè estàs seguint la trobada "%{resource_title}". Pots deixar-la de seguir des de l'enllaç anterior.
54
76
  email_subject: En menys de 48 hores s'iniciarà la trobada "%{resource_title}".
55
77
  notification_title: La trobada <a href="%{resource_path}">%{resource_title}</a> començarà en menys de 48 hores.
56
- features:
57
- meetings:
58
- actions:
59
- join: Inscriu-t'hi
60
- name: Trobades
61
- settings:
62
- global:
63
- announcement: Anunci
64
- comments_enabled: Comentaris habilitats
65
- step:
66
- announcement: Anunci
67
- comments_blocked: Comentaris bloquejats
68
78
  meetings:
69
79
  actions:
70
80
  attachment_collections: Col·leccions
@@ -112,6 +122,16 @@ ca:
112
122
  new:
113
123
  create: Crear
114
124
  title: Crear trobada
125
+ service:
126
+ description: Descripció
127
+ down: Avall
128
+ remove: Elimina
129
+ service: Servei
130
+ title: Títol
131
+ up: Pujar
132
+ services:
133
+ add_service: Afegeix servei
134
+ services: Serveis
115
135
  update:
116
136
  invalid: Hi ha hagut un problema en actualitzar aquesta trobada
117
137
  success: Trobada actualitzada correctament
@@ -127,6 +147,8 @@ ca:
127
147
  registrations_count:
128
148
  one: Hi ha hagut 1 inscripció.
129
149
  other: Hi ha hagut %{count} inscripcions.
150
+ reserved_slots_help: Deixa'l a 0 si no tens espais reservats
151
+ reserved_slots_less_than: Ha de ser inferior o igual que %{count}
130
152
  update:
131
153
  invalid: S'ha produït un problema en desar la configuració de la inscripció.
132
154
  success: La configuració de les inscripcions de la trobada s'ha desat correctament.
@@ -135,6 +157,7 @@ ca:
135
157
  close: "%{user_name} ha tancat la trobada %{resource_name} a l'espai %{space_name}"
136
158
  create: "%{user_name} ha creat la trobada %{resource_name} a l'espai %{space_name}"
137
159
  delete: "%{user_name} ha eliminat la trobada %{resource_name} a l'espai %{space_name}"
160
+ export_registrations: "%{user_name} va exportar les inscripcions de la trobada %{resource_name} de l'espai %{space_name}"
138
161
  update: "%{user_name} ha actualitzat la trobada %{resource_name} a l'espai %{space_name}"
139
162
  mailer:
140
163
  invite_join_meeting_mailer:
@@ -22,6 +22,28 @@ en:
22
22
  start_time: Start Time
23
23
  title: Title
24
24
  decidim:
25
+ admin:
26
+ meeting_copies:
27
+ create:
28
+ error: There was en error duplicating this meeting.
29
+ success: Duplicated meeting successfully.
30
+ new:
31
+ copy: Copy
32
+ select: Select which data you would like to duplicate
33
+ title: Duplicate meeting
34
+ components:
35
+ meetings:
36
+ actions:
37
+ join: Join
38
+ name: Meetings
39
+ settings:
40
+ global:
41
+ announcement: Announcement
42
+ comments_enabled: Comments enabled
43
+ default_registration_terms: Default registration terms
44
+ step:
45
+ announcement: Announcement
46
+ comments_blocked: Comments blocked
25
47
  events:
26
48
  meetings:
27
49
  meeting_closed:
@@ -54,18 +76,6 @@ en:
54
76
  email_outro: You have received this notification because you are following the "%{resource_title}" meeting. You can unfollow it from the previous link.
55
77
  email_subject: The "%{resource_title}" meeting will start in less than 48h.
56
78
  notification_title: The <a href="%{resource_path}">%{resource_title}</a> meeting will start in less than 48h.
57
- features:
58
- meetings:
59
- actions:
60
- join: Join
61
- name: Meetings
62
- settings:
63
- global:
64
- announcement: Announcement
65
- comments_enabled: Comments enabled
66
- step:
67
- announcement: Announcement
68
- comments_blocked: Comments blocked
69
79
  meetings:
70
80
  actions:
71
81
  attachment_collections: Collections
@@ -113,6 +123,16 @@ en:
113
123
  new:
114
124
  create: Create
115
125
  title: Create meeting
126
+ service:
127
+ description: Description
128
+ down: Down
129
+ remove: Remove
130
+ service: Service
131
+ title: Title
132
+ up: Up
133
+ services:
134
+ add_service: Add service
135
+ services: Services
116
136
  update:
117
137
  invalid: There's been a problem updating this meeting
118
138
  success: Meeting successfully updated
@@ -129,6 +149,8 @@ en:
129
149
  one: There has been 1 registration.
130
150
  other: There has been %{count} registrations.
131
151
  zero: There has not been registrations yet.
152
+ reserved_slots_help: Leave it to 0 if you don't have reserved slots
153
+ reserved_slots_less_than: Must be less than or equal to %{count}
132
154
  update:
133
155
  invalid: There's been a problem saving the registration settings.
134
156
  success: Meeting registrations settings successfully saved.
@@ -137,6 +159,7 @@ en:
137
159
  close: "%{user_name} closed the %{resource_name} meeting on the %{space_name} space"
138
160
  create: "%{user_name} created the %{resource_name} meeting on the %{space_name} space"
139
161
  delete: "%{user_name} deleted the %{resource_name} meeting on the %{space_name} space"
162
+ export_registrations: "%{user_name} exported the registrations of the %{resource_name} meeting on the %{space_name} space"
140
163
  update: "%{user_name} updated the %{resource_name} meeting on the %{space_name} space"
141
164
  mailer:
142
165
  invite_join_meeting_mailer: