decidim-admin 0.29.1 → 0.29.3
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.
- checksums.yaml +4 -4
- data/app/commands/decidim/admin/block_user.rb +1 -0
- data/app/commands/decidim/admin/unhide_resource.rb +1 -0
- data/app/controllers/decidim/admin/block_user_controller.rb +1 -1
- data/app/controllers/decidim/admin/conflicts_controller.rb +1 -1
- data/app/controllers/decidim/admin/impersonations_controller.rb +1 -0
- data/app/controllers/decidim/admin/moderations_controller.rb +8 -3
- data/app/controllers/decidim/admin/newsletters_controller.rb +2 -1
- data/app/controllers/decidim/admin/organization_controller.rb +1 -1
- data/app/forms/decidim/admin/help_section_form.rb +1 -1
- data/app/forms/decidim/admin/impersonate_user_form.rb +5 -0
- data/app/forms/decidim/admin/organization_appearance_form.rb +2 -2
- data/app/forms/decidim/admin/organization_form.rb +2 -2
- data/app/forms/decidim/admin/static_page_form.rb +1 -1
- data/app/forms/decidim/admin/transfer_user_form.rb +15 -0
- data/app/packs/src/decidim/admin/newsletters.js +18 -9
- data/app/packs/stylesheets/decidim/admin/_moderations.scss +8 -0
- data/app/permissions/decidim/admin/permissions.rb +8 -0
- data/app/queries/decidim/admin/newsletter_recipients.rb +9 -5
- data/app/views/decidim/admin/conflicts/edit.html.erb +21 -11
- data/app/views/decidim/admin/moderated_users/index.html.erb +2 -2
- data/app/views/decidim/admin/moderations/index.html.erb +5 -1
- data/app/views/decidim/admin/newsletter_templates/index.html.erb +0 -1
- data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +1 -1
- data/config/locales/ar.yml +62 -6
- data/config/locales/bg.yml +2 -2
- data/config/locales/bn-BD.yml +1 -0
- data/config/locales/bs-BA.yml +526 -0
- data/config/locales/ca-IT.yml +1161 -0
- data/config/locales/ca.yml +16 -6
- data/config/locales/cs.yml +11 -1
- data/config/locales/de.yml +19 -9
- data/config/locales/el.yml +4 -2
- data/config/locales/en.yml +10 -0
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +15 -5
- data/config/locales/es-PY.yml +15 -5
- data/config/locales/es.yml +13 -3
- data/config/locales/eu.yml +170 -148
- data/config/locales/fi-plain.yml +15 -7
- data/config/locales/fi.yml +32 -24
- data/config/locales/fr-CA.yml +14 -4
- data/config/locales/fr.yml +13 -3
- data/config/locales/ga-IE.yml +1 -6
- data/config/locales/gl.yml +6 -3
- data/config/locales/he-IL.yml +6 -0
- data/config/locales/hu.yml +6 -6
- data/config/locales/id-ID.yml +9 -5
- data/config/locales/is-IS.yml +13 -6
- data/config/locales/it.yml +184 -6
- data/config/locales/ja.yml +17 -7
- data/config/locales/kaa.yml +5 -3
- data/config/locales/ko.yml +11 -3
- data/config/locales/lb.yml +10 -7
- data/config/locales/lt.yml +2 -0
- data/config/locales/lv.yml +6 -4
- data/config/locales/nl.yml +7 -4
- data/config/locales/no.yml +6 -3
- data/config/locales/pl.yml +4 -4
- data/config/locales/pt-BR.yml +2 -2
- data/config/locales/pt.yml +11 -4
- data/config/locales/ro-RO.yml +10 -5
- data/config/locales/ru.yml +8 -8
- data/config/locales/sk.yml +7 -7
- data/config/locales/sl.yml +7 -2
- data/config/locales/sq-AL.yml +13 -6
- data/config/locales/sr-CS.yml +6 -5
- data/config/locales/sv.yml +14 -6
- data/config/locales/th-TH.yml +14 -0
- data/config/locales/tr-TR.yml +7 -8
- data/config/locales/uk.yml +5 -7
- data/config/locales/zh-CN.yml +3 -10
- data/config/locales/zh-TW.yml +2 -0
- data/config/routes.rb +1 -1
- data/decidim-admin.gemspec +1 -1
- data/lib/decidim/admin/engine.rb +1 -0
- data/lib/decidim/admin/test/manage_hide_content_examples.rb +4 -3
- data/lib/decidim/admin/test/manage_moderations_examples.rb +1 -1
- data/lib/decidim/admin/version.rb +1 -1
- metadata +12 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c852741cd61530ba9d8b7d124853be3848447169a38affddefadc8a62983317
|
4
|
+
data.tar.gz: 266e61bd6389325aedfdef65efc9e4ad74fb52cd6aad24afdcc0f36893a1b5b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb17e3607080d60671cf40e5f5e20d151ba2df3ab0349914eec98cd449372171db95838779ab787e24defe37343cf7377c48906430b92fb6fa7c351cab9543cd
|
7
|
+
data.tar.gz: 370fd4143351c6b5b48cc24f768fa49cf0aeb8906b842d0fcac0400fe6535e0bb4f5e69a9905d165dec5626b0f4cb3daf00a8129e0fadb7101d25cc0daca1f7a
|
@@ -22,7 +22,7 @@ module Decidim
|
|
22
22
|
BlockUser.call(@form) do
|
23
23
|
on(:ok) do
|
24
24
|
flash[:notice] = I18n.t("officializations.block.success", scope: "decidim.admin")
|
25
|
-
redirect_to moderated_users_path
|
25
|
+
redirect_to moderated_users_path, notice:
|
26
26
|
end
|
27
27
|
|
28
28
|
on(:invalid) do
|
@@ -57,12 +57,17 @@ module Decidim
|
|
57
57
|
Admin::UnhideResource.call(reportable, current_user) do
|
58
58
|
on(:ok) do
|
59
59
|
flash[:notice] = I18n.t("reportable.unhide.success", scope: "decidim.moderations.admin")
|
60
|
-
redirect_to moderations_path
|
60
|
+
redirect_to moderations_path(hidden: true)
|
61
|
+
end
|
62
|
+
|
63
|
+
on(:parent_invalid) do
|
64
|
+
flash[:alert] = I18n.t("reportable.unhide.parent_invalid", scope: "decidim.moderations.admin")
|
65
|
+
redirect_to moderations_path(hidden: true)
|
61
66
|
end
|
62
67
|
|
63
68
|
on(:invalid) do
|
64
|
-
flash
|
65
|
-
redirect_to moderations_path
|
69
|
+
flash[:alert] = I18n.t("reportable.unhide.invalid", scope: "decidim.moderations.admin")
|
70
|
+
redirect_to moderations_path(hidden: true)
|
66
71
|
end
|
67
72
|
end
|
68
73
|
end
|
@@ -108,7 +108,8 @@ module Decidim
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def recipients_count
|
111
|
-
data = params.permit(
|
111
|
+
data = params.permit(newsletter: {}).to_h[:newsletter]
|
112
|
+
|
112
113
|
@form = form(SelectiveNewsletterForm).from_params(data)
|
113
114
|
render plain: recipients_count_query
|
114
115
|
end
|
@@ -48,7 +48,7 @@ module Decidim
|
|
48
48
|
if (term = params[:term].to_s).present?
|
49
49
|
query = if term.start_with?("@")
|
50
50
|
nickname = term.delete("@")
|
51
|
-
relation.where("nickname
|
51
|
+
relation.where("nickname LIKE ?", "#{nickname}%")
|
52
52
|
.order(Arel.sql(ActiveRecord::Base.sanitize_sql_array("similarity(nickname, '#{nickname}') DESC")))
|
53
53
|
else
|
54
54
|
relation.where("name ILIKE ?", "%#{term}%").or(
|
@@ -9,7 +9,7 @@ module Decidim
|
|
9
9
|
include TranslationsHelper
|
10
10
|
|
11
11
|
attribute :id, String
|
12
|
-
translatable_attribute :content,
|
12
|
+
translatable_attribute :content, Decidim::Attributes::RichText
|
13
13
|
|
14
14
|
def name
|
15
15
|
multi_translation("activerecord.models.#{manifest.model_class_name.underscore}.other")
|
@@ -14,6 +14,7 @@ module Decidim
|
|
14
14
|
attribute :handler_name, String
|
15
15
|
|
16
16
|
validates :user, presence: true
|
17
|
+
validates :name, presence: true, unless: :persisted_user?
|
17
18
|
validates :reason, presence: true, unless: :managed_user?
|
18
19
|
|
19
20
|
private
|
@@ -21,6 +22,10 @@ module Decidim
|
|
21
22
|
def managed_user?
|
22
23
|
user && user.managed?
|
23
24
|
end
|
25
|
+
|
26
|
+
def persisted_user?
|
27
|
+
user&.persisted?
|
28
|
+
end
|
24
29
|
end
|
25
30
|
end
|
26
31
|
end
|
@@ -32,9 +32,9 @@ module Decidim
|
|
32
32
|
attribute :tertiary_color, String
|
33
33
|
|
34
34
|
translatable_attribute :cta_button_text, String
|
35
|
-
translatable_attribute :description,
|
35
|
+
translatable_attribute :description, Decidim::Attributes::RichText
|
36
36
|
translatable_attribute :highlighted_content_banner_title, String
|
37
|
-
translatable_attribute :highlighted_content_banner_short_description,
|
37
|
+
translatable_attribute :highlighted_content_banner_short_description, Decidim::Attributes::RichText
|
38
38
|
translatable_attribute :highlighted_content_banner_action_title, String
|
39
39
|
translatable_attribute :highlighted_content_banner_action_subtitle, String
|
40
40
|
translatable_attribute :omnipresent_banner_title, String
|
@@ -31,9 +31,9 @@ module Decidim
|
|
31
31
|
attribute :customize_welcome_notification, Boolean
|
32
32
|
|
33
33
|
translatable_attribute :welcome_notification_subject, String
|
34
|
-
translatable_attribute :welcome_notification_body,
|
34
|
+
translatable_attribute :welcome_notification_body, Decidim::Attributes::RichText
|
35
35
|
|
36
|
-
translatable_attribute :admin_terms_of_service_body,
|
36
|
+
translatable_attribute :admin_terms_of_service_body, Decidim::Attributes::RichText
|
37
37
|
|
38
38
|
validates :welcome_notification_subject, :welcome_notification_body, translatable_presence: true, if: proc { |form| form.customize_welcome_notification }
|
39
39
|
|
@@ -9,7 +9,7 @@ module Decidim
|
|
9
9
|
attribute :slug, String
|
10
10
|
validates :title, translatable_presence: true
|
11
11
|
translatable_attribute :title, String
|
12
|
-
translatable_attribute :content,
|
12
|
+
translatable_attribute :content, Decidim::Attributes::RichText
|
13
13
|
attribute :changed_notably, Boolean
|
14
14
|
attribute :allow_public_access, Boolean
|
15
15
|
attribute :weight, Integer
|
@@ -14,6 +14,21 @@ module Decidim
|
|
14
14
|
|
15
15
|
validates :current_user, presence: true
|
16
16
|
validates :conflict, presence: true
|
17
|
+
validates :email, presence: true
|
18
|
+
validate :unique_email
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def unique_email
|
23
|
+
return if conflict.blank?
|
24
|
+
return true if Decidim::UserBaseEntity.where(
|
25
|
+
organization: context.current_organization,
|
26
|
+
email:
|
27
|
+
).where.not(id: [conflict.current_user.id, conflict.managed_user_id]).empty?
|
28
|
+
|
29
|
+
errors.add :email, :taken
|
30
|
+
false
|
31
|
+
end
|
17
32
|
end
|
18
33
|
end
|
19
34
|
end
|
@@ -54,9 +54,9 @@ $(() => {
|
|
54
54
|
$participatorySpacesForSelect.hide();
|
55
55
|
}
|
56
56
|
|
57
|
-
$(".form .spaces-block-tag").each(function(_i, blockTag) {
|
57
|
+
$(".form .spaces-block-tag").each(function (_i, blockTag) {
|
58
58
|
const selectTag = $(blockTag).find(".chosen-select")
|
59
|
-
selectTag.change(function() {
|
59
|
+
selectTag.change(function () {
|
60
60
|
let optionSelected = selectTag.find("option:selected").val()
|
61
61
|
if (optionSelected === "all") {
|
62
62
|
selectTag.find("option").not(":first").prop("selected", true);
|
@@ -67,16 +67,25 @@ $(() => {
|
|
67
67
|
});
|
68
68
|
})
|
69
69
|
|
70
|
-
$form.on("change", function() {
|
71
|
-
let
|
72
|
-
let
|
70
|
+
$form.on("change", function(event) {
|
71
|
+
let formData = new FormData(event.target.closest("form"));
|
72
|
+
let url = $form.data("recipients-count-newsletter-path");
|
73
73
|
const $modal = $("#recipients_count_spinner");
|
74
74
|
$modal.removeClass("hide");
|
75
|
-
|
76
|
-
|
77
|
-
|
75
|
+
|
76
|
+
const xhr = new XMLHttpRequest();
|
77
|
+
xhr.open("POST", url, true);
|
78
|
+
xhr.onload = function() {
|
79
|
+
if (xhr.status === 200) {
|
80
|
+
$("#recipients_count").text(xhr.responseText);
|
81
|
+
}
|
78
82
|
$modal.addClass("hide");
|
79
|
-
}
|
83
|
+
};
|
84
|
+
xhr.onerror = function() {
|
85
|
+
$modal.addClass("hide");
|
86
|
+
};
|
87
|
+
// Send the form data
|
88
|
+
xhr.send(formData);
|
80
89
|
})
|
81
90
|
}
|
82
91
|
});
|
@@ -3,6 +3,8 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Admin
|
5
5
|
class Permissions < Decidim::DefaultPermissions
|
6
|
+
include Decidim::UserRoleChecker
|
7
|
+
|
6
8
|
def permissions
|
7
9
|
return permission_action if managed_user_action?
|
8
10
|
|
@@ -31,6 +33,8 @@ module Decidim
|
|
31
33
|
|
32
34
|
apply_global_moderations_permission_for_admin!
|
33
35
|
|
36
|
+
can_use_image_editor?
|
37
|
+
|
34
38
|
if user.admin? && admin_terms_accepted?
|
35
39
|
allow! if read_admin_log_action?
|
36
40
|
allow! if read_user_statistics_action?
|
@@ -253,6 +257,10 @@ module Decidim
|
|
253
257
|
def available_authorization_handlers?
|
254
258
|
user.organization.available_authorization_handlers.any?
|
255
259
|
end
|
260
|
+
|
261
|
+
def can_use_image_editor?
|
262
|
+
allow! if permission_action.subject == :editor_image && user_has_any_role?(user, nil, broad_check: true)
|
263
|
+
end
|
256
264
|
end
|
257
265
|
end
|
258
266
|
end
|
@@ -20,11 +20,7 @@ module Decidim
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def query
|
23
|
-
recipients =
|
24
|
-
.where.not(newsletter_notifications_at: nil)
|
25
|
-
.where.not(email: nil)
|
26
|
-
.where.not(confirmed_at: nil)
|
27
|
-
.not_deleted
|
23
|
+
recipients = recipients_base_query
|
28
24
|
|
29
25
|
recipients = recipients.interested_in_scopes(@form.scope_ids) if @form.scope_ids.present?
|
30
26
|
|
@@ -41,6 +37,14 @@ module Decidim
|
|
41
37
|
|
42
38
|
private
|
43
39
|
|
40
|
+
def recipients_base_query
|
41
|
+
Decidim::User.available
|
42
|
+
.where(organization: @form.current_organization)
|
43
|
+
.where.not(newsletter_notifications_at: nil)
|
44
|
+
.where.not(email: nil)
|
45
|
+
.confirmed
|
46
|
+
end
|
47
|
+
|
44
48
|
# Return the ids of the ParticipatorySpace selected
|
45
49
|
# in form, grouped by type
|
46
50
|
# This will be used to take followers and
|
@@ -27,18 +27,28 @@
|
|
27
27
|
</div>
|
28
28
|
</div>
|
29
29
|
|
30
|
-
|
31
|
-
<div class="
|
32
|
-
|
33
|
-
<div class="
|
34
|
-
|
30
|
+
<div class="item__edit item__edit-1col">
|
31
|
+
<div class="item__edit-form">
|
32
|
+
<%= decidim_form_for(@form, url: conflict_path, method: :put, html: { class: "form form-defaults" }) do |f| %>
|
33
|
+
<div class="form__wrapper">
|
34
|
+
<div class="card pt-4">
|
35
|
+
<div class="card-section">
|
36
|
+
<div class="row column">
|
35
37
|
|
36
|
-
|
38
|
+
<%= f.text_field :reason, label: t("reason", scope: "decidim.admin.conflicts.transfer") %>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div class="row column">
|
42
|
+
|
43
|
+
<%= f.text_field :email, label: t("email", scope: "decidim.admin.conflicts.transfer") %>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
</div>
|
37
47
|
</div>
|
38
|
-
</div>
|
39
|
-
</div>
|
40
48
|
|
41
|
-
|
42
|
-
|
49
|
+
<div class="form__wrapper-block flex-col-reverse md:flex-row justify-between">
|
50
|
+
<%= f.submit t("title", scope: "decidim.admin.conflicts.transfer"), class: "button button__sm button__secondary" %>
|
51
|
+
</div>
|
52
|
+
<% end %>
|
43
53
|
</div>
|
44
|
-
|
54
|
+
</div>
|
@@ -51,9 +51,9 @@
|
|
51
51
|
<% end %>
|
52
52
|
<% if allowed_to?(:block, :moderate_users) %>
|
53
53
|
<% if moderation.user.blocked? %>
|
54
|
-
<%= icon_link_to "
|
54
|
+
<%= icon_link_to "refresh-line", user_block_path(user_id: moderation.user.id), t(".actions.unblock"), class: "action-icon action-icon--disabled", method: :delete %>
|
55
55
|
<% else %>
|
56
|
-
|
56
|
+
<%= icon_link_to "lock-2-line", new_user_block_path(user_id: moderation.user.id), t(".actions.block"), class: "action-icon action-icon" %>
|
57
57
|
<% end %>
|
58
58
|
<% end %>
|
59
59
|
</td>
|
@@ -85,7 +85,11 @@
|
|
85
85
|
<%= icon_link_to "eye-line", hide_moderation_path(id: moderation), t("actions.hide", scope: "decidim.moderations"), class: "action-icon--hide", method: :put %>
|
86
86
|
<% end %>
|
87
87
|
<% if moderation.reportable.hidden? && allowed_to?(:unhide, authorization_scope) %>
|
88
|
-
|
88
|
+
<% if moderation.reportable.respond_to?(:commentable) && moderation.reportable.commentable.try(:hidden?) %>
|
89
|
+
<%= icon_with_tooltip "eye-line", t("actions.parent_hidden", scope: "decidim.moderations"), class: "action-icon action-icon--disabled", role: "img", aria_label: t("actions.parent_hidden", scope: "decidim.moderations") %>
|
90
|
+
<% else %>
|
91
|
+
<%= icon_link_to "eye-line", unhide_moderation_path(id: moderation), t("actions.unhide", scope: "decidim.moderations"), method: :put %>
|
92
|
+
<% end %>
|
89
93
|
<% end %>
|
90
94
|
</td>
|
91
95
|
</tr>
|
@@ -3,7 +3,6 @@
|
|
3
3
|
<div class="item_show__header">
|
4
4
|
<h1 class="item_show__header-title">
|
5
5
|
<%= t ".title" %>
|
6
|
-
<%= link_to t("actions.newsletter.new", scope: "decidim.admin"), [:newsletter_templates], class: "button button__sm button__secondary expanded small new" %>
|
7
6
|
</h1>
|
8
7
|
</div>
|
9
8
|
|
@@ -6,7 +6,7 @@
|
|
6
6
|
</div>
|
7
7
|
<div class="item__edit item__edit-1col">
|
8
8
|
<div class="item__edit-form">
|
9
|
-
<%= decidim_form_for(@form, html: { class: "form-defaults form edit_content_block
|
9
|
+
<%= decidim_form_for(@form, html: { class: "form-defaults form edit_content_block" }, url: resource_landing_page_content_block_path) do |form| %>
|
10
10
|
<div class="form__wrapper">
|
11
11
|
<div class="card py-4">
|
12
12
|
<div class="card-section">
|
data/config/locales/ar.yml
CHANGED
@@ -38,8 +38,12 @@ ar:
|
|
38
38
|
user_group_id: إنشاء الاستيرادات ك
|
39
39
|
newsletter:
|
40
40
|
body: النص
|
41
|
+
send_to_all_users: إرسال إلى كافة المستخدمين
|
42
|
+
send_to_followers: إرسال إلى المتابِعين
|
43
|
+
send_to_participants: إرسال إلى المشتركين
|
41
44
|
subject: الموضوع
|
42
45
|
organization:
|
46
|
+
admin_terms_of_service_body: نص شروط الخدمة للمشرف
|
43
47
|
alert_color: تنبيه
|
44
48
|
available_authorizations: التراخيص المتاحة
|
45
49
|
badges_enabled: تمكين الشارات
|
@@ -53,8 +57,12 @@ ar:
|
|
53
57
|
enable_participatory_space_filters: تفعيل أختيارات فرز الفضاء التشاركي
|
54
58
|
facebook_handler: مُعرّف حساب فيسبوك
|
55
59
|
favicon: أيقونة
|
60
|
+
force_authentication: فرض المصادقة
|
61
|
+
force_users_to_authenticate_before_access_organization: إلزام المستخدمين على المصادقة قبل الدخول إلى المنظمة
|
62
|
+
from: البريد الإلكتروني للمرسل
|
56
63
|
github_handler: مُعرّف حساب غِت هَب
|
57
64
|
header_snippets: قصاصات رأس
|
65
|
+
highlight_alternative_color: تحديد، البديل
|
58
66
|
highlight_color: تظليل
|
59
67
|
highlighted_content_banner_action_subtitle: نص زر الإجراء
|
60
68
|
highlighted_content_banner_action_title: عنوان زر الإجراء
|
@@ -85,9 +93,12 @@ ar:
|
|
85
93
|
secondary_hosts: المستضيفين الثانويين
|
86
94
|
send_welcome_notification: إرسال إشعار بالترحيب
|
87
95
|
success_color: نجاح
|
96
|
+
tertiary_color: المستوى الثالث
|
88
97
|
time_zone: المنطقة الزمنية
|
89
98
|
tos_version: شروط وأحكام الخدمة
|
99
|
+
twitter_handler: X handler
|
90
100
|
user_groups_enabled: تمكين المجموعات
|
101
|
+
users_registration_mode: وضع تسجيل المستخدمين
|
91
102
|
warning_color: تحذير
|
92
103
|
welcome_notification_body: محتوى إشعار الترحيب
|
93
104
|
welcome_notification_subject: موضوع إشعار الترحيب
|
@@ -95,6 +106,8 @@ ar:
|
|
95
106
|
participatory_space_private_user:
|
96
107
|
email: البريد الإلكتروني
|
97
108
|
name: الإسم
|
109
|
+
participatory_space_private_user_csv_import:
|
110
|
+
file: ملف
|
98
111
|
scope:
|
99
112
|
code: الشفرة
|
100
113
|
name: الاسم
|
@@ -109,24 +122,46 @@ ar:
|
|
109
122
|
settings:
|
110
123
|
scope_id: المجال
|
111
124
|
static_page:
|
125
|
+
allow_public_access: السماح بالوصول دون مصادقة
|
112
126
|
changed_notably: كانت هناك تغييرات ملحوظة.
|
113
127
|
content: المحتوى
|
114
128
|
organization: المنظمة
|
115
129
|
show_in_footer: تظهر في تذييل الصفحة
|
116
130
|
slug: سبيكة العنوان الشبكي
|
117
131
|
title: العنوان
|
132
|
+
topic_id: الموضوع
|
133
|
+
weight: موضع الطلب
|
118
134
|
static_page_topic:
|
119
135
|
description: وصف
|
136
|
+
name: عنوان الموضوع
|
120
137
|
show_in_footer: تظهر في تذييل الصفحة
|
121
138
|
title: العنوان
|
139
|
+
weight: موضع الطلب
|
122
140
|
user_group_csv_verification:
|
123
141
|
file: ملف
|
124
142
|
errors:
|
125
143
|
models:
|
144
|
+
newsletter:
|
145
|
+
attributes:
|
146
|
+
base:
|
147
|
+
at_least_one_space: حدد مساحة تشاركية واحدة على الأقل.
|
126
148
|
organization:
|
127
149
|
attributes:
|
128
150
|
official_img_footer:
|
129
151
|
allowed_file_content_types: ملف صورة غير صالح
|
152
|
+
participatory_space_private_user_csv_import:
|
153
|
+
attributes:
|
154
|
+
file:
|
155
|
+
malformed: خطأ في ملفّ الاستيراد، يرجى قراءة التعليمات بعناية والتأكد من أن ترميز الملف هو UTF-8.
|
156
|
+
user_group_csv_verification:
|
157
|
+
attributes:
|
158
|
+
file:
|
159
|
+
malformed: خطأ في ملفّ الاستيراد، يرجى قراءة التعليمات بعناية والتأكد من أن ترميز الملف هو UTF-8.
|
160
|
+
new_import:
|
161
|
+
attributes:
|
162
|
+
file:
|
163
|
+
invalid_file: الملف غير صالح، يرجى التأكد من تنسيق الملف بشكل صحيح.
|
164
|
+
invalid_mime_type: ملف من نوع MIME غير صالح.
|
130
165
|
activerecord:
|
131
166
|
attributes:
|
132
167
|
decidim/static_page:
|
@@ -145,10 +180,15 @@ ar:
|
|
145
180
|
admin:
|
146
181
|
actions:
|
147
182
|
add: إضافة
|
183
|
+
attachment:
|
184
|
+
new: إضافة مرفق
|
185
|
+
attachment_collection:
|
186
|
+
new: مجلد مرفقات جديد
|
148
187
|
browse: تصفح
|
149
188
|
category:
|
150
189
|
new: فئة جديدة
|
151
190
|
export: تصدير الكل
|
191
|
+
export-selection: تصدير الإختيار
|
152
192
|
import: استيراد
|
153
193
|
manage: تدبير
|
154
194
|
newsletter:
|
@@ -295,6 +335,9 @@ ar:
|
|
295
335
|
title: نقل
|
296
336
|
'true': 'نعم'
|
297
337
|
user_name: المستخدم
|
338
|
+
content_blocks:
|
339
|
+
edit:
|
340
|
+
title: محتويات الصفحة
|
298
341
|
dashboard:
|
299
342
|
show:
|
300
343
|
view_more_logs: عرض المزيد من السجلات
|
@@ -430,6 +473,9 @@ ar:
|
|
430
473
|
download_example_format: مثال كـ %{name}
|
431
474
|
file_legend: إضافة ملف استيراد سيتم تحليله.
|
432
475
|
import: استيراد
|
476
|
+
logs:
|
477
|
+
filters:
|
478
|
+
user: المستخدم
|
433
479
|
managed_users:
|
434
480
|
promotion:
|
435
481
|
error: كانت هناك مشكلة في تعزيز المشارك المُدار.
|
@@ -507,6 +553,7 @@ ar:
|
|
507
553
|
plural: جمع
|
508
554
|
share_token:
|
509
555
|
fields:
|
556
|
+
created_at: أنشئت في
|
510
557
|
expires_at: تنتهي صلاحيته في
|
511
558
|
token: رمز التشفير - Token
|
512
559
|
user: تم الإنشاء بواسطة
|
@@ -529,8 +576,8 @@ ar:
|
|
529
576
|
actions: أفعال
|
530
577
|
created_at: أنشئت في
|
531
578
|
document_number: رقم المستند
|
532
|
-
name:
|
533
|
-
nickname:
|
579
|
+
name: الاسم
|
580
|
+
nickname: كنية
|
534
581
|
phone: هاتف
|
535
582
|
state: حالة
|
536
583
|
users_count: عدد المشاركين
|
@@ -564,6 +611,11 @@ ar:
|
|
564
611
|
reported_content: محتوى تم الإبلاغ عنه
|
565
612
|
show:
|
566
613
|
report_reason: السبب
|
614
|
+
new_import:
|
615
|
+
accepted_mime_types:
|
616
|
+
csv: CSV
|
617
|
+
json: JSON
|
618
|
+
xlsx: XLSX
|
567
619
|
newsletter_templates:
|
568
620
|
index:
|
569
621
|
preview_template: معاينة
|
@@ -600,7 +652,7 @@ ar:
|
|
600
652
|
all_spaces: الكل
|
601
653
|
confirm_deliver: هل أنت متأكد من أنك تريد تسليم هذه الرسالة الإخبارية؟ لا يمكن التراجع عن هذا الإجراء.
|
602
654
|
deliver: تسليم النشرة الإخبارية
|
603
|
-
none: لا
|
655
|
+
none: لا شيء
|
604
656
|
scopes_help: إرسال النشرة الإخبارية للمستخدمين الذين لديهم أي من المجالات المحددة تم تفعيله في إعدادات "اهتماماتي" لحسابهم.
|
605
657
|
select_scopes: أختر للمستخدمين الذين فعلوا أي مجال محدد في إعدادات أهتماماتي لحساباتهم.
|
606
658
|
title: حدد المستلمين للإرسال اليهم
|
@@ -682,6 +734,8 @@ ar:
|
|
682
734
|
title: مشارك جديد الفضاء الخاص المشارك.
|
683
735
|
participatory_space_private_users_csv_imports:
|
684
736
|
new:
|
737
|
+
csv_upload:
|
738
|
+
title: قم بتحميل ملف CSV الخاص بك
|
685
739
|
destroy:
|
686
740
|
button: حذف جميع المشاركين الخاصين
|
687
741
|
empty: ليس لديك أي مشاركين خاصين.
|
@@ -779,10 +833,12 @@ ar:
|
|
779
833
|
areas: المناطق
|
780
834
|
authorization_workflows: طرق التحقق
|
781
835
|
dashboard: لوحة القيادة
|
836
|
+
edit_landing_page: محتويات الصفحة
|
782
837
|
edit_organization_appearance: تعديل مظهر الصفحة الرئيسية
|
783
838
|
impersonatable_users: المشاركون في الإدارة
|
784
839
|
impersonations: إدارة المشاركين
|
785
840
|
menu: القائمة الرئيسية
|
841
|
+
page_topics: المواضيع
|
786
842
|
pages: الصفحات
|
787
843
|
panel: مدير
|
788
844
|
participants: المشاركين
|
@@ -802,14 +858,14 @@ ar:
|
|
802
858
|
index:
|
803
859
|
state:
|
804
860
|
pending: قيد الانتظار
|
805
|
-
rejected:
|
806
|
-
verified: التحقق
|
861
|
+
rejected: تم رفضه
|
862
|
+
verified: تم التحقق
|
807
863
|
verify_via_csv: تحقق عبر CSV
|
808
864
|
user_groups_csv_verifications:
|
809
865
|
new:
|
810
866
|
explanation: قم بتحميل ملف CSV الخاص بك. يجب أن يحتوي على رسائل البريد الإلكتروني الرسمية للمجموعات في مؤسستك في العمود الأول من الملف ، بدون رؤوس. سيتم التحقق من صحة المجموعات التي أكدت بريدها الإلكتروني والتي تحتوي على بريد إلكتروني ظاهر في ملف CSV.
|
811
867
|
title: قم بتحميل ملف CSV الخاص بك
|
812
|
-
upload:
|
868
|
+
upload: حمّل
|
813
869
|
users:
|
814
870
|
create:
|
815
871
|
error: كانت هناك مشكلة في دعوة هذا المشرف.
|
data/config/locales/bg.yml
CHANGED
@@ -892,7 +892,7 @@ bg:
|
|
892
892
|
success: Файлът във формат CSV беше качен успешно; изпращаме имейл с покана на участниците. Това може да отнеме известно време.
|
893
893
|
new:
|
894
894
|
csv_upload:
|
895
|
-
title: Качете своя файл
|
895
|
+
title: Качете своя CSV файл
|
896
896
|
destroy:
|
897
897
|
button: Изтрийте всички частни участници
|
898
898
|
confirm: Сигурни ли сте, че искате да изтриете всички частни участници? Това действие е необратимо, няма да можете да ги възстановите.
|
@@ -1055,7 +1055,7 @@ bg:
|
|
1055
1055
|
index:
|
1056
1056
|
state:
|
1057
1057
|
pending: Изчакване
|
1058
|
-
rejected:
|
1058
|
+
rejected: Отхвърлен
|
1059
1059
|
verified: Проверен
|
1060
1060
|
verify_via_csv: Проверка чрез CSV
|
1061
1061
|
user_groups_csv_verifications:
|
@@ -0,0 +1 @@
|
|
1
|
+
bn:
|