decidim-admin 0.27.4 → 0.27.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim-admin might be problematic. Click here for more details.

Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/admin/destroy_category.rb +1 -1
  3. data/app/controllers/concerns/decidim/admin/needs_admin_tos_accepted.rb +36 -0
  4. data/app/controllers/concerns/decidim/moderations/admin/filterable.rb +4 -0
  5. data/app/controllers/decidim/admin/application_controller.rb +1 -0
  6. data/app/controllers/decidim/admin/conflicts_controller.rb +6 -0
  7. data/app/controllers/decidim/admin/impersonatable_users_controller.rb +1 -1
  8. data/app/controllers/decidim/admin/managed_users/impersonation_logs_controller.rb +2 -0
  9. data/app/events/decidim/component_published_event.rb +11 -0
  10. data/app/events/decidim/resource_hidden_event.rb +5 -1
  11. data/app/forms/decidim/admin/organization_form.rb +2 -2
  12. data/app/helpers/decidim/admin/admin_terms_helper.rb +1 -1
  13. data/app/helpers/decidim/admin/newsletters_helper.rb +1 -1
  14. data/app/packs/images/decidim/admin/.keep +0 -0
  15. data/app/packs/stylesheets/decidim/admin/_variables.scss +1 -1
  16. data/app/views/decidim/admin/categories/index.html.erb +7 -1
  17. data/app/views/decidim/admin/components/_actions.html.erb +43 -0
  18. data/app/views/decidim/admin/components/_component.html.erb +3 -41
  19. data/app/views/decidim/admin/resource_permissions/edit.html.erb +2 -2
  20. data/app/views/layouts/decidim/admin/_header.html.erb +3 -0
  21. data/app/views/layouts/decidim/admin/_js_configuration.html.erb +1 -0
  22. data/config/locales/ar.yml +8 -19
  23. data/config/locales/bg.yml +153 -1
  24. data/config/locales/ca.yml +9 -9
  25. data/config/locales/cs.yml +8 -8
  26. data/config/locales/de.yml +27 -27
  27. data/config/locales/el.yml +1 -20
  28. data/config/locales/en.yml +2 -2
  29. data/config/locales/es-MX.yml +10 -10
  30. data/config/locales/es-PY.yml +10 -10
  31. data/config/locales/es.yml +10 -10
  32. data/config/locales/eu.yml +311 -284
  33. data/config/locales/fi-plain.yml +5 -5
  34. data/config/locales/fi.yml +6 -6
  35. data/config/locales/fr-CA.yml +10 -10
  36. data/config/locales/fr.yml +11 -11
  37. data/config/locales/ga-IE.yml +0 -5
  38. data/config/locales/gl.yml +3 -20
  39. data/config/locales/he-IL.yml +53 -0
  40. data/config/locales/hu.yml +20 -18
  41. data/config/locales/id-ID.yml +5 -7
  42. data/config/locales/is-IS.yml +4 -3
  43. data/config/locales/it.yml +0 -19
  44. data/config/locales/ja.yml +11 -11
  45. data/config/locales/kaa.yml +15 -1
  46. data/config/locales/ko.yml +720 -0
  47. data/config/locales/lb.yml +3 -22
  48. data/config/locales/lt.yml +31 -21
  49. data/config/locales/lv.yml +5 -9
  50. data/config/locales/nl.yml +2 -21
  51. data/config/locales/no.yml +2 -17
  52. data/config/locales/pl.yml +42 -9
  53. data/config/locales/pt-BR.yml +36 -19
  54. data/config/locales/pt.yml +4 -23
  55. data/config/locales/ro-RO.yml +2 -21
  56. data/config/locales/ru.yml +5 -8
  57. data/config/locales/sk.yml +2 -10
  58. data/config/locales/sl.yml +3 -1
  59. data/config/locales/sq-AL.yml +133 -0
  60. data/config/locales/sr-CS.yml +13 -6
  61. data/config/locales/sv.yml +1 -19
  62. data/config/locales/th-TH.yml +1 -0
  63. data/config/locales/tr-TR.yml +7 -13
  64. data/config/locales/uk.yml +3 -8
  65. data/config/locales/zh-CN.yml +2 -10
  66. data/config/locales/zh-TW.yml +0 -19
  67. data/config/routes.rb +2 -0
  68. data/decidim-admin.gemspec +36 -0
  69. data/lib/decidim/admin/test/admin_participatory_space_access_examples.rb +49 -0
  70. data/lib/decidim/admin/test/commands/destroy_category_examples.rb +9 -0
  71. data/lib/decidim/admin/version.rb +1 -1
  72. metadata +26 -15
  73. data/app/controllers/decidim/admin/space_publications_controller.rb +0 -63
  74. data/config/environment.rb +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b6d361bf34645d19fff1ed2b9d2dfc9bd21d9d5f59205009c6a98aa768aa104
4
- data.tar.gz: d6afb23b3c6d259f9c1ec1380746a90ab72c16451598e3bdba0d6e4f014d5c05
3
+ metadata.gz: ac7830a2645388ae03864d86fb38168f35a78d55f54bd0604e036cc2c6ae0fc3
4
+ data.tar.gz: c79d6f340b53876b9f3d52ef0396d819020b605e74ff9c6f3d4e5928f724a448
5
5
  SHA512:
6
- metadata.gz: 13c4b9f5db82ec0b5575c185f2b18b1b3bf9b11066612167c03d5f91edf47a9c824e99b60bbe3fd19289401d668526befcd6b394893a8b8932c1d1cf012dbf61
7
- data.tar.gz: 1a12690709937d82651c02a0cab87db70a8b8c62fa8b4cd8779261ff9729961517131007ff8300d131d375ff755195fa207b4a999d621c87722b4ef322c4beb5
6
+ metadata.gz: 0aeb935a256dcd62884e98e6cd195cbebec24b307998a58a12178455f7a8cbd8c8661ee938b38c85b99974d69b15b42c0862ed6c75426ae22712528b815bba9f
7
+ data.tar.gz: c79145b76878d87273d2bfaee29273a0af4e5d541d901258c746caa04cd5dc51faf5ef68f54c5e28a5c18db0a284668b48792c9c306964b2bc1142cead6be567
@@ -20,7 +20,7 @@ module Decidim
20
20
  #
21
21
  # Returns nothing.
22
22
  def call
23
- return broadcast(:invalid) if category.nil? || category.subcategories.any?
23
+ return broadcast(:invalid) if category.nil? || category.subcategories.any? || !category.unused?
24
24
 
25
25
  destroy_category
26
26
  broadcast(:ok)
@@ -15,6 +15,7 @@ module Decidim
15
15
  def tos_accepted_by_admin
16
16
  return unless request.format.html?
17
17
  return unless current_user
18
+ return unless user_has_any_role?
18
19
  return if current_user.admin_terms_accepted?
19
20
  return if permitted_paths?
20
21
 
@@ -37,6 +38,41 @@ module Decidim
37
38
  def admin_tos_path
38
39
  decidim_admin.admin_terms_show_path
39
40
  end
41
+
42
+ def user_has_any_role?
43
+ return true if current_user.admin
44
+ return true if current_user.roles.any?
45
+ return true if participatory_process_user_role?
46
+ return true if assembly_user_role?
47
+ return true if conference_user_role?
48
+ return true if voting_monitoring_commitee_member?
49
+
50
+ false
51
+ end
52
+
53
+ def participatory_process_user_role?
54
+ return false unless Decidim.module_installed?(:participatory_processes)
55
+
56
+ true if Decidim::ParticipatoryProcessUserRole.exists?(user: current_user)
57
+ end
58
+
59
+ def assembly_user_role?
60
+ return false unless Decidim.module_installed?(:assemblies)
61
+
62
+ true if Decidim::AssemblyUserRole.exists?(user: current_user)
63
+ end
64
+
65
+ def conference_user_role?
66
+ return false unless Decidim.module_installed?(:conferences)
67
+
68
+ true if Decidim::ConferenceUserRole.exists?(user: current_user)
69
+ end
70
+
71
+ def voting_monitoring_commitee_member?
72
+ return false unless Decidim.module_installed?(:elections)
73
+
74
+ true if Decidim::Votings::MonitoringCommitteeMember.exists?(user: current_user)
75
+ end
40
76
  end
41
77
  end
42
78
  end
@@ -47,6 +47,10 @@ module Decidim
47
47
  def reportable_types
48
48
  collection.pluck(:decidim_reportable_type).uniq.sort
49
49
  end
50
+
51
+ def extra_allowed_params
52
+ [:hidden]
53
+ end
50
54
  end
51
55
  end
52
56
  end
@@ -30,6 +30,7 @@ module Decidim
30
30
  helper Decidim::LanguageChooserHelper
31
31
  helper Decidim::ComponentPathHelper
32
32
  helper Decidim::SanitizeHelper
33
+ helper Decidim::Templates::Admin::ApplicationHelper if Decidim.module_installed?(:templates) && defined?(Decidim::Templates::Admin::ApplicationHelper)
33
34
 
34
35
  default_form_builder Decidim::Admin::FormBuilder
35
36
 
@@ -6,12 +6,16 @@ module Decidim
6
6
  layout "decidim/admin/users"
7
7
 
8
8
  def index
9
+ enforce_permission_to :index, :impersonatable_user
10
+
9
11
  @conflicts = Decidim::Verifications::Conflict.joins(:current_user).where(
10
12
  decidim_users: { decidim_organization_id: current_organization.id }
11
13
  )
12
14
  end
13
15
 
14
16
  def edit
17
+ enforce_permission_to :index, :impersonatable_user
18
+
15
19
  conflict = Decidim::Verifications::Conflict.find(params[:id])
16
20
 
17
21
  @form = form(TransferUserForm).from_params(
@@ -22,6 +26,8 @@ module Decidim
22
26
  end
23
27
 
24
28
  def update
29
+ enforce_permission_to :index, :impersonatable_user
30
+
25
31
  conflict = Decidim::Verifications::Conflict.find(params[:id])
26
32
 
27
33
  @form = form(TransferUserForm).from_params(
@@ -24,7 +24,7 @@ module Decidim
24
24
  private
25
25
 
26
26
  def collection
27
- @collection ||= current_organization.users.where(admin: false, roles: [])
27
+ @collection ||= current_organization.users.not_deleted.not_blocked.where(admin: false, roles: [])
28
28
  end
29
29
 
30
30
  def new_managed_user
@@ -9,6 +9,8 @@ module Decidim
9
9
  layout "decidim/admin/users"
10
10
 
11
11
  def index
12
+ enforce_permission_to :index, :impersonatable_user
13
+
12
14
  @impersonation_logs = Decidim::ImpersonationLog.where(user: user).order(started_at: :desc).page(params[:page]).per(15)
13
15
  end
14
16
 
@@ -2,5 +2,16 @@
2
2
 
3
3
  module Decidim
4
4
  class ComponentPublishedEvent < Decidim::Events::SimpleEvent
5
+ # Public: The Hash of options to pass to the I18.t method.
6
+ def i18n_options
7
+ default_i18n_options.merge(event_interpolations)
8
+ end
9
+
10
+ def resource_title
11
+ return unless resource
12
+
13
+ title = decidim_sanitize_translated(resource.name)
14
+ Decidim::ContentProcessor.render_without_format(title, links: false).html_safe
15
+ end
5
16
  end
6
17
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Decidim
4
4
  class ResourceHiddenEvent < Decidim::Events::SimpleEvent
5
+ include Decidim::ApplicationHelper
6
+
5
7
  i18n_attributes :resource_path, :report_reasons, :resource_type, :resource_content
6
8
 
7
9
  def resource_path
@@ -23,7 +25,9 @@ module Decidim
23
25
  end
24
26
 
25
27
  def resource_content
26
- translated_attribute(@resource[@resource.reported_attributes.first]).truncate(100, separator: " ")
28
+ text = translated_attribute(@resource[@resource.reported_attributes.first])
29
+
30
+ decidim_sanitize(html_truncate(text, length: 100), strip_tags: true)
27
31
  end
28
32
 
29
33
  def resource_text
@@ -21,7 +21,7 @@ module Decidim
21
21
  attribute :default_locale, String
22
22
  attribute :badges_enabled, Boolean
23
23
  attribute :user_groups_enabled, Boolean
24
- attribute :comments_max_length, Integer
24
+ attribute :comments_max_length, Integer, default: 0
25
25
  attribute :rich_text_editor_in_public_views, Boolean
26
26
  attribute :enable_machine_translations, Boolean
27
27
  attribute :machine_translation_display_priority, String
@@ -43,7 +43,7 @@ module Decidim
43
43
  validates :default_locale, :reference_prefix, presence: true
44
44
  validates :default_locale, inclusion: { in: :available_locales }
45
45
  validates :admin_terms_of_use_body, translatable_presence: true
46
- validates :comments_max_length, numericality: { greater_than: 0 }, if: ->(form) { form.comments_max_length.present? }
46
+ validates :comments_max_length, presence: true, numericality: { greater_than_or_equal_to: 0 }
47
47
  validates :machine_translation_display_priority,
48
48
  inclusion: { in: Decidim::Organization::AVAILABLE_MACHINE_TRANSLATION_DISPLAY_PRIORITIES },
49
49
  if: :machine_translation_enabled?
@@ -5,7 +5,7 @@ module Decidim
5
5
  # This module includes helpers to show Admin Terms of Use
6
6
  module AdminTermsHelper
7
7
  def admin_terms_of_use_body
8
- current_organization.admin_terms_of_use_body.symbolize_keys[I18n.locale].html_safe
8
+ decidim_sanitize_admin(translated_attribute(current_organization.admin_terms_of_use_body)).html_safe
9
9
  end
10
10
 
11
11
  def announcement_body
@@ -74,7 +74,7 @@ module Decidim
74
74
  else
75
75
  Decidim.find_participatory_space_manifest(type["manifest_name"].to_sym)
76
76
  .participatory_spaces.call(current_organization).where(id: type["ids"]).each do |space|
77
- html += "<strong>#{translated_attribute space.title}</strong>"
77
+ html += "<strong>#{decidim_escape_translated space.title}</strong>"
78
78
  end
79
79
  end
80
80
  html += "<br/>"
File without changes
@@ -11,7 +11,7 @@ $-zf-bp-value: null;
11
11
 
12
12
  $brand: #9675ce !default;
13
13
 
14
- $twitter: #55acee !default;
14
+ $twitter: #000 !default;
15
15
  $facebook: #3b5998 !default;
16
16
  $google: #4285f4 !default;
17
17
 
@@ -52,7 +52,13 @@
52
52
  <% end %>
53
53
 
54
54
  <% if allowed_to? :destroy, :category, category: subcategory %>
55
- <%= icon_link_to "circle-x", category_path(current_participatory_space, subcategory), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
55
+ <% if subcategory.unused? %>
56
+ <%= icon_link_to "circle-x", category_path(current_participatory_space, subcategory), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
57
+ <% else %>
58
+ <span class="action-icon" title="<%= t("categories.index.category_used", scope: "decidim.admin") %>" data-tooltip="true" data-disable-hover="false">
59
+ <%= icon "delete-bin-line", class: "action-icon action-icon--disabled", role: "img", "aria-hidden": true %>
60
+ </span>
61
+ <% end %>
56
62
  <% end %>
57
63
  </td>
58
64
  </tr>
@@ -0,0 +1,43 @@
1
+ <% if component.manifest.admin_engine %>
2
+ <%= icon_link_to "pencil", manage_component_path(component), t("actions.manage", scope: "decidim.admin"), class: "action-icon--manage" %>
3
+ <% else %>
4
+ <span class="action-space icon"></span>
5
+ <% end %>
6
+
7
+ <% if allowed_to?(:update, :component, component: component) %>
8
+ <% if component.published? %>
9
+ <%= icon_link_to "x", url_for(action: :unpublish, id: component, controller: "components"), t("actions.unpublish", scope: "decidim.admin"), class: "action-icon--unpublish", method: :put %>
10
+ <% else %>
11
+ <%= icon_link_to "check", url_for(action: :publish, id: component, controller: "components"), t("actions.publish", scope: "decidim.admin"), class: "action-icon--publish", method: :put %>
12
+ <% end %>
13
+ <% else %>
14
+ <span class="action-space icon"></span>
15
+ <% end %>
16
+
17
+ <% if allowed_to? :update, :component, component: component %>
18
+ <%= icon_link_to "cog", url_for(action: :edit, id: component, controller: "components"), t("actions.configure", scope: "decidim.admin"), class: "action-icon--configure" %>
19
+ <% else %>
20
+ <span class="action-space icon"></span>
21
+ <% end %>
22
+
23
+ <% if allowed_to? :update, :component, component: component %>
24
+ <% if component.manifest.actions.empty? %>
25
+ <%= icon "key", class: "action-icon action-icon--disabled" %>
26
+ <% else %>
27
+ <%= icon_link_to "key", url_for(action: :edit, component_id: component, controller: "component_permissions"), t("actions.permissions", scope: "decidim.admin"), class: "action-icon--permissions" %>
28
+ <% end %>
29
+ <% else %>
30
+ <span class="action-space icon"></span>
31
+ <% end %>
32
+
33
+ <% if allowed_to? :share, :component, component: component %>
34
+ <%= icon_link_to "share", url_for(action: :share, id: component, controller: "components"), t("actions.share", scope: "decidim.admin"), class: "action-icon--share", target: "_blank" %>
35
+ <% else %>
36
+ <span class="action-space icon"></span>
37
+ <% end %>
38
+
39
+ <% if allowed_to? :destroy, :component, component: component %>
40
+ <%= icon_link_to "circle-x", url_for(action: :destroy, id: component, controller: "components"), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete %>
41
+ <% else %>
42
+ <span class="action-space icon"></span>
43
+ <% end %>
@@ -10,48 +10,10 @@
10
10
  </td>
11
11
  <%= td_resource_scope_for(component.scope) %>
12
12
  <td class="table-list__actions">
13
- <% if component.manifest.admin_engine %>
14
- <%= icon_link_to "pencil", manage_component_path(component), t("actions.manage", scope: "decidim.admin"), class: "action-icon--manage" %>
13
+ <% if lookup_context.find_all("decidim/#{component.manifest_name}/admin/component/_actions").any? %>
14
+ <%= render partial: "decidim/#{component.manifest_name}/admin/component/actions", locals: { component: component } %>
15
15
  <% else %>
16
- <span class="action-space icon"></span>
17
- <% end %>
18
-
19
- <% if allowed_to?(:update, :component, component: component) %>
20
- <% if component.published? %>
21
- <%= icon_link_to "x", url_for(action: :unpublish, id: component, controller: "components"), t("actions.unpublish", scope: "decidim.admin"), class: "action-icon--unpublish", method: :put %>
22
- <% else %>
23
- <%= icon_link_to "check", url_for(action: :publish, id: component, controller: "components"), t("actions.publish", scope: "decidim.admin"), class: "action-icon--publish", method: :put %>
24
- <% end %>
25
- <% else %>
26
- <span class="action-space icon"></span>
27
- <% end %>
28
-
29
- <% if allowed_to? :update, :component, component: component %>
30
- <%= icon_link_to "cog", url_for(action: :edit, id: component, controller: "components"), t("actions.configure", scope: "decidim.admin"), class: "action-icon--configure" %>
31
- <% else %>
32
- <span class="action-space icon"></span>
33
- <% end %>
34
-
35
- <% if allowed_to? :update, :component, component: component %>
36
- <% if component.manifest.actions.empty? %>
37
- <%= icon "key", class: "action-icon action-icon--disabled" %>
38
- <% else %>
39
- <%= icon_link_to "key", url_for(action: :edit, component_id: component, controller: "component_permissions"), t("actions.permissions", scope: "decidim.admin"), class: "action-icon--permissions" %>
40
- <% end %>
41
- <% else %>
42
- <span class="action-space icon"></span>
43
- <% end %>
44
-
45
- <% if allowed_to? :share, :component, component: component %>
46
- <%= icon_link_to "share", url_for(action: :share, id: component, controller: "components"), t("actions.share", scope: "decidim.admin"), class: "action-icon--share", target: "_blank" %>
47
- <% else %>
48
- <span class="action-space icon"></span>
49
- <% end %>
50
-
51
- <% if allowed_to? :destroy, :component, component: component %>
52
- <%= icon_link_to "circle-x", url_for(action: :destroy, id: component, controller: "components"), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete %>
53
- <% else %>
54
- <span class="action-space icon"></span>
16
+ <%= render partial: "actions", locals: { component: component } %>
55
17
  <% end %>
56
18
  </td>
57
19
  </tr>
@@ -6,9 +6,9 @@
6
6
  <% if resource %>
7
7
  -
8
8
  <% if resource.is_a?(Decidim::Resourceable) %>
9
- <%= link_to(resource_title(resource), resource_locator(resource).path) %>
9
+ <%= link_to(decidim_escape_translated(resource.title).html_safe, resource_locator(resource).path) %>
10
10
  <% else %>
11
- <%= strip_tags resource_title(resource) %>
11
+ <%= decidim_escape_translated(resource.title).html_safe %>
12
12
  <% end %>
13
13
  <% end %>
14
14
  </h3>
@@ -1,5 +1,8 @@
1
1
  <meta name="viewport" content="width=device-width, initial-scale=1">
2
2
  <%= csrf_meta_tags %>
3
+ <%= legacy_favicon %>
4
+ <%= favicon %>
5
+ <%= apple_favicon %>
3
6
  <%= stylesheet_pack_tag "decidim_admin", media: "all" %>
4
7
  <%= javascript_pack_tag "decidim_admin", defer: false %>
5
8
  <%= organization_colors %>
@@ -1,5 +1,6 @@
1
1
  <%
2
2
  js_configs = {
3
+ api_path: decidim_api.root_path(locale: nil),
3
4
  icons_path: Decidim.cors_enabled ? "" : asset_pack_path("media/images/icons.svg"),
4
5
  messages: {
5
6
  "selfxssWarning": {
@@ -89,7 +89,6 @@ ar:
89
89
  success_color: نجاح
90
90
  time_zone: المنطقة الزمنية
91
91
  tos_version: شروط وأحكام الخدمة
92
- twitter_handler: مُعرّف حساب تويتر
93
92
  user_groups_enabled: تمكين المجموعات
94
93
  warning_color: تحذير
95
94
  welcome_notification_body: محتوى إشعار الترحيب
@@ -320,8 +319,6 @@ ar:
320
319
  view_more_logs: عرض المزيد من السجلات
321
320
  welcome: أهلا بك على اللوح الإداري.
322
321
  domain_whitelist:
323
- form:
324
- domain_too_short: نطاق الدومين قصير جداً
325
322
  update:
326
323
  error: فشل تحديث القائمة النطاقات المسموحة
327
324
  success: تم تحديث النطاقات المسموحة بنجاح
@@ -638,9 +635,6 @@ ar:
638
635
  none: لا شَيْء
639
636
  scopes_help: إرسال النشرة الإخبارية للمستخدمين الذين لديهم أي من المجالات المحددة تم تفعيله في إعدادات "اهتماماتي" لحسابهم.
640
637
  select_scopes: أختر للمستخدمين الذين فعلوا أي مجال محدد في إعدادات أهتماماتي لحساباتهم.
641
- send_to_all_users: إرسال إلى كافة المستخدمين
642
- send_to_followers: إرسال إلى المتابِعين
643
- send_to_participants: إرسال إلى المشاركين
644
638
  title: حدد المستلمين للإرسال اليهم
645
639
  warning: "<strong>تنبيه:</strong> سيتم إرسال هذه النشرة الإخبارية فقط للمستخدمين الذين فعلوا <em>أريد تلقي النشرات الإخبارية</em> في إعدادات الإشعارات الخاصة بهم."
646
640
  send:
@@ -700,7 +694,7 @@ ar:
700
694
  github: غِت‌ هَب
701
695
  instagram: إينستاجرام
702
696
  social_handlers: التواصل الاجتماعي
703
- twitter: تويتر
697
+ twitter: X
704
698
  url: عنوان الرابط
705
699
  youtube: يوتيوب
706
700
  update:
@@ -713,7 +707,6 @@ ar:
713
707
  colors:
714
708
  colors_title: ألوان المنظمة
715
709
  header_snippets_help: استخدم هذا الحقل لإضافة أشياء إلى رأس HTML. الاستخدام الأكثر شيوعًا هو دمج خدمات الجهات الخارجية التي تتطلب بعض JavaScript أو CSS إضافية. أيضًا ، يمكنك استخدامه لإضافة علامات وصفية إضافية إلى HTML. لاحظ أنه سيتم عرض هذا فقط في الصفحات العامة ، وليس في قسم المسؤول.
716
- cta_button_path_help: 'يمكنك الكتابة فوق المكان الذي يرتبط به زر Call To Action في الصفحة الرئيسية. استخدم المسارات الجزئية ، وليس عناوين URL الكاملة هنا. يقبل الحروف والأرقام والشرطات والمائلة ، ويجب أن يبدأ بحرف. يظهر زر Call To Action في الصفحة الرئيسية بين نص الترحيب والوصف. مثال: %{url}'
717
710
  cta_button_text_help: يمكنك الكتابة فوق نص زر Call To Action في الصفحة الرئيسية لكل لغة متاحة في مؤسستك. إذا لم يتم تعيينها ، سيتم استخدام القيمة الافتراضية. يظهر زر Call To Action في الصفحة الرئيسية بين نص الترحيب والوصف.
718
711
  homepage_appearance_title: تحرير مظهر الصفحة الرئيسية
719
712
  homepage_highlighted_content_banner_title: لافتة المحتوى الراقي
@@ -724,14 +717,8 @@ ar:
724
717
  organization_external_domain_whitelist:
725
718
  edit:
726
719
  update: تحديث
727
- external_domain:
728
- down: أسفل
729
- remove: إزالة
730
- up: أعلى
731
- organization_homepage:
732
- edit:
733
- active_content_blocks: كتل المحتوى النشط
734
- inactive_content_blocks: كتل المحتوى غير النشطة
720
+ form:
721
+ add: إضافة إلى القائمة البيضاء
735
722
  organization_homepage_content_blocks:
736
723
  edit:
737
724
  update: تحديث
@@ -757,7 +744,7 @@ ar:
757
744
  empty: ليس لديك أي مشاركين خاصين.
758
745
  explanation: لديك %{count} مشاركين خاصين.
759
746
  title: حذف جميع المشاركين الخاصين
760
- title: حمّل ملف CSV الخاص بك
747
+ title: قم بتحميل ملف CSV الخاص بك
761
748
  upload: حمّل
762
749
  reminders:
763
750
  new:
@@ -860,8 +847,10 @@ ar:
860
847
  areas: المناطق
861
848
  authorization_workflows: طرق التحقق
862
849
  dashboard: لوحة القيادة
850
+ edit_organization_appearance: تعديل مظهر الصفحة الرئيسية
863
851
  impersonatable_users: المشاركون في الإدارة
864
852
  impersonations: إدارة المشاركين
853
+ pages: الصفحات
865
854
  panel: مدير
866
855
  participants: المشاركين
867
856
  scope_types: أنواع النطاق
@@ -965,8 +954,8 @@ ar:
965
954
  decidim:
966
955
  admin:
967
956
  newsletters:
968
- title: النشرات الإخبارية
957
+ title: الرسائل الإخبارية
969
958
  settings:
970
959
  title: الإعدادات
971
960
  users:
972
- title: المشاركين
961
+ title: المشاركون