decidim-meetings 0.6.8 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|