decidim-admin 0.27.4 → 0.27.6

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 (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: المشاركون