decidim-meetings 0.6.8 → 0.7.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/app/commands/decidim/meetings/admin/invite_user_to_join_meeting.rb +57 -0
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +39 -0
- data/app/controllers/decidim/meetings/admin/registrations_controller.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_registration_invite_form.rb +16 -0
- data/app/mailers/decidim/meetings/admin/invite_join_meeting_mailer.rb +43 -0
- data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +7 -0
- data/app/views/decidim/meetings/admin/invites/_form.html.erb +7 -0
- data/app/views/decidim/meetings/admin/invites/new.html.erb +21 -0
- data/app/views/decidim/meetings/admin/registrations/_form.html.erb +4 -3
- data/app/views/decidim/meetings/meeting_widgets/show.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/_meetings.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/_registration_confirm.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/show.html.erb +2 -2
- data/app/views/devise/mailer/join_meeting.html.erb +13 -0
- data/app/views/devise/mailer/join_meeting.text.erb +11 -0
- data/config/locales/ca.yml +20 -0
- data/config/locales/en.yml +20 -0
- data/config/locales/es.yml +20 -0
- data/config/locales/eu.yml +59 -39
- data/config/locales/fi.yml +63 -43
- data/config/locales/fr.yml +52 -32
- data/config/locales/it.yml +20 -0
- data/config/locales/nl.yml +20 -0
- data/config/locales/pl.yml +22 -2
- data/config/locales/ru.yml +198 -0
- data/config/locales/uk.yml +39 -19
- data/lib/decidim/meetings/admin_engine.rb +1 -0
- data/lib/decidim/meetings/engine.rb +5 -1
- data/lib/decidim/meetings/feature.rb +2 -2
- data/lib/decidim/meetings/test/factories.rb +6 -0
- data/lib/decidim/meetings/version.rb +10 -0
- metadata +25 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01ce2b2ec67e0793b65b9412060f6557b000f57d
|
4
|
+
data.tar.gz: 4c21975e2f0b7f710d78b1e4f93f9baa83395fc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e50ac9e0b9ed9876724e5517b0db927428f8b539772bc4c692a4ed8f60c6232f89a58cee7e54d159edfc2f78830472801e04fdb3f175a740a873ee4a558a4f3
|
7
|
+
data.tar.gz: a89ad20fb5f3abc65749d5dd2fc2f751c92bfebd04429c0a1a779841f4886c0c9108b69f5fa92af1ba097510224a13cf4c049ff7bfa709598a5976dd7d1aef64
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
module Admin
|
6
|
+
# A command with all the business logic to invite users to join a meeting.
|
7
|
+
#
|
8
|
+
class InviteUserToJoinMeeting < Rectify::Command
|
9
|
+
# Public: Initializes the command.
|
10
|
+
#
|
11
|
+
# form - A form object with the params.
|
12
|
+
# meeting - The meeting which the user is invited to.
|
13
|
+
# invited_by - The user performing the operation
|
14
|
+
def initialize(form, meeting, invited_by)
|
15
|
+
@form = form
|
16
|
+
@meeting = meeting
|
17
|
+
@invited_by = invited_by
|
18
|
+
end
|
19
|
+
|
20
|
+
# Executes the command. Broadcasts these events:
|
21
|
+
#
|
22
|
+
# - :ok when everything is valid.
|
23
|
+
# - :invalid if the form wasn't valid and we couldn't proceed.
|
24
|
+
#
|
25
|
+
# Returns nothing.
|
26
|
+
def call
|
27
|
+
return broadcast(:invalid) if form.invalid?
|
28
|
+
|
29
|
+
invite_user
|
30
|
+
|
31
|
+
broadcast(:ok)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
attr_reader :form, :invited_by, :meeting
|
37
|
+
|
38
|
+
def invite_user
|
39
|
+
if user.persisted?
|
40
|
+
InviteJoinMeetingMailer.invite(user, meeting, invited_by).deliver_later
|
41
|
+
else
|
42
|
+
user.name = form.name
|
43
|
+
user.skip_reconfirmation!
|
44
|
+
user.invite!(invited_by, invitation_instructions: "join_meeting", meeting: meeting)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def user
|
49
|
+
@user ||= Decidim::User.find_or_create_by(
|
50
|
+
organization: form.current_organization,
|
51
|
+
email: form.email.downcase
|
52
|
+
)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "decidim/admin/application_controller"
|
4
|
+
|
5
|
+
module Decidim
|
6
|
+
module Meetings
|
7
|
+
module Admin
|
8
|
+
# Controller that allows inviting users to join a meeting.
|
9
|
+
#
|
10
|
+
class InvitesController < Admin::ApplicationController
|
11
|
+
def new
|
12
|
+
@form = form(MeetingRegistrationInviteForm).instance
|
13
|
+
end
|
14
|
+
|
15
|
+
def create
|
16
|
+
@form = form(MeetingRegistrationInviteForm).from_params(params)
|
17
|
+
|
18
|
+
InviteUserToJoinMeeting.call(@form, meeting, current_user) do
|
19
|
+
on(:ok) do
|
20
|
+
flash[:notice] = I18n.t("invites.create.success", scope: "decidim.meetings.admin")
|
21
|
+
redirect_to edit_meeting_registrations_path(meeting)
|
22
|
+
end
|
23
|
+
|
24
|
+
on(:invalid) do
|
25
|
+
flash.now[:alert] = I18n.t("invites.create.error", scope: "decidim.meetings.admin")
|
26
|
+
render :new
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def meeting
|
34
|
+
@meeting ||= Meeting.where(feature: current_feature).find(params[:meeting_id])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -29,7 +29,7 @@ module Decidim
|
|
29
29
|
format = params[:format]
|
30
30
|
export_data = Decidim::Exporters.find_exporter(format).new(meeting.registrations, Decidim::Meetings::RegistrationSerializer).export
|
31
31
|
|
32
|
-
send_data export_data.read, type: "text/#{
|
32
|
+
send_data export_data.read, type: "text/#{export_data.extension}", filename: export_data.filename("registrations")
|
33
33
|
end
|
34
34
|
|
35
35
|
private
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
module Admin
|
6
|
+
# A form object used to invite users to join a meeting.
|
7
|
+
#
|
8
|
+
class MeetingRegistrationInviteForm < Form
|
9
|
+
attribute :name, String
|
10
|
+
attribute :email, String
|
11
|
+
|
12
|
+
validates :name, :email, presence: true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
module Admin
|
6
|
+
# A custom mailer for sending an invitation to join a meeting to
|
7
|
+
# an existing user.
|
8
|
+
class InviteJoinMeetingMailer < Decidim::ApplicationMailer
|
9
|
+
include Decidim::TranslationsHelper
|
10
|
+
include ActionView::Helpers::SanitizeHelper
|
11
|
+
|
12
|
+
helper Decidim::ResourceHelper
|
13
|
+
helper Decidim::TranslationsHelper
|
14
|
+
|
15
|
+
helper_method :routes
|
16
|
+
|
17
|
+
# Send an email to an user to invite them to join a meeting.
|
18
|
+
#
|
19
|
+
# user - The user being invited
|
20
|
+
# meeting - The meeting being joined.
|
21
|
+
# invited_by - The user performing the invitation.
|
22
|
+
def invite(user, meeting, invited_by)
|
23
|
+
with_user(user) do
|
24
|
+
@user = user
|
25
|
+
@meeting = meeting
|
26
|
+
@invited_by = invited_by
|
27
|
+
@organization = @meeting.organization
|
28
|
+
@locator = Decidim::ResourceLocatorPresenter.new(@meeting)
|
29
|
+
|
30
|
+
subject = I18n.t("invite.subject", scope: "decidim.meetings.mailer.invite_join_meeting_mailer")
|
31
|
+
mail(to: user.email, subject: subject)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def routes
|
38
|
+
@router ||= Decidim::EngineRouter.main_proxy(@meeting.feature)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<p><%= t("devise.mailer.invitation_instructions.hello", email: @user.name) %></p>
|
2
|
+
|
3
|
+
<p>
|
4
|
+
<%= t ".invited_you_to_join_a_meeting", invited_by: @invited_by.name, application: @user.organization.name %>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<p><%= link_to t(".join", meeting_title: translated_attribute(@meeting.title)),routes.meeting_registration_url(meeting_id: @meeting, participatory_space_id: @meeting.feature.participatory_space) %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<h2 class="process-title-summary">
|
2
|
+
<%= t('.new_invite') %>
|
3
|
+
</h2>
|
4
|
+
|
5
|
+
<div class="section">
|
6
|
+
<div class="callout warning">
|
7
|
+
<p><%= t('.explanation') %></p>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<%= decidim_form_for(@form, url: meeting_registrations_invites_path, method: :post, html: { class: "form new_meeting_registration_invite" }) do |f| %>
|
12
|
+
<div class="card">
|
13
|
+
<div class="card-section">
|
14
|
+
<%= render partial: 'form', object: f %>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="button--double form-general-submit">
|
19
|
+
<%= f.submit t(".invite") %>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
@@ -2,11 +2,12 @@
|
|
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?}" %>
|
5
6
|
<span class="exports dropdown tiny button button--simple button--title" data-toggle="export-dropdown"><%= t "actions.export", scope: "decidim.admin" %></span>
|
6
7
|
<div class="dropdown-pane" id="export-dropdown" data-dropdown data-auto-focus="true" data-close-on-click="true">
|
7
8
|
<ul class="vertical menu add-features">
|
8
|
-
<% %w{
|
9
|
-
<li class="exports--format--<%= format %> exports--registrations"><%= link_to t("decidim.admin.exports.export_as", name: t("decidim.#{current_feature.manifest.name}.admin.exports.registrations"), export_format: format
|
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
11
|
<% end %>
|
11
12
|
</ul>
|
12
13
|
</div>
|
@@ -30,4 +31,4 @@
|
|
30
31
|
</div>
|
31
32
|
</div>
|
32
33
|
|
33
|
-
<%= javascript_include_tag "decidim/meetings/admin/registrations_form" %>
|
34
|
+
<%= javascript_include_tag "decidim/meetings/admin/registrations_form" %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= content_for(:title, translated_attribute(model.title)) %>
|
2
2
|
<%= render partial: "decidim/meetings/meetings/datetime", locals: { meeting: model } %>
|
3
|
-
|
3
|
+
<%= sanitize meeting_description(model) %>
|
4
4
|
<div class="address card__extra">
|
5
5
|
<div class="address__icon">
|
6
6
|
<%= icon "meetings", remove_icon_class: true, width: 40, height: 70 %>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<h5 class="card__title"><%= translated_attribute meeting.title %></h5>
|
20
20
|
<% end %>
|
21
21
|
<%= render partial: "datetime", locals: { meeting: meeting } %>
|
22
|
-
|
22
|
+
<%= sanitize meeting_description(meeting) %>
|
23
23
|
<%= render partial: "decidim/shared/tags", locals: { resource: meeting, tags_class_extra: "tags--meeting" } %>
|
24
24
|
<div class="address card__extra">
|
25
25
|
<div class="address__icon">
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="reveal" data-reveal id="meeting-registration-confirm">
|
2
2
|
<div class="row">
|
3
3
|
<div class="columns medium-10 medium-offset-1 help-text">
|
4
|
-
|
4
|
+
<%= sanitize translated_attribute(meeting.registration_terms) %>
|
5
5
|
</div>
|
6
6
|
</div>
|
7
7
|
<div class="row">
|
@@ -62,14 +62,14 @@
|
|
62
62
|
</div>
|
63
63
|
<div class="columns mediumlarge-8 mediumlarge-pull-4">
|
64
64
|
<div class="section">
|
65
|
-
<p
|
65
|
+
<p><%= sanitize translated_attribute meeting.description %></p>
|
66
66
|
<%= render partial: "decidim/shared/static_map", locals: { icon_name: "meetings", geolocalizable: meeting } %>
|
67
67
|
<%= render partial: "decidim/shared/tags", locals: { resource: meeting, tags_class_extra: "tags--meeting" } %>
|
68
68
|
</div>
|
69
69
|
<% if meeting.closed? %>
|
70
70
|
<div class="section">
|
71
71
|
<h3 class="section-heading"><%= t(".meeting_report") %></h3>
|
72
|
-
|
72
|
+
<%= sanitize translated_attribute meeting.closing_report %>
|
73
73
|
</div>
|
74
74
|
<% end %>
|
75
75
|
<%= linked_resources_for meeting, :proposals, "proposals_from_meeting" %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<p><%= t("devise.mailer.invitation_instructions.hello", email: @resource.name) %></p>
|
2
|
+
|
3
|
+
<p>
|
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
|
+
</p>
|
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>
|
8
|
+
|
9
|
+
<% if @resource.invitation_due_at %>
|
10
|
+
<p><%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :long)) %></p>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<p><%= t("devise.mailer.invitation_instructions.ignore").html_safe %></p>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%= t("devise.mailer.invitation_instructions.hello", email: @resource.name) %>
|
2
|
+
|
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
|
+
|
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) %>
|
6
|
+
|
7
|
+
<% if @resource.invitation_due_at %>
|
8
|
+
<%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :long)) %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<%= t("devise.mailer.invitation_instructions.ignore").html_safe %>
|
data/config/locales/ca.yml
CHANGED
@@ -45,6 +45,18 @@ ca:
|
|
45
45
|
admin:
|
46
46
|
exports:
|
47
47
|
registrations: Inscripcions
|
48
|
+
invite_join_meeting_mailer:
|
49
|
+
invite:
|
50
|
+
invited_you_to_join_a_meeting: "%{invited_by} t'ha convidat a participar en una trobada a %{application}. Pots acceptar la invitació a través de l'enllaç següent."
|
51
|
+
join: Uneix-te a la trobada '%{meeting_title}'
|
52
|
+
invites:
|
53
|
+
create:
|
54
|
+
error: Hi ha hagut un problema al convidar l'usuari a unir-se a la trobada.
|
55
|
+
success: L'usuari s'ha convidat correctament a unir-se a la trobada.
|
56
|
+
new:
|
57
|
+
explanation: L'usuari serà convidat a participar en una trobada. Si el correu electrònic no està registrat, també se'l convidarà a l'organització.
|
58
|
+
invite: Convidar
|
59
|
+
new_invite: Convida l'usuari
|
48
60
|
meeting_closes:
|
49
61
|
edit:
|
50
62
|
close: Tancar
|
@@ -76,6 +88,7 @@ ca:
|
|
76
88
|
save: Desa
|
77
89
|
form:
|
78
90
|
available_slots_help: Deixeu-lo a 0 si teniu espais il·limitats disponibles.
|
91
|
+
invite_user: Convida l'usuari
|
79
92
|
registrations_count:
|
80
93
|
one: Hi ha hagut 1 inscripció.
|
81
94
|
other: Hi ha hagut %{count} inscripcions.
|
@@ -109,6 +122,9 @@ ca:
|
|
109
122
|
email_subject: La trobada "%{resource_title}" s'ha actualitzat
|
110
123
|
notification_title: La trobada <a href="%{resource_path}">%{resource_title}</a> ha estat actualitzada.
|
111
124
|
mailer:
|
125
|
+
invite_join_meeting_mailer:
|
126
|
+
invite:
|
127
|
+
subject: Assumpte
|
112
128
|
registration_mailer:
|
113
129
|
confirmation:
|
114
130
|
subject: La teva inscripció a la trobada ha estat confirmada
|
@@ -173,3 +189,7 @@ ca:
|
|
173
189
|
proposals_from_meeting:
|
174
190
|
meeting_proposals: 'Propostes relacionades:'
|
175
191
|
proposal_meetings: 'Trobades relacionades:'
|
192
|
+
devise:
|
193
|
+
mailer:
|
194
|
+
join_meeting:
|
195
|
+
subject: Assumpte
|
data/config/locales/en.yml
CHANGED
@@ -45,6 +45,18 @@ en:
|
|
45
45
|
admin:
|
46
46
|
exports:
|
47
47
|
registrations: Registrations
|
48
|
+
invite_join_meeting_mailer:
|
49
|
+
invite:
|
50
|
+
invited_you_to_join_a_meeting: "%{invited_by} has invited you to join a meeting at %{application}. You can accept it through the link below."
|
51
|
+
join: Join meeting '%{meeting_title}'
|
52
|
+
invites:
|
53
|
+
create:
|
54
|
+
error: There's been a problem while inviting the user to join the meeting.
|
55
|
+
success: User successfully invited to join the meeting.
|
56
|
+
new:
|
57
|
+
explanation: The user will be invited to join a meeting. If the email is not registered they will be invited to the organization as well.
|
58
|
+
invite: Invite
|
59
|
+
new_invite: Invite user
|
48
60
|
meeting_closes:
|
49
61
|
edit:
|
50
62
|
close: Close
|
@@ -76,6 +88,7 @@ en:
|
|
76
88
|
save: Save
|
77
89
|
form:
|
78
90
|
available_slots_help: Leave it to 0 if you have unlimited slots available.
|
91
|
+
invite_user: Invite user
|
79
92
|
registrations_count:
|
80
93
|
one: There has been 1 registration.
|
81
94
|
other: There has been %{count} registrations.
|
@@ -110,6 +123,9 @@ en:
|
|
110
123
|
email_subject: The "%{resource_title}" meeting was updated
|
111
124
|
notification_title: The <a href="%{resource_path}">%{resource_title}</a> meeting was updated.
|
112
125
|
mailer:
|
126
|
+
invite_join_meeting_mailer:
|
127
|
+
invite:
|
128
|
+
subject: Subject
|
113
129
|
registration_mailer:
|
114
130
|
confirmation:
|
115
131
|
subject: Your meeting's registration has been confirmed
|
@@ -175,3 +191,7 @@ en:
|
|
175
191
|
proposals_from_meeting:
|
176
192
|
meeting_proposals: 'Related proposals:'
|
177
193
|
proposal_meetings: 'Related meetings:'
|
194
|
+
devise:
|
195
|
+
mailer:
|
196
|
+
join_meeting:
|
197
|
+
subject: Subject
|
data/config/locales/es.yml
CHANGED
@@ -45,6 +45,18 @@ es:
|
|
45
45
|
admin:
|
46
46
|
exports:
|
47
47
|
registrations: Inscripciones
|
48
|
+
invite_join_meeting_mailer:
|
49
|
+
invite:
|
50
|
+
invited_you_to_join_a_meeting: "%{invited_by} te ha invitado a unirte a un encuentro en %{application}. Puedes aceptarlo a través del siguiente enlace."
|
51
|
+
join: Únete al encuentro '%{meeting_title}'
|
52
|
+
invites:
|
53
|
+
create:
|
54
|
+
error: Ha habido un problema al invitar al usuario a unirse al encuentro.
|
55
|
+
success: El usuario ha sido invitado con éxito a unirse al encuentro.
|
56
|
+
new:
|
57
|
+
explanation: El usuario será invitado a unirse a un encuentro. Si el correo electrónico no está registrado, será invitado a la organización también.
|
58
|
+
invite: Invitar
|
59
|
+
new_invite: Invitar usuario
|
48
60
|
meeting_closes:
|
49
61
|
edit:
|
50
62
|
close: Cerrar
|
@@ -76,6 +88,7 @@ es:
|
|
76
88
|
save: Guardar
|
77
89
|
form:
|
78
90
|
available_slots_help: Déjalo a 0 si tiene inscripciones ilimitadas.
|
91
|
+
invite_user: Invitar usuario
|
79
92
|
registrations_count:
|
80
93
|
one: Ha habido 1 inscripción.
|
81
94
|
other: Ha habido %{count} inscripciones.
|
@@ -109,6 +122,9 @@ es:
|
|
109
122
|
email_subject: La reunión "%{resource_title}" ha sido actualizada
|
110
123
|
notification_title: La reunión <a href="%{resource_path}">%{resource_title}</a> ha sido actualizada.
|
111
124
|
mailer:
|
125
|
+
invite_join_meeting_mailer:
|
126
|
+
invite:
|
127
|
+
subject: Asunto
|
112
128
|
registration_mailer:
|
113
129
|
confirmation:
|
114
130
|
subject: La inscripción a tu encuentro ha sido confirmada
|
@@ -173,3 +189,7 @@ es:
|
|
173
189
|
proposals_from_meeting:
|
174
190
|
meeting_proposals: 'Propuestas relacionadas:'
|
175
191
|
proposal_meetings: 'Encuentros relacionados:'
|
192
|
+
devise:
|
193
|
+
mailer:
|
194
|
+
join_meeting:
|
195
|
+
subject: Asunto
|
data/config/locales/eu.yml
CHANGED
@@ -21,7 +21,7 @@ eu:
|
|
21
21
|
features:
|
22
22
|
meetings:
|
23
23
|
actions:
|
24
|
-
join:
|
24
|
+
join: Bat egin
|
25
25
|
name: Topaketa-zerrenda
|
26
26
|
settings:
|
27
27
|
global:
|
@@ -44,6 +44,18 @@ eu:
|
|
44
44
|
admin:
|
45
45
|
exports:
|
46
46
|
registrations: Izen-emateak
|
47
|
+
invite_join_meeting_mailer:
|
48
|
+
invite:
|
49
|
+
invited_you_to_join_a_meeting: "%{invited_by} gonbidatu zaitu %{application} bileran. Beheko estekan onartu dezakezu."
|
50
|
+
join: Erregistratu bilera '%{meeting_title}'
|
51
|
+
invites:
|
52
|
+
create:
|
53
|
+
error: Arazo bat izan da erabiltzaileak bileran sartzeko gonbita emanda.
|
54
|
+
success: Erabiltzailea behar bezala gonbidatu bilera batera.
|
55
|
+
new:
|
56
|
+
explanation: Erabiltzailea bilera batera gonbidatuko zaizu. Posta elektronikoa ez bada erregistratuta, erakundera gonbidatuko dute.
|
57
|
+
invite: Gonbit egin
|
58
|
+
new_invite: Gonbidatu erabiltzailea
|
47
59
|
meeting_closes:
|
48
60
|
edit:
|
49
61
|
close: Itxi
|
@@ -74,43 +86,47 @@ eu:
|
|
74
86
|
edit:
|
75
87
|
save: Gorde
|
76
88
|
form:
|
77
|
-
available_slots_help: Utzi
|
89
|
+
available_slots_help: Utzi 0an izen-emate mugagabeak edukiz gero.
|
90
|
+
invite_user: Gonbidatu erabiltzailea
|
78
91
|
registrations_count:
|
79
|
-
one:
|
80
|
-
other: '%{count}
|
92
|
+
one: Izen-emate bat egin da.
|
93
|
+
other: '%{count} izen-emate egin dira.'
|
81
94
|
update:
|
82
|
-
invalid: Arazo bat izan da
|
83
|
-
success:
|
95
|
+
invalid: Arazo bat izan da izen-ematearen konfigurazioa gordetzean.
|
96
|
+
success: Topaketen izen-emateen konfigurazioak zuzen gorde dira.
|
84
97
|
events:
|
85
98
|
close_meeting_event:
|
86
|
-
email_intro: '
|
87
|
-
email_outro: Jakinarazpen
|
88
|
-
email_subject: '
|
89
|
-
notification_title: <a href="%{resource_path}">%{resource_title}</a> bilera
|
99
|
+
email_intro: '%{resource_title}” bilera itxi da. Ondorioak orrian bertan irakur ditzakezu:'
|
100
|
+
email_outro: Jakinarazpen hau jaso duzu "%{resource_title}” bilera jarraitzen duzulako. Jarraitzeari utzi diezaiokezu aurreko estekan.
|
101
|
+
email_subject: '%{resource_title}” bilera itxi da'
|
102
|
+
notification_title: <a href="%{resource_path}">%{resource_title}</a> bilera itxi da.
|
90
103
|
meeting_registrations_enabled:
|
91
|
-
email_intro: '
|
92
|
-
email_outro: Jakinarazpen
|
93
|
-
email_subject: '
|
94
|
-
notification_title: <a href="%{resource_path}">%{resource_title}</a>
|
104
|
+
email_intro: '“%{resource_title}” bilerak izen-emateak aktibatu ditu. Izena eman dezakezu orrian bertan:'
|
105
|
+
email_outro: Jakinarazpen hau jaso duzu "%{resource_title}” topaketa jarraitzen duzulako. Jarraitzeari utzi diezaiokezu aurreko estekan.
|
106
|
+
email_subject: '“%{resource_title}” topaketak izen-emateak aktibatu ditu.'
|
107
|
+
notification_title: <a href="%{resource_path}">%{resource_title}</a> topaketak izen-emateak aktibatu ditu.
|
95
108
|
meeting_registrations_over_percentage:
|
96
|
-
email_intro: '"%{resource_title}"
|
97
|
-
email_outro: Jakinarazpen hau jaso duzu bileraren
|
98
|
-
email_subject: '"%{resource_title}"
|
99
|
-
notification_title: <a href="%{resource_path}">%{resource_title}</a
|
109
|
+
email_intro: '"%{resource_title}" (e)an beteta dauden izen-emateak honako hauek dira: %{percentage}%.'
|
110
|
+
email_outro: Jakinarazpen hau jaso duzu bileraren gune partizipatiboko administratzaile bat zarelako.
|
111
|
+
email_subject: '"%{resource_title}" (e)an beteta dauden izen-emateak honako hauek dira: %{percentage}%'
|
112
|
+
notification_title: '<a href="%{resource_path}">%{resource_title}</a>-ko izen-emateak honako hauek dira: %{percentage}%.'
|
100
113
|
upcoming_meeting_event:
|
101
|
-
email_intro: '"%{resource_title}"
|
102
|
-
email_outro: Jakinarazpen
|
103
|
-
email_subject: '"%{resource_title}"
|
104
|
-
notification_title: <a href="%{resource_path}">%{resource_title}</a>
|
114
|
+
email_intro: '"%{resource_title}" bilera 48 ordu baino lehenago hasiko da.'
|
115
|
+
email_outro: Jakinarazpen hau jaso duzu "%{resource_title}” bilera jarraitzen duzulako. Jarraitzeari utzi diezaiokezu aurreko estekan.
|
116
|
+
email_subject: '"%{resource_title}" bilera 48 ordu baino lehenago hasiko da.'
|
117
|
+
notification_title: <a href="%{resource_path}">%{resource_title}</a> bilera 48 ordu baino lehenago hasiko da.
|
105
118
|
update_meeting_event:
|
106
|
-
email_intro: '"%{resource_title}" bilera
|
107
|
-
email_outro: Jakinarazpen
|
108
|
-
email_subject: '"%{resource_title}" bilera
|
109
|
-
notification_title: <a href="%{resource_path}">%{resource_title}</a>
|
119
|
+
email_intro: '"%{resource_title}" bilera eguneratua izan zen. Bertsio berria orrian bertan irakur dezakezu:'
|
120
|
+
email_outro: Jakinarazpen hau jaso duzu "%{resource_title}” bilera jarraitzen duzulako. Jarraitzeari utzi diezaiokezu aurreko estekan.
|
121
|
+
email_subject: '"%{resource_title}" bilera eguneratua izan da'
|
122
|
+
notification_title: <a href="%{resource_path}">%{resource_title}</a> eguneratua izan da.
|
110
123
|
mailer:
|
124
|
+
invite_join_meeting_mailer:
|
125
|
+
invite:
|
126
|
+
subject: Gaia
|
111
127
|
registration_mailer:
|
112
128
|
confirmation:
|
113
|
-
subject: Zure
|
129
|
+
subject: Zure topaketarako izen-ematea baieztatua izan da
|
114
130
|
meetings:
|
115
131
|
filters:
|
116
132
|
category: Kategoria
|
@@ -132,19 +148,19 @@ eu:
|
|
132
148
|
no_meetings_warning: Ez dago bilaketa-irizpidearekin bat datorren topaketarik, edo ez dago ezein topaketarik programaturik.
|
133
149
|
upcoming_meetings_warning: Orain ez dago topaketarik programaturik, baina aurreko topaketak ikus ditzakezu.
|
134
150
|
registration_confirm:
|
135
|
-
cancel:
|
151
|
+
cancel: Ezeztatu
|
136
152
|
confirm: Baieztatu
|
137
153
|
show:
|
138
154
|
attendees: Bertaratuen kopurua
|
139
155
|
contributions: Ekarpen-kopurua
|
140
|
-
going:
|
141
|
-
join:
|
156
|
+
going: Ari da
|
157
|
+
join: Izena eman topaketan
|
142
158
|
meeting_report: Topaketaren txostena
|
143
|
-
no_slots_available: Ez dago
|
159
|
+
no_slots_available: Ez dago leku librerik
|
144
160
|
organizations: Bertaratutako erakundeak
|
145
161
|
remaining_slots:
|
146
|
-
one: 1
|
147
|
-
other: "%{count}
|
162
|
+
one: Izen-emate 1 erabilgarri
|
163
|
+
other: "%{count} izen-emate erabilgarri"
|
148
164
|
models:
|
149
165
|
meeting:
|
150
166
|
fields:
|
@@ -156,15 +172,15 @@ eu:
|
|
156
172
|
read_more: "(geihago irakurri)"
|
157
173
|
registration_mailer:
|
158
174
|
confirmation:
|
159
|
-
confirmed_html: Zure izen-ematea <a href="%{url}">%{title}</a>
|
160
|
-
details:
|
175
|
+
confirmed_html: Zure izen-ematea baieztatu da <a href="%{url}">%{title}</a> topaketarako.
|
176
|
+
details: Topaketaren xehetasunak aurkituko dituzu eranskinean.
|
161
177
|
registrations:
|
162
178
|
create:
|
163
|
-
invalid: Arazo bat izan da
|
164
|
-
success:
|
179
|
+
invalid: Arazo bat izan da topaketa honekin bat egitean.
|
180
|
+
success: Topaketan izena ongi eman duzu.
|
165
181
|
destroy:
|
166
|
-
invalid: Arazo bat izan da
|
167
|
-
success:
|
182
|
+
invalid: Arazo bat izan da topaketa honetatik ateratzean.
|
183
|
+
success: Topaketatik ongi atera zara.
|
168
184
|
resource_links:
|
169
185
|
meetings_through_proposals:
|
170
186
|
meeting_results: 'Topaketaren emaitzak:'
|
@@ -172,3 +188,7 @@ eu:
|
|
172
188
|
proposals_from_meeting:
|
173
189
|
meeting_proposals: 'Topaketari dagozkion proposamenak:'
|
174
190
|
proposal_meetings: 'Proposamenarekin lotutako topaketak:'
|
191
|
+
devise:
|
192
|
+
mailer:
|
193
|
+
join_meeting:
|
194
|
+
subject: Gaia
|