decidim-meetings 0.17.2 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +19 -9
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +18 -0
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -0
- data/app/commands/decidim/meetings/join_meeting.rb +19 -15
- data/app/controllers/decidim/meetings/meetings_controller.rb +5 -1
- data/app/controllers/decidim/meetings/registrations_controller.rb +3 -1
- data/app/forms/decidim/meetings/admin/meeting_copy_form.rb +4 -0
- data/app/forms/decidim/meetings/join_meeting_form.rb +9 -0
- data/app/helpers/decidim/meetings/meetings_helper.rb +10 -8
- data/app/models/decidim/meetings/meeting.rb +10 -7
- data/app/models/decidim/meetings/registration.rb +13 -0
- data/app/serializers/decidim/meetings/registration_serializer.rb +2 -1
- data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +1 -7
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child_template.html.erb +7 -0
- data/app/views/decidim/meetings/admin/agenda/_form.html.erb +9 -7
- data/app/views/decidim/meetings/admin/meetings/_services.html.erb +2 -2
- data/app/views/decidim/meetings/admin/registrations/_form.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/show.html.erb +18 -2
- data/config/locales/ar-SA.yml +1 -0
- data/config/locales/ar.yml +463 -0
- data/config/locales/ca.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es-PY.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fi-plain.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/hu.yml +1 -0
- data/config/locales/it.yml +1 -0
- data/config/locales/sv.yml +1 -0
- data/config/locales/tr-TR.yml +1 -0
- data/db/migrate/20190404132923_add_user_group_to_meetings_registrations.rb +7 -0
- data/lib/decidim/meetings/version.rb +1 -1
- metadata +17 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acf4dd236d144b7df6c838924436126b8d2d76c95014aaf0b6a62595e4d832cc
|
4
|
+
data.tar.gz: bdb73743ed8d64b222f541858f0b0124829a6b786c9a428e6c8830e6349d2033
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 689b028281536116bca5b37d9e3e73d00b45b3b7b51ffa7e0b10da752874636d3f239e66791ac1f4db3fd30a26d548fdef0b0d0b9e44a965c893973be1e806ed
|
7
|
+
data.tar.gz: 4e7811d23760587f636fef8c142bd6ccb5ebff8098706262bcf6cbe49f2bc7b50ac4c7e656f361d0f5912fa360a5bbfe7006f358f44ea3280bcb0a003fb47b63
|
@@ -1,15 +1,25 @@
|
|
1
1
|
<div class="reveal" data-reveal id="meeting-registration-confirm-<%= model.id %>">
|
2
|
-
|
3
|
-
<div class="
|
4
|
-
|
2
|
+
<%= decidim_form_for(registration_form, url: meeting_registration_path(model), method: :post) do |form| %>
|
3
|
+
<div class="row">
|
4
|
+
<div class="columns medium-10 medium-offset-1">
|
5
|
+
<%= cell("decidim/represent_user_group", form) %>
|
6
|
+
</div>
|
5
7
|
</div>
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
|
9
|
+
<div class="row">
|
10
|
+
<div class="columns medium-10 medium-offset-1 help-text">
|
11
|
+
<%= registration_terms_text %>
|
12
|
+
</div>
|
10
13
|
</div>
|
11
|
-
|
14
|
+
|
15
|
+
<div class="row">
|
16
|
+
<div class="columns medium-8 medium-offset-2">
|
17
|
+
<%= form.submit i18n_confirm_text, class: "button expanded", data: { disable: true } %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
<% end %>
|
21
|
+
|
12
22
|
<div class="text-center">
|
13
|
-
<button class="link" data-close><%=
|
23
|
+
<button class="link" data-close><%= i18n_cancel_text %></button>
|
14
24
|
</div>
|
15
25
|
</div>
|
@@ -6,6 +6,8 @@ module Decidim
|
|
6
6
|
class JoinMeetingButtonCell < Decidim::ViewModel
|
7
7
|
include MeetingCellsHelper
|
8
8
|
include Decidim::SanitizeHelper
|
9
|
+
include ActionView::Helpers::FormTagHelper
|
10
|
+
include ActionView::Helpers::FormOptionsHelper
|
9
11
|
|
10
12
|
def show
|
11
13
|
render
|
@@ -36,6 +38,22 @@ module Decidim
|
|
36
38
|
return I18n.t("join", scope: "decidim.meetings.meetings.show") if model.has_available_slots?
|
37
39
|
I18n.t("no_slots_available", scope: "decidim.meetings.meetings.show")
|
38
40
|
end
|
41
|
+
|
42
|
+
def i18n_confirm_text
|
43
|
+
I18n.t("confirm", scope: "decidim.meetings.meetings.registration_confirm")
|
44
|
+
end
|
45
|
+
|
46
|
+
def i18n_cancel_text
|
47
|
+
I18n.t("cancel", scope: "decidim.meetings.meetings.registration_confirm")
|
48
|
+
end
|
49
|
+
|
50
|
+
def registration_terms_text
|
51
|
+
decidim_sanitize translated_attribute(model.registration_terms)
|
52
|
+
end
|
53
|
+
|
54
|
+
def registration_form
|
55
|
+
@registration_form ||= Decidim::Meetings::JoinMeetingForm.new
|
56
|
+
end
|
39
57
|
end
|
40
58
|
end
|
41
59
|
end
|
@@ -60,6 +60,7 @@ module Decidim
|
|
60
60
|
private_meeting: @form.private_meeting,
|
61
61
|
transparent: @form.transparent,
|
62
62
|
organizer: @form.organizer,
|
63
|
+
questionnaire: @form.questionnaire,
|
63
64
|
registrations_enabled: @meeting.registrations_enabled,
|
64
65
|
available_slots: @meeting.available_slots,
|
65
66
|
registration_terms: @meeting.registration_terms
|
@@ -8,10 +8,11 @@ module Decidim
|
|
8
8
|
#
|
9
9
|
# meeting - The current instance of the meeting to be joined.
|
10
10
|
# user - The user joining the meeting.
|
11
|
-
# registration_form -
|
12
|
-
def initialize(meeting, user, registration_form
|
11
|
+
# registration_form - A form object with params; can be a questionnaire.
|
12
|
+
def initialize(meeting, user, registration_form)
|
13
13
|
@meeting = meeting
|
14
14
|
@user = user
|
15
|
+
@user_group = Decidim::UserGroup.find_by(id: registration_form.user_group_id)
|
15
16
|
@registration_form = registration_form
|
16
17
|
end
|
17
18
|
|
@@ -22,12 +23,9 @@ module Decidim
|
|
22
23
|
def call
|
23
24
|
meeting.with_lock do
|
24
25
|
return broadcast(:invalid) unless can_join_meeting?
|
26
|
+
return broadcast(:invalid_form) unless registration_form.valid?
|
25
27
|
|
26
|
-
|
27
|
-
return broadcast(:invalid_form) unless registration_form.valid?
|
28
|
-
save_registration_form
|
29
|
-
end
|
30
|
-
|
28
|
+
answer_questionnaire
|
31
29
|
create_registration
|
32
30
|
accept_invitation
|
33
31
|
send_email_confirmation
|
@@ -40,18 +38,24 @@ module Decidim
|
|
40
38
|
|
41
39
|
private
|
42
40
|
|
43
|
-
attr_reader :meeting, :user, :registration, :registration_form
|
41
|
+
attr_reader :meeting, :user, :user_group, :registration, :registration_form
|
44
42
|
|
45
43
|
def accept_invitation
|
46
44
|
meeting.invites.find_by(user: user)&.accept!
|
47
45
|
end
|
48
46
|
|
49
|
-
def
|
47
|
+
def answer_questionnaire
|
48
|
+
return unless questionnaire?
|
49
|
+
|
50
50
|
Decidim::Forms::AnswerQuestionnaire.call(registration_form, user, meeting.questionnaire)
|
51
51
|
end
|
52
52
|
|
53
53
|
def create_registration
|
54
|
-
@registration = Decidim::Meetings::Registration.create!(
|
54
|
+
@registration = Decidim::Meetings::Registration.create!(
|
55
|
+
meeting: meeting,
|
56
|
+
user: user,
|
57
|
+
user_group: user_group
|
58
|
+
)
|
55
59
|
end
|
56
60
|
|
57
61
|
def can_join_meeting?
|
@@ -60,11 +64,7 @@ module Decidim
|
|
60
64
|
end
|
61
65
|
|
62
66
|
def send_email_confirmation
|
63
|
-
Decidim::Meetings::RegistrationMailer.confirmation(
|
64
|
-
@user,
|
65
|
-
@meeting,
|
66
|
-
@registration
|
67
|
-
).deliver_now
|
67
|
+
Decidim::Meetings::RegistrationMailer.confirmation(user, meeting, registration).deliver_later
|
68
68
|
end
|
69
69
|
|
70
70
|
def send_notification_confirmation
|
@@ -108,6 +108,10 @@ module Decidim
|
|
108
108
|
def occupied_slots_over?(percentage)
|
109
109
|
@meeting.remaining_slots == (@meeting.available_slots * (1 - percentage)).round
|
110
110
|
end
|
111
|
+
|
112
|
+
def questionnaire?
|
113
|
+
registration_form.model_name == "Questionnaire"
|
114
|
+
end
|
111
115
|
end
|
112
116
|
end
|
113
117
|
end
|
@@ -8,7 +8,7 @@ module Decidim
|
|
8
8
|
include Paginable
|
9
9
|
helper Decidim::WidgetUrlsHelper
|
10
10
|
|
11
|
-
helper_method :meetings, :meeting, :search
|
11
|
+
helper_method :meetings, :meeting, :registration, :search
|
12
12
|
|
13
13
|
def index
|
14
14
|
return unless search.results.empty? && params.dig("filter", "date") != "past"
|
@@ -38,6 +38,10 @@ module Decidim
|
|
38
38
|
@meetings ||= paginate(search.results)
|
39
39
|
end
|
40
40
|
|
41
|
+
def registration
|
42
|
+
@registration ||= meeting.registrations.find_by(user: current_user)
|
43
|
+
end
|
44
|
+
|
41
45
|
def search_klass
|
42
46
|
MeetingSearch
|
43
47
|
end
|
@@ -32,7 +32,9 @@ module Decidim
|
|
32
32
|
def create
|
33
33
|
enforce_permission_to :join, :meeting, meeting: meeting
|
34
34
|
|
35
|
-
|
35
|
+
@form = JoinMeetingForm.from_params(params)
|
36
|
+
|
37
|
+
JoinMeeting.call(meeting, current_user, @form) do
|
36
38
|
on(:ok) do
|
37
39
|
flash[:notice] = I18n.t("registrations.create.success", scope: "decidim.meetings")
|
38
40
|
redirect_after_path
|
@@ -88,18 +88,20 @@ module Decidim
|
|
88
88
|
html.html_safe
|
89
89
|
end
|
90
90
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
.find_by(decidim_meeting_id: @meeting.id)
|
95
|
-
end
|
96
|
-
|
91
|
+
# Public: Registration code generic help text.
|
92
|
+
#
|
93
|
+
# Returns a String.
|
97
94
|
def registration_code_help_text
|
98
95
|
t("registration_code_help_text", scope: "decidim.meetings.meetings.show")
|
99
96
|
end
|
100
97
|
|
101
|
-
|
102
|
-
|
98
|
+
# Public: Registration validation state as text.
|
99
|
+
#
|
100
|
+
# registration - The registration that holds the validation code.
|
101
|
+
#
|
102
|
+
# Returns a String.
|
103
|
+
def validation_state_for(registration)
|
104
|
+
if registration.validated?
|
103
105
|
t("validated", scope: "decidim.meetings.meetings.show.registration_state")
|
104
106
|
else
|
105
107
|
t("validation_pending", scope: "decidim.meetings.meetings.show.registration_state")
|
@@ -56,6 +56,11 @@ module Decidim
|
|
56
56
|
index_on_create: ->(meeting) { meeting.visible? },
|
57
57
|
index_on_update: ->(meeting) { meeting.visible? })
|
58
58
|
|
59
|
+
# Return registrations of a particular meeting made by users representing a group
|
60
|
+
def user_group_registrations
|
61
|
+
registrations.where.not(decidim_user_group_id: nil)
|
62
|
+
end
|
63
|
+
|
59
64
|
def self.log_presenter_class_for(_log)
|
60
65
|
Decidim::Meetings::AdminLog::MeetingPresenter
|
61
66
|
end
|
@@ -111,6 +116,11 @@ module Decidim
|
|
111
116
|
followers
|
112
117
|
end
|
113
118
|
|
119
|
+
# Public: Whether the object can have new comments or not.
|
120
|
+
def user_allowed_to_comment?(user)
|
121
|
+
can_participate?(user)
|
122
|
+
end
|
123
|
+
|
114
124
|
def can_participate?(user)
|
115
125
|
can_participate_in_space?(user) && can_participate_in_meeting?(user)
|
116
126
|
end
|
@@ -156,13 +166,6 @@ module Decidim
|
|
156
166
|
|
157
167
|
private
|
158
168
|
|
159
|
-
def can_participate_in_space?(user)
|
160
|
-
return true unless participatory_space.try(:private_space?)
|
161
|
-
return false unless user
|
162
|
-
|
163
|
-
participatory_space.users.include?(user)
|
164
|
-
end
|
165
|
-
|
166
169
|
def can_participate_in_meeting?(user)
|
167
170
|
return true unless private_meeting?
|
168
171
|
return false unless user
|
@@ -8,6 +8,7 @@ module Decidim
|
|
8
8
|
|
9
9
|
belongs_to :meeting, foreign_key: "decidim_meeting_id", class_name: "Decidim::Meetings::Meeting"
|
10
10
|
belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User"
|
11
|
+
belongs_to :user_group, foreign_key: "decidim_user_group_id", class_name: "Decidim::UserGroup", optional: true
|
11
12
|
|
12
13
|
validates :user, uniqueness: { scope: :meeting }
|
13
14
|
validates :code, uniqueness: { allow_blank: true, scope: :meeting }
|
@@ -23,6 +24,18 @@ module Decidim
|
|
23
24
|
Decidim::Meetings::DataPortabilityRegistrationSerializer
|
24
25
|
end
|
25
26
|
|
27
|
+
# Pluck all Decidim::UserGroup ID's
|
28
|
+
def self.user_group_ids
|
29
|
+
pluck(:decidim_user_group_id)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Public: Checks if the registration has been validated.
|
33
|
+
#
|
34
|
+
# Returns Boolean.
|
35
|
+
def validated?
|
36
|
+
validated_at?
|
37
|
+
end
|
38
|
+
|
26
39
|
private
|
27
40
|
|
28
41
|
def generate_code
|
@@ -28,13 +28,7 @@
|
|
28
28
|
<h2 class="card-title"><%= t(".agenda_item_children") %></h2>
|
29
29
|
</div>
|
30
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
|
-
|
31
|
+
<div class="meeting-agenda-item-childs" data-template="<%= child_template_selector %>">
|
38
32
|
<div class="meeting-agenda-item-childs-list">
|
39
33
|
<% agenda_item.agenda_item_children.each do |agenda_item_child| %>
|
40
34
|
<%= fields_for "meeting_agenda[agenda_items][#{agenda_item.to_param}][agenda_item_children][]", agenda_item_child do |agenda_item_child_form| %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<% agenda_item = form.object %>
|
2
|
+
|
3
|
+
<script type="text/template" class="decidim-template" id="<%= template_id %>">
|
4
|
+
<%= 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| %>
|
5
|
+
<%= render "agenda_item_child", form: agenda_item_child_form, tabs_id: tabs_id_for_agenda_item(blank_agenda_item), tabs_id_child: tabs_id_for_agenda_item_child(blank_agenda_item), editable: editable %>
|
6
|
+
<% end %>
|
7
|
+
</script>
|
@@ -45,16 +45,18 @@
|
|
45
45
|
|
46
46
|
<div class="card-section">
|
47
47
|
<div class="meeting-agenda-items">
|
48
|
-
|
49
|
-
|
50
|
-
<%= render "agenda_item", form: agenda_item_form, tabs_id: tabs_id_for_agenda_item(blank_agenda_item), editable: true %>
|
51
|
-
|
52
|
-
|
48
|
+
<%= fields_for "meeting_agenda[agenda_items][#{blank_agenda_item.to_param}]", blank_agenda_item do |agenda_item_form| %>
|
49
|
+
<script type="text/template" class="decidim-template">
|
50
|
+
<%= render "agenda_item", form: agenda_item_form, tabs_id: tabs_id_for_agenda_item(blank_agenda_item), editable: true, child_template_selector: "#agenda-item-child-template-dummy" %>
|
51
|
+
</script>
|
52
|
+
<%= render "agenda_item_child_template", form: agenda_item_form, editable: true, template_id: "agenda-item-child-template-dummy" %>
|
53
|
+
<% end %>
|
53
54
|
|
54
55
|
<div class="meeting-agenda-items-list">
|
55
|
-
<% @form.agenda_items.
|
56
|
+
<% @form.agenda_items.each_with_index do |agenda_item, index| %>
|
56
57
|
<%= 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
|
+
<%= render "agenda_item", form: agenda_item_form, tabs_id: tabs_id_for_agenda_item(agenda_item), editable: true, child_template_selector: "#agenda-item-child-template-#{index}" %>
|
59
|
+
<%= render "agenda_item_child_template", form: agenda_item_form, editable: true, template_id: "agenda-item-child-template-#{index}" %>
|
58
60
|
<% end %>
|
59
61
|
<% end %>
|
60
62
|
</div>
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
<div class="card-section">
|
7
7
|
<div class="meeting-services">
|
8
|
-
<template>
|
8
|
+
<script type="text/template" class="decidim-template">
|
9
9
|
<%= fields_for "meeting[services][#{blank_service.to_param}]", blank_service do |service_form| %>
|
10
10
|
<%= render "decidim/meetings/admin/meetings/service", form: service_form, id: tabs_id_for_service(blank_service) %>
|
11
11
|
<% end %>
|
12
|
-
</
|
12
|
+
</script>
|
13
13
|
|
14
14
|
<div class="meeting-services-list">
|
15
15
|
<% form.object.services.each do |service| %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="card">
|
2
2
|
<div class="card-divider">
|
3
3
|
<h2 class="card-title">
|
4
|
-
<%= title %>
|
4
|
+
<%= t(".title") %>
|
5
5
|
<%= link_to t(".invites"), meeting_registrations_invites_path(meeting), class: "button tiny button--title #{'disabled' unless allowed_to? :read_invites, :meeting, meeting: meeting}" %>
|
6
6
|
<% if allowed_to? :export_registrations, :meeting, meeting: meeting %>
|
7
7
|
<span class="exports dropdown tiny button button--simple button--title" data-toggle="export-dropdown"><%= t "actions.export", scope: "decidim.admin" %></span>
|
@@ -60,13 +60,13 @@ edit_link(
|
|
60
60
|
<% end %>
|
61
61
|
</div>
|
62
62
|
|
63
|
-
<% if registration %>
|
63
|
+
<% if registration.present? %>
|
64
64
|
<div class="card extra">
|
65
65
|
<div class="card__content">
|
66
66
|
<div class="registration_code">
|
67
67
|
<span><%= registration_code_help_text %></span>
|
68
68
|
<span><strong><%= registration.code %></strong></span>
|
69
|
-
<div class="text-small"><%=
|
69
|
+
<div class="text-small"><%= validation_state_for(registration) %></div>
|
70
70
|
</div>
|
71
71
|
</div>
|
72
72
|
</div>
|
@@ -117,6 +117,22 @@ edit_link(
|
|
117
117
|
<%= render "meeting_minutes" %>
|
118
118
|
<% end %>
|
119
119
|
|
120
|
+
<% if !meeting.closed? && meeting.user_group_registrations.any? %>
|
121
|
+
<% user_group_ids = meeting.user_group_registrations.user_group_ids %>
|
122
|
+
<div class="section">
|
123
|
+
<h4 class="section-heading"><%= t(".organizations") %></h4>
|
124
|
+
<div class="card card--list">
|
125
|
+
<% Decidim::UserGroup.where(id: user_group_ids).each do |group| %>
|
126
|
+
<div class="card--list__item">
|
127
|
+
<div class="card--list__text card--list__text--top">
|
128
|
+
<%= cell "decidim/author", present(group) %>
|
129
|
+
</div>
|
130
|
+
</div>
|
131
|
+
<% end %>
|
132
|
+
</div>
|
133
|
+
</div>
|
134
|
+
<% end %>
|
135
|
+
|
120
136
|
<% if meeting.closed? %>
|
121
137
|
<div class="section">
|
122
138
|
<h3 class="section-heading"><%= t(".meeting_report") %></h3>
|
data/config/locales/ar-SA.yml
CHANGED
@@ -297,6 +297,7 @@ ar:
|
|
297
297
|
other: كان هناك %{count} التسجيلات.
|
298
298
|
reserved_slots_help: اتركه إلى 0 إذا لم يكن لديك فتحات محجوزة
|
299
299
|
reserved_slots_less_than: يجب أن يكون أقل من أو يساوي %{count}
|
300
|
+
title: التسجيلات
|
300
301
|
update:
|
301
302
|
invalid: حدثت مشكلة أثناء حفظ إعدادات التسجيل.
|
302
303
|
success: تم حفظ إعدادات تسجيل الاجتماع بنجاح.
|
@@ -0,0 +1,463 @@
|
|
1
|
+
ar:
|
2
|
+
activemodel:
|
3
|
+
attributes:
|
4
|
+
agenda:
|
5
|
+
description: وصف
|
6
|
+
duration: المدة الزمنية
|
7
|
+
title: عنوان
|
8
|
+
close_meeting:
|
9
|
+
attendees_count: عدد الحضور
|
10
|
+
attending_organizations: قائمة المنظمات التي حضرت
|
11
|
+
closing_report: أبلغ عن
|
12
|
+
contributions_count: عدد المساهمات
|
13
|
+
proposal_ids: المقترحات التي تم إنشاؤها في الاجتماع
|
14
|
+
meeting:
|
15
|
+
address: عنوان
|
16
|
+
available_slots: فتحات المتاحة لهذا الاجتماع
|
17
|
+
decidim_category_id: الفئة
|
18
|
+
decidim_scope_id: نطاق
|
19
|
+
description: وصف
|
20
|
+
end_time: وقت النهاية
|
21
|
+
location: موقعك
|
22
|
+
location_hints: تلميحات الموقع
|
23
|
+
organizer_id: منظم
|
24
|
+
private_meeting: اجتماع خاص
|
25
|
+
registration_form_enabled: تم تمكين نموذج التسجيل
|
26
|
+
registration_terms: شروط التسجيل
|
27
|
+
registrations_enabled: تم تمكين التسجيلات
|
28
|
+
start_time: وقت البدء
|
29
|
+
title: عنوان
|
30
|
+
transparent: شفاف
|
31
|
+
minutes:
|
32
|
+
audio_url: العنوان الشبكي للصوت
|
33
|
+
description: وصف
|
34
|
+
video_url: العنوان الشبكي للفيديو
|
35
|
+
visible: مرئي
|
36
|
+
errors:
|
37
|
+
models:
|
38
|
+
meeting_agenda:
|
39
|
+
attributes:
|
40
|
+
base:
|
41
|
+
too_many_minutes: تتجاوز مدة العناصر مدة الاجتماع بـ %{count} دقيقة
|
42
|
+
too_many_minutes_child: تتجاوز مدة العنصر التابع للطفل مدة الأصل "%{parent_title}" لعنصر جدول الأعمال بمقدار دقيقة %{count}
|
43
|
+
meeting_registration_invite:
|
44
|
+
attributes:
|
45
|
+
email:
|
46
|
+
already_invited: تمت دعوة حساب البريد الإلكتروني هذا بالفعل
|
47
|
+
models:
|
48
|
+
decidim/meetings/close_meeting_event: تم إغلاق الاجتماع
|
49
|
+
decidim/meetings/create_meeting_event: لقاء
|
50
|
+
decidim/meetings/meeting_registrations_enabled_event: تم تمكين التسجيلات
|
51
|
+
decidim/meetings/meeting_registrations_over_percentage_event: التسجيلات فوق الحد
|
52
|
+
decidim/meetings/upcoming_meeting_event: الاجتماع القادم
|
53
|
+
decidim/meetings/update_meeting_event: تم تحديث الاجتماع
|
54
|
+
activerecord:
|
55
|
+
models:
|
56
|
+
decidim/meetings/meeting:
|
57
|
+
zero: اجتماعات
|
58
|
+
one: لقاء
|
59
|
+
two: اجتماعات
|
60
|
+
few: اجتماعات
|
61
|
+
many: اجتماعات
|
62
|
+
other: اجتماعات
|
63
|
+
decidim/meetings/minutes:
|
64
|
+
zero: الدقائق
|
65
|
+
one: الدقائق
|
66
|
+
two: الدقائق
|
67
|
+
few: الدقائق
|
68
|
+
many: الدقائق
|
69
|
+
other: الدقائق
|
70
|
+
decidim/meetings/registration:
|
71
|
+
zero: التسجيلات
|
72
|
+
one: التسجيل
|
73
|
+
two: التسجيلات
|
74
|
+
few: التسجيلات
|
75
|
+
many: التسجيلات
|
76
|
+
other: التسجيلات
|
77
|
+
decidim:
|
78
|
+
admin:
|
79
|
+
meeting_copies:
|
80
|
+
create:
|
81
|
+
error: كانت هناك مشكلة في تكرار هذا الاجتماع.
|
82
|
+
success: تم تكرار الاجتماع بنجاح.
|
83
|
+
new:
|
84
|
+
copy: نسخ
|
85
|
+
select: حدد البيانات التي ترغب في تكرارها
|
86
|
+
title: اجتماع مكرر
|
87
|
+
components:
|
88
|
+
meetings:
|
89
|
+
actions:
|
90
|
+
join: انضم
|
91
|
+
name: اجتماعات
|
92
|
+
settings:
|
93
|
+
global:
|
94
|
+
announcement: إعلان
|
95
|
+
comments_enabled: تم تمكين التعليقات
|
96
|
+
default_registration_terms: شروط التسجيل الافتراضية
|
97
|
+
enable_pads_creation: تمكين إنشاء منصات
|
98
|
+
resources_permissions_enabled: يمكن تعيين أذونات الإجراءات لكل اجتماع
|
99
|
+
step:
|
100
|
+
announcement: إعلان
|
101
|
+
comments_blocked: تم حظر التعليقات
|
102
|
+
events:
|
103
|
+
meetings:
|
104
|
+
meeting_closed:
|
105
|
+
affected_user:
|
106
|
+
email_intro: 'تم إغلاق اجتماعك "%{resource_title}". يمكنك قراءة الاستنتاجات من صفحتها:'
|
107
|
+
email_outro: لقد تلقيت هذا الإشعار لأنك نظمت اجتماع "%{resource_title}".
|
108
|
+
follower:
|
109
|
+
email_outro: لقد تلقيت هذا الإشعار لأنك تتابع اجتماع "%{resource_title}". يمكنك إلغاء تتبعه من الرابط السابق.
|
110
|
+
meeting_created:
|
111
|
+
email_intro: تمت إضافة الاجتماع "%{resource_title}" إلى "%{participatory_space_title}" الذي تتابعه.
|
112
|
+
email_outro: لقد تلقيت هذا الإشعار لأنك تتابع "%{participatory_space_title}". يمكنك إلغاء تتبعه من الرابط السابق.
|
113
|
+
email_subject: تمت إضافة اجتماع جديد إلى %{participatory_space_title}
|
114
|
+
notification_title: تمت إضافة الاجتماع <a href="%{resource_path}">%{resource_title}</a> إلى %{participatory_space_title}
|
115
|
+
meeting_registration_confirmed:
|
116
|
+
notification_title: تم تأكيد تسجيلك للاجتماع <a href="%{resource_url}">%{resource_title}</a> . رمز التسجيل الخاص بك هو %{registration_code}.
|
117
|
+
meeting_registrations_over_percentage:
|
118
|
+
email_intro: الشقوق المخصصة للاجتماع "%{resource_title}" تزيد عن %{percentage}٪.
|
119
|
+
email_outro: لقد تلقيت هذا الإشعار لأنك مسؤول عن المساحة التشاركية للاجتماع.
|
120
|
+
email_subject: الشقوق المخصصة للاجتماع "%{resource_title}" تتجاوز %{percentage}٪
|
121
|
+
notification_title: تتجاوز الفواصل المخصصة للاجتماع <a href="%{resource_path}">%{resource_title}</a> ٪ %{percentage}.
|
122
|
+
meeting_updated:
|
123
|
+
email_intro: 'تم تحديث الاجتماع "%{resource_title}". يمكنك قراءة الإصدار الجديد من صفحته:'
|
124
|
+
email_outro: لقد تلقيت هذا الإشعار لأنك تتابع اجتماع "%{resource_title}". يمكنك إلغاء تتبعه من الرابط السابق.
|
125
|
+
email_subject: تم تحديث الاجتماع "%{resource_title}"
|
126
|
+
notification_title: تم تحديث الاجتماع <a href="%{resource_path}">%{resource_title}</a>.
|
127
|
+
registration_code_validated:
|
128
|
+
email_intro: تم التحقق من صحة رمز التسجيل "%{registration_code}" الخاص باجتماع "%{resource_title}".
|
129
|
+
email_outro: لقد تلقيت هذا الإشعار لأنه تم التحقق من صحة رمز التسجيل الخاص بالاجتماع "%{resource_title}".
|
130
|
+
email_subject: تم التحقق من صحة رمز التسجيل "%{registration_code}" الخاص باجتماع "%{resource_title}"
|
131
|
+
notification_title: تم التحقق من صحة رمز التسجيل "%{registration_code}" الخاص بالاجتماع <a href="%{resource_path}">%{resource_title}</a>.
|
132
|
+
registrations_enabled:
|
133
|
+
email_intro: 'لقد مكّن الاجتماع "%{resource_title}" التسجيلات. يمكنك تسجيل نفسك على صفحتها:'
|
134
|
+
email_outro: لقد تلقيت هذا الإشعار لأنك تتابع اجتماع "%{resource_title}". يمكنك إلغاء تتبعه من الرابط السابق.
|
135
|
+
email_subject: لقد مكّن الاجتماع "%{resource_title}" التسجيلات.
|
136
|
+
notification_title: لقد مكّن الاجتماع <a href="%{resource_path}">%{resource_title}</a> التسجيلات.
|
137
|
+
upcoming_meeting:
|
138
|
+
email_intro: سيبدأ الاجتماع "%{resource_title}" في أقل من 48 ساعة.
|
139
|
+
email_outro: لقد تلقيت هذا الإشعار لأنك تتابع اجتماع "%{resource_title}". يمكنك إلغاء تتبعه من الرابط السابق.
|
140
|
+
email_subject: سيبدأ الاجتماع "%{resource_title}" في أقل من 48 ساعة.
|
141
|
+
notification_title: سيبدأ الاجتماع <a href="%{resource_path}">%{resource_title}</a> في أقل من 48 ساعة.
|
142
|
+
gamification:
|
143
|
+
badges:
|
144
|
+
attended_meetings:
|
145
|
+
conditions:
|
146
|
+
- سجل للاجتماعات التي تريد حضورها
|
147
|
+
description: تُمنح هذه الشارة عند حضور العديد من الاجتماعات المباشرة.
|
148
|
+
description_another: حضر هذا المشارك %{score} جلسة.
|
149
|
+
description_own: لقد حضرت %{score} اجتماع.
|
150
|
+
name: حضور الاجتماعات
|
151
|
+
next_level_in: حضور %{score} اجتماعات أخرى للوصول إلى المستوى التالي!
|
152
|
+
unearned_another: هذا المشارك لم يحضر أي اجتماع حتى الآن.
|
153
|
+
unearned_own: لم تحضر أي اجتماع بعد.
|
154
|
+
meetings:
|
155
|
+
actions:
|
156
|
+
agenda: جدول أعمال
|
157
|
+
attachment_collections: المجلدات
|
158
|
+
attachments: مرفقات
|
159
|
+
close: قريب
|
160
|
+
confirm_destroy: هل أنت متأكد أنك تريد حذف هذا الاجتماع؟
|
161
|
+
destroy: حذف
|
162
|
+
edit: تعديل
|
163
|
+
minutes: الدقائق
|
164
|
+
new: اجتماع جديد
|
165
|
+
preview: معاينة
|
166
|
+
registrations: التسجيلات
|
167
|
+
title: أفعال
|
168
|
+
admin:
|
169
|
+
agenda:
|
170
|
+
agenda_item:
|
171
|
+
add_agenda_item_child: إضافة بند جدول الأعمال الفرعي
|
172
|
+
agenda_item: البند من جدول الأعمال
|
173
|
+
agenda_item_children: بنود جدول الأعمال الفرعية
|
174
|
+
down: أسفل
|
175
|
+
remove: إزالة
|
176
|
+
up: فوق
|
177
|
+
agenda_item_child:
|
178
|
+
agenda_item_child: بند جدول الأعمال الفرعي
|
179
|
+
down: أسفل
|
180
|
+
remove: إزالة
|
181
|
+
up: فوق
|
182
|
+
create:
|
183
|
+
invalid: كانت هناك مشكلة في إنشاء جدول الأعمال هذا
|
184
|
+
success: تم إنشاء جدول الأعمال بنجاح
|
185
|
+
edit:
|
186
|
+
title: تحرير جدول الأعمال
|
187
|
+
update: تحديث
|
188
|
+
form:
|
189
|
+
add_agenda_item: إضافة عنصر جدول الأعمال
|
190
|
+
agenda_items: بنود جدول الأعمال
|
191
|
+
end_date: تاريخ الانتهاء
|
192
|
+
start_date: تاريخ البدء
|
193
|
+
new:
|
194
|
+
create: إنشاء
|
195
|
+
title: جدول أعمال جديد
|
196
|
+
update:
|
197
|
+
invalid: حدثت مشكلة أثناء تحديث جدول الأعمال هذا
|
198
|
+
success: تم تحديث جدول الأعمال بنجاح
|
199
|
+
exports:
|
200
|
+
meetings: اجتماعات
|
201
|
+
registrations: التسجيلات
|
202
|
+
invite_join_meeting_mailer:
|
203
|
+
invite:
|
204
|
+
decline: رفض الدعوة
|
205
|
+
invited_you_to_join_a_meeting: "%{invited_by} للانضمام إلى اجتماع في %{application}. يمكنك رفضه أو قبوله من خلال الروابط أدناه."
|
206
|
+
join: انضم إلى الاجتماع "%{meeting_title}"
|
207
|
+
invites:
|
208
|
+
create:
|
209
|
+
error: حدثت مشكلة أثناء دعوة المشارك للانضمام إلى الاجتماع.
|
210
|
+
success: تمت دعوة المشارك بنجاح للانضمام إلى الاجتماع.
|
211
|
+
form:
|
212
|
+
attendee_type: نوع الحضور
|
213
|
+
existing_user: المشارك الحالي
|
214
|
+
invite: دعا
|
215
|
+
invite_explanation: سيتم دعوة المشارك للانضمام إلى الاجتماع وإلى المنظمة أيضًا.
|
216
|
+
non_user: مشارك غير موجود
|
217
|
+
select_user: اختر المشارك
|
218
|
+
index:
|
219
|
+
filter:
|
220
|
+
accepted: وافقت
|
221
|
+
all: الكل
|
222
|
+
rejected: مرفوض
|
223
|
+
sent: أرسلت
|
224
|
+
filter_by: مصنف بواسطة
|
225
|
+
invite_attendee: دعوة الحضور
|
226
|
+
invites: تدعو
|
227
|
+
registrations_disabled: لا يمكنك دعوة أحد الحاضرين لأن التسجيلات معطلة.
|
228
|
+
search: بحث
|
229
|
+
meeting_closes:
|
230
|
+
edit:
|
231
|
+
close: قريب
|
232
|
+
title: اجتماع قريب
|
233
|
+
meeting_copies:
|
234
|
+
form:
|
235
|
+
select_organizer: اختر المنظم
|
236
|
+
meetings:
|
237
|
+
close:
|
238
|
+
invalid: حدثت مشكلة أثناء اختتام هذا الاجتماع
|
239
|
+
success: تم إغلاق الاجتماع بنجاح
|
240
|
+
create:
|
241
|
+
invalid: كانت هناك مشكلة في إنشاء هذا الاجتماع
|
242
|
+
success: تم إنشاء الاجتماع بنجاح
|
243
|
+
destroy:
|
244
|
+
success: تم حذف الاجتماع بنجاح
|
245
|
+
edit:
|
246
|
+
update: تحديث
|
247
|
+
form:
|
248
|
+
select_organizer: اختر المنظم
|
249
|
+
index:
|
250
|
+
title: اجتماعات
|
251
|
+
new:
|
252
|
+
create: إنشاء
|
253
|
+
title: إنشاء اجتماع
|
254
|
+
service:
|
255
|
+
description: وصف
|
256
|
+
down: أسفل
|
257
|
+
remove: إزالة
|
258
|
+
service: الخدمات
|
259
|
+
title: عنوان
|
260
|
+
up: فوق
|
261
|
+
services:
|
262
|
+
add_service: إضافة الخدمة
|
263
|
+
services: خدمات
|
264
|
+
update:
|
265
|
+
invalid: حدثت مشكلة أثناء تحديث هذا الاجتماع
|
266
|
+
success: تم تحديث الاجتماع بنجاح
|
267
|
+
minutes:
|
268
|
+
create:
|
269
|
+
invalid: كانت هناك مشكلة في إنشاء هذه الدقائق
|
270
|
+
success: تم إنشاء الدقائق بنجاح
|
271
|
+
edit:
|
272
|
+
update: تحديث
|
273
|
+
new:
|
274
|
+
create: إنشاء
|
275
|
+
title: خلق دقائق
|
276
|
+
update:
|
277
|
+
invalid: حدثت مشكلة أثناء تحديث هذه الدقائق
|
278
|
+
success: تم تحديث الدقائق بنجاح
|
279
|
+
models:
|
280
|
+
meeting:
|
281
|
+
name: لقاء
|
282
|
+
registrations:
|
283
|
+
edit:
|
284
|
+
save: حفظ
|
285
|
+
validate: التحقق من صحة
|
286
|
+
validate_registration_code: التحقق من صحة رمز التسجيل
|
287
|
+
form:
|
288
|
+
available_slots_help: اتركه إلى 0 إذا كان لديك فتحات غير محدودة المتاحة.
|
289
|
+
invites: دعوات
|
290
|
+
registration_form: إستمارة تسجيل
|
291
|
+
registrations_count:
|
292
|
+
zero: كان هناك %{count} التسجيلات.
|
293
|
+
one: كان هناك %{count} تسجيل.
|
294
|
+
two: كان هناك %{count} التسجيلات.
|
295
|
+
few: كان هناك %{count} التسجيلات.
|
296
|
+
many: كان هناك %{count} التسجيلات.
|
297
|
+
other: كان هناك %{count} التسجيلات.
|
298
|
+
reserved_slots_help: اتركه إلى 0 إذا لم يكن لديك فتحات محجوزة
|
299
|
+
reserved_slots_less_than: يجب أن يكون أقل من أو يساوي %{count}
|
300
|
+
title: التسجيلات
|
301
|
+
update:
|
302
|
+
invalid: حدثت مشكلة أثناء حفظ إعدادات التسجيل.
|
303
|
+
success: تم حفظ إعدادات تسجيل الاجتماع بنجاح.
|
304
|
+
validate_registration_code:
|
305
|
+
invalid: رمز التسجيل هذا غير صالح.
|
306
|
+
success: تم التحقق من صحة رمز التسجيل بنجاح.
|
307
|
+
admin_log:
|
308
|
+
invite:
|
309
|
+
create: "%{user_name} دعا %{attendee_name} للانضمام إلى اجتماع %{resource_name} في الفضاء %{space_name}"
|
310
|
+
deleted: "%{user_name} غير مدعو %{attendee_name} من الانضمام إلى اجتماع %{resource_name} في الفضاء %{space_name}"
|
311
|
+
update: "%{user_name} دعا %{attendee_name} للانضمام إلى اجتماع %{resource_name} في الفضاء %{space_name}"
|
312
|
+
meeting:
|
313
|
+
close: "%{user_name} أغلقت الجلسة %{resource_name} على %{space_name} الفضاء"
|
314
|
+
create: "%{user_name} إنشاء الاجتماع %{resource_name} على %{space_name} الفضاء"
|
315
|
+
delete: "%{user_name} حذف الاجتماع %{resource_name} على %{space_name} الفضاء"
|
316
|
+
export_registrations: "%{user_name} تصدير التسجيلات للجلسة %{resource_name} على %{space_name} الفضاء"
|
317
|
+
update: "%{user_name} تحديث الاجتماع %{resource_name} على %{space_name} الفضاء"
|
318
|
+
value_types:
|
319
|
+
organizer_presenter:
|
320
|
+
not_found: 'لم يتم العثور على المنظم في قاعدة البيانات (المعرف: %{id})'
|
321
|
+
minutes:
|
322
|
+
create: "%{user_name} خلق محضر الاجتماع %{resource_name} على %{space_name} الفضاء"
|
323
|
+
update: "%{user_name} تحديث محضر الاجتماع %{resource_name} على %{space_name} الفضاء"
|
324
|
+
calendar_modal:
|
325
|
+
calendar_url: العنوان الشبكي للتقويم
|
326
|
+
close_window: أغلق النافذة
|
327
|
+
export_calendar: تصدير التقويم
|
328
|
+
conference_venues: أماكن المؤتمر
|
329
|
+
content_blocks:
|
330
|
+
upcoming_events:
|
331
|
+
name: الأحداث القادمة
|
332
|
+
upcoming_events: الاجتماعات القادمة
|
333
|
+
view_all_events: عرض الكل
|
334
|
+
directory:
|
335
|
+
meetings:
|
336
|
+
index:
|
337
|
+
all: الكل
|
338
|
+
date: تاريخ
|
339
|
+
meetings: اجتماعات
|
340
|
+
past: الماضي
|
341
|
+
search: بحث
|
342
|
+
space_type: الفضاء التشاركي
|
343
|
+
upcoming: القادمة
|
344
|
+
last_activity:
|
345
|
+
new_meeting_at_html: "<span>اجتماع جديد في %{link}</span>"
|
346
|
+
mailer:
|
347
|
+
invite_join_meeting_mailer:
|
348
|
+
invite:
|
349
|
+
subject: دعوة للانضمام إلى اجتماع
|
350
|
+
registration_mailer:
|
351
|
+
confirmation:
|
352
|
+
subject: تم تأكيد تسجيل اجتماعك
|
353
|
+
meeting:
|
354
|
+
not_allowed: غير مسموح لك بمشاهدة هذا الاجتماع
|
355
|
+
meetings:
|
356
|
+
filters:
|
357
|
+
category: الفئة
|
358
|
+
category_prompt: اختر تصنيف
|
359
|
+
date: تاريخ
|
360
|
+
past: الماضي
|
361
|
+
search: بحث
|
362
|
+
upcoming: القادمة
|
363
|
+
filters_small_view:
|
364
|
+
close_modal: إغلاق مشروط
|
365
|
+
filter: منقي
|
366
|
+
filter_by: مصنف بواسطة
|
367
|
+
unfold: كشف
|
368
|
+
meeting_minutes:
|
369
|
+
meeting_minutes: محضر الاجتماع
|
370
|
+
related_information: معلومات ذات صله
|
371
|
+
meetings:
|
372
|
+
no_meetings_warning: لا توجد اجتماعات تطابق معايير البحث الخاصة بك أو لا يوجد أي اجتماع مجدولة.
|
373
|
+
upcoming_meetings_warning: حاليًا ، لا توجد اجتماعات مجدولة ، ولكن يمكنك هنا العثور على جميع الاجتماعات السابقة المدرجة.
|
374
|
+
registration_confirm:
|
375
|
+
cancel: إلغاء
|
376
|
+
confirm: تؤكد
|
377
|
+
show:
|
378
|
+
attendees: الحضور الحضور
|
379
|
+
contributions: عدد المساهمات
|
380
|
+
going: ذاهب
|
381
|
+
join: أنضم إلى الأجتماع
|
382
|
+
meeting_report: تقرير الاجتماع
|
383
|
+
no_slots_available: لا فتحات المتاحة
|
384
|
+
organizations: حضور المنظمات
|
385
|
+
registration_code_help_text: رمز التسجيل الخاص بك
|
386
|
+
registration_state:
|
387
|
+
validated: التحقق من صحة
|
388
|
+
validation_pending: جاري التأكد
|
389
|
+
remaining_slots:
|
390
|
+
zero: "%{count} فتحات المتبقية"
|
391
|
+
one: "%{count} فتحة المتبقية"
|
392
|
+
two: "%{count} فتحات المتبقية"
|
393
|
+
few: "%{count} فتحات المتبقية"
|
394
|
+
many: "%{count} فتحات المتبقية"
|
395
|
+
other: "%{count} فتحات المتبقية"
|
396
|
+
view: رأي
|
397
|
+
meetings_map:
|
398
|
+
view_meeting: عرض الاجتماع
|
399
|
+
models:
|
400
|
+
invite:
|
401
|
+
fields:
|
402
|
+
email: البريد الإلكتروني
|
403
|
+
name: اسم
|
404
|
+
sent_at: أرسلت في
|
405
|
+
status: الحالة
|
406
|
+
status:
|
407
|
+
accepted: مقبول (%{at})
|
408
|
+
rejected: مرفوض (%{at})
|
409
|
+
sent: أرسلت
|
410
|
+
meeting:
|
411
|
+
fields:
|
412
|
+
closed: مغلق
|
413
|
+
end_time: تاريخ الانتهاء
|
414
|
+
map: خريطة
|
415
|
+
start_time: تاريخ البدء
|
416
|
+
title: عنوان
|
417
|
+
read_more: "(قراءة المزيد)"
|
418
|
+
registration_mailer:
|
419
|
+
confirmation:
|
420
|
+
confirmed_html: تم تأكيد تسجيلك للاجتماع <a href="%{url}">%{title}</a>.
|
421
|
+
details: ستجد تفاصيل الاجتماع في المرفق.
|
422
|
+
registration_code: رمز التسجيل الخاص بك هو %{code}.
|
423
|
+
registrations:
|
424
|
+
create:
|
425
|
+
invalid: حدثت مشكلة أثناء الانضمام إلى هذا الاجتماع.
|
426
|
+
success: لقد انضممت إلى الاجتماع بنجاح.
|
427
|
+
decline_invitation:
|
428
|
+
invalid: حدثت مشكلة في رفض الدعوة.
|
429
|
+
success: لقد رفضت الدعوة بنجاح.
|
430
|
+
destroy:
|
431
|
+
invalid: حدثت مشكلة أثناء مغادرة هذا الاجتماع.
|
432
|
+
success: لقد تركت الاجتماع بنجاح.
|
433
|
+
types:
|
434
|
+
private_meeting: اجتماع خاص
|
435
|
+
transparent: شفاف
|
436
|
+
metrics:
|
437
|
+
meetings:
|
438
|
+
description: عدد الاجتماعات التي تم إنشاؤها
|
439
|
+
object: اجتماعات
|
440
|
+
title: اجتماعات
|
441
|
+
participatory_processes:
|
442
|
+
participatory_process_groups:
|
443
|
+
highlighted_meetings:
|
444
|
+
past_meetings: الاجتماعات السابقة
|
445
|
+
upcoming_meetings: الاجتماعات القادمة
|
446
|
+
participatory_spaces:
|
447
|
+
highlighted_meetings:
|
448
|
+
past_meetings: الاجتماعات السابقة
|
449
|
+
see_all: شاهد الكل (%{count})
|
450
|
+
upcoming_meetings: الاجتماعات القادمة
|
451
|
+
upcoming_meeting_for_card:
|
452
|
+
upcoming_meeting: الاجتماع القادم
|
453
|
+
resource_links:
|
454
|
+
meetings_through_proposals:
|
455
|
+
meeting_result: 'النتائج ذات الصلة:'
|
456
|
+
result_meeting: 'اجتماعات ذات صلة:'
|
457
|
+
proposals_from_meeting:
|
458
|
+
meeting_proposal: 'المقترحات ذات الصلة:'
|
459
|
+
proposal_meeting: 'اجتماعات ذات صلة:'
|
460
|
+
devise:
|
461
|
+
mailer:
|
462
|
+
join_meeting:
|
463
|
+
subject: دعوة للانضمام إلى اجتماع
|
data/config/locales/ca.yml
CHANGED
@@ -286,6 +286,7 @@ ca:
|
|
286
286
|
other: Hi ha hagut %{count} inscripcions.
|
287
287
|
reserved_slots_help: Deixar a 0 si no hi ha espais reservats
|
288
288
|
reserved_slots_less_than: Ha de ser inferior o igual que %{count}
|
289
|
+
title: Inscripcions
|
289
290
|
update:
|
290
291
|
invalid: S'ha produït un error en desar la configuració de la inscripció.
|
291
292
|
success: La configuració de les inscripcions de la trobada s'ha desat correctament.
|
data/config/locales/en.yml
CHANGED
@@ -287,6 +287,7 @@ en:
|
|
287
287
|
other: There has been %{count} registrations.
|
288
288
|
reserved_slots_help: Leave it to 0 if you don't have reserved slots
|
289
289
|
reserved_slots_less_than: Must be less than or equal to %{count}
|
290
|
+
title: Registrations
|
290
291
|
update:
|
291
292
|
invalid: There was a problem saving the registration settings.
|
292
293
|
success: Meeting registrations settings successfully saved.
|
data/config/locales/es-MX.yml
CHANGED
@@ -286,6 +286,7 @@ es-MX:
|
|
286
286
|
other: Ha habido %{count} inscripciones.
|
287
287
|
reserved_slots_help: Déjalo en 0 si no tienes espacios reservados
|
288
288
|
reserved_slots_less_than: Debe ser menor que o igual a %{count}
|
289
|
+
title: Registros
|
289
290
|
update:
|
290
291
|
invalid: Se ha producido un problema al guardar la configuración de la inscripción.
|
291
292
|
success: Se han guardado correctamente las configuraciones de inscripciones de encuentros.
|
data/config/locales/es-PY.yml
CHANGED
@@ -286,6 +286,7 @@ es-PY:
|
|
286
286
|
other: Ha habido %{count} registros.
|
287
287
|
reserved_slots_help: Déjalo en 0 si no tienes espacios reservados
|
288
288
|
reserved_slots_less_than: Debe ser menor que o igual a %{count}
|
289
|
+
title: Registros
|
289
290
|
update:
|
290
291
|
invalid: Se ha producido un problema al guardar la configuración de la inscripción.
|
291
292
|
success: Se han guardado correctamente las configuraciones de inscripciones de encuentros.
|
data/config/locales/es.yml
CHANGED
@@ -286,6 +286,7 @@ es:
|
|
286
286
|
other: Ha habido %{count} inscripciones.
|
287
287
|
reserved_slots_help: Dejar en 0 si no hay espacios reservados
|
288
288
|
reserved_slots_less_than: Debe ser inferior o igual que %{count}
|
289
|
+
title: Registros
|
289
290
|
update:
|
290
291
|
invalid: Se ha producido un error al guardar la configuración de la inscripción.
|
291
292
|
success: La configuración de las inscripciones del encuentro se ha guardado correctamente.
|
data/config/locales/fi-plain.yml
CHANGED
@@ -286,6 +286,7 @@ fi-pl:
|
|
286
286
|
other: Tapahtumaan on %{count} ilmoittautumista.
|
287
287
|
reserved_slots_help: Jätä arvoksi 0, jos sinulla ei ole varattuja paikkoja
|
288
288
|
reserved_slots_less_than: Täytyy olla vähemmän tai yhtä paljon kuin %{count}
|
289
|
+
title: Rekisteröitymiset
|
289
290
|
update:
|
290
291
|
invalid: Ilmoittautumisasetusten tallentamisessa esiintyi ongelma.
|
291
292
|
success: Tapahtumailmoittautumisasetukset tallennettiin onnistuneesti.
|
data/config/locales/fi.yml
CHANGED
@@ -286,6 +286,7 @@ fi:
|
|
286
286
|
other: Tapahtumaan on %{count} ilmoittautumista.
|
287
287
|
reserved_slots_help: Jätä arvoksi 0, jos sinulla ei ole varattuja paikkoja
|
288
288
|
reserved_slots_less_than: Täytyy olla vähemmän tai yhtä paljon kuin %{count}
|
289
|
+
title: Rekisteröitymiset
|
289
290
|
update:
|
290
291
|
invalid: Rekisteröitymisasetusten päivitys epäonnistui.
|
291
292
|
success: Tapahtumailmoittautumisasetukset tallennettiin onnistuneesti.
|
data/config/locales/hu.yml
CHANGED
@@ -286,6 +286,7 @@ hu:
|
|
286
286
|
other: '%{count} regisztráció volt.'
|
287
287
|
reserved_slots_help: Hagyd "0" értéken, ha nincsenek foglalt helyek
|
288
288
|
reserved_slots_less_than: 'Legalább ennyinek kell lennie: %{count}'
|
289
|
+
title: Regisztrációk
|
289
290
|
update:
|
290
291
|
invalid: Probléma történt a regisztrációs beállítások mentésekor.
|
291
292
|
success: Találkozó nyilvántartási beállításainak mentése sikeres.
|
data/config/locales/it.yml
CHANGED
@@ -286,6 +286,7 @@ it:
|
|
286
286
|
other: Ci sono state %{count} registrazioni.
|
287
287
|
reserved_slots_help: Lasciare a 0 se non si dispone di slot riservati
|
288
288
|
reserved_slots_less_than: Deve essere minore o uguale a %{count}
|
289
|
+
title: Registrazioni
|
289
290
|
update:
|
290
291
|
invalid: Si è verificato un problema salvando le impostazioni di registrazione.
|
291
292
|
success: Le impostazioni di registrazione delle riunioni sono state salvate correttamente.
|
data/config/locales/sv.yml
CHANGED
@@ -286,6 +286,7 @@ sv:
|
|
286
286
|
other: Det har gjorts %{count} anmälningar.
|
287
287
|
reserved_slots_help: Lämna det till 0 om du inte har reserverade platser
|
288
288
|
reserved_slots_less_than: Måste vara mindre än eller lika med %{count}
|
289
|
+
title: Anmälningar
|
289
290
|
update:
|
290
291
|
invalid: Det gick inte att spara inställningarna för anmälan.
|
291
292
|
success: Mötesregistreringsinställningarna har sparats.
|
data/config/locales/tr-TR.yml
CHANGED
@@ -286,6 +286,7 @@ tr:
|
|
286
286
|
other: '%{count} kayıt var.'
|
287
287
|
reserved_slots_help: Ayrılmış yuvalarınız yoksa 0'a bırakın
|
288
288
|
reserved_slots_less_than: Daha az ya da buna eşit olmalıdır %{count}
|
289
|
+
title: Kayıtlar
|
289
290
|
update:
|
290
291
|
invalid: Kayıt ayarları kaydedilirken bir sorun oluştu.
|
291
292
|
success: Toplantı kayıtları ayarları başarıyla kaydedildi.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-meetings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -46,28 +46,28 @@ dependencies:
|
|
46
46
|
requirements:
|
47
47
|
- - '='
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.
|
49
|
+
version: 0.18.0
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - '='
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.
|
56
|
+
version: 0.18.0
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: decidim-forms
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - '='
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0.
|
63
|
+
version: 0.18.0
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - '='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.
|
70
|
+
version: 0.18.0
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: httparty
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,56 +144,56 @@ dependencies:
|
|
144
144
|
requirements:
|
145
145
|
- - '='
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version: 0.
|
147
|
+
version: 0.18.0
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
152
|
- - '='
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version: 0.
|
154
|
+
version: 0.18.0
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
156
|
name: decidim-assemblies
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
159
|
- - '='
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version: 0.
|
161
|
+
version: 0.18.0
|
162
162
|
type: :development
|
163
163
|
prerelease: false
|
164
164
|
version_requirements: !ruby/object:Gem::Requirement
|
165
165
|
requirements:
|
166
166
|
- - '='
|
167
167
|
- !ruby/object:Gem::Version
|
168
|
-
version: 0.
|
168
|
+
version: 0.18.0
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
170
|
name: decidim-dev
|
171
171
|
requirement: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
173
|
- - '='
|
174
174
|
- !ruby/object:Gem::Version
|
175
|
-
version: 0.
|
175
|
+
version: 0.18.0
|
176
176
|
type: :development
|
177
177
|
prerelease: false
|
178
178
|
version_requirements: !ruby/object:Gem::Requirement
|
179
179
|
requirements:
|
180
180
|
- - '='
|
181
181
|
- !ruby/object:Gem::Version
|
182
|
-
version: 0.
|
182
|
+
version: 0.18.0
|
183
183
|
- !ruby/object:Gem::Dependency
|
184
184
|
name: decidim-participatory_processes
|
185
185
|
requirement: !ruby/object:Gem::Requirement
|
186
186
|
requirements:
|
187
187
|
- - '='
|
188
188
|
- !ruby/object:Gem::Version
|
189
|
-
version: 0.
|
189
|
+
version: 0.18.0
|
190
190
|
type: :development
|
191
191
|
prerelease: false
|
192
192
|
version_requirements: !ruby/object:Gem::Requirement
|
193
193
|
requirements:
|
194
194
|
- - '='
|
195
195
|
- !ruby/object:Gem::Version
|
196
|
-
version: 0.
|
196
|
+
version: 0.18.0
|
197
197
|
description: A meetings component for decidim's participatory spaces.
|
198
198
|
email:
|
199
199
|
- josepjaume@gmail.com
|
@@ -288,6 +288,7 @@ files:
|
|
288
288
|
- app/forms/decidim/meetings/admin/meeting_service_form.rb
|
289
289
|
- app/forms/decidim/meetings/admin/minutes_form.rb
|
290
290
|
- app/forms/decidim/meetings/admin/validate_registration_code_form.rb
|
291
|
+
- app/forms/decidim/meetings/join_meeting_form.rb
|
291
292
|
- app/helpers/decidim/meetings/admin/application_helper.rb
|
292
293
|
- app/helpers/decidim/meetings/application_helper.rb
|
293
294
|
- app/helpers/decidim/meetings/map_helper.rb
|
@@ -330,6 +331,7 @@ files:
|
|
330
331
|
- app/views/decidim/meetings/_calendar_modal.html.erb
|
331
332
|
- app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb
|
332
333
|
- app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb
|
334
|
+
- app/views/decidim/meetings/admin/agenda/_agenda_item_child_template.html.erb
|
333
335
|
- app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb
|
334
336
|
- app/views/decidim/meetings/admin/agenda/_form.html.erb
|
335
337
|
- app/views/decidim/meetings/admin/agenda/edit.html.erb
|
@@ -375,6 +377,7 @@ files:
|
|
375
377
|
- app/views/devise/mailer/join_meeting.html.erb
|
376
378
|
- app/views/devise/mailer/join_meeting.text.erb
|
377
379
|
- config/locales/ar-SA.yml
|
380
|
+
- config/locales/ar.yml
|
378
381
|
- config/locales/ca.yml
|
379
382
|
- config/locales/cs-CZ.yml
|
380
383
|
- config/locales/cs.yml
|
@@ -424,6 +427,7 @@ files:
|
|
424
427
|
- db/migrate/20180801150031_add_registration_form_enabled_to_decidim_meetings.rb
|
425
428
|
- db/migrate/20180809134748_add_upcoming_events_as_content_block.rb
|
426
429
|
- db/migrate/20181107175558_add_questionnaire_to_existing_meetings.rb
|
430
|
+
- db/migrate/20190404132923_add_user_group_to_meetings_registrations.rb
|
427
431
|
- lib/decidim/meetings.rb
|
428
432
|
- lib/decidim/meetings/admin.rb
|
429
433
|
- lib/decidim/meetings/admin_engine.rb
|