decidim-conferences 0.16.1 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
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} مؤتمرات"