decidim-conferences 0.16.1 → 0.19.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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheet/decidim/conferences/conferences.scss +3 -0
  3. data/app/cells/decidim/conferences/conference_address/show.erb +1 -1
  4. data/app/cells/decidim/conferences/conference_m/footer.erb +1 -1
  5. data/app/cells/decidim/conferences/conference_speaker/show.erb +2 -2
  6. data/app/cells/decidim/conferences/conference_speaker_cell.rb +6 -2
  7. data/app/cells/decidim/conferences/content_blocks/highlighted_conferences_cell.rb +0 -1
  8. data/app/cells/decidim/conferences/linked_participatory_spaces_cell.rb +6 -0
  9. data/app/cells/decidim/conferences/partner_cell.rb +2 -0
  10. data/app/cells/decidim/conferences/photos_list_cell.rb +1 -0
  11. data/app/cells/decidim/conferences/registration_type_cell.rb +2 -0
  12. data/app/commands/decidim/conferences/admin/confirm_conference_registration.rb +1 -0
  13. data/app/commands/decidim/conferences/admin/create_conference.rb +0 -10
  14. data/app/commands/decidim/conferences/admin/create_conference_admin.rb +1 -0
  15. data/app/commands/decidim/conferences/admin/publish_conference.rb +12 -0
  16. data/app/commands/decidim/conferences/admin/update_conference.rb +6 -2
  17. data/app/commands/decidim/conferences/admin/update_diploma.rb +1 -0
  18. data/app/commands/decidim/conferences/join_conference.rb +2 -0
  19. data/app/commands/decidim/conferences/leave_conference.rb +1 -0
  20. data/app/controllers/decidim/conferences/admin/application_controller.rb +5 -4
  21. data/app/controllers/decidim/conferences/admin/concerns/conference_admin.rb +6 -4
  22. data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +1 -0
  23. data/app/controllers/decidim/conferences/application_controller.rb +6 -5
  24. data/app/controllers/decidim/conferences/conference_program_controller.rb +4 -1
  25. data/app/controllers/decidim/conferences/conference_registrations_controller.rb +1 -0
  26. data/app/controllers/decidim/conferences/conference_speakers_controller.rb +1 -0
  27. data/app/controllers/decidim/conferences/media_controller.rb +1 -0
  28. data/app/controllers/decidim/conferences/registration_types_controller.rb +1 -0
  29. data/app/forms/decidim/conferences/admin/conference_form.rb +4 -0
  30. data/app/forms/decidim/conferences/admin/conference_speaker_form.rb +1 -0
  31. data/app/forms/decidim/conferences/admin/registration_type_form.rb +1 -0
  32. data/app/helpers/decidim/conferences/conference_helper.rb +1 -0
  33. data/app/models/decidim/conference.rb +9 -4
  34. data/app/models/decidim/conference_user_role.rb +1 -0
  35. data/app/permissions/decidim/conferences/permissions.rb +6 -0
  36. data/app/presenters/decidim/conferences/admin_log/value_types/role_presenter.rb +1 -0
  37. data/app/presenters/decidim/log/value_types/conference_presenter.rb +1 -0
  38. data/app/queries/decidim/conferences/admin/admin_users.rb +8 -1
  39. data/app/queries/decidim/conferences/admin/conference_invites.rb +1 -0
  40. data/app/queries/decidim/conferences/admin/conference_speakers.rb +1 -0
  41. data/app/views/decidim/conferences/admin/conference_user_roles/index.html.erb +3 -3
  42. data/app/views/decidim/conferences/admin/conferences/index.html.erb +3 -3
  43. data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +1 -1
  44. data/app/views/decidim/conferences/conferences/_partners.html.erb +1 -1
  45. data/app/views/decidim/conferences/conferences/_promoted_conference.html.erb +1 -1
  46. data/app/views/decidim/conferences/conferences/show.html.erb +3 -3
  47. data/app/views/decidim/conferences/media/index.html.erb +2 -2
  48. data/app/views/layouts/decidim/_conference_hero.html.erb +3 -3
  49. data/app/views/layouts/decidim/diploma.html.erb +2 -2
  50. data/config/locales/ar-SA.yml +132 -22
  51. data/config/locales/ar.yml +589 -0
  52. data/config/locales/ca.yml +192 -191
  53. data/config/locales/cs-CZ.yml +3 -3
  54. data/config/locales/cs.yml +581 -0
  55. data/config/locales/de.yml +15 -14
  56. data/config/locales/en.yml +87 -85
  57. data/config/locales/eo-UY.yml +1 -0
  58. data/config/locales/es-MX.yml +7 -6
  59. data/config/locales/es-PY.yml +8 -7
  60. data/config/locales/es.yml +161 -160
  61. data/config/locales/eu.yml +6 -5
  62. data/config/locales/fi-pl.yml +3 -3
  63. data/config/locales/fi-plain.yml +571 -0
  64. data/config/locales/fi.yml +65 -64
  65. data/config/locales/fr.yml +100 -99
  66. data/config/locales/gl.yml +6 -5
  67. data/config/locales/hu.yml +9 -8
  68. data/config/locales/id-ID.yml +6 -5
  69. data/config/locales/it.yml +9 -8
  70. data/config/locales/nl.yml +8 -7
  71. data/config/locales/no.yml +5 -0
  72. data/config/locales/pl.yml +6 -5
  73. data/config/locales/pt-BR.yml +6 -5
  74. data/config/locales/pt.yml +6 -5
  75. data/config/locales/sv.yml +206 -205
  76. data/config/locales/tr-TR.yml +6 -5
  77. data/lib/decidim/conferences/admin_engine.rb +1 -0
  78. data/lib/decidim/conferences/participatory_space.rb +2 -0
  79. data/lib/decidim/conferences/version.rb +1 -1
  80. metadata +26 -21
@@ -50,6 +50,7 @@ module Decidim
50
50
  def conference_meetings
51
51
  meeting_components = current_participatory_space.components.where(manifest_name: "meetings")
52
52
  return unless meeting_components || conference_meeting_ids.delete("").present?
53
+
53
54
  @conference_meetings ||= Decidim::ConferenceMeeting.where(component: meeting_components).where(id: conference_meeting_ids)
54
55
  end
55
56
 
@@ -36,6 +36,7 @@ module Decidim
36
36
  def conference_meetings
37
37
  meeting_components = current_participatory_space.components.where(manifest_name: "meetings")
38
38
  return unless meeting_components || conference_meeting_ids.delete("").present?
39
+
39
40
  @conference_meetings ||= Decidim::ConferenceMeeting.where(component: meeting_components).where(id: conference_meeting_ids)
40
41
  end
41
42
  end
@@ -8,6 +8,7 @@ module Decidim
8
8
  #
9
9
  def render_date(conference)
10
10
  return l(conference.start_date, format: :decidim_with_month_name_short) if conference.start_date == conference.end_date
11
+
11
12
  "#{l(conference.start_date, format: :decidim_with_month_name_short)} - #{l(conference.end_date, format: :decidim_with_month_name_short)}"
12
13
  end
13
14
  end
@@ -20,10 +20,7 @@ module Decidim
20
20
  belongs_to :organization,
21
21
  foreign_key: "decidim_organization_id",
22
22
  class_name: "Decidim::Organization"
23
- belongs_to :area,
24
- foreign_key: "decidim_area_id",
25
- class_name: "Decidim::Area",
26
- optional: true
23
+
27
24
  has_many :categories,
28
25
  foreign_key: "decidim_participatory_space_id",
29
26
  foreign_type: "decidim_participatory_space_type",
@@ -87,6 +84,7 @@ module Decidim
87
84
 
88
85
  def has_available_slots?
89
86
  return true if available_slots.zero?
87
+
90
88
  available_slots > conference_registrations.count
91
89
  end
92
90
 
@@ -96,7 +94,14 @@ module Decidim
96
94
 
97
95
  def diploma_sent?
98
96
  return false if diploma_sent_at.nil?
97
+
99
98
  true
100
99
  end
100
+
101
+ def closed?
102
+ return false if end_date.blank?
103
+
104
+ end_date < Date.current
105
+ end
101
106
  end
102
107
  end
@@ -24,6 +24,7 @@ module Decidim
24
24
  # Private: check if the process and the user have the same organization
25
25
  def user_and_conference_same_organization
26
26
  return if !conference || !user
27
+
27
28
  errors.add(:conference, :invalid) unless user.organization == conference.organization
28
29
  end
29
30
  end
@@ -30,6 +30,7 @@ module Decidim
30
30
  end
31
31
 
32
32
  return permission_action unless user
33
+
33
34
  if !has_manageable_conferences? && !user.admin?
34
35
  disallow!
35
36
  return permission_action
@@ -94,12 +95,14 @@ module Decidim
94
95
  # Checks if it has any manageable conference, with any possible role.
95
96
  def has_manageable_conferences?(role: :any)
96
97
  return unless user
98
+
97
99
  conferences_with_role_privileges(role).any?
98
100
  end
99
101
 
100
102
  # Whether the user can manage the given conference or not.
101
103
  def can_manage_conference?(role: :any)
102
104
  return unless user
105
+
103
106
  conferences_with_role_privileges(role).include? conference
104
107
  end
105
108
 
@@ -123,6 +126,7 @@ module Decidim
123
126
 
124
127
  return allow! if user&.admin?
125
128
  return allow! if conference.published?
129
+
126
130
  toggle_allow(can_manage_conference?)
127
131
  end
128
132
 
@@ -222,12 +226,14 @@ module Decidim
222
226
  # Everyone can read the conference list
223
227
  def user_can_read_conference_list?
224
228
  return unless read_conference_list_permission_action?
229
+
225
230
  toggle_allow(user.admin? || has_manageable_conferences?)
226
231
  end
227
232
 
228
233
  def user_can_read_current_conference?
229
234
  return unless read_conference_list_permission_action?
230
235
  return if permission_action.subject == :conference_list
236
+
231
237
  toggle_allow(user.admin? || can_manage_conference?)
232
238
  end
233
239
 
@@ -13,6 +13,7 @@ module Decidim
13
13
  # Returns an HTML-safe String.
14
14
  def present
15
15
  return if value.blank?
16
+
16
17
  h.t(value, scope: "decidim.admin.models.conference_user_role.roles", default: value)
17
18
  end
18
19
  end
@@ -14,6 +14,7 @@ module Decidim
14
14
  def present
15
15
  return unless value
16
16
  return h.translated_attribute(conference.title) if conference
17
+
17
18
  I18n.t("not_found", id: value, scope: "decidim.log.value_types.conference_presenter")
18
19
  end
19
20
 
@@ -23,7 +23,7 @@ module Decidim
23
23
  #
24
24
  # Returns an ActiveRecord::Relation.
25
25
  def query
26
- Decidim::User.where(id: organization_admins)
26
+ Decidim::User.where(id: organization_admins).or(conference_user_admins)
27
27
  end
28
28
 
29
29
  private
@@ -33,6 +33,13 @@ module Decidim
33
33
  def organization_admins
34
34
  conference.organization.admins
35
35
  end
36
+
37
+ def conference_user_admins
38
+ conference_user_admin_ids = Decidim::ConferenceUserRole
39
+ .where(conference: conference, role: :admin)
40
+ .pluck(:decidim_user_id)
41
+ Decidim::User.where(id: conference_user_admin_ids)
42
+ end
36
43
  end
37
44
  end
38
45
  end
@@ -36,6 +36,7 @@ module Decidim
36
36
 
37
37
  def filter_by_search(conference_invites)
38
38
  return conference_invites if @query.blank?
39
+
39
40
  conference_invites.joins(:user).where(
40
41
  User.arel_table[:name].lower.matches("%#{@query}%").or(User.arel_table[:email].lower.matches("%#{@query}%"))
41
42
  )
@@ -32,6 +32,7 @@ module Decidim
32
32
 
33
33
  def filter_by_search(conference_speakers)
34
34
  return conference_speakers if @query.blank?
35
+
35
36
  conference_speakers.where("LOWER(full_name) LIKE LOWER(?)", "%#{@query}%")
36
37
  end
37
38
  end
@@ -25,10 +25,10 @@
25
25
  <% @conference_user_roles.each do |role| %>
26
26
  <tr>
27
27
  <td>
28
- <%= role.user.name %><br />
28
+ <%= role.user.name %><br>
29
29
  </td>
30
30
  <td>
31
- <%= role.user.email %><br />
31
+ <%= role.user.email %><br>
32
32
  </td>
33
33
  <td>
34
34
  <% if role.user.invitation_sent_at %>
@@ -41,7 +41,7 @@
41
41
  <% end %>
42
42
  </td>
43
43
  <td>
44
- <%= t("#{role.role}", scope: "decidim.admin.models.conference_user_role.roles") %><br />
44
+ <%= t("#{role.role}", scope: "decidim.admin.models.conference_user_role.roles") %><br>
45
45
  </td>
46
46
  <td class="table-list__actions">
47
47
  <% if allowed_to?(:invite, :conference_user_role, user_role: role) && role.user.invited_to_sign_up? %>
@@ -26,11 +26,11 @@
26
26
  </span>
27
27
  <% end %>
28
28
  <% if allowed_to? :update, :conference, conference: conference %>
29
- <%= link_to translated_attribute(conference.title), edit_conference_path(conference) %><br />
29
+ <%= link_to translated_attribute(conference.title), edit_conference_path(conference) %><br>
30
30
  <% elsif allowed_to? :preview, :conference, conference: conference %>
31
- <%= link_to translated_attribute(conference.title), decidim_conferences.conference_path(conference) %><br />
31
+ <%= link_to translated_attribute(conference.title), decidim_conferences.conference_path(conference) %><br>
32
32
  <% elsif allowed_to? :read, :moderation, conference: conference %>
33
- <%= link_to translated_attribute(conference.title), moderations_path(conference) %><br />
33
+ <%= link_to translated_attribute(conference.title), moderations_path(conference) %><br>
34
34
  <% else %>
35
35
  <%= translated_attribute(conference.title) %>
36
36
  <% end %>
@@ -10,7 +10,7 @@
10
10
  <h3><%= t("decidim.conferences.admin.send_conference_diploma_mailer.diploma_user.certificate_of_attendance") %></h3>
11
11
  <p><%= t("decidim.conferences.admin.send_conference_diploma_mailer.diploma_user.certificate_of_attendance_description", user: @user.name, title: translated_attribute(@conference.title), location: @conference.location, start: l(@conference.start_date, format: :decidim_short), end: l(@conference.end_date, format: :decidim_short) ).html_safe %></p>
12
12
  </div>
13
- <hr class="reset mt-m mb-m" />
13
+ <hr class="reset mt-m mb-m">
14
14
  <div class="diploma__attendance">
15
15
  <strong><%= t("decidim.conferences.admin.send_conference_diploma_mailer.diploma_user.attendance_verified_by") %></strong>
16
16
  <div>
@@ -1,7 +1,7 @@
1
1
  <% if conference.partners.any? %>
2
2
  <div id="conference-partners">
3
3
  <% conference.partners.group_by(&:partner_type).each do |partner_type, partners| %>
4
- <hr class="reset mt-none mb-m" />
4
+ <hr class="reset mt-none mb-m">
5
5
  <section class="section">
6
6
  <h1 class="section-heading"><%= t(".#{partner_type.pluralize}") %></h1>
7
7
  <div class="row small-up-2 medium-up-3 card-grid">
@@ -17,7 +17,7 @@
17
17
  <div class="card__content row collapse">
18
18
  <div class="large-6 large-offset-6 columns">
19
19
  <%= link_to conference_path(promoted_conference), class: "button expanded button--sc" do %>
20
- <%= t("conferences.promoted_conference.take_part", scope: "layouts.decidim") %>
20
+ <%= t(promoted_conference.cta_button_text_key, scope: "layouts.decidim.conferences.promoted_conference") %>
21
21
  <% end %>
22
22
  </div>
23
23
  </div>
@@ -22,7 +22,7 @@ edit_link(
22
22
  <h4 class="section-heading"><%= t("conferences.show.introduction", scope: "decidim") %></h4>
23
23
  <%= decidim_sanitize translated_attribute(current_participatory_space.short_description) %>
24
24
  </section>
25
- <hr class="reset mt-none mb-m" />
25
+ <hr class="reset mt-none mb-m">
26
26
  <section class="section">
27
27
  <h4 class="section-heading"><%= t("conferences.show.details", scope: "decidim") %></h4>
28
28
  <%= decidim_sanitize translated_attribute(current_participatory_space.description) %>
@@ -53,7 +53,7 @@ edit_link(
53
53
  <%= render_hook(:conference_venues) %>
54
54
 
55
55
  <% if current_participatory_space.registrations_enabled? %>
56
- <hr class="reset mt-none mb-m" />
56
+ <hr class="reset mt-none mb-m">
57
57
  <section class="section">
58
58
  <h4 class="section-heading"><%= t(".register") %></h4>
59
59
  <% if current_user.present? %>
@@ -72,7 +72,7 @@ edit_link(
72
72
  </section>
73
73
  <% end %>
74
74
 
75
- <hr class="reset mt-none mb-m" />
75
+ <hr class="reset mt-none mb-m">
76
76
 
77
77
  <% unless translated_attribute(current_participatory_space.objectives).blank? %>
78
78
  <section class="section">
@@ -16,7 +16,7 @@ edit_link(
16
16
  <h1 class="section-heading"><%= t("media.index.title", scope: "decidim") %></h1>
17
17
  <p><%= t("media.index.description", scope: "decidim") %></p>
18
18
  </section>
19
- <hr class="reset mt-none mb-s" />
19
+ <hr class="reset mt-none mb-s">
20
20
  <section class="media-links">
21
21
  <ul class="list-reset">
22
22
  <% @media_links.each do |media_link| %>
@@ -24,7 +24,7 @@ edit_link(
24
24
  <% end %>
25
25
  </ul>
26
26
  </section>
27
- <hr class="reset mt-none mb-s" />
27
+ <hr class="reset mt-none mb-s">
28
28
  <% end %>
29
29
  <%= attachments_for_conference current_participatory_space %>
30
30
  </div>
@@ -19,10 +19,10 @@
19
19
  <div class="row">
20
20
  <div class="row column medium-8 text-left mt-m">
21
21
  <div class="column medium-6">
22
- <button type="button" class="button hollow light expanded">
23
- <%= render_date(current_participatory_space) %>
22
+ <div class="conference--date button hollow light expanded">
23
+ <%= participatory_space_helpers.render_date(current_participatory_space) %>
24
24
  <%= current_participatory_space.location %>
25
- </button>
25
+ </div>
26
26
  </div>
27
27
  <% if current_participatory_space.registrations_enabled? %>
28
28
  <div class="column medium-3 end">
@@ -1,8 +1,8 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="<%= I18n.locale %>" class="no-js">
3
3
  <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
- <meta name="viewport" content="width=device-width" />
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
+ <meta name="viewport" content="width=device-width">
6
6
  <%= wicked_pdf_stylesheet_link_tag "decidim/conference-diploma" %>
7
7
  </head>
8
8
  <body>
@@ -12,14 +12,15 @@ ar:
12
12
  description: وصف
13
13
  hashtag: رابطة هاشتاق
14
14
  hero_image: الصورة الرئيسية
15
- promoted: تمت ترقيته
15
+ participatory_processes_ids: العمليات التشاركية ذات الصلة
16
+ promoted: سلط الضوء
16
17
  published_at: نشرت في
17
18
  scope_id: نطاق
18
19
  scopes_enabled: تم تمكين النطاقات
19
20
  short_description: وصف قصير
20
- show_statistics: عرض إحصائيات
21
+ show_statistics: عرض الإحصائيات
21
22
  slogan: شعار
22
- slug: سبيكة URL
23
+ slug: سبيكة العنوان الشبكي
23
24
  title: عنوان
24
25
  conference_speaker:
25
26
  full_name: الاسم الكامل
@@ -67,21 +68,55 @@ ar:
67
68
  copy: نسخ
68
69
  select: حدد البيانات التي ترغب في تكرارها
69
70
  title: مؤتمر مكرر
71
+ conference_publications:
72
+ create:
73
+ error: كانت هناك مشكلة في نشر هذا المؤتمر.
74
+ success: تم نشر المؤتمر بنجاح.
75
+ destroy:
76
+ error: كانت هناك مشكلة في إلغاء نشر هذا المؤتمر.
77
+ success: مؤتمر غير منشور بنجاح.
78
+ conference_registration:
79
+ confirm:
80
+ error: حدثت مشكلة في تأكيد تسجيل المؤتمر هذا.
81
+ success: تم تأكيد تسجيل المؤتمر بنجاح.
70
82
  conference_speakers:
83
+ create:
84
+ error: حدثت مشكلة أثناء إضافة متحدث إلى هذا المؤتمر.
85
+ success: رئيس المؤتمر تم إنشاؤه بنجاح.
86
+ destroy:
87
+ success: تم حذف رئيس المؤتمر بنجاح.
71
88
  edit:
72
89
  title: تحديث المتحدث المؤتمر.
73
90
  update: تحديث
74
91
  index:
75
92
  conference_speakers_title: المتحدثون في المؤتمر
76
93
  new:
77
- create: خلق
94
+ create: إنشاء
78
95
  title: رئيس المؤتمر الجديد.
96
+ update:
97
+ error: حدثت مشكلة أثناء تحديث متحدث المؤتمر هذا.
98
+ success: تم تحديث مكبر صوت المؤتمر بنجاح.
79
99
  conference_user_roles:
100
+ create:
101
+ error: حدثت مشكلة أثناء إضافة مشرف إلى هذا المؤتمر.
102
+ success: تمت إضافة مسؤول المؤتمر بنجاح.
103
+ destroy:
104
+ success: تمت إزالة مسؤول المؤتمر بنجاح.
80
105
  edit:
106
+ title: تحديث مسؤول المؤتمر.
81
107
  update: تحديث
108
+ index:
109
+ conference_admins_title: مدراء المؤتمر
82
110
  new:
83
- create: خلق
111
+ create: إنشاء
112
+ title: مشرف المؤتمر الجديد.
113
+ update:
114
+ error: حدثت مشكلة أثناء تحديث مشرف المؤتمر هذا.
115
+ success: تم تحديث مشرف المؤتمر بنجاح.
84
116
  conferences:
117
+ create:
118
+ error: كانت هناك مشكلة في إنشاء هذا المؤتمر.
119
+ success: تم إنشاء المؤتمر بنجاح.
85
120
  edit:
86
121
  update: تحديث
87
122
  exports:
@@ -92,17 +127,32 @@ ar:
92
127
  not_published: غير منشور
93
128
  published: نشرت
94
129
  new:
95
- create: خلق
130
+ create: إنشاء
96
131
  title: مؤتمر
132
+ update:
133
+ error: حدثت مشكلة أثناء تحديث هذا المؤتمر.
134
+ success: تم تحديث المؤتمر بنجاح.
135
+ conferences_copies:
136
+ create:
137
+ error: كانت هناك مشكلة في تكرار هذا المؤتمر.
138
+ success: تم تكرار المؤتمر بنجاح.
97
139
  media_links:
140
+ create:
141
+ error: حدثت مشكلة أثناء إنشاء رابط وسائط جديد.
142
+ success: تم إنشاء رابط الوسائط بنجاح.
143
+ destroy:
144
+ success: تم حذف رابط الوسائط بنجاح.
98
145
  edit:
99
146
  title: تحديث رابط الوسائط.
100
147
  update: تحديث
101
148
  index:
102
149
  media_links_title: روابط الوسائط
103
150
  new:
104
- create: خلق
151
+ create: إنشاء
105
152
  title: وصلة الوسائط
153
+ update:
154
+ error: حدثت مشكلة أثناء تحديث رابط الوسائط هذا.
155
+ success: تم تحديث رابط الوسائط بنجاح.
106
156
  menu:
107
157
  conferences: المؤتمرات
108
158
  conferences_submenu:
@@ -125,6 +175,7 @@ ar:
125
175
  conference:
126
176
  fields:
127
177
  created_at: أنشئت في
178
+ promoted: سلط الضوء
128
179
  published: نشرت
129
180
  title: عنوان
130
181
  conference_speaker:
@@ -138,6 +189,7 @@ ar:
138
189
  email: البريد الإلكتروني
139
190
  name: اسم
140
191
  role: وظيفة
192
+ name: إدارة المؤتمر
141
193
  roles:
142
194
  admin: مدير
143
195
  collaborator: متعاون
@@ -167,41 +219,66 @@ ar:
167
219
  weight: وزن
168
220
  name: نوع التسجيل
169
221
  partners:
222
+ create:
223
+ error: حدثت مشكلة أثناء إضافة شريك لهذا المؤتمر.
224
+ success: وأضاف شريك المؤتمر بنجاح.
225
+ destroy:
226
+ success: تمت إزالة شريك المؤتمر بنجاح.
170
227
  edit:
171
228
  title: تحديث شريك.
172
229
  update: تحديث
173
230
  new:
174
- create: خلق
231
+ create: إنشاء
175
232
  title: شريك جديد
233
+ update:
234
+ error: حدثت مشكلة أثناء تحديث شريك لهذا المؤتمر.
235
+ success: تم تحديث شريك المؤتمر بنجاح.
236
+ registration_type_publications:
237
+ create:
238
+ error: حدثت مشكلة أثناء نشر نوع التسجيل هذا.
239
+ success: نوع التسجيل نشر بنجاح.
240
+ destroy:
241
+ error: حدثت مشكلة في إلغاء نشر نوع التسجيل هذا.
242
+ success: نوع التسجيل غير منشور بنجاح.
176
243
  registration_types:
244
+ create:
245
+ error: حدثت مشكلة أثناء إضافة نوع التسجيل لهذا المؤتمر.
246
+ success: تمت إضافة نوع تسجيل المؤتمر بنجاح.
247
+ destroy:
248
+ success: تمت إزالة نوع تسجيل المؤتمر بنجاح.
177
249
  edit:
178
250
  title: تحديث نوع التسجيل.
179
251
  update: تحديث
180
252
  new:
181
- create: خلق
253
+ create: إنشاء
182
254
  title: نوع التسجيل الجديد
255
+ update:
256
+ error: حدثت مشكلة أثناء تحديث نوع التسجيل لهذا المؤتمر.
257
+ success: تم تحديث نوع تسجيل المؤتمر بنجاح.
183
258
  titles:
184
259
  conferences: المؤتمرات
185
260
  admin_log:
186
261
  conference:
187
- create: "%{user_name} خلق المؤتمر %{resource_name}"
262
+ create: "%{user_name} أنشأ المؤتمر %{resource_name}"
188
263
  publish: "%{user_name} نشر المؤتمر %{resource_name}"
189
264
  send_conference_diplomas: "أرسلت %{user_name} شهادات حضور إلى %{resource_name} atendees المؤتمر"
190
265
  unpublish: "%{user_name} غير منشور في المؤتمر %{resource_name}"
191
266
  update: "%{user_name} تحديث المؤتمر %{resource_name}"
192
267
  update_diploma: "%{user_name} تحديث شهادات تكوين الحضور لمؤتمر %{resource_name}"
193
268
  conference_speaker:
194
- create: "%{user_name} خلق المتكلم %{resource_name} في المؤتمر %{space_name}"
269
+ create: "%{user_name} أنشأ المتكلم %{resource_name} في المؤتمر %{space_name}"
195
270
  delete: "%{user_name} أزال المتحدث %{resource_name} من المؤتمر %{space_name}"
196
271
  update: "%{user_name} تحديث المتكلم %{resource_name} في المؤتمر %{space_name}"
197
272
  conference_user_role:
198
273
  create: "%{user_name} دعا %{resource_name} إلى %{space_name} المؤتمر"
274
+ delete: "%{user_name} أزال المشرف %{resource_name} من المؤتمر %{space_name}"
199
275
  update: "%{user_name} غير دور %{resource_name} في المؤتمر %{space_name}"
200
276
  conferences:
201
277
  conference_registration:
202
278
  confirm: "%{user_name} أكد تسجيل مؤتمر في مؤتمر %{resource_name}"
203
279
  partner:
204
- create: "%{user_name} خلق %{resource_name} إلى %{space_name} المؤتمر"
280
+ create: "%{user_name} أنشأ %{resource_name} إلى %{space_name} المؤتمر"
281
+ delete: "%{user_name} أزال المشرف %{resource_name} من المؤتمر %{space_name}"
205
282
  update: "%{user_name} محدث %{resource_name} في المؤتمر %{space_name}"
206
283
  registration_type:
207
284
  create: "%{user_name} أنشأ نوع التسجيل %{resource_name} في المؤتمر %{space_name}"
@@ -224,8 +301,15 @@ ar:
224
301
  form:
225
302
  slug_help: 'يتم استخدام slugs URL لإنشاء عناوين URL التي تشير إلى هذا المؤتمر. يقبل الحروف والأرقام والشرطات فقط ، ويجب أن يبدأ بحرف. مثال: %{url}'
226
303
  conference_invites:
304
+ create:
305
+ error: حدثت مشكلة أثناء دعوة المشارك للانضمام إلى المؤتمر.
306
+ success: تمت دعوة المشارك بنجاح للانضمام إلى المؤتمر.
227
307
  form:
228
308
  attendee_type: نوع الحضور
309
+ existing_user: المشارك الحالي
310
+ invite_explanation: سيتم دعوة المشارك للانضمام إلى المؤتمر وإلى المنظمة أيضًا.
311
+ non_user: مشارك غير موجود
312
+ select_user: اختر المشارك
229
313
  index:
230
314
  filter:
231
315
  accepted: وافقت
@@ -233,18 +317,22 @@ ar:
233
317
  rejected: مرفوض
234
318
  sent: أرسلت
235
319
  filter_by: مصنف بواسطة
320
+ invite_attendee: دعوة مشارك
236
321
  invites: تدعو
237
322
  search: بحث
238
323
  new:
324
+ explanation: سيدعى المشارك للانضمام إلى مؤتمر. إذا لم يتم تسجيل بريدها الإلكتروني ، فستتم دعوتها إلى المنظمة أيضًا.
239
325
  invite: دعا
240
- new_invite: دعوة مستخدم
326
+ new_invite: دعوة مشارك
241
327
  conference_registrations:
242
328
  index:
243
329
  registrations: التسجيلات
244
330
  conference_speakers:
245
331
  form:
246
- select_user: اختيار مستخدم
247
- user_type: نوع المستخدم
332
+ existing_user: المشارك الحالي
333
+ non_user: غير مشارك
334
+ select_user: اختر المشارك
335
+ user_type: نوع المشارك
248
336
  index:
249
337
  search: بحث
250
338
  conferences:
@@ -282,12 +370,16 @@ ar:
282
370
  attendance_verified_by: تم التحقق من الحضور بواسطة
283
371
  certificate_of_attendance: شهادة حضور
284
372
  certificate_of_attendance_description: هذا هو التأكيد على أن <strong>%{user}</strong> قد حضر وشارك في <strong>%{title}</strong> الذي عقد في <strong>%{location}</strong> في <strong>%{start} - %{end}</strong>
373
+ send_diploma:
374
+ error: حدثت مشكلة أثناء إرسال شهادات حضور المؤتمر.
375
+ success: تم إرسال شهادات حضور المؤتمر بنجاح
285
376
  conference:
286
377
  registration_confirm:
287
378
  cancel: إلغاء
288
379
  confirm: تؤكد
289
380
  show:
290
381
  free: حر
382
+ going: حضور
291
383
  no_slots_available: لا فتحات المتاحة
292
384
  registration: التسجيل
293
385
  conference_program:
@@ -306,15 +398,26 @@ ar:
306
398
  pending_validation:
307
399
  confirmation_pending: سوف تتلقى التأكيد قريبا
308
400
  details: 'لقد قمت بالتسجيل إلى %{registration_type} نوع بتكلفة %{price} ويمكنك حضور الأحداث التالية:'
401
+ pending_html: تسجيلك في المؤتمر <a href="%{url}">%{title}</a> انتظار التأكيد.
402
+ conference_registrations:
403
+ create:
404
+ invalid: كانت هناك مشكلة في الانضمام إلى هذا المؤتمر.
405
+ success: لقد انضممت بنجاح إلى المؤتمر.
406
+ decline_invitation:
407
+ invalid: حدثت مشكلة في رفض الدعوة.
408
+ success: لقد رفضت الدعوة بنجاح.
409
+ destroy:
410
+ invalid: حدثت مشكلة أثناء مغادرة هذا المؤتمر.
411
+ success: لقد تركت المؤتمر بنجاح.
309
412
  conference_speaker:
310
413
  go_to_twitter: انتقل إلى تويتر
311
414
  more_info: مزيد من المعلومات
312
- personal_website: موقع شخصي
415
+ personal_website: موقع الويب الشخصي
313
416
  show:
314
417
  more_info: مزيد من المعلومات
315
418
  conference_speaker_cell:
316
419
  personal_url:
317
- personal_website: موقع شخصي
420
+ personal_website: موقع الويب الشخصي
318
421
  twitter_handle:
319
422
  go_to_twitter: انتقل إلى تويتر
320
423
  conference_speakers:
@@ -337,6 +440,8 @@ ar:
337
440
  conference_registration_mailer:
338
441
  confirmation:
339
442
  subject: تم تأكيد تسجيل مؤتمرك
443
+ pending_validation:
444
+ subject: تسجيل مؤتمرك في انتظار التأكيد
340
445
  invite_join_conference_mailer:
341
446
  invite:
342
447
  subject: دعوة للانضمام إلى مؤتمر
@@ -360,6 +465,7 @@ ar:
360
465
  email: البريد الإلكتروني
361
466
  name: اسم
362
467
  registration_type: نوع التسجيل
468
+ state: الحالة
363
469
  states:
364
470
  confirmed: تم تأكيد
365
471
  pending: قيد الانتظار
@@ -374,7 +480,7 @@ ar:
374
480
  photo: صورة
375
481
  photos_list:
376
482
  show:
377
- related_photos: الصور
483
+ related_photos: صور
378
484
  registration_types:
379
485
  index:
380
486
  choose_an_option: 'اختر خيار التسجيل الخاص بك:'
@@ -392,6 +498,7 @@ ar:
392
498
  objectives: الأهداف
393
499
  related_assemblies: الجمعيات ذات الصلة
394
500
  related_consultations: المشاورات ذات الصلة
501
+ related_participatory_processes: العمليات التشاركية ذات الصلة
395
502
  statistics:
396
503
  answers_count: الأجوبة
397
504
  comments_count: تعليقات
@@ -400,7 +507,7 @@ ar:
400
507
  endorsements_count: موافقات
401
508
  headline: نشاط
402
509
  meetings_count: اجتماعات
403
- orders_count: الأصوات
510
+ orders_count: الدعم
404
511
  pages_count: صفحات
405
512
  posts_count: المشاركات
406
513
  projects_count: مشاريع
@@ -408,13 +515,13 @@ ar:
408
515
  results_count: النتائج
409
516
  surveys_count: الدراسات الاستقصائية
410
517
  users_count: المشاركين
411
- votes_count: الأصوات
518
+ votes_count: الدعم
412
519
  events:
413
520
  conferences:
414
- conference_registration_validation_pending:
415
- notification_title: تسجيلك في المؤتمر <a href="%{resource_url}">%{resource_title}</a> انتظار التأكيد.
416
521
  conference_registration_confirmed:
417
522
  notification_title: تم تأكيد تسجيلك للمؤتمر <a href="%{resource_url}">%{resource_title}</a>.
523
+ conference_registration_validation_pending:
524
+ notification_title: تسجيلك في المؤتمر <a href="%{resource_url}">%{resource_title}</a> انتظار التأكيد.
418
525
  conference_registrations_over_percentage:
419
526
  email_intro: فتحات "%{resource_title}" التي شغلها المؤتمر تجاوزت %{percentage}٪.
420
527
  email_outro: لقد تلقيت هذا الإشعار لأنك مسؤول عن المساحة التشاركية للمؤتمر.
@@ -458,7 +565,10 @@ ar:
458
565
  take_part: خذ جزء
459
566
  conferences:
460
567
  conference:
568
+ more_info: مزيد من المعلومات
461
569
  take_part: خذ جزء
570
+ index:
571
+ promoted_conferences: المؤتمرات البارزة
462
572
  order_by_conferences:
463
573
  conferences:
464
574
  zero: "%{count} مؤتمرات"